{"version":3,"sources":["1initializers.js","account-settings.js","addressbook.js","changerequests.js","commitments.js","customfields.js","dailyreports.js","directcosts.js","financecorefieldsettings.js","groups.js","invoicing.js","meetings.js","nav.js","numberformat.js","orderingsettings.js","primecontracts.js","projectsettings.js","regions.js","settingsmodels.js","signature.js","sso.js","terms.js","timecards.js","usermanagement.js","usertypesettings.js"],"names":["PJQ","views","settings","models","collections","modules","oldRoutes","routes","route","name","callback","procore","code","ajax","Request","endpoint","helpers","urlHelpers","generateEndpoint","parameter","value","post","done","app","initNavigator","activeItem","viewOptions","procoreCode","initView","preventTour","subscriptionId","parseInt","module","integrationName","authorized","addOldRoutes","addRoutes","CompanyInfo","BaseView","extend","defaults","template","templating","Template","constants","SETTINGS","subTemplates","subscription","onChange","events","mouseup .btn-password-reset-modal","change .cb-directory-status","keyup input[type='text']","change .user-procore-link","click .btn-join-directory","click .btn-enable-auto-renew","click .btn-disable-auto-renew","click .btn-edit-card","beforeFirstRender","this","options","session","preferences","setPref","preferenceTypes","PROCORE_ACCESS_REFRESH_TOKEN","model","user","isFetched","fetch","success","_","bind","render","listenTo","beforeRender","renderData","afterRender","inputHelpers","inputMaskPhone","$","get","panteraPortalId","inputs","Selectpicker","el","hideDisabled","defaultValue","set","statePicker","size","toLowerCase","toUpperCase","countryChanged","noneSelectedText","tooltip","Binder","$el","afterChange","notifications","notify","successNotify","message","renderSubscriptionInfo","renderDirectoryStatus","directoryStatusChanged","e","currentTarget","prop","joinDirectory","leaveDirectory","remove","isActive","contact","html","css","colors","GREEN","RED","listenSubscriptionChanged","fetchBillingInfo","billingInfo","renderSubTemplate","enableAutoRenew","updateAutoRenew","errorNotify","disableAutoRenew","subscriptions","DisableAutoRenewModal","onYes","changeCard","payment","PaySimplePaymentModal","onSave","onError","resetPasswordModal","ResetPasswordModal","country","each","states","state","abbreviation","refresh","setValue","inputMaskZip","validate","errors","isValid","isCompanyValid","trim","setInputError","procoreLink","hasPref","modals","YesNo","header","body","data","deletePref","onNo","redirect","window","location","origin","id","toString","url","getPref","PROCORE_URL_AUTH","PROCORE_CLIENT_ID","encodeURIComponent","document","BaseModal","baseOptions","isVerticalCenter","isShowResetButton","resetButtonText","resetButtonColorClass","isShowCancelButton","cancelButtonText","onReset","noop","width","minWidth","maxWidth","height","minHeight","maxHeight","fitHeight","defaultEvents","hidden.bs.modal","click .modal-reset","click .show-hide","click .show-hide-confirm","uuid","uniqueId","createModal","afterModalCreated","errorAlert","destroy","isConfirmValid","isConfirmLength","error","newPass","val","Alert","type","text","length","password","request","hide","fail","showHide","target","attr","showHideConfirm","context","removeClass","addClass","AddressBookGeneralSettings","showLaborStatus","IS_HIDE_UNION_STATUS","groupLabel","GROUP_LABEL","newAddressBook","ENABLE_NEW_ADDRESSBOOK","defaultFilters","map","userTypes","getByIsCompany","userType","merge","addressBook","directoryFilter","PRIVATE_ONLY","contactStatusFilter","ACTIVE","INACTIVE","laborStatusFilter","UNION","NON_UNION","PREV_WAGE","NOT_AVAILABLE","filterSelectPicker","isIntChoices","isMultiple","exclusiveChoices","isGroup","mustSelectValuePerOptGroup","split","join","locationTypeSelectPicker","mustSelectValue","locationTypeFilter","WORK_AREA","OFFICE_LOCATION","setDefaultValues","watchElements","ContactFieldSettings","click .cb-visible-contact","click .cb-visible-admin","click .cb-required-contact","click .cb-required-admin","fetchContactFieldSettings","fields","collection","fillFields","fieldName","canContactEdit","isVisibleContact","isRequiredContact","isRequiredAdmin","canBeRequired","field","index","matchField","findWhere","add","isVisibleAdmin","sortOrder","dataTable","dataTables","DataTable","isHideSearch","paging","rowId","order","columns","title","visible","orderable","row","contactEdit","contactVisibleChanged","$target","$row","closest","setting","getRow","enabled","queueSave","adminVisibleChanged","contactRequiredChanged","adminRequiredChanged","ChangeRequestSettings","customFields","_this","NumberFormatInput","CommitmentSettings","click .btn-manage-signature","keydown .input-percent","change .input-percent","_this2","useDecimalPercentFields","attribute","budget","accountingMethod","UNIT_QUANTITY","commitmentType","commitments","PURCHASE_ORDER","SUBCONTRACT","SignatureEditInput","signature","headerSubText","formatPercent","formatHelpers","CommitmentChangeOrderSettings","_this3","CustomFieldSettings","fieldModel","CustomField","click .add-field","click .edit-field","click .delete-field","click .btn-sort-alpha","contacts","ContactCustomField","fieldModelName","CompanyCustomField","projects","ProjectCustomField","actionItems","ActionItemCustomField","punchlists","PunchlistCustomField","ChangeOrderCustomField","primeContracts","directcosts","invoicing","PayableInvoiceCustomField","ReceivableInvoiceCustomField","schedule","ScheduleCustomField","submittals","SubmittalCustomField","users","UserCustomField","language","zeroRecords","sortableOptions","containment","bSort","onRowDoubleClick","editField","contextMenuOptions","actions","onClick","isDanger","deleteField","searchable","content","addClicked","newField","fieldType","fieldTypes","TEXT","isRequired","description","names","push","editClicked","EditCustomFieldModal","newSort","addRow","hasChanged","isNew","save","onClose","onDelete","cid","removeRow","deleteClicked","sortNumber","attributes","newNumber","DeleteCancel","fetchCollection","sortFieldsAlpha","put","choice","click .btn-delete-choice","click .btn-add-choice","click .field-save","click .field-close","click .field-delete","keydown .input-default-integer","change .input-multiple-choice","click .btn-is-required","colorpickerChange","keyup .colorpicker-input-box","change .cb-read-only","renderColorPicker","DATE","DATETIME","Datepicker","isShowTimezone","datepickerOptions","defaultDate","format","dateHelpers","dateFormats","datePicker","DATE_TIME","MONEY","inputMaskCurrency","PERCENT","inputMaskDecimal","BOOL","CHOICE","defaultId","defaultChoice","choices","choicePicker","updateChoicePicker","renderChoices","updateChoices","$choices","empty","sortBy","filter","renderChoice","append","class","find","$choice","isDirty","self","fieldSortable","Sortable","items","connectWith","onStop","colorPicker","ColorPicker","color","autoInputFallback","setBGColor","keyCode","blur","setColor","getColor","isDuplicate","addChoice","newChoice","CustomFieldChoice","choiceName","last","focus","deleteChoice","checkAllSub","isChecked","checked","$visible","$editable","removeModal","close","SaveDontSave","onDontSave","numbersOnly","delete","fetchModel","sortChoicesAlpha","newModel","DailyReportSettings","DirectCostSettings","FinanceCoreFieldSettings","click .cb-visible","click .cb-required","fnRender","isVisible","canEdit","fetchPrimeContractFieldSettings","financeCoreFields","primeContacts","primeContract","fetchCommitmentFieldSettings","commitment","fetchCommitmentChangeOrderFieldSettings","changeOrder","fetchPrimeContractChangeOrderFieldSettings","fetchReceivableInvoiceFieldSettings","invoices","receivableInvoice","fetchPayableInvoiceFieldSettings","payableInvoice","fetchDirectCostFieldSettings","directCosts","directCost","isVisibleChanged","isRequiredChanged","GroupSettings","click .add-group","click .edit-group","click .delete-group","click tr","click .merge-groups","click .link-groups","linkStatus","HAS_GROUPS_LINKED","ENABLE_DIRECTORY","groupLevels","GROUP_LEVELS","pageLength","groupArr","groups","groupName","editGroup","deleteGroup","defaultContent","includes","replace","date","parseDateString","getDateString","groupLevelSelect","deleteButtonText","deleteButtonColorClass","declineButtonText","declineButtonColorClass","onCancel","newGroup","groupModel","groupDescription","createdOn","Date","group","changeLinked","isLinked","GroupLinkModal","onSuccess","extra","EditGroupModal","sortGroupsAlpha","getValue","selectGroup","ctrlKey","toggleClass","checkMergeButton","rows","mergeGroups","groupArray","MergeGroupsModal","page","draw","click .merge-save","click .merge-close","mergePicker","splitGroups","mergeInto","loader","Loader","click .group-save","click .group-close","click .group-delete","focusout .group-desc","focusout .group-desc-sub","click .btn-new-parent","click .btn-existing-parent","click .btn-new-sub-parent","click .btn-existing-sub-parent","click .change-to-existing","click .change-to-existing-sub","groupTwoPicker","updateTotal","liveSearch","groupThreePicker","showExistButtons","show","subShow","groupTwoNew","groupTwoExisting","_toConsumableArray","Set","item","arr","groupThreeNew","groupThreeExisting","match","errorMsg","groupId","renderError","fileUploader","files","FileUploaderGrid","canUpload","dictDefaultMessage","canDelete","isRemoveOnComplete","result","PayableInvoiceSettings","_this4","ReceivableInvoiceSettings","_this5","meetings","MeetingSettings","SettingsNav","click .settings-nav-item","click .cb-enable-contact-core-field-settings","renderAccountSettings","saveToolbar","toolbars","SettingsSaveToolbar","companyInfoSettings","activateNavItem","navItemClicked","tab","tabUpper","router","navigate","trigger","renderAddressBookSettings","renderOrderingSettings","renderProjectSettings","renderBidFormSettings","renderScheduleSettings","renderRFISettings","renderDailyReportSettings","renderPunchListSettings","renderActionItemSettings","renderCostCodeSettings","renderTaxCodeSettings","renderTimeCardSettings","renderPrimeContractSettings","renderGroupSettings","renderRegionSettings","renderCommitmentSettings","renderInvoicingSettings","renderDirectCostSettings","renderMeetingSettings","renderUserTypeSettings","renderUsers","renderSSO","renderSubmittalSettings","renderIntegrations","renderChangeRequestSettings","renderFeatureSettings","bidFormSettings","bidForms","Settings","addSaveModel","isDefaultSettings","TemplateManagement","integrationSettings","integrations","IntegrationsList","initOptions","featureSettings","FeatureSettings","FeatureSetting","scheduleSettings","TaskStatuses","orderingSettings","fetchOrderingSettings","PlanRoomOrderingSettings","addressBookSettings","fetchAddressBookSettings","fetchCompanyCustomFields","companyFieldSettings","fetchContactCustomFields","contactFieldSettings","renderContactCoreFieldSettings","$fields","ENABLE_CONTACT_FIELD_SETTINGS","contactCoreFieldSettings","enableContactCoreFieldSettings","enable","planroomSettings","fetchPlanRoomSettings","PlanRoomGeneralSettings","fetchProjectCustomFields","customFieldSettings","ProjectStatuses","MessageStatuses","ENABLE_PROJECT_STATUS_ID","fetchProjectStatuses","ProjectStatusList","ProjectNDAs","rfiCustomFieldSettings","fetchRFICustomFields","rfi","rfiSettings","fetchRFISettings","RFISettings","dailyReportSettings","punchListSettings","fetchPunchListCustomFields","punchlistTemplates","actionItemSettings","fetchActionItemCustomFields","actionItemTemplates","costCodeSettings","CostCodeSettings","costTypeSettings","CostTypeSettings","taxCodeSettings","TaxCodeSettings","timeCardSettingsView","timeCardSettings","timecards","TimeCardSettings","timeCardCategories","TimeCardCategories","categories","groupSettings","fetchUserGroups","Group","bidPackages","templateType","regionSettings","RegionSettings","changeRequestSettings","changeRequestCustomFields","changeRequests","CustomFields","changeRequestCustomFieldSettings","primeContractSettings","primeContractCustomFields","PrimeContractSettings","TermsList","primeContractCustomFieldSettings","primeContractCOSettings","primeContractCOCustomFields","ChangeOrderCustomFields","ChangeOrderSettings","PrimeContractChangeOrderSettings","primeContractCOCustomFieldSettings","commitmentSettings","commitmentCustomFields","_this6","commitmentCustomFieldSettings","commitmentCOSettings","commitmentCOCustomFields","commitmentCOCustomFieldSettings","payableInvoiceSettings","payableInvoiceCustomFields","PayableInvoiceCustomFields","payableInvoiceCustomFieldSettings","receivableInvoiceSettings","receivableInvoiceCustomFields","ReceivableInvoiceCustomFields","receivableInvoiceCustomFieldSettings","meetingCustomFields","meetingSettings","meetingCustomFieldSettings","meetingTemplates","directCostCustomFields","directCostSettings","directCostCustomFieldSettings","userTypeSettings","fetchUserTypes","types","UserTypeSettings","UserType","userManagement","fetchUsers","UserSettings","fetchUserCustomFields","userCustomFieldSettings","ssoSettings","fetchSSOProviders","providers","SSOSettings","submittalSettings","submittalTemplates","submittalStatuses","SubmittalStatusSettings","fetchSubmittalCustomFields","submittalFieldSettings","numberFormatHelpers","createFormatStringPreview","numberFormat","token","isText","label","numberFormatProperty","editButton","on","edit","renderFormatString","NumberFormatEditModal","parentView","click a.new-token","click .edit-token","change .input-ct-min-len","click .cancel-edit-token","click .delete-token","click .save-token","click .save","beforeModalCreated","_beforeModalCreated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","numFmt","wrap","_context","prev","next","tokens","category","isDate","dateFormatId","fetchERPIntegration","erpIntegration","sent","project","customField","INT","stop","apply","arguments","_this7","editRow","dateFormatSelectPicker","datatable","a","b","onTableDraw","inputmask","regex","commitmentNumberTokenDateFormatNames","_row$minLength","minLength","className","dom","counterMinLengthChanged","minLen","isNaN","addToken","tokenIndex","newToken","clone","isAdding","editToken","invalidate","cancelEdit","deleteToken","saveToken","saveFormat","i","click .btn-ordering-save","click .btn-payment-info","HIDE_SAVE_PAYMENT_INFO","changePaymentInfo","PaymentInfoModal","saveSettings","patch","click .btn-save","click .btn-cancel","keyup .input-card-number","click .btn-edit","click .btn-copy-profile","Contact","PaymentInfo","today","isEdit","inputMaskCreditCard","monthPicker","yearPicker","setCardBrand","copyProfile","cardBrand","paymentHelpers","getCardIssuer","icon","getCardIssuerIconFAClass","$prepend","emailValid","validators","validateEmail","isContactValid","isAddressValid","isStateValid","isCityValid","isZipValid","isPhoneValid","isCardValid","validateCreditCard","isYearValid","isMonthValid","cardNumber","cancel","_this8","_this9","keydown .input-default-bid-due-time","contextmenu .input-default-bid-due-time","click .input-project-user-2-show","enableFax","ENABLE_FAX","showGroupCompanyView","PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY","showGroupContactView","PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT","showCompanyView","PROJECT_WALL_ADMIN_VIEW_COMPANY","showContactView","PROJECT_WALL_ADMIN_VIEW_CONTACT","createDefaultItbMethodArray","isTimeOnly","dateVal","time","amPm","changed","itbPicker","defaultArray","newValue","showUser2Changed","click .add-message-status","click .edit-message-status","click .delete-message-status","click .save-message-status","click .cancel-edit-message-status","keydown .input-message-status","planRoomSettings","messageStatuses","targets","display","messageStatusContext","disabledAttr","disableCommasAndPipes","preventDefault","addStatusClicked","PlanRoomSettings","canParticipantSet","editStatusClicked","deleteStatus","toArray","messageStatusConstructor","_ref","statusSave","status","$name","isNameValid","indexOf","cancelEditStatus","click .add-project-status","click .edit-project-status","click .delete-project-status","click .save-project-status","click .cancel-edit-project-status","keydown .input-project-status","keydown .input-activity-rank","projectStatuses","filteredData","sNameLower","startReorder","projectStatusContext","disableNumbers","backgroundColor","foregroundColor","activityRank","editStatus","newArray","saveReorder","array","isNull","node","undefined","projectStatusConstructor","_ref2","isColorValid","$rank","isRankValid","colorHelpers","idealLinkColorForBackground","errorText","click .btn-edit-project-status","click .btn-delete-project-status","click .btn-save-project-status","click .btn-cancel-edit-project-status","rowCallback","isShown","deleteProjectStatus","buttons","editProjectStatusClicked","projectStatus","fnEdit","eps","defaultColor","substring","changeDefaultAlert","newProjectStatus","returnCopy","copyProjectStatuses","resetData","copy","newPs","returnName","u","fnAdd","ProjectStatus","isDefault","projectStatusColor","projectStatusSave","deleteProjectStatusClicked","fnDelete","dps","cancelEditProjectStatus","click .btn-add-nda","click .btn-edit-nda","click .btn-delete-nda","fetchNDAs","ndas","editNDA","deleteNDA","addNDAClicked","newNda","ProjectNDA","editNDAClicked","nda","EditProjectNDAModal","deleteNDAClicked","Region","BaseModel","idAttribute","notifyName","Regions","BaseCollection","click .add-region","click .btn-edit-region","click .btn-delete-region","click .btn-save-region","click .btn-cancel-edit-region","onFetch","regionContext","_defineProperty","newRegion","regionDescription","editRegion","deleteRegion","region","regionSave","cancelEditRegion","afterInit","companyName","cardholderName","address1","address2","city","zip","phone","phoneExt","email","expMonth","expYear","parse","OrderingSettings","AddressBookSettings","manageSignature","signatures","SignatureSubmitModal","fetchSignature","onSubmit","cb","sso","providerNames","AZURE_AD","OKTA","ONELOGIN","OTHER","Provider","params","getProviderName","refreshProvisioningToken","toJSON","response","provisioningToken","guid","afterSave","Providers","click .btn-add-provider","click .btn-edit-provider","click .btn-delete-provider","enablePermissions","editProvider","deleteProvider","note","provider","EditSSOProviderModal","isUpdatingCertificate","change .cb-enable-provisioning","click .btn-refresh-provisioning-token","click .btn-update-certificate","click .btn-delete","provisioningChanged","provisioningEnabled","updateCertificate","isSignOnUrlValid","isIssuerValid","isCertificateValid","restore","click .edit-terms","click .delete-terms","click .add-terms","fetchCommitmentTerms","termsCollection","fetchPrimeContractTerms","editTerms","addTermsClicked","newTerm","terms","editTermsClicked","EditTermsModal","term","deleteTermsClicked","deleteTerms","click .btn-close","termsEditor","HTMLEditor","editorHeight","isHideTokens","contents","change .cb-enable-line-items","change .cb-enable-clock-in","click .add-timecard-category","click .btn-save-category","click .btn-edit-category","click .btn-cancel-edit-category","click .btn-delete-category","_this10","fetchCostTypes","costTypes","renderCategoryTable","costType","categoryContext","categoryDataTable","enableClockInChanged","enableOvertime","enableDoubletime","addCategory","newCategory","TimeCardCategory","editCategory","saveCategory","cancelEditCategory","deleteCategory","userSeats","userLimits","change .cb-enable-permissions","click .btn-add-user","click .btn-edit-user-perms","click .btn-edit-user","click .btn-delete-user","click .btn-edit-notification-settings","click .btn-change-seats","click .btn-change-limits","ENABLE_PERMISSIONS","IS_DOCUMENT_CLERK","columnData","createdDate","notificationButton","hasPermission","renderUserSeats","editUser","column","notificationSettings","editPermissions","deleteUser","$userSeats","fetchUserLimits","showButtons","FREE","manageUserSeats","UserSeatsManagementModal","manageUserLimits","UserLimitsManagementModal","fnNew","newUser","User","contactName","username","pmUser","itbUser","userTypeId","getDefault","notificationSettingsClicked","NotificationSettingsEditorModal","editPermissionsClicked","permissions","PermissionsEditorModal","BaseEditContactModal","isShowCloseButton","selectedSubscriptionId","click .btn-add-seat","click .btn-remove-seat","keyup .input-user-seats","getCostsPerUser","costs","changeCosts","activeUsers","where","select","userSeatAdded","userSeatsChanged","userSeatRemoved","userSeatsInputChanged","$err","$btnSave","$payment","renderTotal","cost","BASIC","basic","PRO","pro","ENTERPRISE","enterprise","$pOuter","newUserSeats","formatCurrency","err","changeUserSeats","click .btn-add-itb-seat","click .btn-add-pm-seat","click .btn-remove-pm-seat","click .btn-remove-itb-seat","keyup .input-itb-user-seats","keyup .input-pm-user-seats","fnFetchUsers","itbUsers","pmUsers","renderHeader","pmUserSeatAdded","pmUserSeatRemoved","seats","pmUserSeatsInputChanged","itbUserSeatAdded","itbUserSeatRemoved","itbUserSeatsInputChanged","click .add-user-type","click .btn-edit-ut-perms","click .btn-edit-user-type","click .btn-delete-user-type","click .btn-save-user-type","click .btn-cancel-edit-user-type","click .add-company-user-type","click .btn-edit-company-ut-perms","click .btn-edit-company-user-type","click .btn-delete-company-user-type","click .btn-save-company-user-type","click .btn-cancel-edit-company-user-type","click .btn-edit-company-user-type-notification-settings","colorpickerCreate","Users","companyDataTable","deleteUserType","userTypeContext","deleteCompanyUserType","createColorPickerBind","io","string","colorpicker","setColorPickerValue","refreshDataTables","changeDefaultTypeAlert","copyUserTypes","newUserType","newUt","isCompanyUser","userTypeColor","addCompanyClicked","companyNotificationSettingsClicked","newUserTypes","editCompanyPermissionsClicked","editUserTypeClicked","editUserType","eut","editCompanyUserTypeClicked","editCompanyUserType","deleteUserTypeClicked","dut","userHasType","ChangeUserTypeModal","deleteCompanyUserTypeClicked","userTypeSave","companyUserTypeSave","cancelEditUserType","cancelEditCompanyUserType","subtitle","click .user-type-change-done","paginate","getByUserType","checkUsersLength","checkDone"],"mappings":"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","file":"app.js","sourcesContent":["PJQ.views.settings = {};\nPJQ.models.settings = {};\nPJQ.collections.settings = {};\n\nPJQ.modules.settings = {\n oldRoutes: [],\n routes: [\n {\n route: '?procore=:procore&code=:code',\n name: 'procoreRefer',\n callback: function (procore, code) {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'integration'\n },\n {\n endpoint: 'procore'\n },\n {\n endpoint: 'link'\n }\n ], [\n {\n parameter: 'userId',\n value: procore\n },\n {\n parameter: 'code',\n value: code\n }\n ])\n }).post().done(function () {\n PJQ.app.initNavigator({\n activeItem: 'settings',\n viewOptions: {\n procoreCode: code\n }\n });\n });\n }\n },\n {\n route: \"settings\",\n name: 'settings',\n callback: function () {\n PJQ.app.initNavigator({\n activeItem: \"settings\"\n });\n }\n },\n {\n route: \"settings/billing\",\n name: 'billingInfo',\n callback: function () {\n PJQ.app.initNavigator({\n activeItem: \"settings\",\n viewOptions: {\n initView: \"billing\"\n },\n preventTour: true\n });\n }\n },\n {\n route: 'settings/addressbook',\n name: 'addressBookSettings',\n callback: function () {\n PJQ.app.initNavigator({\n activeItem: \"settings\"\n });\n }\n },\n {\n route: 'settings/account/:subscriptionId',\n name: 'settings',\n callback: function (subscriptionId) {\n PJQ.app.initNavigator({\n activeItem: \"settings\",\n viewOptions: {\n subscriptionId: parseInt(subscriptionId)\n }\n });\n }\n },\n {\n route: 'settings/projects',\n name: 'projectSettings',\n callback: function () {\n PJQ.app.initNavigator({\n activeItem: \"settings\"\n });\n }\n },\n {\n route: 'settings/:module',\n name: 'projectSettings',\n callback: function (module) {\n PJQ.app.initNavigator({\n activeItem: \"settings\",\n viewOptions: {\n initView: module\n }\n });\n }\n },\n {\n route: \"settings/integrations/:name\",\n name: 'integration',\n callback: function (name) {\n PJQ.app.initNavigator({\n activeItem: \"settings\",\n viewOptions: {\n initView: \"integrations\",\n integrationName: name\n },\n preventTour: true\n });\n }\n },\n {\n route: \"settings/integrations/:name?authorized=:authorized\",\n name: 'integrationAuth',\n callback: function (name, authorized) {\n PJQ.app.initNavigator({\n activeItem: \"settings\",\n viewOptions: {\n initView: \"integrations\",\n integrationName: name,\n authorized: authorized === 'true'\n },\n preventTour: true\n });\n }\n },\n ]\n};\n\nPJQ.app.addOldRoutes(PJQ.modules.settings.oldRoutes);\nPJQ.app.addRoutes(PJQ.modules.settings.routes);\n","PJQ.views.settings.CompanyInfo = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Company-Info'),\n\t\tsubTemplates: {\n\t\t\tsubscription: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'subscription-info'),\n\t\t},\n\t\tonChange: null\n\t},\n\tevents: {\n\t\t\"mouseup .btn-password-reset-modal\": \"resetPasswordModal\",\n\t\t'change .cb-directory-status': 'directoryStatusChanged',\n\t\t\"keyup input[type='text']\": \"onChange\",\n\t\t'change .user-procore-link': 'procoreLink',\n\t\t'click .btn-join-directory': 'joinDirectory',\n\t\t'click .btn-enable-auto-renew': 'enableAutoRenew',\n\t\t'click .btn-disable-auto-renew': 'disableAutoRenew',\n\t\t'click .btn-edit-card': 'changeCard'\n\t},\n\tbeforeFirstRender: function () {\n\t\tif (this.options.procoreCode)\n\t\t\tPJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN, 'code:' + this.options.procoreCode);\n\n\t\tthis.model = PJQ.app.session.user;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tbeforeRender: function () {\n\t\tthis.renderData = {\n\t\t\tmodel: this.model\n\t\t}\n\t},\n\tafterRender: function () {\n\t\tif (this.model == null || !this.model.isFetched) {\n\t\t\treturn;\n\t\t}\n\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-phone'));\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-cell'));\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-fax'));\n\n\t\tif (PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-company-type'),\n\t\t\t\thideDisabled: true,\n\t\t\t\tdefaultValue: this.model.get('companyType'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('companyType', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tthis.statePicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-state'),\n\t\t\tdefaultValue: _.size(this.model.get('state')) > 0 ? this.model.get('state').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('state', value.toUpperCase());\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t\tthis.countryChanged();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-country'),\n\t\t\tnoneSelectedText: 'Select Value',\n\t\t\tdefaultValue: _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('country', value.toUpperCase());\n\t\t\t\tthis.model.set('zip', '');\n\t\t\t\tthis.model.set('state', '');\n\t\t\t\tthis.countryChanged();\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tif (this.options.procoreCode) {\n\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\tmessage: 'Your Procore login has been linked to your Pantera account.'\n\t\t\t});\n\t\t\tthis.options.procoreCode = null;\n\t\t}\n\n\t\tif (PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tthis.renderSubscriptionInfo();\n\t\t\tthis.renderDirectoryStatus();\n\t\t}\n\t},\n\tdirectoryStatusChanged: function (e) {\n\t\tlet isActive = $(e.currentTarget).prop('checked');\n\t\tif (isActive) {\n\t\t\tthis.joinDirectory();\n\t\t}\n\t\telse {\n\t\t\tthis.leaveDirectory();\n\t\t}\n\t},\n\tjoinDirectory: function () {\n\t\tPJQ.app.session.joinDirectory(_.bind(function () {\n\t\t\tthis.$(\".directory-alert\").remove();\n\t\t\tthis.renderDirectoryStatus();\n\t\t}, this));\n\t},\n\tleaveDirectory: function () {\n\t\tPJQ.app.session.leaveDirectory(_.bind(function () {\n\t\t\tthis.renderDirectoryStatus();\n\t\t}, this));\n\t},\n\trenderDirectoryStatus: function () {\n\t\tlet isActive = PJQ.app.session.contact != null && !PJQ.app.session.contact.get('isBlacklisted');\n\t\tthis.$('.directory-status-label').html(isActive ? 'Active' : 'Inactive').css('color', isActive ? PJQ.constants.colors.GREEN : PJQ.constants.colors.RED);\n\t\tthis.$('.cb-directory-status').prop('checked', isActive);\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t},\n\trenderSubscriptionInfo: function () {\n\t\tif (!PJQ.app.session.get('onAccount') && PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tPJQ.app.session.listenSubscriptionChanged(\"accountSettings\", _.bind(function () {\n\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t}, this));\n\t\t\tPJQ.app.session.fetchBillingInfo(_.bind(function (billingInfo) {\n\t\t\t\tthis.renderSubTemplate(false, this.options.subTemplates.subscription, this.$('.subscription-info'), {\n\t\t\t\t\tsubscription: PJQ.app.session.subscription,\n\t\t\t\t\tbillingInfo: billingInfo\n\t\t\t\t});\n\t\t\t}, this));\n\t\t}\n\t},\n\tenableAutoRenew: function () {\n\t\tPJQ.app.session.updateAutoRenew(true, _.bind(function () {\n\t\t\tthis.renderSubscriptionInfo();\n\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\tmessage: \"Auto renew successfully enabled\"\n\t\t\t});\n\t\t}, this), _.bind(function () {\n\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\tmessage: \"Encountered an error enabling auto renew. Please contact customer service,\"\n\t\t\t});\n\t\t}, this));\n\t},\n\tdisableAutoRenew: function () {\n\t\tnew PJQ.views.subscriptions.DisableAutoRenewModal({\n\t\t\tsubscription: PJQ.app.session.subscription,\n\t\t\tonYes: _.bind(function () {\n\t\t\t\tPJQ.app.session.updateAutoRenew(false, _.bind(function () {\n\t\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: \"Auto renew successfully disabled\"\n\t\t\t\t\t});\n\t\t\t\t}, this), _.bind(function () {\n\t\t\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\t\t\tmessage: \"Encountered an error disabling auto renew. Please contact customer service,\"\n\t\t\t\t\t});\n\t\t\t\t}, this));\n\t\t\t}, this)\n\t\t});\n\t},\n\tchangeCard: function () {\n\t\tPJQ.app.session.fetchBillingInfo(_.bind(function (billingInfo) {\n\t\t\tnew PJQ.views.payment.PaySimplePaymentModal({\n\t\t\t\tmodel: billingInfo,\n\t\t\t\tonSave: _.bind(function () {\n\t\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: \"You have successfully updated your card on file.\"\n\t\t\t\t\t});\n\t\t\t\t}, this),\n\t\t\t\tonError: function () {\n\t\t\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\t\t\tmessage: \"Encountered an error updating your card. Please contact customer service.\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}, this));\n\t},\n\tresetPasswordModal: function () {\n\t\tnew PJQ.views.settings.ResetPasswordModal();\n\t},\n\tcountryChanged: function () {\n\t\tlet country = _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : 'us',\n\t\t\toptions = '';\n\t\t_.each(PJQ.constants.states[country], function (state) {\n\t\t\toptions += '';\n\t\t});\n\t\tthis.statePicker.$el.html(options);\n\t\tthis.statePicker.refresh();\n\t\tif (_.size(this.model.get('state')) > 0)\n\t\t\tthis.statePicker.setValue(this.model.get('state').toLowerCase());\n\n\t\tPJQ.helpers.inputHelpers.inputMaskZip(this.$('.user-edit-zip'), country);\n\t},\n\tvalidate: function () {\n\t\tlet errors = 0;\n\t\tlet isValid = true;\n\n\t\tlet isCompanyValid = _.size(this.model.get('companyName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-company-name'), isCompanyValid);\n\t\tisValid = isCompanyValid && isValid;\n\t\tif (!isValid) {\n\t\t\terrors += 1\n\t\t}\n\n\t\treturn !!(isValid && errors === 0);\n\t},\n\tprocoreLink: function () {\n\t\tlet isLinked = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN);\n\t\tif (isLinked) {\n\t\t\tnew PJQ.views.modals.YesNo({\n\t\t\t\theader: \"Remove Procore User Link?\",\n\t\t\t\tbody: \"Are you sure you would like to remove your link between Pantera and Procore? \",\n\t\t\t\tonYes: _.bind(function () {\n\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'integration'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'procore'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'unlink'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t])\n\t\t\t\t\t}).post().done(_.bind(function (data) {\n\t\t\t\t\t\tPJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN);\n\t\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\t\tmessage: 'Your Procore login has been unlinked from your Pantera account.'\n\t\t\t\t\t\t});\n\t\t\t\t\t}, this));\n\n\t\t\t\t}, this),\n\t\t\t\tonNo: _.bind(function () {\n\t\t\t\t\tthis.$('.user-procore-link').prop('checked', true);\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t}\n\t\telse {\n\t\t\tnew PJQ.views.modals.YesNo({\n\t\t\t\theader: \"Link Procore Account\",\n\t\t\t\tbody: \"Are you sure you want to link your Procore account? Please note this will redirect you to Procore to sign in and authorize the link.\",\n\t\t\t\tonYes: _.bind(function () {\n\t\t\t\t\tlet redirect = window.location.origin + '?procore=' + PJQ.app.session.user.id.toString(),\n\t\t\t\t\t\turl = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROCORE_URL_AUTH) + '/oauth/authorize?response_type=code&client_id=' + PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROCORE_CLIENT_ID) + '&redirect_uri=' + encodeURIComponent(redirect);\n\t\t\t\t\tdocument.location = url;\n\t\t\t\t}, this),\n\t\t\t\tonNo: _.bind(function () {\n\t\t\t\t\tthis.$('.user-procore-link').prop('checked', false);\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t}\n\t}\n});\n\nPJQ.views.settings.ResetPasswordModal = PJQ.views.BaseModal.extend({\n\tbaseOptions: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Reset-Password'),\n\t\tisVerticalCenter: false,\n\t\tisShowResetButton: true,\n\t\tresetButtonText: \"Reset Password\",\n\t\tresetButtonColorClass: 'primary',\n\t\tisShowCancelButton: true,\n\t\tcancelButtonText: \"Close\",\n\t\tonReset: _.noop,\n\t\twidth: null,\n\t\tminWidth: null,\n\t\tmaxWidth: null,\n\t\theight: null,\n\t\tminHeight: null,\n\t\tmaxHeight: null,\n\t\tfitHeight: false\n\t},\n\tdefaults: {},\n\toptions: {},\n\tdefaultEvents: {\n\t\t'hidden.bs.modal': 'removeModal',\n\t\t'click .modal-reset': 'onReset',\n\t\t'click .show-hide': 'showHide',\n\t\t'click .show-hide-confirm': 'showHide'\n\t},\n\tevents: {},\n\tbeforeFirstRender: function () {\n\t\tthis.options = _.defaults(this.options, {\n\t\t\tuuid: \"modal-\" + _.uniqueId()\n\t\t});\n\t\t//force element to null in case one was passed in\n\t\t//this view uses modals only so it creates its own container to insert into in the \n\t\tthis.createModal();\n\t\tthis.afterModalCreated();\n\t},\n\tonReset: function () {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet isConfirmValid = true,\n\t\t\tisConfirmLength = true,\n\t\t\terror = \"\",\n\t\t\tnewPass = this.$('.new-pass').val(),\n\t\t\tnewPassConfirm = this.$('.new-pass-confirm').val();\n\n\t\tif (newPass !== newPassConfirm) {\n\t\t\tisConfirmValid = false;\n\t\t\terror += \"Passwords do not match. \";\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: error\n\t\t\t});\n\t\t}\n\n\t\tif (newPass.trim().length < 7) {\n\t\t\tisConfirmLength = false;\n\t\t\terror += \"Password is too short.\";\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: error\n\t\t\t});\n\t\t}\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.new-pass-confirm'), isConfirmValid);\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.new-pass'), isConfirmLength);\n\t\tif ((isConfirmValid && isConfirmLength)) {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'users'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'resetpassword'\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t\tdata: {\n\t\t\t\t\tpassword: newPass\n\t\t\t\t}\n\t\t\t}).post().success(_.bind(function (data) {\n\t\t\t\tif (data.success) {\n\t\t\t\t\tthis.options.success = true;\n\t\t\t\t\tthis.options.request = null;\n\t\t\t\t\tthis.$('.password-group').hide();\n\t\t\t\t\tthis.$('.modal-reset').hide();\n\n\t\t\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\ttext: \"Password successfully changed!\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (data.error === \"CURRENT_PASSWORD\") {\n\t\t\t\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\t\t\t\ttype: 'danger',\n\t\t\t\t\t\t\ttext: \"New password matches current password\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)).fail(_.bind(function () {\n\t\t\t\tthis.options.success = false;\n\t\t\t\tthis.render();\n\t\t\t}, this));\n\t\t}\n\t},\n\tshowHide: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\tshowHide = this.$('.new-pass').attr('type'),\n\t\t\tshowHideConfirm = this.$('.new-pass-confirm').attr('type');\n\t\tif (target.context.id === \"btn-show-hide\") {\n\t\t\tif (showHide === \"password\") {\n\t\t\t\tthis.$('.new-pass').attr('type', \"text\");\n\t\t\t\tthis.$('.show-hide span').removeClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide span').addClass('fa-eye')\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$('.new-pass').attr('type', \"password\");\n\t\t\t\tthis.$('.show-hide span').addClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide span').removeClass('fa-eye')\n\t\t\t}\n\t\t}\n\t\tif (target.context.id === \"btn-show-hide-confirm\") {\n\t\t\tif (showHideConfirm === \"password\") {\n\t\t\t\tthis.$('.new-pass-confirm').attr('type', \"text\");\n\t\t\t\tthis.$('.show-hide-confirm span').removeClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide-confirm span').addClass('fa-eye')\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$('.new-pass-confirm').attr('type', \"password\");\n\t\t\t\tthis.$('.show-hide-confirm span').addClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide-confirm span').removeClass('fa-eye')\n\t\t\t}\n\t\t}\n\t}\n});\n","PJQ.views.settings.AddressBookGeneralSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Address-Book-General'),\n\t\tonChange: null\n\t},\n\tbeforeFirstRender: function () {\n\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t},\n\tbeforeRender: function () {\n\t\tthis.showLaborStatus = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.IS_HIDE_UNION_STATUS) !== true;\n\t\tthis.groupLabel = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.GROUP_LABEL) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL) : \"Trades\";\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\tgroupLabel: this.groupLabel,\n\t\t\tnewAddressBook: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_NEW_ADDRESSBOOK),\n\t\t\tshowLaborStatus: this.showLaborStatus\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tif (!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_NEW_ADDRESSBOOK)) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-company-default-view'),\n\t\t\t\tdefaultValue: (_.size(this.model.get('companyDefaultView')) > 0) ? this.model.get('companyDefaultView') : \"view_group\",\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('companyDefaultView', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-view'),\n\t\t\t\tdefaultValue: (_.size(this.model.get('defaultView')) > 0) ? this.model.get('defaultView') : \"view_group\",\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('defaultView', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tlet defaultFilters = _.map(PJQ.app.session.userTypes.getByIsCompany(false), function (userType) {\n\t\t\treturn userType.get('userTypeId');\n\t\t});\n\t\t$.merge(defaultFilters, [PJQ.constants.addressBook.directoryFilter.PRIVATE_ONLY, PJQ.constants.addressBook.contactStatusFilter.ACTIVE, PJQ.constants.addressBook.contactStatusFilter.INACTIVE]);\n\t\tif (this.showLaborStatus)\n\t\t\t$.merge(defaultFilters, [PJQ.constants.addressBook.laborStatusFilter.UNION, PJQ.constants.addressBook.laborStatusFilter.NON_UNION, PJQ.constants.addressBook.laborStatusFilter.PREV_WAGE, PJQ.constants.addressBook.laborStatusFilter.NOT_AVAILABLE]);\n\t\tthis.filterSelectPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-default-filter'),\n\t\t\tisIntChoices: true,\n\t\t\tisMultiple: true,\n\t\t\texclusiveChoices: [-3, -4],\n\t\t\tisGroup: true,\n\t\t\tmustSelectValuePerOptGroup: true,\n\t\t\tdefaultValue: this.model.get('defaultFilters').length > 0 ? this.model.get('defaultFilters').split(',') : defaultFilters,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('defaultFilters', value.join())\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.locationTypeSelectPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-default-location-type'),\n\t\t\tisIntChoices: true,\n\t\t\tisMultiple: true,\n\t\t\tmustSelectValue: true,\n\t\t\tdefaultValue: this.model.get('defaultLocationFilters').length > 0 ? this.model.get('defaultLocationFilters').split(',') : [PJQ.constants.addressBook.locationTypeFilter.WORK_AREA, PJQ.constants.addressBook.locationTypeFilter.OFFICE_LOCATION],\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('defaultLocationFilters', value.join())\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-rows-per-page'),\n\t\t\tdefaultValue: this.model.get('rowsPerPage'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('rowsPerPage', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input'\n\t\t\t],\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t}\n});\n\nPJQ.views.settings.ContactFieldSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Contact-Core-Fields')\n\t},\n\tevents: {\n\t\t'click .cb-visible-contact': 'contactVisibleChanged',\n\t\t'click .cb-visible-admin': 'adminVisibleChanged',\n\t\t'click .cb-required-contact': 'contactRequiredChanged',\n\t\t'click .cb-required-admin': 'adminRequiredChanged'\n\t},\n\tbeforeFirstRender: function () {\n\t\tPJQ.app.session.fetchContactFieldSettings(null, _.bind(function (fields) {\n\t\t\tthis.collection = fields;\n\n\t\t\tlet fillFields = [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"active\",\n\t\t\t\t\tname: \"Active\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\tisRequiredAdmin: false,\n\t\t\t\t\tcanBeRequired: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"companyName\",\n\t\t\t\t\tname: \"Company Name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"laborStatus\",\n\t\t\t\t\tname: \"Labor Status\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"classifications\",\n\t\t\t\t\tname: \"Certifications\",\n\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\tisRequiredAdmin: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"sector\",\n\t\t\t\t\tname: \"Sector\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"companyNotes\",\n\t\t\t\t\tname: \"Company Notes\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"contactName\",\n\t\t\t\t\tname: \"Contact Name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"title\",\n\t\t\t\t\tname: \"Title\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"address1\",\n\t\t\t\t\tname: \"Address 1\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"address2\",\n\t\t\t\t\tname: \"Address 2\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"city\",\n\t\t\t\t\tname: \"City\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"state\",\n\t\t\t\t\tname: \"State\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"zip\",\n\t\t\t\t\tname: \"Postal Code\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"country\",\n\t\t\t\t\tname: \"Country\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"phone\",\n\t\t\t\t\tname: \"Phone\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cell\",\n\t\t\t\t\tname: \"Cell\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"fax\",\n\t\t\t\t\tname: \"Fax\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"email\",\n\t\t\t\t\tname: \"Email\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"contactNotes\",\n\t\t\t\t\tname: \"Contact Notes\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"groups\",\n\t\t\t\t\tname: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.GROUP_LABEL) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL) : \"Groups\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"workAreas\",\n\t\t\t\t\tname: \"Work Areas\"\n\t\t\t\t}\n\t\t\t];\n\n\t\t\t_.each(fillFields, _.bind(function (field, index) {\n\t\t\t\tlet matchField = this.collection.findWhere({fieldName: field.fieldName});\n\t\t\t\tif (matchField == null) {\n\t\t\t\t\tthis.collection.add(_.defaults(field, {\n\t\t\t\t\t\tisVisibleContact: true,\n\t\t\t\t\t\tisVisibleAdmin: true,\n\t\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\t\tisRequiredAdmin: false,\n\t\t\t\t\t\tsortOrder: index,\n\t\t\t\t\t\tcanContactEdit: field.canContactEdit !== false\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmatchField.set({\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tsortOrder: index,\n\t\t\t\t\t\tcanContactEdit: field.canContactEdit !== false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this));\n\n\t\t\tthis.render();\n\t\t}, this));\n\t},\n\tafterRender: function () {\n\t\tif (this.collection == null || !this.collection.isFetched) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".field-table\"),\n\t\t\tdata: this.collection.models,\n\t\t\tisHideSearch: true,\n\t\t\tpaging: false,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"visible\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t\"data\": \"attributes.name\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Visible To Contact\",\n\t\t\t\t\t\"data\": \"attributes.isVisibleContact\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tlet contactEdit = row.get('canContactEdit') !== false;\n\t\t\t\t\t\treturn '
';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required for Contact\",\n\t\t\t\t\t\"data\": \"attributes.isRequiredContact\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tif (row.get('canBeRequired') === false) {\n\t\t\t\t\t\t\treturn '
';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet contactEdit = row.get('canContactEdit') !== false;\n\t\t\t\t\t\treturn '
';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Visible To Admin\",\n\t\t\t\t\t\"data\": \"attributes.isVisibleAdmin\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data) {\n\t\t\t\t\t\treturn '
'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required for Admin\",\n\t\t\t\t\t\"data\": \"attributes.isRequiredAdmin\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tif (row.get('canBeRequired') === false) {\n\t\t\t\t\t\t\treturn '
';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '
'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t},\n\tcontactVisibleChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data(),\n\t\t\tenabled = $target.prop('checked');\n\t\tsetting.set('isVisibleContact', enabled);\n\n\t\tif (enabled) {\n\t\t\t// if the field is made visible to contacts, it must be visible to admins too\n\t\t\tsetting.set('isVisibleAdmin', true);\n\t\t}\n\t\telse {\n\t\t\t// if the field is made invisible to contacts\n\t\t\t// it must be made not required for contacts\n\t\t\tsetting.set('isRequiredContact', false);\n\t\t\tsetting.set({\n\t\t\t\tisRequiredContact: false\n\t\t\t});\n\t\t}\n\n\t\tsetting.queueSave();\n\t\tthis.dataTable.refresh();\n\t},\n\tadminVisibleChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data(),\n\t\t\tenabled = $target.prop('checked');\n\t\tsetting.set('isVisibleAdmin', enabled);\n\n\t\tif (!enabled) {\n\t\t\t// if the field is made invisible to admins\n\t\t\t// it must be made not required for admins\n\t\t\t// it must also be made not visible and not required for contacts\n\t\t\tsetting.set({\n\t\t\t\tisVisibleContact: false,\n\t\t\t\tisRequiredContact: false,\n\t\t\t\tisRequiredAdmin: false\n\t\t\t});\n\t\t\tthis.dataTable.refresh();\n\t\t}\n\n\t\tsetting.queueSave();\n\t},\n\tcontactRequiredChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data();\n\t\tsetting.set('isRequiredContact', $target.prop('checked'));\n\t\tsetting.queueSave();\n\t},\n\tadminRequiredChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data();\n\t\tsetting.set('isRequiredAdmin', $target.prop('checked'));\n\t\tsetting.queueSave();\n\t}\n});\n","PJQ.views.settings.ChangeRequestSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'change-requests'),\n model: null,\n customFields: null\n },\n events: {},\n beforeFirstRender: function () {\n this.listenTo(this.model, 'fetch', this.render);\n },\n afterRender: function () {\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});","PJQ.views.settings.CommitmentSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'commitments'),\n model: null,\n customFields: null\n },\n events: {\n 'click .btn-manage-signature': 'manageSignature',\n 'keydown .input-percent': 'numbersOnly',\n 'change .input-percent': 'formatPercent',\n },\n renderData: function () {\n return {\n model: this.model\n }\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n setDefaultValues: true,\n useDecimalPercentFields: true,\n watchElements: [\n 'input'\n ],\n afterChange: ($el, attribute) => {\n if (attribute === 'disableSubcontracts' || attribute === 'disablePO') {\n this.render();\n }\n\n this.onChange();\n }\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-default-accounting-method'),\n isIntChoices: true,\n isMultiple: false,\n defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n onChange: _.bind(function (value) {\n this.model.set('defaultAccountingMethod', value);\n this.onChange();\n }, this)\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format-po'),\n commitmentType: PJQ.constants.commitments.commitmentType.PURCHASE_ORDER,\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('purchaseOrderNumberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format-subcontract'),\n commitmentType: PJQ.constants.commitments.commitmentType.SUBCONTRACT,\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('subcontractNumberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.views.settings.SignatureEditInput({\n el: this.$('.manage-signature-input'),\n signature: this.model.get('defaultSignature'),\n headerSubText: \"Manage your company's default signature for Commitments\",\n onSave: _.bind(function (signature) {\n this.model.set('defaultSignature', signature);\n this.onChange();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n formatPercent: function (e) {\n $(e.currentTarget).val(PJQ.helpers.formatHelpers.formatPercent($(e.currentTarget).val()));\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});\n\nPJQ.views.settings.CommitmentChangeOrderSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'commitment-change-orders'),\n model: null,\n customFields: null\n },\n events: {},\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ],\n afterChange: ($el, attribute) => {\n this.onChange();\n }\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.views.settings.SignatureEditInput({\n el: this.$('.manage-signature-input'),\n signature: this.model.get('defaultSignature'),\n headerSubText: \"Manage your company's default signature for Commitment Change Orders\",\n onSave: _.bind(function (signature) {\n this.model.set('defaultSignature', signature);\n this.onChange();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});","PJQ.views.settings.CustomFieldSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Custom-Fields'),\n\t\tfieldModel: PJQ.models.customFields.CustomField\n\t},\n\tevents: {\n\t\t'click .add-field': 'addClicked',\n\t\t'click .edit-field': 'editClicked',\n\t\t'click .delete-field': 'deleteClicked',\n\t\t'click .btn-sort-alpha': 'sortFieldsAlpha'\n\t},\n\tafterRender: function () {\n\t\tthis.fieldModel = new this.options.fieldModel();\n\t\tif (this.fieldModel instanceof PJQ.models.contacts.ContactCustomField) {\n\t\t\tthis.fieldModelName = 'contact';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.contacts.CompanyCustomField) {\n\t\t\tthis.fieldModelName = 'company';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.projects.ProjectCustomField) {\n\t\t\tthis.fieldModelName = 'project';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.actionItems.ActionItemCustomField) {\n\t\t\tthis.fieldModelName = 'actionItems';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.punchlists.PunchlistCustomField) {\n\t\t\tthis.fieldModelName = 'punchList';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.CustomField) {\n\t\t\tthis.fieldModelName = 'commitment';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'commitmentChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.CustomField) {\n\t\t\tthis.fieldModelName = 'primeContract';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'primeContractChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.directcosts.CustomField) {\n\t\t\tthis.fieldModelName = 'directCost';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.PayableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'payableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.ReceivableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'receivableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.schedule.ScheduleCustomField) {\n\t\t\tthis.fieldModelName = 'schedule';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.submittals.SubmittalCustomField) {\n\t\t\tthis.fieldModelName = 'submittals';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.users.UserCustomField) {\n\t\t\tthis.fieldModelName = 'user';\n\t\t}\n\n\t\tthis.$(\".custom-field-table\").addClass('custom-field-table-' + this.fieldModelName);\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".custom-field-table\"),\n\t\t\tdata: this.collection.models,\n\t\t\tisHideSearch: true,\n\t\t\trowId: \"cid\",\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add New Field\" to create a new custom field'\n\t\t\t},\n\t\t\torder: [0, 'asc'],\n\t\t\tsortableOptions: {\n\t\t\t\tdata: this.collection,\n\t\t\t\tcontainment: \".custom-field-table-\" + this.fieldModelName,\n\t\t\t},\n\t\t\tbSort: false,\n\t\t\tonRowDoubleClick: _.bind(function (row) {\n\t\t\t\tthis.editField(row.data());\n\t\t\t}, this),\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edit',\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.editField(row.data());\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteField(row);\n\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (data != null) {\n\t\t\t\t\t\t\tcontent = '
'\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn content\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t\"data\": \"attributes.fieldName\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Type\",\n\t\t\t\t\t\"data\": \"attributes.fieldType\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required\",\n\t\t\t\t\t\"data\": \"attributes.isRequired\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data) {\n\t\t\t\t\t\treturn '
' + (data ? 'Yes' : 'No') + '
';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": \"85px\",\n\t\t\t\t\t\"render\": function () {\n\t\t\t\t\t\treturn '
';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t},\n\taddClicked: function () {\n\t\tlet newField = new this.options.fieldModel({\n\t\t\tfieldName: \"\",\n\t\t\tfieldType: PJQ.constants.customFields.fieldTypes.TEXT,\n\t\t\tisRequired: false,\n\t\t\tdefaultValue: \"\",\n\t\t\tdescription: \"\",\n\t\t\tsortOrder: this.collection.length + 1\n\t\t});\n\t\tlet names = [];\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tnames.push(model.get('fieldName'))\n\t\t});\n\t\tthis.editField(newField, names);\n\t},\n\teditClicked: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\trow = this.dataTable.getRow(target.closest('tr')),\n\t\t\tfield = row.data(),\n\t\t\tnames = [];\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tif (field.get('fieldName') !== model.get('fieldName')) {\n\t\t\t\tnames.push(model.get('fieldName'))\n\t\t\t}\n\t\t});\n\t\tthis.editField(field, names);\n\t},\n\teditField: function (field, names) {\n\t\tnew PJQ.views.settings.EditCustomFieldModal({\n\t\t\tmodel: field,\n\t\t\tnames: names,\n\t\t\tnewSort: _.bind(function (field) {\n\t\t\t\tthis.collection.add(field);\n\t\t\t\tthis.dataTable.addRow(field);\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this),\n\t\t\tonSave: _.bind(function (field) {\n\t\t\t\tif (field.hasChanged() || field.isNew()) {\n\t\t\t\t\tif (field.isNew()) {\n\t\t\t\t\t\tthis.collection.add(field);\n\t\t\t\t\t\tthis.dataTable.addRow(field);\n\t\t\t\t\t\tthis.dataTable.refresh()\n\t\t\t\t\t}\n\t\t\t\t\tfield.save(null, {\n\t\t\t\t\t\tnotify: true,\n\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\tfield.fetch({\n\t\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\t\tthis.dataTable.refresh();\n\n\t\t\t\t\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\t\t\t\t\tmessage: 'Custom field saved successfully'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\tonClose: _.bind(function (field) {\n\t\t\t\tif (field ? field.hasChanged() : field) {\n\t\t\t\t\tfield.fetch({\n\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\tonDelete: _.bind(function (field) {\n\t\t\t\tif (field.id > 0) {\n\t\t\t\t\tlet row = this.dataTable.getRow(field.cid);\n\t\t\t\t\tthis.collection.remove(field);\n\t\t\t\t\tfield.destroy();\n\t\t\t\t\tif (row != null) {\n\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteClicked: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\trow = this.dataTable.getRow(target.closest('tr'));\n\t\tthis.deleteField(row);\n\t},\n\tdeleteField: function (row) {\n\t\tlet field = row.data();\n\t\tlet sortNumber = field.attributes.sortOrder;\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tif (model.get('sortOrder') > sortNumber) {\n\t\t\t\tlet newNumber = (model.get('sortOrder') - 1);\n\t\t\t\tmodel.set('sortOrder', newNumber);\n\t\t\t}\n\t\t});\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Confirm Deletion\",\n\t\t\tbody: \"Are you sure you want to delete this field?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.collection.remove(field);\n\t\t\t\tfield.destroy();\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t}, this)\n\t\t});\n\t},\n\tfetchCollection: function () {\n\t\tthis.collection.fetch();\n\t},\n\tsortFieldsAlpha: function () {\n\t\tif (this.fieldModelName === 'project') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortprojectfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse if (this.fieldModelName === 'contact') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortcontactfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\n\t\t}\n\t\telse if (this.fieldModelName === 'company') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortcontactcompanyfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\n\t\t}\n\t\telse if (this.fieldModelName === 'submittals') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortsubmittalfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse if (this.fieldModelName === 'user') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortuserfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortpunchlistfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t}\n});\n\nPJQ.views.settings.EditCustomFieldModal = PJQ.views.BaseModal.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Custom-Field'),\n\t\tsubTemplates: {\n\t\t\tchoice: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Custom-Field-Choice')\n\t\t},\n\t\tmaxWidth: 600\n\t},\n\tevents: {\n\t\t'click .btn-delete-choice': 'deleteChoice',\n\t\t'click .btn-add-choice': 'addChoice',\n\t\t'click .field-save': 'save',\n\t\t'click .field-close': 'close',\n\t\t'click .field-delete': 'delete',\n\t\t'keydown .input-default-integer': 'numbersOnly',\n\t\t'change .input-multiple-choice': 'render',\n\t\t'click .btn-sort-alpha': 'sortChoicesAlpha',\n\t\t'click .btn-is-required': 'checkAllSub',\n\t\t'colorpickerChange': 'setBGColor',\n\t\t'keyup .colorpicker-input-box': 'setBGColor',\n\t\t'change .cb-read-only': 'render'\n\t},\n\tbeforeRender: function () {\n\t\tif (this.model instanceof PJQ.models.contacts.ContactCustomField) {\n\t\t\tthis.fieldModel = 'contact';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.contacts.CompanyCustomField) {\n\t\t\tthis.fieldModel = 'company';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.projects.ProjectCustomField) {\n\t\t\tthis.fieldModel = 'project';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.actionItems.ActionItemCustomField) {\n\t\t\tthis.fieldModel = 'actionItems';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.punchlists.PunchlistCustomField) {\n\t\t\tthis.fieldModel = 'punchList';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.CustomField) {\n\t\t\tthis.fieldModelName = 'commitment';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'commitmentChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.CustomField) {\n\t\t\tthis.fieldModelName = 'primeContract';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'primeContractChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.directcosts.CustomField) {\n\t\t\tthis.fieldModelName = 'directCost';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.PayableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'payableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.ReceivableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'receivableInvoice';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.schedule.ScheduleCustomField) {\n\t\t\tthis.fieldModel = 'schedule';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.submittals.SubmittalCustomField) {\n\t\t\tthis.fieldModel = 'submittals';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.users.UserCustomField) {\n\t\t\tthis.fieldModel = 'user';\n\t\t}\n\t},\n\trenderData: function () {\n\t\treturn {\n\t\t\tmodel: this.model,\n\t\t\tfieldModel: this.fieldModel\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input',\n\t\t\t\t'textarea'\n\t\t\t]\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-field-type'),\n\t\t\tnoneSelectedText: 'Select Field Type',\n\t\t\tdefaultValue: this.model.get('fieldType'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set({\n\t\t\t\t\tfieldType: value.toUpperCase(),\n\t\t\t\t\tdefaultValue: \"\"\n\t\t\t\t});\n\t\t\t\tthis.render();\n\t\t\t}, this),\n\t\t});\n\t\tif(this.fieldModel === \"project\"){\n\t\t\tthis.renderColorPicker();\n\t\t}\n\n\t\tif (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATE || this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATETIME) {\n\t\t\tnew PJQ.inputs.Datepicker({\n\t\t\t\tel: this.$('.input-default-date'),\n\t\t\t\tisShowTimezone: false,\n\t\t\t\tdatepickerOptions: {\n\t\t\t\t\tdefaultDate: this.model.get('defaultValue'),\n\t\t\t\t\tformat: this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATE ? PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE : PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE_TIME\n\t\t\t\t},\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('defaultValue', value);\n\t\t\t\t}, this),\n\t\t\t});\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.MONEY) {\n\t\t\tPJQ.helpers.inputHelpers.inputMaskCurrency(this.$('.input-dollars-full'), 2);\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.PERCENT) {\n\t\t\tPJQ.helpers.inputHelpers.inputMaskDecimal(this.$('.input-decimal'), 2);\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.BOOL) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-bool'),\n\t\t\t\tdefaultValue: this.model.get('defaultValue'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tif (value === \"true\") {\n\t\t\t\t\t\tthis.model.set('defaultValue', true)\n\t\t\t\t\t}\n\t\t\t\t\telse if (value === \"false\") {\n\t\t\t\t\t\tthis.model.set('defaultValue', false)\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t});\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.CHOICE) {\n\t\t\tlet defaultId = null;\n\t\t\tif (_.size(this.model.get('defaultValue')) > 0) {\n\t\t\t\tlet defaultChoice = \"\";\n\t\t\t\t_.each(this.model.choices.models, function (choice) {\n\t\t\t\t\tif (choice.get('id') == this.model.get('defaultValue')) {\n\t\t\t\t\t\tdefaultChoice += choice.cid\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t\tif (defaultChoice != null) {\n\t\t\t\t\tdefaultId = defaultChoice\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.choicePicker = new PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-choice'),\n\t\t\t\tdefaultValue: defaultId,\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tlet choice = this.model.choices.get(value);\n\t\t\t\t\tif(choice == null){\n\t\t\t\t\t\tthis.model.set('defaultValue', null);\n\t\t\t\t\t}\n\t\t\t\t\telse if(choice.get('id') > 0) {\n\t\t\t\t\t\tthis.model.set('defaultValue', choice.get('id'));\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tchoice.set('isDefault', true);\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t});\n\t\t\tthis.updateChoicePicker();\n\t\t\tthis.renderChoices();\n\t\t}\n\t},\n\tupdateChoicePicker: function () {\n\t\tthis.choicePicker.updateChoices(_.map(this.model.choices.models, function (choice) {\n\t\t\treturn {\n\t\t\t\tid: choice.cid,\n\t\t\t\tname: choice.get('choiceName')\n\t\t\t};\n\t\t}));\n\t},\n\trenderChoices: function () {\n\t\tlet $choices = this.$('.custom-field-choices');\n\t\t$choices.empty();\n\t\tif (_.size(this.model.choices.models) > 0) {\n\t\t\t_.each(_.sortBy(_.filter(this.model.choices.models, function (model) {\n\t\t\t\treturn !model.get('isDeleted');\n\t\t\t}), function (model) {\n\t\t\t\treturn model.get('sortOrder');\n\t\t\t}), _.bind(function (choice) {\n\t\t\t\tthis.renderChoice(choice);\n\t\t\t}, this));\n\t\t}\n\t\telse {\n\t\t\t$choices.append($('
', {\n\t\t\t\tclass: 'no-choices-text fs-16 font-weight-light text-muted text-align-center mt-2 mb-2',\n\t\t\t\ttext: 'No choices added yet'\n\t\t\t}));\n\t\t}\n\t},\n\trenderChoice: function (choice) {\n\t\tlet $choices = this.$('.custom-field-choices');\n\t\t$choices.find('.no-choices-text').remove();\n\t\tthis.renderSubTemplate(true, this.options.subTemplates.choice, $choices, {\n\t\t\tmodel: choice\n\t\t}, _.bind(function ($choice) {\n\t\t\tnew PJQ.Binder($choice, choice, {\n\t\t\t\tsetDefaultValues: true,\n\t\t\t\twatchElements: [\n\t\t\t\t\t'input'\n\t\t\t\t],\n\t\t\t\tafterChange: _.bind(function () {\n\t\t\t\t\tthis.model.isDirty = true;\n\t\t\t\t\tthis.updateChoicePicker();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}, this));\n\t\tlet self = this;\n\t\tself.fieldSortable = new PJQ.Sortable(self.$('.custom-field-choices'), {\n\t\t\tcontainment: \"parent\",\n\t\t\titems: '.custom-field-choice',\n\t\t\tconnectWith: '.custom-field-choice',\n\t\t\tonStop: function () {\n\t\t\t\tself.$('.custom-field-choice').each(function (index) {\n\t\t\t\t\tlet name = $(this).data('name'),\n\t\t\t\t\t\tsortItem = _.find(self.model.choices.models, function (choice) {\n\t\t\t\t\t\t\treturn choice.get('choiceName') === name\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsortOrder = index + 1;\n\t\t\t\t\tsortItem.set('sortOrder', sortOrder);\n\t\t\t\t});\n\t\t\t\tself.model.save();\n\t\t\t}\n\t\t});\n\t},\n\trenderColorPicker: function (e) {\n\t\tthis.colorPicker = new PJQ.colors.ColorPicker(this.$('.color-picker'), {\n\t\t\tformat: 'hex',\n\t\t\tcolor: _.size(this.model.get('color')) > 0 ? this.model.get('color') : '#000000',\n\t\t\tautoInputFallback: false\n\t\t});\n\t\tthis.$('.colorpicker-input-box').val(_.size(this.model.get('color')) > 0 ? this.model.get('color') : '#000000');\n\t},\n\tsetBGColor: function (e) {\n\t\tif (e.type === 'keyup') {\n\t\t\tif (e.keyCode === 13) {\n\t\t\t\t$(e.currentTarget).blur()\n\t\t\t}\n\t\t\tlet color = this.$('.colorpicker-input-box').val();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.colorPicker.setColor(color);\n\t\t\t\tthis.model.set('color', color.toUpperCase());\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tlet color = this.colorPicker.getColor();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.$('.colorpicker-input-box').val(color);\n\t\t\t\tthis.model.set('color', color);\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\t},\n\tvalidate: function () {\n\t\tlet isValid = true,\n\t\t\tisDuplicate = false;\n\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), true);\n\t\t_.each(this.options.names, function (name) {\n\t\t\tif (this.$('.input-field-name').val().trim() === name) {\n\t\t\t\tisValid = false;\n\t\t\t\tisDuplicate = true;\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), false)\n\t\t\t}\n\t\t}, this);\n\n\t\tif (this.$('.input-field-name').val().trim().length === 0) {\n\t\t\tisValid = false;\n\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), false);\n\t\t}\n\n\t\tif (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.CHOICE) {\n\t\t\t$('.input-custom-field-choice-name').each(function () {\n\t\t\t\tlet $choice = $(this);\n\t\t\t\tif ($choice.val().trim().length === 0) {\n\t\t\t\t\tisValid = false;\n\t\t\t\t\tPJQ.helpers.inputHelpers.setInputError($choice, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tPJQ.helpers.inputHelpers.setInputError($choice, true);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (!isValid && isDuplicate) {\n\t\t\tnew PJQ.Alert(this.$('.validation-error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: 'Field name already exists!'\n\t\t\t})\n\t\t}\n\t\telse if (!isValid) {\n\t\t\tnew PJQ.Alert(this.$('.validation-error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: 'Required fields are empty'\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis.$('.validation-error').empty();\n\t\t}\n\t\treturn isValid;\n\t},\n\taddChoice: function () {\n\t\tlet newChoice = new PJQ.models.customFields.CustomFieldChoice({\n\t\t\tchoiceName: \"\",\n\t\t\tsortOrder: _.size(this.model.choices.models) + 1\n\t\t});\n\t\tthis.model.choices.add(newChoice);\n\t\tthis.renderChoice(newChoice);\n\t\tthis.$('.input-custom-field-choice-name').last().focus();\n\t\tthis.updateChoicePicker();\n\t},\n\tdeleteChoice: function (e) {\n\t\tlet $choice = $(e.currentTarget).closest('.custom-field-choice'),\n\t\t\tcid = $choice.data('cid'),\n\t\t\tchoice = this.model.choices.get(cid);\n\n\t\tif (choice.id > 0) {\n\t\t\tchoice.set('isDeleted', true);\n\t\t\tthis.model.isDirty = true;\n\t\t}\n\t\telse {\n\t\t\tthis.model.choices.remove(cid);\n\t\t}\n\t\t$choice.remove();\n\n\t\tif (this.model.get('defaultValue') === choice.id)\n\t\t\tthis.model.set('defaultValue', null);\n\n\t\tthis.updateChoicePicker();\n\t},\n\tcheckAllSub: function(e) {\n\t\tlet isChecked = e.target.checked;\n\t\tlet $visible = this.$('.btn-is-visible'),\n\t\t\t$editable = this.$('.btn-is-editable')\n\t\tif(this.fieldModel === 'contact' || this.fieldModel === 'company') {\n\t\t\t$visible.attr('disabled', isChecked);\n\t\t\t$editable.attr('disabled', isChecked);\n\t\t\tif (isChecked) {\n\t\t\t\tthis.model.set('isVisibleInRSVP', true)\n\t\t\t\tthis.model.set('isChangeableInRSVP', true)\n\t\t\t\t$visible[0].checked = true;\n\t\t\t\t$editable[0].checked = true;\n\t\t\t}\n\t\t}\n\t},\n\tsave: function () {\n\t\tif (!this.validate())\n\t\t\treturn;\n\n\t\tif (this.options.onSave) {\n\t\t\tthis.options.onSave(this.model);\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tclose: function () {\n\t\tif (this.model.hasChanged()) {\n\t\t\tnew PJQ.views.modals.SaveDontSave({\n\t\t\t\theader: \"Unsaved Changes\",\n\t\t\t\tbody: \"Do you want to save changes?\",\n\t\t\t\tonSave: _.bind(function () {\n\t\t\t\t\tthis.save();\n\t\t\t\t}, this),\n\t\t\t\tonDontSave: _.bind(function () {\n\t\t\t\t\tif (this.options.onClose) {\n\t\t\t\t\t\tthis.options.onClose(this.model);\n\t\t\t\t\t}\n\t\t\t\t\tthis.removeModal();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\telse if (this.options.onClose) {\n\t\t\tthis.options.onClose(this.model);\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tnumbersOnly: function (e) {\n\t\treturn PJQ.helpers.inputHelpers.numbersOnly(e);\n\t},\n\tdelete: function () {\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Confirm Deletion\",\n\t\t\tbody: \"Are you sure you want to delete this field?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tif (this.options.onDelete) {\n\t\t\t\t\tthis.options.onDelete(this.model);\n\t\t\t\t}\n\t\t\t\tthis.removeModal();\n\t\t\t}, this)\n\t\t});\n\t},\n\tfetchModel: function () {\n\t\tthis.model.fetch();\n\t},\n\tsortChoicesAlpha: function () {\n\t\tlet newModel;\n\t\tif (this.model.isNew()) {\n\t\t\tnewModel = true;\n\t\t}\n\t\tthis.model.save(null, {\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tif (this.fieldModel === 'project') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortprojectchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'contact') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortcontactchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'company') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortcontactcompanychoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'submittals') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortsubmittalchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'user') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortuserchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortpunchlistchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t}\n});\n","PJQ.views.settings.DailyReportSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Daily-Reports')\n },\n events: {},\n beforeFirstRender: function () {\n },\n beforeRender: function () {\n },\n afterRender: function () {\n\n }\n});\n","PJQ.views.directcosts = PJQ.views.directcosts ? PJQ.views.directcosts : {};\nPJQ.views.directcosts.DirectCostSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'direct-costs'),\n model: null,\n customFields: null\n },\n events: {\n\n },\n afterRender: function() {\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-default-accounting-method'),\n isIntChoices: true,\n isMultiple: false,\n defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n onChange: _.bind(function (value) {\n this.model.set('defaultAccountingMethod', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});\n","PJQ.views.settings.FinanceCoreFieldSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Finance-Core-Fields')\n },\n events: {\n 'click .cb-visible': 'isVisibleChanged',\n 'click .cb-required': 'isRequiredChanged',\n },\n beforeFirstRender: function () {\n let fnRender = _.bind(function(fillFields){\n _.each(fillFields, _.bind(function (field, index) {\n let matchField = this.collection.findWhere({fieldName: field.fieldName});\n if (matchField == null) {\n this.collection.add(_.defaults(field, {\n isVisible: true,\n isRequired: false,\n sortOrder: index,\n canContactEdit: field.canEdit !== false\n }));\n }\n else {\n matchField.set({\n name: field.name,\n sortOrder: index,\n canContactEdit: field.canEdit !== false\n });\n }\n }, this));\n\n this.render();\n }, this);\n if(this.options.context){\n switch (this.options.context){\n case 'primecontracts':\n PJQ.app.session.fetchPrimeContractFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.primeContacts.primeContract);\n }, this));\n break;\n case 'commitments':\n PJQ.app.session.fetchCommitmentFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.commitments.commitment);\n }, this));\n break;\n case 'commitmentchangeorders':\n PJQ.app.session.fetchCommitmentChangeOrderFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.commitments.changeOrder);\n }, this));\n break;\n case 'primecontractchangeorders':\n PJQ.app.session.fetchPrimeContractChangeOrderFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.primeContacts.changeOrder);\n }, this));\n break;\n case 'receivableinvoices':\n PJQ.app.session.fetchReceivableInvoiceFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.invoices.receivableInvoice);\n }, this));\n break;\n case 'payableinvoices':\n PJQ.app.session.fetchPayableInvoiceFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.invoices.payableInvoice);\n }, this));\n break;\n case 'directcosts':\n PJQ.app.session.fetchDirectCostFieldSettings(_.bind(function(fields) {\n this.collection = fields;\n fnRender(PJQ.constants.financeCoreFields.directCosts.directCost);\n }, this));\n break;\n }\n }\n },\n afterRender: function () {\n if (this.collection == null || !this.collection.isFetched) {\n return;\n }\n\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".field-table\"),\n data: this.collection.models,\n isHideSearch: true,\n paging: false,\n rowId: \"cid\",\n order: [0, 'asc'],\n columns: [\n {\n \"title\": \"\",\n \"data\": \"attributes.sortOrder\",\n \"visible\": false\n },\n {\n \"title\": \"Name\",\n \"data\": \"attributes.name\",\n \"orderable\": false\n },\n {\n \"title\": \"Visible\",\n \"data\": \"attributes.isVisible\",\n \"orderable\": false,\n \"render\": function (data, type, row) {\n let contactEdit = row.get('canContactEdit') !== false;\n return '
';\n }\n },\n {\n \"title\": \"Required\",\n \"data\": \"attributes.isRequired\",\n \"orderable\": false,\n \"render\": function (data, type, row) {\n let contactEdit = row.get('canContactEdit') !== false;\n return '
';\n }\n }\n ]\n });\n },\n isVisibleChanged: function (e) {\n let $target = $(e.currentTarget),\n $row = $target.closest('tr'),\n row = this.dataTable.getRow($row),\n setting = row.data(),\n enabled = $target.prop('checked');\n setting.set('isVisible', enabled);\n\n if (!enabled) {\n // if the field is made invisible to contacts\n // it must be made not required for contacts\n setting.set('isRequired', false);\n }\n\n setting.queueSave();\n this.dataTable.refresh();\n },\n isRequiredChanged: function (e) {\n let $target = $(e.currentTarget),\n $row = $target.closest('tr'),\n row = this.dataTable.getRow($row),\n setting = row.data();\n setting.set('isRequired', $target.prop('checked'));\n if(!setting.get('isVisible') && $target.prop('checked')){\n setting.set('isVisible', true);\n }\n\n setting.queueSave();\n this.dataTable.refresh();\n }\n});","PJQ.views.settings.GroupSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Groups')\n },\n events: {\n 'click .add-group': 'addClicked',\n 'click .edit-group': 'editClicked',\n 'click .delete-group': 'deleteClicked',\n 'click tr': 'selectGroup',\n 'click .merge-groups': 'mergeGroups',\n 'click .link-groups': 'changeLinked',\n 'click .btn-sort-alpha': 'sortGroupsAlpha'\n },\n beforeRender: function () {\n this.renderData = {\n model: this.model,\n linkStatus: (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED))\n };\n },\n afterRender: function () {\n $('.link-groups').prop('hidden', !PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY));\n $('.current-status').prop('hidden', !PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY));\n if (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED)) {\n let $button = $('.link-groups');\n $button.append(\"Unlink All Groups\");\n } else {\n $('.link-groups').append(\"Link Groups\");\n }\n\n this.groupLevels = parseInt(PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS));\n this.groupLevels = this.groupLevels ? this.groupLevels : 1;\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".group-table\"),\n data: this.collection.models,\n rowId: \"cid\",\n order: [0, 'asc'],\n language: {\n zeroRecords: 'Click \"Add\" to create a new group'\n },\n sortableOptions: {\n data: this.collection,\n containment: \".group-table\"\n },\n pageLength: 50,\n bSort: false,\n onRowDoubleClick: _.bind(function (row) {\n let groupArr = _.each(this.collection.models, function (model) {\n let groups = [];\n groups.push(model.attributes.groupName);\n return groups\n }, this);\n this.editGroup(row.data(), groupArr);\n }, this),\n contextMenuOptions: {\n actions: [\n {\n name: 'Edit',\n onClick: _.bind(function (row) {\n let groupArr = _.each(this.collection.models, function (model) {\n let groups = [];\n groups.push(model.attributes.groupName);\n return groups\n }, this);\n this.editGroup(row.data(), groupArr);\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n onClick: _.bind(function (row) {\n this.deleteGroup(row);\n }, this)\n\n }\n ]\n },\n columns: [\n {\n \"data\": \"attributes.sortOrder\",\n \"title\": \"\",\n \"searchable\": false,\n \"orderable\": false,\n \"visible\": false,\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (data != null) {\n content = '
'\n }\n\n return content\n }, this)\n },\n {\n \"title\": \"Name\",\n \"data\": \"attributes.groupName\",\n \"orderable\": true\n },\n {\n \"title\": \"Parent Group\",\n \"defaultContent\": \"\",\n \"data\": \"attributes.groupDescription\",\n \"orderable\": true,\n \"render\": _.bind(function (data) {\n if (data.includes(\"|\")) {\n return data.replace(/\\|/g, \" / \")\n } else {\n return data\n }\n })\n },\n {\n \"title\": \"Created On\",\n \"data\": \"attributes.createdOn\",\n \"orderable\": true,\n \"render\": _.bind(function (data) {\n if (data) {\n let date = PJQ.helpers.dateHelpers.parseDateString(data);\n return PJQ.helpers.dateHelpers.getDateString(date, \"MM/dd/yyyy\")\n }\n })\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"80px\",\n \"render\": _.bind(function (data, type, row) {\n return '
';\n }, this)\n }\n ]\n });\n\n this.groupLevelSelect = new PJQ.inputs.Selectpicker({\n el: this.$('.input-group-levels'),\n defaultValue: this.groupLevels,\n onChange: _.bind(function (value) {\n new PJQ.views.modals.DeleteCancel({\n header: \"Change Group Levels?\",\n body: 'Changing group levels will delete all existing parent groups. Do you still want to change group levels?',\n deleteButtonText: \"Confirm\",\n deleteButtonColorClass: 'success',\n declineButtonText: \"Decline\",\n declineButtonColorClass: \"danger\",\n onDelete: _.bind(function () {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'groups',\n value: 'level'\n }\n ], [\n {\n parameter: 'level',\n value: value\n }\n ])\n }).post().done(_.bind(function () {\n PJQ.app.session.fetch({\n success: _.bind(function () {\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.GROUP_LEVELS, value);\n this.collection.fetch({\n success: _.bind(function () {\n PJQ.notifications.notify.successNotify({\n message: 'Group Level Successfully Changed'\n });\n this.render()\n }, this)\n });\n }, this)\n });\n }, this));\n }, this),\n onCancel: _.bind(function () {\n this.render()\n }, this)\n });\n }, this)\n });\n },\n addClicked: function () {\n let newGroup = new this.options.groupModel({\n groupName: \"\",\n groupDescription: \"\",\n sortOrder: this.collection.length + 1,\n createdOn: PJQ.helpers.dateHelpers.getDateString(new Date(), \"MM/dd/yyyy\")\n });\n let groupArr = _.each(this.collection.models, function (model) {\n let groups = [];\n groups.push(model.attributes.groupName);\n return groups\n }, this);\n this.editGroup(newGroup, groupArr);\n },\n editClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n group = row.data(),\n groupArr = _.each(this.collection.models, function (model) {\n let groups = [];\n groups.push(model.attributes.groupName);\n return groups\n }, this);\n\n this.editGroup(group, groupArr);\n },\n changeLinked: function () {\n let isLinked = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED);\n if (!isLinked) {\n new PJQ.views.settings.GroupLinkModal({\n onSuccess: _.bind(function () {\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED, !isLinked);\n PJQ.notifications.notify.successNotify({\n message: 'Groups successfully Linked'\n });\n this.render();\n }, this),\n onError: _.bind(function () {\n PJQ.notifications.notify.errorNotify({\n message: 'An error has occurred. Please check and make sure you have selected an excel file, and that it is correctly formatted.'\n });\n }, this)\n })\n } else {\n new PJQ.views.modals.YesNo({\n header: \"Unlink Groups\",\n body: 'Are you sure you would like to unlink groups?',\n onYes: _.bind(function () {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'groups',\n value: 'unlink'\n }\n ])\n }).post().done(_.bind(function () {\n PJQ.app.session.fetch({\n success: _.bind(function () {\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED, !isLinked);\n PJQ.notifications.notify.successNotify({\n message: 'Groups successfully Unlinked'\n });\n this.render();\n }, this)\n });\n }, this));\n }, this)\n });\n }\n },\n editGroup: function (group, extra) {\n new PJQ.views.settings.EditGroupModal({\n model: group,\n groupArr: extra,\n groupLevels: this.groupLevels,\n onSave: _.bind(function (group) {\n if (group.hasChanged() || group.isNew()) {\n if (group.isNew()) {\n this.collection.add(group);\n this.dataTable.addRow(group);\n }\n group.save(null, {\n notify: true\n });\n this.dataTable.refresh();\n }\n }, this),\n onClose: _.bind(function (group) {\n if (group ? group.hasChanged() : group) {\n group.fetch({\n success: _.bind(function () {\n this.dataTable.refresh();\n }, this)\n });\n }\n }, this),\n onDelete: _.bind(function (group) {\n if (group.id > 0) {\n let row = this.dataTable.getRow(group.cid);\n this.collection.remove(group);\n group.destroy();\n if (row != null) {\n this.dataTable.removeRow(row);\n }\n }\n }, this)\n });\n },\n sortGroupsAlpha: function () {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'groups',\n value: 'sortalpha'\n },\n ]), data: {\n groupLevels: this.groupLevels\n }\n }).put().done(_.bind(function () {\n this.collection.fetch({\n success: _.bind(function () {\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.GROUP_LEVELS, parseInt(this.groupLevelSelect.getValue()));\n this.dataTable.render();\n }, this)\n });\n }, this));\n },\n selectGroup: function (e) {\n if (e.ctrlKey === true) {\n let target = $(e.currentTarget);\n target.toggleClass('selected');\n this.checkMergeButton()\n }\n },\n checkMergeButton: function () {\n if (this.dataTable.dataTable.rows('.selected').data().length >= 2) {\n $('.merge-groups').attr('disabled', false);\n } else {\n $('.merge-groups').attr('disabled', true);\n }\n },\n mergeGroups: function () {\n let groupArray = [];\n _.each(this.dataTable.dataTable.rows('.selected').data(), function (group) {\n groupArray.push(group)\n });\n new PJQ.views.settings.MergeGroupsModal({\n groups: groupArray,\n onSave: _.bind(function () {\n this.collection.fetch({\n success: _.bind(function () {\n let page = this.dataTable.dataTable.page();\n this.$('.merge-groups').attr('disabled', true);\n this.dataTable.render();\n this.dataTable.dataTable.page(page).draw('page');\n }, this)\n });\n\n }, this)\n })\n },\n deleteClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr'));\n this.deleteGroup(row);\n },\n deleteGroup: function (row) {\n let group = row.data();\n\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete this field?\",\n onDelete: _.bind(function () {\n this.collection.remove(group);\n group.destroy();\n this.dataTable.removeRow(row);\n }, this)\n });\n }\n});\n\nPJQ.views.settings.MergeGroupsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Merge-Groups'),\n maxWidth: 250\n },\n events: {\n 'click .merge-save': 'splitGroups',\n 'click .merge-close': 'onClose'\n },\n beforeRender: function () {\n this.renderData = {\n groups: this.options.groups\n }\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ]\n });\n\n this.mergePicker = new PJQ.inputs.Selectpicker({\n el: this.$('.merge-groups'),\n onChange: _.bind(function (value) {\n\n }, this)\n });\n },\n onClose: function () {\n this.removeModal()\n },\n splitGroups: function () {\n let mergeInto = parseInt(this.mergePicker.getValue()),\n mergeGroups = [];\n _.each(this.options.groups, function (group) {\n if (group.get('groupId') !== mergeInto) {\n mergeGroups.push(group.get('groupId'))\n }\n });\n mergeGroups = mergeGroups.join('|');\n this.onSave(mergeInto, mergeGroups)\n },\n onSave: function (group, mergeGroups) {\n let loader = new PJQ.Loader(this.$('.modal-body'));\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'groups',\n value: 'merge'\n },\n ], [\n {\n parameter: 'groupId',\n value: group\n },\n {\n parameter: 'groupIdToMerge',\n value: mergeGroups\n }\n ])\n }).put().done(_.bind(function () {\n loader.remove();\n this.options.onSave();\n this.removeModal();\n }, this));\n }\n});\n\nPJQ.views.settings.EditGroupModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Groups'),\n maxWidth: 600\n },\n events: {\n 'click .group-save': 'validate',\n 'click .group-close': 'close',\n 'click .group-delete': 'delete',\n 'focusout .group-desc': 'updateTotal',\n 'focusout .group-desc-sub': 'updateTotal',\n \"click .btn-new-parent\": \"groupTwoNew\",\n 'click .btn-existing-parent': \"groupTwoExisting\",\n \"click .btn-new-sub-parent\": \"groupThreeNew\",\n 'click .btn-existing-sub-parent': \"groupThreeExisting\",\n 'click .change-to-existing': \"groupTwoExisting\",\n 'click .change-to-existing-sub': \"groupThreeExisting\"\n },\n beforeRender: function () {\n this.renderData = {\n model: this.model,\n options: this.options,\n groupArr: this.options.groupArr\n };\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n setDefaultValues: true,\n watchElements: [\n 'input'\n ]\n });\n this.groupTwoPicker = new PJQ.inputs.Selectpicker({\n el: this.$('.select-parent-group'),\n noneSelectedText: 'Select Parent Group',\n defaultValue: this.model.get('groupDescription').split('|')[0],\n onChange: _.bind(function (value) {\n if (this.options.groupLevels === 2) {\n this.model.set('groupDescription', value);\n }\n if (this.options.groupLevels === 3) {\n this.$('.group-desc').val(value);\n this.updateTotal();\n }\n }, this),\n liveSearch: true\n });\n\n this.groupThreePicker = new PJQ.inputs.Selectpicker({\n el: this.$('.select-sub-parent-group'),\n noneSelectedText: 'Select Sub-Parent Group',\n defaultValue: this.model.get('groupDescription').split('|')[1],\n onChange: _.bind(function (value) {\n if (this.options.groupLevels === 3) {\n this.$('.group-desc-sub').val(value);\n this.updateTotal();\n }\n }, this),\n liveSearch: true\n });\n this.showExistButtons()\n },\n showExistButtons: function () {\n let show = [],\n subShow = [];\n _.each(this.options.groupArr, function (model) {\n if (_.size(model.get('groupDescription')) > 0) {\n show.push(model);\n if (model.get('groupDescription').includes('|')) {\n subShow.push(model);\n }\n }\n });\n if (_.size(show) > 0) {\n $('.btn-existing-parent').attr('hidden', false);\n }\n if (_.size(subShow) > 0) {\n $('.btn-existing-sub-parent').attr('hidden', false);\n }\n },\n updateTotal: function () {\n if (this.options.groupLevels === 3 && this.$('.group-desc-sub').val().length > 0) {\n this.$('.group-desc-total').val(this.$('.group-desc').val() + \"|\" + this.$('.group-desc-sub').val())\n } else {\n this.$('.group-desc-total').val(this.$('.group-desc').val())\n }\n },\n groupTwoNew: function () {\n $('.new-or-existing-parent').hide();\n $('.new-parent-group').attr('hidden', false);\n },\n groupTwoExisting: function () {\n this.model.get('groupDescription').length > 0 ? $('.parent-group').hide() : $('.new-or-existing-parent').hide();\n $('.existing-parent-group').attr('hidden', false);\n this.groupTwoPicker.updateChoices(_.each([...new Set(_.map(_.filter(this.options.groupArr, _.bind(function (item) {\n return (_.size(item.attributes.groupDescription) > 0);\n }, this)), function (item) {\n return item.attributes.groupDescription.split(/\\|/)[0]\n }))], function (arr) {\n return arr;\n }))\n },\n groupThreeNew: function () {\n $('.new-or-existing-sub-parent').hide();\n $('.new-sub-parent-group').attr('hidden', false);\n },\n groupThreeExisting: function () {\n this.model.get('groupDescription').length > 0 ? $('.sub-parent-group').hide() : $('.new-or-existing-sub-parent').hide();\n $('.existing-sub-parent-group').attr('hidden', false);\n this.groupThreePicker.updateChoices(_.each([...new Set(_.map(_.filter(this.options.groupArr, _.bind(function (item) {\n return item.attributes.groupDescription.includes(\"|\")\n\n }, this)), function (item) {\n return item.attributes.groupDescription.split(/\\|/)[1]\n }))], function (set) {\n return set\n }))\n },\n close: function () {\n if (this.model.hasChanged()) {\n new PJQ.views.modals.SaveDontSave({\n header: \"Unsaved Changes\",\n body: \"Do you want to save changes?\",\n onSave: _.bind(function () {\n this.save();\n }, this),\n onDontSave: _.bind(function () {\n if (this.options.onClose) {\n this.options.onClose(this.model);\n }\n this.removeModal();\n }, this)\n });\n } else if (this.options.onClose) {\n this.options.onClose(this.model);\n this.removeModal();\n }\n },\n validate: function () {\n if (this.errorAlert) {\n this.errorAlert.destroy();\n }\n let match = 0,\n errors = 0,\n errorMsg = \"\",\n id = this.model.get('groupId');\n if (this.$('.input-group-name').val().length <= 0) {\n errorMsg += \"Name must be included\";\n errors++\n }\n _.each(this.options.groupArr, function (model) {\n if (model.attributes.groupId !== id)\n if (model.attributes.groupName === this.$('.input-group-name').val()) {\n match++\n }\n\n }, this);\n if (match > 0) {\n errors++;\n errorMsg += \"Group name already exists\"\n\n }\n if (errors === 0) {\n this.save();\n } else {\n this.renderError(errorMsg)\n }\n },\n renderError: function (text) {\n this.$('.group-save').prop('disabled', false);\n this.errorAlert = new PJQ.Alert(this.$('.error'), {\n type: 'danger',\n text: text\n });\n },\n save: function () {\n if (this.errorAlert) {\n this.errorAlert.destroy();\n }\n if (this.options.onSave) {\n if (this.options.groupLevels === 3 && this.$('.group-desc-total').val().length > 0) {\n this.model.set('groupDescription', this.$('.group-desc-total').val());\n }\n this.options.onSave(this.model);\n this.removeModal();\n }\n },\n delete: function () {\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete this field?\",\n onDelete: _.bind(function () {\n if (this.options.onDelete) {\n this.options.onDelete(this.model);\n }\n this.removeModal();\n }, this)\n });\n }\n});\n\nPJQ.views.settings.GroupLinkModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Link-Groups'),\n maxWidth: 600\n },\n afterRender: function () {\n let isLinked = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED);\n this.fileUploader = new PJQ.views.files.FileUploaderGrid({\n el: this.$('.group-map-file-uploader'),\n canUpload: true,\n dictDefaultMessage: \"Drop Trade Mapping file here or click to upload\",\n canDelete: false,\n isRemoveOnComplete: true,\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'groups',\n value: 'link'\n }\n ]),\n onSuccess: _.bind(function () {\n this.removeModal();\n this.options.onSuccess();\n }, this),\n onError: _.bind(function (result) {\n this.removeModal();\n this.options.onError()\n }, this)\n });\n }\n});\n","PJQ.views.settings.PayableInvoiceSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'payable-invoices'),\n model: null,\n customFields: null\n },\n events: {},\n beforeFirstRender: function () {\n this.listenTo(this.model, 'fetch', this.render);\n },\n renderData: function () {\n return {\n model: this.model\n };\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n setDefaultValues: true,\n watchElements: [\n 'input'\n ],\n afterChange: _.bind(this.onChange, this)\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function () {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(this.model);\n }\n }\n});\n\nPJQ.views.settings.ReceivableInvoiceSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'receivable-invoices'),\n model: null,\n customFields: null\n },\n events: {},\n beforeFirstRender: function () {\n this.listenTo(this.model, 'fetch', this.render);\n },\n renderData: function () {\n return {\n model: this.model\n };\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n setDefaultValues: true,\n watchElements: [\n 'input'\n ],\n afterChange: _.bind(this.onChange, this)\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function () {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(this.model);\n }\n }\n});","PJQ.views.meetings = PJQ.views.meetings ? PJQ.views.meetings : {};\nPJQ.views.meetings.MeetingSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'meetings'),\n model: null,\n customFields: null\n },\n events: {\n\n },\n afterRender: function() {\n new PJQ.Binder(this.$el, this.model, {\n setDefaultValues: true,\n watchElements: [\n 'input'\n ],\n afterChange: _.bind(function () {\n this.onChange(this.model);\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});\n","PJQ.views.settings.SettingsNav = PJQ.views.BaseView.extend({\r\n defaults: {\r\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Settings-Nav'),\r\n initView: null\r\n },\r\n events: {\r\n 'click .settings-nav-item': 'navItemClicked',\r\n 'click .cb-enable-contact-core-field-settings': 'enableContactCoreFieldSettings'\r\n },\r\n beforeFirstRender: function () {\r\n\r\n },\r\n beforeRender: function () {\r\n\r\n },\r\n afterRender: function () {\r\n if (this.options.subscriptionId != null && this.options.subscriptionId > 0) {\r\n this.renderAccountSettings(this.options.subscriptionId)\r\n } else {\r\n this.renderAccountSettings();\r\n }\r\n\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n });\r\n this.saveToolbar = new PJQ.views.toolbars.SettingsSaveToolbar({\r\n el: this.$('.save-toolbar-outer'),\r\n validate: _.bind(function () {\r\n if (!this.companyInfoSettings.validate()) {\r\n this.$('.settings-nav-item').removeClass('active');\r\n this.$('.settings-nav-content').addClass('hidden');\r\n this.$('.account-item').addClass('active');\r\n this.$('.settings-nav-content[data-nav=\"ACCOUNT\"]').removeClass('hidden');\r\n } else {\r\n return true;\r\n }\r\n }, this)\r\n });\r\n\r\n if (this.options.initView != null) {\r\n switch (this.options.initView) {\r\n case \"billing\":\r\n if (this.companyInfoSettings != null) {\r\n this.companyInfoSettings.changeCard();\r\n }\r\n break;\r\n default:\r\n this.activateNavItem(this.options.initView);\r\n }\r\n }\r\n },\r\n navItemClicked: function (e) {\r\n let $target = $(e.currentTarget),\r\n tab = $target.data('nav');\r\n this.activateNavItem(tab);\r\n },\r\n activateNavItem: function (tab) {\r\n let tabUpper = tab.toUpperCase();\r\n this.$('.settings-nav-item').removeClass('active');\r\n this.$('.settings-nav-content').addClass('hidden');\r\n this.$('.settings-nav-item[data-nav=\"' + tabUpper + '\"]').addClass('active');\r\n this.$('.settings-nav-content[data-nav=\"' + tabUpper + '\"]').removeClass('hidden');\r\n\r\n PJQ.app.router.navigate('settings/' + tab.toLowerCase(), {\r\n trigger: false\r\n });\r\n\r\n switch (tabUpper) {\r\n case 'ACCOUNT':\r\n this.renderAccountSettings();\r\n break;\r\n case 'ADDRESSBOOK':\r\n this.renderAddressBookSettings();\r\n break;\r\n case 'ORDERING':\r\n this.renderOrderingSettings();\r\n break;\r\n case 'PROJECTS':\r\n this.renderProjectSettings();\r\n break;\r\n case 'BIDFORMS':\r\n this.renderBidFormSettings();\r\n break;\r\n case 'SCHEDULE':\r\n this.renderScheduleSettings();\r\n break;\r\n case 'RFI':\r\n this.renderRFISettings();\r\n break;\r\n case 'DAILYREPORTS':\r\n this.renderDailyReportSettings();\r\n break;\r\n case 'PUNCHLIST':\r\n this.renderPunchListSettings();\r\n break;\r\n case 'ACTIONITEMS':\r\n this.renderActionItemSettings();\r\n break;\r\n case 'COSTCODES':\r\n this.renderCostCodeSettings();\r\n break;\r\n case 'TAXCODES':\r\n this.renderTaxCodeSettings();\r\n break;\r\n case 'TIMECARD':\r\n this.renderTimeCardSettings();\r\n break;\r\n case 'PRIMECONTRACTS':\r\n this.renderPrimeContractSettings();\r\n break;\r\n case 'GROUPS':\r\n this.renderGroupSettings();\r\n break;\r\n case 'REGIONS':\r\n this.renderRegionSettings();\r\n break;\r\n case 'COMMITMENTS':\r\n this.renderCommitmentSettings();\r\n break;\r\n case 'INVOICING':\r\n this.renderInvoicingSettings();\r\n break;\r\n case 'DIRECTCOSTS':\r\n this.renderDirectCostSettings();\r\n break;\r\n case 'MEETINGS':\r\n this.renderMeetingSettings();\r\n break;\r\n case 'USERTYPES':\r\n this.renderUserTypeSettings();\r\n break;\r\n case 'USERS':\r\n this.renderUsers();\r\n break;\r\n case 'SSO':\r\n this.renderSSO();\r\n break;\r\n case 'SUBMITTALS':\r\n this.renderSubmittalSettings();\r\n break;\r\n case 'INTEGRATIONS':\r\n this.renderIntegrations();\r\n case 'CHANGEREQUESTS':\r\n this.renderChangeRequestSettings();\r\n break;\r\n case 'FEATURES':\r\n this.renderFeatureSettings();\r\n break;\r\n }\r\n },\r\n renderBidFormSettings: function () {\r\n this.bidFormSettings = new PJQ.views.bidForms.Settings({\r\n el: this.$('.bid-form-settings'),\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this),\r\n isDefaultSettings: true\r\n });\r\n\r\n new PJQ.views.bidForms.TemplateManagement({\r\n el: this.$('.bid-form-templates')\r\n });\r\n },\r\n renderIntegrations: function () {\r\n this.integrationSettings = new PJQ.integrations.views.IntegrationsList({\r\n el: this.$('.integrations'),\r\n initOptions: this.options.initOptions\r\n });\r\n },\r\n renderFeatureSettings: function() {\r\n if(!this.featureSettings) {\r\n this.featureSettings = new PJQ.views.featureSettings.FeatureSettings({\r\n el: this.$('.features-settings'),\r\n model: new PJQ.models.featureSettings.FeatureSetting(),\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n })\r\n }\r\n },\r\n renderScheduleSettings: function () {\r\n if (this.scheduleSettings == null) {\r\n this.scheduleSettings = new PJQ.views.schedule.Settings({\r\n el: this.$('.schedule-settings'),\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n // PJQ.app.session.fetchScheduleCustomFields(null, _.bind(function (fields) {\r\n // \tif (!this.scheduleFieldSettings) {\r\n // \t\tthis.scheduleFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n // \t\t\tel: this.$('.schedule-custom-fields'),\r\n // \t\t\tcollection: fields,\r\n // \t\t\tfieldModel: PJQ.models.schedule.ScheduleCustomField\r\n // \t\t});\r\n // \t}\r\n // }, this));\r\n\r\n new PJQ.views.schedule.TaskStatuses({\r\n el: this.$('.schedule-statuses')\r\n });\r\n\r\n new PJQ.views.schedule.TemplateManagement({\r\n el: this.$('.template-management')\r\n });\r\n }\r\n },\r\n renderAccountSettings: function (subscriptionId) {\r\n if (this.companyInfoSettings == null) {\r\n this.companyInfoSettings = new PJQ.views.settings.CompanyInfo({\r\n el: this.$('.company-info'),\r\n procoreCode: this.options.procoreCode,\r\n subscriptionId: subscriptionId != null ? subscriptionId : 0,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }\r\n },\r\n renderOrderingSettings: function () {\r\n if (this.orderingSettings == null) {\r\n PJQ.app.session.fetchOrderingSettings(_.bind(function (settings) {\r\n this.orderingSettings = new PJQ.views.settings.PlanRoomOrderingSettings({\r\n el: this.$('.ordering'),\r\n model: settings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }, this));\r\n }\r\n },\r\n renderAddressBookSettings: function () {\r\n if (this.addressBookSettings == null) {\r\n PJQ.app.session.fetchAddressBookSettings(_.bind(function (settings) {\r\n this.addressBookSettings = new PJQ.views.settings.AddressBookGeneralSettings({\r\n el: this.$('.address-book-general'),\r\n model: settings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }, this));\r\n\r\n PJQ.app.session.fetchCompanyCustomFields(null, _.bind(function (fields) {\r\n if (!this.companyFieldSettings) {\r\n this.companyFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.company-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.contacts.CompanyCustomField\r\n });\r\n }\r\n }, this));\r\n\r\n PJQ.app.session.fetchContactCustomFields(null, _.bind(function (fields) {\r\n if (!this.contactFieldSettings) {\r\n this.contactFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.contact-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.contacts.ContactCustomField\r\n });\r\n }\r\n }, this));\r\n\r\n this.renderContactCoreFieldSettings();\r\n }\r\n },\r\n renderContactCoreFieldSettings: function () {\r\n let $fields = this.$('.contact-core-fields');\r\n $fields.empty();\r\n if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS)) {\r\n this.contactCoreFieldSettings = new PJQ.views.settings.ContactFieldSettings({\r\n el: $fields\r\n });\r\n } else {\r\n new PJQ.Alert($fields, {\r\n type: 'primary',\r\n text: 'Enable advanced settings to show this feature'\r\n });\r\n }\r\n },\r\n enableContactCoreFieldSettings: function (e) {\r\n let enable = $(e.currentTarget).prop('checked');\r\n new PJQ.ajax.Request({\r\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\r\n {\r\n endpoint: 'contacts'\r\n },\r\n {\r\n endpoint: 'fields'\r\n }\r\n ], [\r\n {\r\n parameter: 'enable',\r\n value: enable\r\n }\r\n ])\r\n }).put().done(_.bind(function () {\r\n if (enable) {\r\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS, enable);\r\n } else {\r\n PJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS);\r\n }\r\n this.renderContactCoreFieldSettings();\r\n if (this.addressBookSettings != null) {\r\n this.addressBookSettings.render();\r\n }\r\n }, this));\r\n },\r\n renderProjectSettings: function () {\r\n if (this.planroomSettings == null) {\r\n PJQ.app.session.fetchPlanRoomSettings(_.bind(function (settings) {\r\n this.planroomSettings = new PJQ.views.settings.PlanRoomGeneralSettings({\r\n el: this.$('.general'),\r\n model: settings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }, this));\r\n\r\n PJQ.app.session.fetchProjectCustomFields(null, _.bind(function (fields) {\r\n if (!this.customFieldSettings) {\r\n this.customFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.project-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.projects.ProjectCustomField\r\n });\r\n }\r\n }, this));\r\n\r\n new PJQ.views.settings.ProjectStatuses({\r\n el: this.$('.project-statuses')\r\n });\r\n\r\n new PJQ.views.settings.MessageStatuses({\r\n el: this.$('.message-statuses')\r\n });\r\n\r\n if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_STATUS_ID)) {\r\n PJQ.app.session.fetchProjectStatuses(_.bind(function () {\r\n new PJQ.views.settings.ProjectStatusList({\r\n el: this.$('.project-status-list')\r\n });\r\n }, this));\r\n }\r\n\r\n new PJQ.views.settings.ProjectNDAs({\r\n el: this.$('.project-nda-outer')\r\n });\r\n }\r\n },\r\n renderRFISettings: function () {\r\n if (this.rfiCustomFieldSettings == null) {\r\n PJQ.app.session.fetchRFICustomFields(null, _.bind(function (fields) {\r\n this.rfiCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.rfi-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.rfi.CustomField\r\n });\r\n }, this));\r\n }\r\n\r\n if (this.rfiSettings == null) {\r\n PJQ.app.session.fetchRFISettings(_.bind(function (settings) {\r\n this.rfiSettings = new PJQ.views.rfi.RFISettings({\r\n el: this.$('.rfi-settings'),\r\n model: settings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }, this));\r\n }\r\n },\r\n renderDailyReportSettings: function () {\r\n if (this.dailyReportSettings == null) {\r\n this.dailyReportSettings = new PJQ.views.settings.DailyReportSettings({\r\n el: this.$('.daily-reports')\r\n });\r\n }\r\n },\r\n renderPunchListSettings: function () {\r\n if (this.punchListSettings == null) {\r\n PJQ.app.session.fetchPunchListCustomFields(null, _.bind(function (fields) {\r\n this.punchListSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.punch-list-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.punchlists.PunchlistCustomField\r\n });\r\n }, this));\r\n }\r\n\r\n if (!this.punchlistTemplates) {\r\n this.punchlistTemplates = new PJQ.views.punchlists.TemplateManagement({\r\n el: this.$('.punchlists-template-management')\r\n });\r\n }\r\n },\r\n renderActionItemSettings: function () {\r\n if (this.actionItemSettings == null) {\r\n PJQ.app.session.fetchActionItemCustomFields(null, _.bind(function (fields) {\r\n this.actionItemSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.action-items'),\r\n collection: fields,\r\n fieldModel: PJQ.models.actionItems.ActionItemCustomField\r\n });\r\n }, this));\r\n }\r\n\r\n if (!this.actionItemTemplates) {\r\n this.actionItemTemplates = new PJQ.views.actionItems.TemplateManagement({\r\n el: this.$('.actionitems-template-management')\r\n });\r\n }\r\n\r\n },\r\n renderCostCodeSettings: function () {\r\n if (this.costCodeSettings == null) {\r\n this.costCodeSettings = new PJQ.views.budget.CostCodeSettings({\r\n el: this.$('.cost-code-settings')\r\n });\r\n }\r\n if(this.costTypeSettings == null) {\r\n this.costTypeSettings = new PJQ.views.budget.CostTypeSettings({\r\n el: this.$('.cost-type-settings')\r\n });\r\n }\r\n },\r\n renderTaxCodeSettings: function () {\r\n if(this.taxCodeSettings == null) {\r\n this.taxCodeSettings = new PJQ.views.budget.TaxCodeSettings({\r\n el: this.$('.tax-code-settings')\r\n });\r\n }\r\n },\r\n renderTimeCardSettings: function () {\r\n if (this.timeCardSettingsView == null) {\r\n this.timeCardSettings = new PJQ.models.timecards.TimeCardSettings();\r\n this.timeCardSettings.fetch({\r\n success: _.bind(function () {\r\n this.timeCardCategories = new PJQ.collections.timecards.TimeCardCategories();\r\n this.timeCardCategories.fetch({\r\n success: _.bind(function () {\r\n this.timeCardSettingsView = new PJQ.views.settings.TimeCardSettings({\r\n el: this.$('.timecard-settings'),\r\n model: this.timeCardSettings,\r\n categories: this.timeCardCategories,\r\n saveToolbar: this.saveToolbar,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderGroupSettings: function () {\r\n if (this.groupSettings == null) {\r\n PJQ.app.session.fetchUserGroups(null, _.bind(function (groups) {\r\n this.groupSettings = new PJQ.views.settings.GroupSettings({\r\n el: this.$('.groups'),\r\n collection: groups,\r\n groupModel: PJQ.models.groups.Group\r\n });\r\n }, this));\r\n\r\n new PJQ.views.bidPackages.TemplateManagement({\r\n el: this.$('.bid-package-template-management'),\r\n templateType: \"Bid Package\"\r\n });\r\n }\r\n },\r\n renderRegionSettings: function () {\r\n if (this.regionSettings == null) {\r\n this.regionSettings = new PJQ.views.settings.RegionSettings({\r\n el: this.$('.regions')\r\n });\r\n }\r\n },\r\n renderChangeRequestSettings: function () {\r\n if (!this.changeRequestSettings) {\r\n this.changeRequestCustomFields = new PJQ.collections.changeRequests.CustomFields();\r\n this.changeRequestCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.changeRequestSettings = new PJQ.models.changeRequests.Settings();\r\n this.changeRequestSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.ChangeRequestSettings({\r\n el: this.$('.change-request-settings'),\r\n model: this.changeRequestSettings,\r\n customFields: this.changeRequestCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n this.changeRequestCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.change-request-custom-fields'),\r\n collection: this.changeRequestCustomFields,\r\n fieldModel: PJQ.models.changeRequests.CustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderPrimeContractSettings: function () {\r\n if (!this.primeContractSettings) {\r\n this.primeContractCustomFields = new PJQ.collections.primeContracts.CustomFields();\r\n this.primeContractCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.primeContractSettings = new PJQ.models.primeContracts.Settings();\r\n this.primeContractSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.PrimeContractSettings({\r\n el: this.$('.prime-contract-settings'),\r\n model: this.primeContractSettings,\r\n customFields: this.primeContractCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n new PJQ.views.settings.TermsList({\r\n el: this.$('.contract-terms'),\r\n context: 'contracts'\r\n })\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.prime-contract-field-settings'),\r\n context: 'primecontracts'\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.prime-contract-change-order-field-settings'),\r\n context: 'primecontractchangeorders'\r\n });\r\n\r\n this.primeContractCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.prime-contract-custom-fields'),\r\n collection: this.primeContractCustomFields,\r\n fieldModel: PJQ.models.primeContracts.CustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n if (!this.primeContractCOSettings) {\r\n this.primeContractCOCustomFields = new PJQ.collections.primeContracts.ChangeOrderCustomFields();\r\n this.primeContractCOCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.primeContractCOSettings = new PJQ.models.primeContracts.ChangeOrderSettings();\r\n this.primeContractCOSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.PrimeContractChangeOrderSettings({\r\n el: this.$('.prime-contract-change-order-settings'),\r\n model: this.primeContractCOSettings,\r\n customFields: this.primeContractCOCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n this.primeContractCOCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.prime-contract-change-order-custom-fields'),\r\n collection: this.primeContractCOCustomFields,\r\n fieldModel: PJQ.models.primeContracts.ChangeOrderCustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderCommitmentSettings: function () {\r\n if (!this.commitmentSettings) {\r\n this.commitmentCustomFields = new PJQ.collections.commitments.CustomFields();\r\n this.commitmentCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.commitmentSettings = new PJQ.models.commitments.Settings();\r\n this.commitmentSettings.fetch({\r\n success: () => {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.CommitmentSettings({\r\n el: this.$('.commitment-settings'),\r\n model: this.commitmentSettings,\r\n customFields: this.commitmentCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n new PJQ.views.settings.TermsList({\r\n el: this.$('.commitment-terms'),\r\n context: 'commitments'\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.commitment-field-settings'),\r\n context: 'commitments'\r\n });\r\n\r\n this.commitmentCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.commitment-custom-fields'),\r\n collection: this.commitmentCustomFields,\r\n fieldModel: PJQ.models.commitments.CustomField\r\n });\r\n }, this));\r\n }\r\n });\r\n }, this)\r\n });\r\n }\r\n if (!this.commitmentCOSettings) {\r\n this.commitmentCOCustomFields = new PJQ.collections.commitments.ChangeOrderCustomFields();\r\n this.commitmentCOCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.commitmentCOSettings = new PJQ.models.commitments.ChangeOrderSettings();\r\n this.commitmentCOSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.CommitmentChangeOrderSettings({\r\n el: this.$('.commitment-change-order-settings'),\r\n model: this.commitmentCOSettings,\r\n customFields: this.commitmentCOCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.commitment-change-order-field-settings'),\r\n context: 'commitmentchangeorders'\r\n });\r\n\r\n this.commitmentCOCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.commitment-change-order-custom-fields'),\r\n collection: this.commitmentCOCustomFields,\r\n fieldModel: PJQ.models.commitments.ChangeOrderCustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderInvoicingSettings: function () {\r\n if (!this.payableInvoiceSettings) {\r\n this.payableInvoiceCustomFields = new PJQ.collections.invoicing.PayableInvoiceCustomFields();\r\n this.payableInvoiceCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.payableInvoiceSettings = new PJQ.models.invoicing.PayableInvoiceSettings();\r\n this.payableInvoiceSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.PayableInvoiceSettings({\r\n el: this.$('.payable-invoice-settings'),\r\n model: this.payableInvoiceSettings,\r\n customFields: this.payableInvoiceCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.payable-invoice-field-settings'),\r\n context: 'payableinvoices'\r\n });\r\n\r\n this.payableInvoiceCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.payable-invoice-custom-fields'),\r\n collection: this.payableInvoiceCustomFields,\r\n fieldModel: PJQ.models.invoicing.PayableInvoiceCustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n if (!this.receivableInvoiceSettings) {\r\n this.receivableInvoiceCustomFields = new PJQ.collections.invoicing.ReceivableInvoiceCustomFields();\r\n this.receivableInvoiceCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.receivableInvoiceSettings = new PJQ.models.invoicing.ReceivableInvoiceSettings();\r\n this.receivableInvoiceSettings.fetch({\r\n success: _.bind(function () {\r\n PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n new PJQ.views.settings.ReceivableInvoiceSettings({\r\n el: this.$('.receivable-invoice-settings'),\r\n model: this.receivableInvoiceSettings,\r\n customFields: this.receivableInvoiceCustomFields,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.receivable-invoice-field-settings'),\r\n context: 'receivableinvoices'\r\n });\r\n\r\n this.receivableInvoiceCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.receivable-invoice-custom-fields'),\r\n collection: this.receivableInvoiceCustomFields,\r\n fieldModel: PJQ.models.invoicing.ReceivableInvoiceCustomField\r\n });\r\n }, this));\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderMeetingSettings: function () {\r\n if (!this.meetingCustomFields) {\r\n this.meetingCustomFields = new PJQ.collections.meetings.CustomFields();\r\n this.meetingCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.meetingSettings = new PJQ.models.meetings.Settings();\r\n this.meetingSettings.fetch({\r\n success: _.bind(function () {\r\n new PJQ.views.meetings.MeetingSettings({\r\n el: this.$('.meeting-settings'),\r\n model: this.meetingSettings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n this.meetingCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.meeting-custom-fields'),\r\n collection: this.meetingCustomFields,\r\n fieldModel: PJQ.models.meetings.CustomField\r\n });\r\n\r\n if (!this.meetingTemplates) {\r\n this.meetingTemplates = new PJQ.views.meetings.TemplateManagement({\r\n el: this.$('.meetings-template-management')\r\n });\r\n }\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderDirectCostSettings: function () {\r\n if (!this.directCostCustomFields) {\r\n this.directCostCustomFields = new PJQ.collections.directcosts.CustomFields();\r\n this.directCostCustomFields.fetch({\r\n success: _.bind(function () {\r\n this.directCostSettings = new PJQ.models.directcosts.Settings();\r\n this.directCostSettings.fetch({\r\n success: _.bind(function () {\r\n new PJQ.views.directcosts.DirectCostSettings({\r\n el: this.$('.direct-cost-settings'),\r\n model: this.directCostSettings,\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n\r\n this.directCostCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.direct-cost-custom-fields'),\r\n collection: this.directCostCustomFields,\r\n fieldModel: PJQ.models.directcosts.CustomField\r\n });\r\n\r\n new PJQ.views.settings.FinanceCoreFieldSettings({\r\n el: this.$('.direct-cost-field-settings'),\r\n context: 'directcosts'\r\n });\r\n }, this)\r\n });\r\n }, this)\r\n });\r\n }\r\n },\r\n renderUserTypeSettings: function () {\r\n if (this.userTypeSettings == null) {\r\n PJQ.app.session.fetchUserTypes(_.bind(function (types) {\r\n this.userTypeSettings = new PJQ.views.settings.UserTypeSettings({\r\n el: this.$('.user-types'),\r\n collection: types,\r\n model: PJQ.models.userTypes.UserType\r\n });\r\n }, this));\r\n }\r\n },\r\n renderUsers: function () {\r\n if (this.userManagement == null) {\r\n PJQ.app.session.fetchUsers(_.bind(function (users) {\r\n this.userManagement = new PJQ.views.settings.UserSettings({\r\n el: this.$('.user-management'),\r\n collection: users\r\n });\r\n }, this));\r\n\r\n PJQ.app.session.fetchUserCustomFields(null, _.bind(function (fields) {\r\n if (!this.userCustomFieldSettings) {\r\n this.userCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.user-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.users.UserCustomField\r\n });\r\n }\r\n }, this));\r\n }\r\n },\r\n renderSSO: function () {\r\n if (this.ssoSettings == null) {\r\n PJQ.app.session.fetchSSOProviders(_.bind(function (providers) {\r\n this.ssoSettings = new PJQ.views.settings.SSOSettings({\r\n el: this.$('.sso-settings'),\r\n collection: providers\r\n });\r\n }, this));\r\n }\r\n },\r\n renderSubmittalSettings: function () {\r\n if (this.submittalSettings == null) {\r\n this.submittalSettings = new PJQ.views.submittals.Settings({\r\n el: this.$('.submittal-settings'),\r\n onChange: _.bind(function (model) {\r\n this.saveToolbar.addSaveModel(model);\r\n }, this)\r\n });\r\n if (!this.submittalTemplates) {\r\n this.submittalTemplates = new PJQ.views.submittals.TemplateManagement({\r\n el: this.$('.submittal-template-management')\r\n });\r\n }\r\n if(!this.submittalStatuses){\r\n this.submittalStatuses = new PJQ.views.submittals.SubmittalStatusSettings({\r\n el: this.$('.submittal-status-settings')\r\n })\r\n }\r\n // if(!this.submittalItemTypes){\r\n // \tthis.submittalItemTypes = new PJQ.views.submittals.ItemTypeSettings({\r\n // \t\tel: this.$('.submittal-item-type-settings')\r\n // \t})\r\n // }\r\n PJQ.app.session.fetchSubmittalCustomFields(null, _.bind(function (fields) {\r\n if (!this.submittalFieldSettings) {\r\n this.submittalFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n el: this.$('.submittal-custom-fields'),\r\n collection: fields,\r\n fieldModel: PJQ.models.submittals.SubmittalCustomField\r\n });\r\n }\r\n }, this));\r\n }\r\n }\r\n});\r\n","PJQ.helpers.numberFormatHelpers = {\n createFormatStringPreview(numberFormat) {\n let result = '';\n _.each(numberFormat, function (token) {\n if (token.isText)\n result += token.label;\n else\n result += '[' + token.label + ']';\n });\n return result;\n }\n};\n\nPJQ.views.settings.NumberFormatInput = PJQ.views.BaseView.extend({\n defaults: {\n commitmentType: null,\n settings: null,\n customFields: null,\n numberFormatProperty: 'numberFormat',\n onSave: _.noop()\n },\n afterRender: function () {\n if (this.options.commitmentType === PJQ.constants.commitments.commitmentType.SUBCONTRACT) {\n this.options.numberFormatProperty = 'subcontractNumberFormat';\n } else if (this.options.commitmentType === PJQ.constants.commitments.commitmentType.PURCHASE_ORDER) {\n this.options.numberFormatProperty = 'purchaseOrderNumberFormat';\n }\n\n this.numberFormat = this.options.settings.get(this.options.numberFormatProperty);\n let editButton = $('');\n this.$el.closest('.form-group').find('label').append(editButton);\n editButton.on('click', _.bind(this.edit, this));\n\n this.renderFormatString();\n },\n edit: function () {\n new PJQ.views.settings.NumberFormatEditModal({\n settings: this.options.settings,\n numberFormatProperty: this.options.numberFormatProperty,\n onSave: _.bind(function (value) {\n this.numberFormat = value;\n this.options.settings.set(this.options.numberFormatProperty, value);\n this.renderFormatString();\n if (typeof this.options.onSave === 'function') {\n this.options.onSave(value);\n }\n }, this)\n });\n },\n renderFormatString: function () {\n this.$el.html('
' + PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.numberFormat) + '
');\n }\n});\n\nPJQ.views.settings.NumberFormatEditModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-number-format-edit'),\n minWidth: 800,\n numberFormatProperty: 'numberFormat',\n onSave: _.noop(),\n parentView: null\n },\n events: {\n 'click a.new-token': 'addToken',\n 'click .edit-token': 'editToken',\n 'change .input-ct-min-len': 'counterMinLengthChanged',\n 'click .cancel-edit-token': 'cancelEdit',\n 'click .delete-token': 'deleteToken',\n 'click .save-token': 'saveToken',\n 'click .save': 'saveFormat'\n },\n beforeModalCreated: async function () {\n let numFmt = this.options.settings.get(this.options.numberFormatProperty);\n if (numFmt != null) {\n this.numberFormat = [...numFmt];\n } else {\n this.numberFormat = [];\n }\n\n this.tokens = [\n {\n token: '',\n label: 'Enter Text',\n isText: true\n },\n {\n token: 'project.projectId',\n label: 'Project Id',\n category: 'Project Details'\n },\n {\n token: 'project.startDate',\n label: 'Project Start',\n isDate: true,\n dateFormatId: 0,\n category: 'Project Details'\n },\n {\n token: 'today',\n label: 'Current Date',\n isDate: true,\n dateFormatId: 0\n }];\n\n this.erpIntegration = await PJQ.app.session.fetchERPIntegration();\n if (this.erpIntegration != null) {\n this.tokens.push({\n token: 'externalProjectNumber',\n label: 'ERP Project Id',\n category: 'Project Details'\n });\n }\n\n // add the custom fields\n _.each(PJQ.app.session.customFields.project[PJQ.app.session.get('masterUserId')].models, _.bind(function (customField) {\n switch (customField.get('fieldType')) {\n case PJQ.constants.customFields.fieldTypes.DATE:\n case PJQ.constants.customFields.fieldTypes.DATETIME:\n this.tokens.push(\n {\n token: 'fieldValue' + customField.get('fieldNumber'),\n label: customField.get('fieldName'),\n isDate: true,\n dateFormatId: 0,\n category: 'Project Details'\n });\n break;\n case PJQ.constants.customFields.fieldTypes.INT:\n case PJQ.constants.customFields.fieldTypes.TEXT:\n this.tokens.push(\n {\n token: 'fieldValue' + customField.get('fieldNumber'),\n label: customField.get('fieldName'),\n category: 'Project Details'\n });\n break;\n // case PJQ.constants.customFields.fieldTypes.CHOICE:\n // if (!customField.get('isMultipleChoice')) {\n // this.tokens.push(\n // {\n // token: 'fieldValue' + customField.get('fieldNumber'),\n // label: customField.get('fieldName')\n // });\n // break;\n // }\n // break;\n }\n }, this));\n\n this.tokens.push({\n token: 'counter',\n label: 'Counter'\n });\n\n this.render();\n },\n renderData: function () {\n return {\n tokens: this.tokens\n };\n },\n afterRender: function () {\n this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.numberFormat));\n\n this.editRow = null;\n this.dateFormatSelectPicker = null;\n this.datatable = new PJQ.views.dataTables.DataTable({\n el: this.$('.token-datatable'),\n data: this.numberFormat,\n isHideSearch: true,\n order: [],\n pageLength: 99999,\n sortableOptions: {\n data: this.numberFormat,\n containment: \".token-datatable\",\n stop: _.bind(function () {\n let self = this, rows = [];\n this.$('.token-datatable tbody tr').each(function (a, b) {\n rows.push(self.datatable.getRow(b).data());\n });\n\n this.numberFormat = rows;\n this.render();\n }, this)\n },\n bSort: false,\n onTableDraw: _.bind(function (dataTable) {\n if (this.$('.token-text').length) {\n this.$('.token-text').inputmask('', {\n regex: '^[0-9A-Z-a-z\\.\\-]*$'\n })\n this.$('.token-text').focus();\n } else if (this.$('.date-format').length) {\n this.dateFormatSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('.date-format'),\n isIntChoices: true,\n isMultiple: false,\n defaultValue: parseInt(this.$('.date-format').data('default'))\n });\n this.$('.date-format').focus();\n }\n\n }, this),\n columns: [\n {\n \"title\": \"Element\",\n \"orderable\": false,\n \"searchable\": false,\n \"render\": (data, type, row) => {\n if (this.editRow === row) {\n if (row.isText) {\n return '';\n } else if (row.isDate) {\n return '
' + '[' + row.label + ']' + '
';\n }\n\n return '';\n } else {\n if (row.token === 'counter') {\n return '
' + '[' + row.label + ']' + '
Min. Length:
';\n } else if (row.isText) {\n return row.label;\n } else {\n return '[' + row.label + ']' + (row.isDate ? ' (' + PJQ.constants.commitments.commitmentNumberTokenDateFormatNames[row.dateFormatId] + ')' : '');\n }\n }\n }\n },\n {\n \"title\": '',\n \"render\": _.bind(function (data, type, row) {\n let html = '
';\n if (this.editRow === row) {\n html += '';\n html += '';\n } else {\n if (row.isText || row.isDate)\n html += '';\n\n html += '';\n }\n html += '
';\n return html;\n }, this),\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"75px\",\n \"className\": \"text-right\",\n \"visible\": true\n }\n ],\n dom: 't'\n });\n // '<\"top\"<\"clear\">>rt<\"bottom\"p<\"clear\">>'\n },\n counterMinLengthChanged: function (e) {\n let $target = $(e.currentTarget),\n $row = $target.closest('tr')[0],\n row = this.datatable.getRow($row),\n token = row.data();\n\n if (token == null) {\n return;\n }\n\n let minLen = parseInt($target.val());\n if (!isNaN(minLen) && minLen >= 1 && minLen <= 5) {\n token.minLength = minLen;\n }\n },\n addToken: function (e) {\n let tokenIndex = $(e.currentTarget).data('tokenIndex'),\n newToken = _.clone(this.tokens[tokenIndex]);\n this.editRow = null;\n if (newToken.isText) {\n newToken.label = '';\n this.editRow = newToken;\n } else if (newToken.isDate) {\n this.editRow = newToken;\n }\n\n if (this.editRow)\n this.$('.save').prop('disabled', true);\n\n this.datatable.addRow(newToken);\n\n this.isAdding = true;\n\n\n this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n },\n editToken: function (e) {\n let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n this.editRow = row.data();\n this.$('.save').prop('disabled', true);\n row.invalidate().draw();\n },\n cancelEdit: function (e) {\n let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n this.editRow = null;\n this.dateFormatSelectPicker = null;\n this.$('.save').prop('disabled', false);\n if (this.isAdding) {\n this.datatable.removeRow(row);\n } else {\n row.invalidate().draw();\n }\n this.isAdding = false;\n },\n deleteToken: function (e) {\n let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n if (row == null) {\n return;\n }\n\n this.datatable.removeRow(row);\n this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n },\n saveToken: function (e) {\n let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]),\n data = row.data();\n if (data.isText) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.token-text'), true);\n let value = this.$('.token-text').val().trim();\n if (_.size(value) === 0) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.token-text'), false);\n return;\n }\n\n data.label = value;\n } else if (data.isDate) {\n data.dateFormatId = this.dateFormatSelectPicker.getValue();\n this.dateFormatSelectPicker = null;\n }\n\n this.editRow = null;\n this.isAdding = false;\n this.$('.save').prop('disabled', false);\n row.invalidate().draw();\n this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n },\n saveFormat: function () {\n if (typeof this.options.onSave === 'function') {\n let tokens = [];\n for (let i = 0; i < this.datatable.dataTable.data().length; i++)\n tokens.push(this.datatable.dataTable.data()[i]);\n\n this.options.onSave(tokens);\n }\n\n this.removeModal();\n }\n});","PJQ.views.settings.PlanRoomOrderingSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Planroom-Ordering')\n\t},\n\tevents: {\n\t\t'click .btn-ordering-save': 'saveSettings',\n\t\t'click .btn-payment-info': 'changePaymentInfo'\n\t},\n\tbeforeRender: function () {\n\t\tthis.renderData = {\n\t\t\tmodel: this.model\n\t\t}\n\t},\n\tafterRender: function () {\n\n\t\tif (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.HIDE_SAVE_PAYMENT_INFO))\n\t\t\tthis.$('.btn-payment-info').hide();\n\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-delivery-options'),\n\t\t\tdefaultValue: (this.model.get('deliverBy').length > 0) ? this.model.get('deliverBy') : \"Next Day (Morning)\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('deliverBy', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-copies'),\n\t\t\tdefaultValue: this.model.get('largeFormatCopyCount'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatCopyCount', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-print-size'),\n\t\t\tdefaultValue: (this.model.get('largeFormatPrintSize').length > 0) ? this.model.get('largeFormatPrintSize') : \"FULL SIZE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatPrintSize', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-paper'),\n\t\t\tdefaultValue: (this.model.get('largeFormatPaper').length > 0) ? this.model.get('largeFormatPaper') : \"WHITE BOND\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatPaper', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-binding'),\n\t\t\tdefaultValue: (this.model.get('largeFormatBinding').length > 0) ? this.model.get('largeFormatBinding') : \"LOOSE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatBinding', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-copies'),\n\t\t\tdefaultValue: this.model.get('smallformatCopyCount'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatCopyCount', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-paper'),\n\t\t\tdefaultValue: (this.model.get('smallFormatPaper').length > 0) ? this.model.get('smallFormatPaper') : \"WHITE BOND\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatPaper', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-binding'),\n\t\t\tdefaultValue: (this.model.get('smallFormatBinding').length > 0) ? this.model.get('smallFormatBinding') : \"LOOSE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatBinding', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tchangePaymentInfo: function () {\n\t\tnew PJQ.views.settings.PaymentInfoModal();\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t},\n\tcancelEdit: function () {\n\t\tthis.model.fetch({\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tthis.render();\n\t\t\t}, this)\n\t\t});\n\t\tthis.render();\n\t},\n\tsaveSettings: function () {\n\t\tif (this.model.hasChanged()) {\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: 'Address book settings saved'\n\t\t\t\t\t});\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t}\n});\n\nPJQ.views.settings.PaymentInfoModal = PJQ.views.BaseModal.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Payment-Settings'),\n\t\tminWidth: 700\n\t},\n\tdefaultEvents: {\n\t\t'click .btn-save': 'save',\n\t\t'click .btn-cancel': 'cancel',\n\t\t'keyup .input-card-number': 'setCardBrand',\n\t\t'click .btn-edit': 'edit',\n\t\t'click .btn-copy-profile': 'copyProfile'\n\t},\n\tbeforeModalCreated: function () {\n\t\tthis.user = new PJQ.models.contacts.Contact({\n\t\t\tid: -PJQ.app.session.user.id\n\t\t});\n\n\t\tif (!this.user.isFetched) {\n\t\t\tthis.user.fetch();\n\t\t}\n\n\t\tif (this.model == null) {\n\t\t\tthis.model = new PJQ.models.settings.PaymentInfo();\n\t\t}\n\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\trenderData: function () {\n\t\treturn {\n\t\t\tmodel: this.model,\n\t\t\ttoday: new Date()\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tthis.isEdit = false;\n\t\tnew PJQ.Binder(this.$el, this.model);\n\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-phone'));\n\t\tPJQ.helpers.inputHelpers.inputMaskCreditCard(this.$('.input-card-number'));\n\n\t\tthis.statePicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-state'),\n\t\t\tdefaultValue: _.size(this.model.get('state')) > 0 ? this.model.get('state').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('state', value.toUpperCase());\n\t\t\t}, this)\n\t\t});\n\t\tthis.countryChanged();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-country'),\n\t\t\tnoneSelectedText: 'Select Value',\n\t\t\tdefaultValue: _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('country', value.toUpperCase());\n\t\t\t\tthis.model.set('zip', '');\n\t\t\t\tthis.model.set('state', '');\n\t\t\t\tthis.countryChanged();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.monthPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-month'),\n\t\t\tnoneSelectedText: '',\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expMonth', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.yearPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-year'),\n\t\t\tnoneSelectedText: '',\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expYear', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-month-disabled'),\n\t\t\tnoneSelectedText: '',\n\t\t\tdefaultValue: this.model.get('expMonth'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expMonth', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-year-disabled'),\n\t\t\tnoneSelectedText: '',\n\t\t\tdefaultValue: this.model.get('expYear'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expYear', value);\n\t\t\t}, this)\n\t\t});\n\t\tthis.setCardBrand();\n\t},\n\tcopyProfile: function () {\n\t\tthis.model.set('companyName', this.user.get('companyName'));\n\t\tthis.model.set('cardholderName', this.user.get('contactName'));\n\t\tthis.model.set('address1', this.user.get('address1'));\n\t\tthis.model.set('address2', this.user.get('address2'));\n\t\tthis.model.set('city', this.user.get('city'));\n\t\tthis.model.set('zip', this.user.get('zip'));\n\t\tthis.model.set('state', this.user.get('state'));\n\t\tthis.model.set('country', this.user.get('country'));\n\t\tthis.model.set('phone', this.user.get('phone'));\n\t\tthis.model.set('phoneExt', this.user.get('phoneExtension'));\n\t\tthis.model.set('email', this.user.get('email'));\n\t\tthis.render()\n\t},\n\tsetCardBrand: function () {\n\t\tlet cardBrand = PJQ.helpers.paymentHelpers.getCardIssuer(this.model.get('cardNumber')),\n\t\t\ticon = PJQ.helpers.paymentHelpers.getCardIssuerIconFAClass(cardBrand);\n\t\tthis.$('.card-brand').addClass('fs-30 ' + icon);\n\t},\n\tcountryChanged: function () {\n\t\tlet country = _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : 'us',\n\t\t\toptions = '';\n\t\t_.each(PJQ.constants.states[country], function (state) {\n\t\t\toptions += '';\n\t\t});\n\t\tthis.statePicker.$el.html(options);\n\t\tthis.statePicker.refresh();\n\t\tif (_.size(this.model.get('state')) > 0)\n\t\t\tthis.statePicker.setValue(this.model.get('state').toLowerCase());\n\n\t\tPJQ.helpers.inputHelpers.inputMaskZip(this.$('.user-edit-zip'), country);\n\t},\n\tedit: function () {\n\t\tthis.isEdit = true;\n\t\tlet $prepend = this.$('.card-type-prepend');\n\t\tthis.$('.card-hidden').hide();\n\t\tthis.$('.card-shown').attr('hidden', false);\n\t\tthis.$('.select-expiration-year').attr('disabled', false);\n\t\tthis.$('.select-expiration-month').attr('disabled', false);\n\t\t$prepend.removeClass();\n\t\t$prepend.addClass('card-type-prepend fal fa-question fs-30')\n\t},\n\tvalidate: function () {\n\t\tlet isValid = true;\n\n\t\tlet isCompanyValid = _.size(this.model.get('companyName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-company-name'), isCompanyValid);\n\t\tisValid = isCompanyValid && isValid;\n\n\t\tlet emailValid = PJQ.helpers.validators.validateEmail(this.$('.input-user-email').val());\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-email'), (emailValid.success));\n\t\tisValid = emailValid.success && isValid;\n\n\t\tlet isContactValid = _.size(this.model.get('cardholderName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-cardholder-name'), isContactValid);\n\t\tisValid = isContactValid && isValid;\n\n\t\tlet isAddressValid = _.size(this.model.get('address1').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-address-1'), isAddressValid);\n\t\tisValid = isAddressValid && isValid;\n\n\t\tlet isStateValid = _.size(this.model.get('state').trim()) > 0;\n\t\tisValid = isStateValid && isValid;\n\t\tthis.$('.user-edit-state').removeClass('p-field-error');\n\t\tif (!isStateValid) {\n\t\t\tthis.$('.user-edit-state').addClass('p-field-error');\n\t\t}\n\n\t\tlet isCityValid = _.size(this.model.get('city').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.user-edit-city'), isCityValid);\n\t\tisValid = isCityValid && isValid;\n\n\t\tlet isZipValid = _.size(this.model.get('zip').trim()) > 4;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.user-edit-zip'), isZipValid);\n\t\tisValid = isZipValid && isValid;\n\n\t\tlet isPhoneValid = _.size(this.model.get('phone')) >= 10;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-phone'), isPhoneValid);\n\t\tisValid = isPhoneValid && isValid;\n\n\t\tlet isCardValid = PJQ.helpers.paymentHelpers.validateCreditCard(this.model.get('cardNumber'));\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-card-number'), isCardValid);\n\t\tisValid = isCardValid && isValid;\n\n\t\tlet isYearValid = (this.yearPicker.getValue() != null);\n\t\tisValid = isYearValid && isValid;\n\t\tthis.$('.select-expiration-year').removeClass('p-field-error');\n\t\tif (!isYearValid) {\n\t\t\tthis.$('.select-expiration-year').addClass('p-field-error');\n\t\t}\n\n\t\tlet isMonthValid = (this.monthPicker.getValue() != null);\n\t\tisValid = isMonthValid && isValid;\n\t\tthis.$('.select-expiration-month').removeClass('p-field-error');\n\t\tif (!isMonthValid) {\n\t\t\tthis.$('.select-expiration-month').addClass('p-field-error');\n\t\t}\n\n\t\treturn isValid;\n\t},\n\tsave: function () {\n\t\tif (this.isEdit) {\n\t\t\tlet cardNumber = this.$('.input-card-number').val();\n\t\t\tthis.model.set('cardNumber', cardNumber.replace(/\\D/g, ''));\n\t\t}\n\t\tif (this.validate()) {\n\t\t\tthis.model.save();\n\t\t\tthis.isEdit = false;\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tcancel: function () {\n\t\tthis.isEdit = false;\n\t\tthis.removeModal();\n\t}\n});\n","PJQ.views.settings.PrimeContractSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'prime-contracts'),\n model: null,\n customFields: null\n },\n events: {},\n beforeFirstRender: function () {\n this.listenTo(this.model, 'fetch', this.render);\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ],\n afterChange: _.bind(function () {\n this.onChange();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-default-accounting-method'),\n isIntChoices: true,\n isMultiple: false,\n defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n onChange: _.bind(function (value) {\n this.model.set('defaultAccountingMethod', value);\n this.onChange();\n }, this)\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.views.settings.SignatureEditInput({\n el: this.$('.manage-signature-input'),\n signature: this.model.get('defaultSignature'),\n headerSubText: \"Manage your company's default signature for Contracts\",\n onSave: _.bind(function(signature) {\n this.model.set('defaultSignature', signature);\n this.onChange();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});\n\nPJQ.views.settings.PrimeContractChangeOrderSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'prime-contract-change-orders'),\n model: null,\n customFields: null\n },\n events: {},\n beforeFirstRender: function () {\n this.listenTo(this.model, 'fetch', this.render);\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ],\n afterChange: _.bind(function () {\n this.onChange();\n }, this)\n });\n\n new PJQ.views.settings.NumberFormatInput({\n el: this.$('.number-format'),\n settings: this.model,\n customFields: this.options.customFields,\n onSave: (value) => {\n this.model.set('numberFormat', value);\n this.onChange();\n }\n });\n\n new PJQ.views.settings.SignatureEditInput({\n el: this.$('.manage-signature-input'),\n signature: this.model.get('defaultSignature'),\n headerSubText: \"Manage your company's default signature for Contract Change Orders\",\n onSave: _.bind(function(signature) {\n this.model.set('defaultSignature', signature);\n this.onChange();\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-line-item-order-by'),\n defaultValue: this.model.get('lineItemOrderBy'),\n onChange: _.bind(function (value) {\n this.model.set('lineItemOrderBy', value);\n this.onChange();\n }, this)\n });\n },\n onChange: function (model) {\n if (typeof this.options.onChange === 'function') {\n this.options.onChange(model ? model : this.model);\n }\n }\n});","PJQ.views.settings.PlanRoomGeneralSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Planroom-General')\n\t},\n\tevents: {\n\t\t'keydown .input-default-bid-due-time': function () {\n\t\t\treturn false;\n\t\t},\n\t\t'contextmenu .input-default-bid-due-time': function () {\n\t\t\treturn false;\n\t\t},\n\t\t'click .input-project-user-2-show': 'showUser2Changed'\n\t},\n\tbeforeFirstRender: function () {\n\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t},\n\tbeforeRender: function () {\n\t\tthis.enableFax = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_FAX) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_FAX) : false;\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\tenableFax: this.enableFax,\n\t\t\tshowGroupCompanyView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY),\n\t\t\tshowGroupContactView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT),\n\t\t\tshowCompanyView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_COMPANY) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_COMPANY),\n\t\t\tshowContactView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_CONTACT) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_CONTACT)\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tthis.createDefaultItbMethodArray();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-default-part-view'),\n\t\t\tdefaultValue: (this.model.get('itbDefaultView').length > 0) ? this.model.get('itbDefaultView') : \"view_default\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbDefaultView', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Datepicker({\n\t\t\tel: this.$('.input-default-bid-due-time'),\n\t\t\tdatepickerOptions: {\n\t\t\t\tformat: 'LT',\n\t\t\t\tdefaultDate: 4\n\t\t\t},\n\t\t\tisTimeOnly: true,\n\t\t\tonChange: _.bind(function () {\n\t\t\t\tlet dateVal = this.$('.input-default-bid-due-time').val(),\n\t\t\t\t\ttime = dateVal.split(\" \")[0],\n\t\t\t\t\tamPm = dateVal.split(\" \")[1],\n\t\t\t\t\tchanged = false;\n\t\t\t\tif (this.model.get('defaultBidDueTime') !== time) {\n\t\t\t\t\tthis.model.set('defaultBidDueTime', time);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (this.model.get('defaultBidDueTimeAMPM') !== amPm) {\n\t\t\t\t\tthis.model.set('defaultBidDueTimeAMPM', amPm);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-participants-per-page'),\n\t\t\tdefaultValue: this.model.get('itbRowsPerPage'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbRowsPerPage', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-default-time-zone'),\n\t\t\tdefaultValue: (this.model.get('itbDefaultTimeZone').length > 0) ? this.model.get('itbDefaultTimeZone') : \"Central\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbDefaultTimeZone', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.itbPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-itb-method'),\n\t\t\tdefaultValue: this.defaultArray,\n\t\t\texclusiveChoices: [\"itb-fax\", \"itb-no-email\", \"itb-email-fail\"],\n\t\t\tisMultiple: true,\n\t\t\thideDisabled: false,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tlet newValue = [value[0], \"itb-email\"];\n\t\t\t\tthis.itbPicker.setValue(newValue);\n\t\t\t\tthis.model.set('isITBSendEmail', true);\n\t\t\t\tif (value.includes('itb-no-email')) {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfNoEmail', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfNoEmail', false);\n\t\t\t\t}\n\t\t\t\tif (value.includes('itb-email-fail')) {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfEmailFails', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfEmailFails', false);\n\t\t\t\t}\n\t\t\t\tif (value.includes('itb-fax')) {\n\t\t\t\t\tthis.model.set('isITBSendFax', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFax', false);\n\t\t\t\t}\n\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input'\n\t\t\t],\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tcreateDefaultItbMethodArray: function () {\n\t\tthis.defaultArray = [];\n\t\tif (this.model.get('isITBSendEmail') === true) {\n\t\t\tthis.defaultArray.push('itb-email')\n\t\t}\n\t\tif (this.model.get('isITBSendFaxIfNoEmail') === true) {\n\t\t\tthis.defaultArray.push('itb-no-email')\n\t\t}\n\t\tif (this.model.get('isITBSendFaxIfEmailFails') === true) {\n\t\t\tthis.defaultArray.push('itb-email-fail')\n\t\t}\n\t\tif (this.model.get('isITBSendFax') === true) {\n\t\t\tthis.defaultArray.push('itb-fax')\n\t\t}\n\t},\n\tshowUser2Changed: function () {\n\t\tif (this.model.get('isShowProjectUser2')) {\n\t\t\tthis.$('.project-user-2-outer').removeClass('hidden');\n\t\t}\n\t\telse {\n\t\t\tthis.$('.project-user-2-outer').addClass('hidden');\n\t\t}\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t}\n});\n\nPJQ.views.settings.MessageStatuses = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Message-Statuses')\n\t},\n\tevents: {\n\t\t'click .add-message-status': 'addStatusClicked',\n\t\t'click .edit-message-status': 'editStatusClicked',\n\t\t'click .delete-message-status': 'deleteStatus',\n\t\t'click .save-message-status': 'statusSave',\n\t\t'click .cancel-edit-message-status': 'cancelEditStatus',\n\t\t'keydown .input-message-status': 'disableCommasAndPipes'\n\t},\n\tbeforeRender: function () {\n\t\tthis.model = PJQ.app.session.planRoomSettings;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\toptions: this.options,\n\t\t\tcollection: this.collection\n\t\t};\n\t},\n\tafterRender: function () {\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tif (this.model.messageStatuses) {\n\t\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\t\tel: this.$(\".message-status-table\"),\n\t\t\t\tisHideSearch: true,\n\t\t\t\tdata: this.model.messageStatuses.models,\n\t\t\t\trowId: \"cid\",\n\t\t\t\torder: [0, 'asc'],\n\t\t\t\ttargets: 'no-sort',\n\t\t\t\tbSort: false,\n\t\t\t\tlanguage: {\n\t\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Message Status'\n\t\t\t\t},\n\t\t\t\tcolumns: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"visible\": false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && row.get('name') !== \"YES\" && row.get('name') !== \"NO\") {\n\t\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treturn row.get('name');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\t\"width\": \"25%\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\t\"title\": \"RSVP\",\n\t\t\t\t\t\t\"width\": \"25%\",\n\t\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\t\tlet content = row.get('canParticipantSet') === true ? \"Yes\" : \"No\";\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && this.messageStatusContext.get('sortOrder') === row.get('sortOrder')) {\n\t\t\t\t\t\t\t\tcontent = '
\\n' +\n\t\t\t\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t\t\t\t'
\\n' +\n\t\t\t\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t\t\t\t'
\\n' +\n\t\t\t\t\t\t\t\t\t'
'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('canParticipantSet') === true) {\n\t\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', true)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', false)\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && this.messageStatusContext.get('sortOrder') === row.get('sortOrder')) {\n\t\t\t\t\t\t\t\tcontent = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (row.get('name') !== \"YES\" && row.get('name') !== \"NO\") {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.messageStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t\"width\": \"80px\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t})\n\t\t}\n\t},\n\tdisableCommasAndPipes: function (e) {\n\t\tif (e.keyCode === 188 || e.keyCode === 220) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\taddStatusClicked: function () {\n\t\tthis.messageStatusContext = new PJQ.models.settings.PlanRoomSettings({\n\t\t\tname: \"\",\n\t\t\tcanParticipantSet: false,\n\t\t\tsortOrder: this.model.get('messageStatuses').length + 1\n\t\t});\n\t\tthis.dataTable.addRow(this.messageStatusContext);\n\t\tthis.dataTable.refresh()\n\t},\n\teditStatusClicked: function (e) {\n\t\tthis.messageStatusContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n\t\tthis.dataTable.refresh();\n\t},\n\tdeleteStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete Status\",\n\t\t\tbody: \"Are you sure you want to delete this status?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.model.set('messageStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\t\tthis.model.patch(null, {\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.messageStatusContext = null;\n\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this)\n\t\t});\n\t},\n\tmessageStatusConstructor: function ({name, canParticipantSet, sortOrder}) {\n\t\tthis.name = name;\n\t\tthis.canParticipantSet = canParticipantSet;\n\t\tthis.sortOrder = sortOrder\n\t},\n\tstatusSave: function (e) {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tstatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-message-status'),\n\t\t\tisNameValid = _.size($name.val().trim()) > 0;\n\n\t\tif ($name.val().indexOf(',') > -1 || $name.val().indexOf('|') > -1) {\n\t\t\tisNameValid = false;\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: \"Password cannot contain commas or pipe characters.\"\n\t\t\t});\n\t\t}\n\t\tif (isNameValid) {\n\t\t\tstatus.set('name', $name.val().trim())\n\t\t}\n\t\tstatus.set('canParticipantSet', this.$('.input-participant-can-set').prop('checked'));\n\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\t\tif (isNameValid) {\n\t\t\tthis.model.set('messageStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.messageStatusContext = null;\n\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tcancelEditStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tif (this.messageStatusContext.name.length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.messageStatusContext = null;\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n// Project status of a Project Contact\nPJQ.views.settings.ProjectStatuses = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Project-Statuses')\n\t},\n\tevents: {\n\t\t'click .add-project-status': 'addStatusClicked',\n\t\t'click .edit-project-status': 'editStatusClicked',\n\t\t'click .delete-project-status': 'deleteStatus',\n\t\t'click .save-project-status': 'statusSave',\n\t\t'click .cancel-edit-project-status': 'cancelEditStatus',\n\t\t'colorpickerChange': 'setBGColor',\n\t\t'keyup .colorpicker-input-box': 'setBGColor',\n\t\t'keydown .input-project-status': 'disableCommasAndPipes',\n\t\t'keydown .input-activity-rank': 'disableNumbers'\n\t},\n\tbeforeRender: function () {\n\t\tthis.model = PJQ.app.session.planRoomSettings;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\toptions: this.options,\n\t\t\tcollection: this.collection\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tif (this.model.projectStatuses == null) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tlet self = this;\n\t\tthis.filteredData = new PJQ.collections.settings.ProjectStatuses(_.filter(this.model.projectStatuses.models, function (status) {\n\t\t\tlet sNameLower = status.get('name').toLowerCase();\n\t\t\treturn sNameLower !== \"pending\" && sNameLower !== \"unsent\";\n\t\t}));\n\t\t// this.listenTo(this.model.projectStatuses, 'change', _.bind(this.startReorder, this));\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-status-table\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: this.filteredData.models,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\ttargets: 'no-sort',\n\t\t\tpageLength: 50,\n\t\t\tbSort: false,\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project Status'\n\t\t\t},\n\t\t\tsortableOptions: {\n\t\t\t\tdata: this.filteredData,\n\t\t\t\tstop: _.bind(function (a, b) {\n\t\t\t\t\tself.$('tr').filter('.odd, .even').each(function (index, html) {\n\t\t\t\t\t\tlet row = $(html).context.id,\n\t\t\t\t\t\t\trowData = self.filteredData.get(row);\n\t\t\t\t\t\trowData.set('sortOrder', index + 1);\n\t\t\t\t\t});\n\t\t\t\t\tthis.startReorder();\n\t\t\t\t}, this)\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (row.get('sortOrder') > 2) {\n\t\t\t\t\t\t\tcontent = '
'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn content\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\" && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treturn '' + row.get('name') + '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\"width\": \"200px\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"RSVP\",\n\t\t\t\t\t\"width\": \"50px\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = row.get('canParticipantSet') === true ? \"Yes\" : \"No\";\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\" && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\tcontent = '
\\n' +\n\t\t\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t\t\t'
\\n' +\n\t\t\t\t\t\t\t\t' \\n' +\n\t\t\t\t\t\t\t\t'
\\n' +\n\t\t\t\t\t\t\t\t'
'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('canParticipantSet') === true) {\n\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', false)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": \"200px\",\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\treturn '
'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\") {\n\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treturn '' + row.get('activityRank') + '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Activity Score\",\n\t\t\t\t\t\"width\": \"100px\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name')) {\n\t\t\t\t\t\t\tcontent = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (row.get('name') === \"UNSENT\" || row.get('name') === \"PENDING\" || row.get('name') === \"VIEWED\" || row.get('name') === \"DOWNLOADED\" || row.get('sortOrder') === 1 || row.get('sortOrder') === 2) {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.projectStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.projectStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t}, this),\n\t\t\t\t\t\"width\": \"80px\",\n\t\t\t\t}\n\t\t\t],\n\t\t});\n\t},\n\tdisableCommasAndPipes: function (e) {\n\t\tif (e.keyCode === 188 || e.keyCode === 220) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tdisableNumbers: function (e) {\n\t\tPJQ.helpers.inputHelpers.numbersOnly(e, true, true);\n\t},\n\taddStatusClicked: function () {\n\t\tthis.projectStatusContext = new PJQ.models.settings.PlanRoomSettings({\n\t\t\tname: \"\",\n\t\t\tbackgroundColor: \"#000000\",\n\t\t\tforegroundColor: \"#000000\",\n\t\t\tcanParticipantSet: false,\n\t\t\tactivityRank: 0,\n\t\t\tsortOrder: this.model.get('projectStatuses').length + 1,\n\t\t});\n\t\tthis.dataTable.addRow(this.projectStatusContext);\n\t\tthis.editStatus();\n\t},\n\teditStatusClicked: function (e) {\n\t\tthis.projectStatusContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n\t\tthis.editStatus();\n\t},\n\teditStatus: function (e) {\n\t\tthis.dataTable.refresh();\n\t\tthis.colorPicker = new PJQ.colors.ColorPicker(this.$('.color-picker'), {\n\t\t\tformat: 'hex',\n\t\t\tcolor: this.projectStatusContext.get('backgroundColor'),\n\t\t\tautoInputFallback: false\n\t\t});\n\t\tthis.$('.colorpicker-input-box').val(this.projectStatusContext.get('backgroundColor'));\n\t\tthis.$('.input-project-status').css('color', this.projectStatusContext.get('backgroundColor'));\n\t},\n\tsetBGColor: function (e) {\n\t\tif (e.type === 'keyup') {\n\t\t\tif (e.keyCode === 13) {\n\t\t\t\t$(e.currentTarget).blur()\n\t\t\t}\n\t\t\tlet color = this.$('.colorpicker-input-box').val();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.colorPicker.setColor(color);\n\t\t\t\tthis.projectStatusContext.set('backgroundColor', color.toUpperCase());\n\t\t\t\tthis.$('.input-project-status').css('color', color.toUpperCase());\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tlet color = this.colorPicker.getColor();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.$('.colorpicker-input-box').val(color);\n\t\t\t\tthis.projectStatusContext.set('backgroundColor', color);\n\t\t\t\tthis.$('.input-project-status').css('color', color);\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\t},\n\tstartReorder: function () {\n\t\tlet newArray = [];\n\t\t_.each(this.dataTable.dataTable.rows().data().toArray(), function (status) {\n\t\t\tnewArray[status.attributes.sortOrder - 1] = status;\n\t\t});\n\t\tthis.saveReorder(newArray)\n\t},\n\tsaveReorder: function (array) {\n\t\tlet isNull = false;\n\t\tif (array.length !== this.dataTable.dataTable.rows().data().toArray().length) {\n\t\t\tisNull = true;\n\t\t}\n\n\t\t_.each(array, function (node, index) {\n\t\t\tif (node !== undefined) {\n\t\t\t\t// Don't allow Accept or Decline to be reordered\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tif (node.get('name') !== 'ACCEPT') {\n\t\t\t\t\t\tisNull = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (index === 1) {\n\t\t\t\t\tif (node.get('name') !== 'DECLINE') {\n\t\t\t\t\t\tisNull = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tisNull = true\n\t\t\t}\n\t\t});\n\t\tif (!isNull && this.projectStatusContext == null) {\n\t\t\tthis.loader = new PJQ.Loader(this.$('.project-status-table'));\n\t\t\tthis.model.set('projectStatuses', array);\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tif (this.loader) {\n\t\t\t\t\t\tthis.loader.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis.dataTable.render()\n\t\t}\n\t},\n\tdeleteStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tstatus = row.data();\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete Status\",\n\t\t\tbody: \"Are you sure you want to delete this status?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.model.set('projectStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\t\tthis.model.patch(null, {\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this)\n\t\t});\n\t},\n\tprojectStatusConstructor: function ({name, canParticipantSet, color, sortOrder}) {\n\t\tthis.name = name;\n\t\tthis.color = color;\n\t\tthis.canParticipantSet = canParticipantSet;\n\t\tthis.sortOrder = sortOrder\n\t},\n\tstatusSave: function (e) {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tstatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-project-status'),\n\t\t\tname = $row.find('.input-project-status').length > 0 ? $row.find('.input-project-status').val() : status.get('name'),\n\t\t\t$rank = $row.find('.input-activity-rank'),\n\t\t\tisNameValid = _.size(name.trim()) > 0,\n\t\t\tisRankValid = _.size($rank.val().trim()) > 0 && !isNaN(parseInt($rank.val().trim()));\n\n\t\tlet color = '#555',\n\t\t\tisColorValid;\n\t\tif (name.toLowerCase() !== \"downloaded\" && name.toLowerCase() !== \"viewed\") {\n\t\t\tcolor = this.$('.colorpicker-input-box').val();\n\t\t\tisColorValid = color.split('')[0] === '#' && color.trim().length === 7;\n\t\t}\n\t\telse {\n\t\t\tisColorValid = true;\n\t\t}\n\n\t\tif (name.indexOf(',') > -1 || name.indexOf('|') > -1) {\n\t\t\tisNameValid = false;\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: \"Name cannot contain commas or pipe characters.\"\n\t\t\t});\n\t\t}\n\t\tif (isNameValid) {\n\t\t\tstatus.set('name', name);\n\t\t}\n\t\tif (isRankValid) {\n\t\t\tstatus.set('activityRank', parseInt($rank.val().trim()));\n\t\t}\n\t\tstatus.set('canParticipantSet', (this.$('.input-participant-can-set').prop('checked')));\n\t\tstatus.set('foregroundColor', PJQ.helpers.colorHelpers.idealLinkColorForBackground(color));\n\n\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), isColorValid, {\n\t\t\terrorText: isColorValid ? \"\" : \"Hex must begin with a # followed by 6 letters and/or numbers!\"\n\t\t});\n\t\tPJQ.helpers.inputHelpers.setInputError($rank, isRankValid, {\n\t\t\terrorText: isRankValid ? \"\" : \"Rank can not be empty and must be a number!\"\n\t\t});\n\n\t\tif (isNameValid && isColorValid && isRankValid) {\n\t\t\tthis.model.set('projectStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\t\tthis.render()\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tcancelEditStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tif (this.projectStatusContext.get('name').length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.projectStatusContext = null;\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n// ProjectStatusId of a Project\nPJQ.views.settings.ProjectStatusList = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Project-Status-List')\n\t},\n\tevents: {\n\t\t'click .add-project-status': 'addClicked',\n\t\t'click .btn-edit-project-status': 'editProjectStatusClicked',\n\t\t'click .btn-delete-project-status': 'deleteProjectStatusClicked',\n\t\t'click .btn-save-project-status': 'projectStatusSave',\n\t\t'click .btn-cancel-edit-project-status': 'cancelEditProjectStatus'\n\t},\n\tbeforeFirstRender: function () {\n\n\t},\n\tafterRender: function () {\n\t\tthis.collection = PJQ.app.session.projectStatuses;\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-status-list-table\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: PJQ.app.session.projectStatuses.models,\n\t\t\trowId: \"cid\",\n\t\t\ttargets: 'no-sort',\n\t\t\torder: [2, 'asc'],\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project Status'\n\t\t\t},\n\t\t\tbSort: false,\n\t\t\tsortableOptions: {\n\t\t\t\tdata: PJQ.app.session.projectStatuses,\n\t\t\t},\n\t\t\trowCallback: function (row, data, index) {\n\t\t\t\t$(row).find('td:eq(0)').css('color', '#'+data.get('color'));\n\t\t\t},\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tisShown: _.bind(function (row) {\n\t\t\t\t\t\t\treturn row.data().get('masterUserId') !== -1;\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteProjectStatus(row);\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn row.get('name');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": this.projectStatusContext != null ? \"200px\" : '0px',\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\tcontent = '
'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '
' + content + '
'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"visible\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": '120px',\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet buttons = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\tbuttons = '';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuttons += '';\n\t\t\t\t\t\t\tif (row.get('masterUserId') !== -1) {\n\t\t\t\t\t\t\t\tbuttons += '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '
' + buttons + '
'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t},\n\teditProjectStatusClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tprojectStatus = row.data(),\n\t\t\tfnEdit = _.bind(function (eps) {\n\t\t\tthis.projectStatusContext = eps;\n\t\t\tthis.defaultColor = '#' + eps.get('color');\n\t\t\tthis.dataTable.refresh();\n\t\t\tnew PJQ.colors.ColorPicker(this.$('.project-status-color-input'), {\n\t\t\t\tformat: 'hex',\n\t\t\t\tcolor: '#' + eps.get('color'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.projectStatusContext.set('color', value.substring(1));\n\t\t\t\t\tthis.$('.input-project-status-name').css('color', value);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t\tthis.$('.input-project-status-name').css('color', '#'+eps.get('color'));\n\t\t}, this);\n\t\tif (projectStatus.get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(projectStatus, function (projectStatuses, newProjectStatus) {\n\t\t\t\tfnEdit(newProjectStatus);\n\t\t\t});\n\t\t} else {\n\t\t\tfnEdit(projectStatus);\n\t\t}\n\n\t},\n\tchangeDefaultAlert(returnCopy, callback) {\n\t\tthis.dataTable.refresh();\n\t\tnew PJQ.views.modals.YesNo({\n\t\t\theader: \"Change Project Statuses?\",\n\t\t\tbody: 'You are currently using the system default project statuses. To edit a project status, we will need to create custom project statuses for your company. This may take a minute, would you like to continue?',\n\t\t\tonYes: _.bind(function () {\n\t\t\t\tthis.copyProjectStatuses(returnCopy, _.bind(function (projectStatuses, newProjectStatus) {\n\t\t\t\t\tthis.dataTable.resetData(PJQ.app.session.projectStatuses.models);\n\t\t\t\t\tcallback(projectStatuses, newProjectStatus);\n\t\t\t\t}, this));\n\t\t\t}, this)\n\t\t});\n\t},\n\tcopyProjectStatuses: function (returnCopy, callback) {\n\t\tthis.collection.copy(_.bind(function () {\n\t\t\tlet newPs = null;\n\t\t\tif (returnCopy != null) {\n\t\t\t\tlet returnName = returnCopy.get('name');\n\t\t\t\tnewPs = _.find(this.collection.models, function (u) {\n\t\t\t\t\treturn u.get('name') === returnName;\n\t\t\t\t});\n\t\t\t}\n\t\t\tcallback(this.collection.models, newPs);\n\t\t}, this));\n\t},\n\taddClicked: function () {\n\t\tlet fnAdd = _.bind(function () {\n\t\t\tlet newProjectStatus = new PJQ.models.projectStatuses.ProjectStatus({\n\t\t\t\tname: \"\",\n\t\t\t\tcolor: '000000',\n\t\t\t\tsortOrder: this.collection.length + 1,\n\t\t\t\tisDefault: this.collection.length === 0\n\t\t\t});\n\t\t\tthis.collection.add(newProjectStatus);\n\t\t\tthis.dataTable.addRow(newProjectStatus);\n\t\t\tthis.projectStatusContext = newProjectStatus;\n\t\t\tthis.defaultColor = this.projectStatusContext.get('color');\n\t\t\tthis.projectStatusColor = this.projectStatusContext.attributes.color;\n\t\t\tthis.dataTable.refresh();\n\t\t\tnew PJQ.colors.ColorPicker(this.$('.project-status-color-input'), {\n\t\t\t\tformat: 'hex',\n\t\t\t\tcolor: '#' + this.projectStatusColor,\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.projectStatusContext.set('color', value.substring(1));\n\t\t\t\t\tthis.$('.input-project-status-name').css('color', value);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t\tthis.$('.input-user-type-name').css('color', this.projectStatusContext.get('color'));\n\t\t}, this);\n\t\tif (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(null, function () {\n\t\t\t\tfnAdd();\n\t\t\t});\n\t\t} else {\n\t\t\tfnAdd();\n\t\t}\n\t},\n\tprojectStatusSave: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tprojectStatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-project-status-name');\n\n\t\tlet isNameValid = _.size($name.val()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n\t\tif (!isNameValid)\n\t\t\treturn;\n``\n\t\tprojectStatus.set('name', $name.val());\n\t\tprojectStatus.set('sortOrder', projectStatus.attributes.sortOrder);\n\n\t\tprojectStatus.save(null, {\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteProjectStatusClicked(e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\n\t\tthis.deleteProjectStatus(row);\n\t},\n\tdeleteProjectStatus: function(row) {\n\t\tlet projectStatus = row.data(),\n\t\t\tfnDelete = _.bind(function (dps) {\n\t\t\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\t\t\theader: \"Delete Project Status\",\n\t\t\t\t\tbody: \"Are you sure you want to delete this Project Status? Any Project that currently has this Status will be set to the Default Status.\",\n\t\t\t\t\tonDelete: _.bind(function () {\n\t\t\t\t\t\tprojectStatus.destroy({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.collection.remove(dps);\n\t\t\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t});\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this);\n\t\tif (projectStatus.get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(projectStatus, function (projectStatuses, newProjectStatus) {\n\t\t\t\tfnDelete(newProjectStatus);\n\t\t\t});\n\t\t} else {\n\t\t\tfnDelete(projectStatus);\n\t\t}\n\n\t},\n\tcancelEditProjectStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tstatus = row.data();\n\t\tstatus.set('color', this.defaultColor);\n\t\tthis.projectStatusContext = null;\n\t\tthis.projectStatusColor = null;\n\t\tif (status.get('name').length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n\nPJQ.views.settings.ProjectNDAs = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'project-ndas')\n\t},\n\tevents: {\n\t\t'click .btn-add-nda': 'addNDAClicked',\n\t\t'click .btn-edit-nda': 'editNDAClicked',\n\t\t'click .btn-delete-nda': 'deleteNDAClicked'\n\t},\n\tbeforeFirstRender: function () {\n\t\tPJQ.app.session.fetchNDAs(_.bind(function (ndas) {\n\t\t\tthis.collection = ndas;\n\t\t\tthis.render();\n\t\t}, this));\n\t},\n\tafterRender: function () {\n\t\tif (this.collection == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-ndas\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: this.collection.models,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project NDA'\n\t\t\t},\n\t\t\tonRowDoubleClick: _.bind(function (row) {\n\t\t\t\tthis.editNDA(row.data());\n\t\t\t}, this),\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edit',\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.editNDA(row.data());\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteNDA(row);\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.isDefault\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": \"40px\",\n\t\t\t\t\t\"render\": _.bind(function (data) {\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.name\",\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t// \"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t//\n\t\t\t\t\t// }, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": \"80px\",\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\treturn '
';\n\t\t\t\t\t}, this)\n\t\t\t\t}\n\t\t\t],\n\t\t});\n\t},\n\taddNDAClicked: function () {\n\t\tlet newNda = new PJQ.models.projects.ProjectNDA();\n\t\tif (_.size(this.collection.models) === 0) {\n\t\t\tnewNda.set('isDefault', true);\n\t\t}\n\t\tthis.editNDA(newNda);\n\t},\n\teditNDAClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tnda = row.data();\n\t\tthis.editNDA(nda);\n\t},\n\teditNDA: function (nda) {\n\t\tlet isNew = nda.isNew();\n\t\tnew PJQ.views.projects.EditProjectNDAModal({\n\t\t\tmodel: nda,\n\t\t\tonSave: _.bind(function () {\n\t\t\t\tif (isNew) {\n\t\t\t\t\tthis.collection.add(nda);\n\t\t\t\t\tthis.dataTable.addRow(nda);\n\t\t\t\t}\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this),\n\t\t\tonDelete: _.bind(function (nda) {\n\t\t\t\tif (nda.id > 0) {\n\t\t\t\t\tlet row = this.dataTable.getRow(nda.cid);\n\t\t\t\t\tif (row != null) {\n\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteNDAClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tthis.deleteNDA(row);\n\t},\n\tdeleteNDA: function (row) {\n\t\tlet nda = row.data();\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete NDA\",\n\t\t\tbody: \"Are you sure you want to delete this project NDA?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.collection.remove(nda);\n\t\t\t\tnda.destroy();\n\t\t\t}, this)\n\t\t});\n\t}\n});\n","//Model\nPJQ.models.settings.Region = PJQ.models.BaseModel.extend({\n idAttribute: 'regionId',\n notifyName: 'Region',\n endpoint: function () {\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'regions',\n value: this.id\n }\n ])\n }\n});\n//Collection\nPJQ.collections.settings.Regions = PJQ.collections.BaseCollection.extend({\n model: PJQ.models.settings.Region,\n endpoint: function () {\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'regions'\n }\n ])\n }\n});\n\nPJQ.views.settings.RegionSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Regions')\n },\n events: {\n 'click .add-region': 'addClicked',\n 'click .btn-edit-region': 'editRegion',\n 'click .btn-delete-region': 'deleteRegion',\n 'click .btn-save-region': 'regionSave',\n 'click .btn-cancel-edit-region': 'cancelEditRegion'\n },\n beforeFirstRender() {\n if (this.collection == null) {\n this.collection = new PJQ.collections.settings.Regions();\n }\n if (!this.options.isFetched) {\n this.collection.fetch({\n success: _.bind(function () {\n this.options.isFetched = true;\n this.render();\n\n if (typeof this.options.onFetch === 'function') {\n this.options.onFetch();\n }\n }, this)\n });\n }\n else {\n this.render();\n }\n },\n beforeRender: function(){\n this.renderData = {\n options: this.options,\n collection: this.collection\n };\n },\n afterRender: function () {\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".region-table\"),\n isHideSearch: true,\n data: this.collection.models,\n rowId: \"cid\",\n order: [0, 'asc'],\n language: {\n zeroRecords: 'Click \"Add\" to create a new Region'\n },\n columns: [\n {\n \"data\": {\n \"display\": _.bind(function (row) {\n if (this.regionContext != null && this.regionContext.id === row.id) {\n return '';\n } else {\n return row.get('name');\n }\n }, this)\n },\n \"title\": \"Region\"\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"80px\",\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (this.regionContext != null && this.regionContext.id === row.id) {\n content = '';\n } else {\n let disabledAttr = this.regionContext != null ? ' disabled ' : '';\n content = '';\n }\n return '
' + content + '
'\n }, this),\n \"width\": \"160px\"\n }\n ],\n })\n },\n addClicked: function () {\n let newRegion = new PJQ.models.settings.Region({\n name: \"\",\n regionDescription: \"\",\n sortOrder: this.collection.length + 1,\n });\n this.dataTable.addRow(newRegion);\n this.regionContext = newRegion;\n this.dataTable.refresh()\n },\n editRegion: function (e) {\n this.regionContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n this.dataTable.refresh();\n },\n deleteRegion: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.dataTable.getRow($row),\n region = row.data();\n new PJQ.views.modals.DeleteCancel({\n header: \"Delete Region\",\n body: \"Are you sure you want to delete this region?\",\n onDelete: _.bind(function () {\n region.destroy({\n success: _.bind(function () {\n // this.collection.remove(region);\n this.dataTable.removeRow(row);\n }, this)\n });\n }, this)\n });\n },\n regionSave: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n region = this.dataTable.getRow($row).data(),\n $name = $row.find('.input-region-name');\n region.set('name', $name.val());\n\n let isNameValid = _.size(region.get('name')) > 0;\n PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n if (isNameValid) {\n region.save(null, {\n success: _.bind(function () {\n this.regionContext = null;\n this.dataTable.refresh();\n }, this)\n });\n }\n },\n cancelEditRegion: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.dataTable.getRow($row);\n if (this.regionContext.get('name').length === 0){\n this.dataTable.removeRow(row);\n } this.regionContext = null;\n this.dataTable.refresh();\n },\n});\n","PJQ.models.settings.PaymentInfo = PJQ.models.BaseModel.extend({\n\tidAttribute: \"paymentInfoId\",\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'ordering'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'paymentinfo'\n\t\t\t}\n\t\t])\n\t},\n\tafterInit: function () {\n\t\tthis.set({\n\t\t\tcompanyName: '',\n\t\t\tcardholderName: '',\n\t\t\taddress1: '',\n\t\t\taddress2: '',\n\t\t\tcity: '',\n\t\t\tstate: '',\n\t\t\tzip: '',\n\t\t\tcountry: '',\n\t\t\tphone: '',\n\t\t\tphoneExt: '',\n\t\t\temail: '',\n\t\t\tcardNumber: '',\n\t\t\texpMonth: '',\n\t\t\texpYear: ''\n\t\t});\n\t},\n});\n\nPJQ.models.settings.PlanRoomSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'planroom'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'planroom'\n\t\t\t}\n\t\t])\n\t},\n\tparse: function (model) {\n\t\tif (!model)\n\t\t\treturn model;\n\t\tthis.projectStatuses = new PJQ.collections.settings.ProjectStatuses(model.projectStatuses);\n\t\tthis.messageStatuses = new PJQ.collections.settings.MessageStatuses(model.messageStatuses);\n\t\treturn model\n\t}\n});\n\nPJQ.models.settings.OrderingSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'ordering'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'ordering'\n\t\t\t}\n\t\t])\n\t}\n});\n\nPJQ.models.settings.AddressBookSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'address-book'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'addressbook'\n\t\t\t}\n\t\t])\n\t}\n});\n\nPJQ.collections.settings.ProjectStatuses = PJQ.collections.BaseCollection.extend({\n\tmodel: PJQ.models.settings.PlanRoomSettings\n});\n\nPJQ.collections.settings.MessageStatuses = PJQ.collections.BaseCollection.extend({\n\tmodel: PJQ.models.settings.PlanRoomSettings\n});\n","PJQ.views.settings.SignatureEditInput = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'signature-edit-input'),\n model: null,\n signature: null\n },\n events: {\n 'click .btn-manage-signature': 'manageSignature'\n },\n beforeFirstRender: function () {\n this.signature = this.options.signature;\n },\n renderData: function() {\n return {\n signature: this.signature\n }\n },\n manageSignature: function() {\n new PJQ.views.signatures.SignatureSubmitModal({\n headerSubText: this.options.headerSubText,\n fetchSignature: false,\n signature: this.signature,\n onSubmit: _.bind(function (signature, cb) {\n if(typeof this.options.onSave === 'function'){\n this.options.onSave(signature);\n }\n this.signature = signature;\n this.render();\n cb();\n }, this)\n });\n }\n});","PJQ.constants.sso = {\n providerNames: {\n AZURE_AD: \"Azure Active Directory\",\n OKTA: \"Okta\",\n ONELOGIN: \"OneLogin\",\n OTHER: \"Other\"\n },\n providers: {\n AZURE_AD: \"AZURE_AD\",\n OKTA: \"OKTA\",\n ONELOGIN: \"ONELOGIN\",\n OTHER: \"OTHER\"\n }\n};\n\nPJQ.models.sso = {};\n\nPJQ.models.sso.Provider = PJQ.models.BaseModel.extend({\n idAttribute: 'id',\n endpoint: function () {\n let params = [];\n if (this.get('disableProvisioning')) {\n params.push({\n parameter: 'disableProvisioning',\n value: true\n });\n }\n\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'settings'\n },\n {\n endpoint: 'saml',\n value: this.id\n }\n ], params)\n },\n getProviderName: function () {\n return PJQ.constants.sso.providerNames[this.get('provider')];\n },\n refreshProvisioningToken: function (callback) {\n if (this.id > 0) {\n new PJQ.ajax.Request({\n endpoint: this.endpoint() + \"/refreshprovisioningtoken\",\n type: 'POST',\n data: this.toJSON()\n }).post().done(_.bind(function (response) {\n if (typeof callback === 'function') {\n let token = null;\n if (_.size(response.provisioningToken) > 0) {\n token = response.provisioningToken;\n this.set('provisioningToken', token);\n }\n callback(token);\n }\n }, this)).fail(function () {\n if (typeof callback === 'function') {\n callback(null);\n }\n });\n } else {\n let token = PJQ.helpers.guid();\n this.set('provisioningToken', token);\n callback(token);\n }\n },\n afterSave: function () {\n this.set('disableProvisioning', null);\n }\n});\n\n//Collections\nPJQ.collections.sso = {};\n\nPJQ.collections.sso.Providers = PJQ.collections.BaseCollection.extend({\n model: PJQ.models.sso.Provider,\n endpoint: function () {\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'settings'\n },\n {\n endpoint: 'saml'\n }\n ]);\n }\n});\n\nPJQ.views.settings.SSOSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'sso-settings')\n },\n events: {\n 'click .btn-add-provider': 'addClicked',\n 'click .btn-edit-provider': 'editClicked',\n 'click .btn-delete-provider': 'deleteClicked'\n },\n beforeRender: function () {\n },\n renderData: function () {\n return {\n enablePermissions: this.options.enablePermissions\n };\n },\n afterRender: function () {\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".sso-table\"),\n data: this.collection.models,\n rowId: \"id\",\n order: [0, 'asc'],\n paging: false,\n language: {\n zeroRecords: \"You haven't added any SSO providers yet\"\n },\n onRowDoubleClick: _.bind(function (row) {\n this.editProvider(row.data());\n }, this),\n contextMenuOptions: {\n actions: [\n {\n name: 'Edit',\n onClick: _.bind(function (row) {\n this.editProvider(row.data());\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n onClick: _.bind(function (row) {\n this.deleteProvider(row);\n }, this)\n }\n ]\n },\n columns: [\n {\n \"title\": \"Default\",\n \"width\": \"100px\",\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (row.get('isDefault')) {\n content = ''\n }\n return content;\n })\n },\n {\n 'title': \"Provider\",\n \"data\": \"attributes.provider\",\n \"render\": _.bind(function (data, type, row) {\n return row.getProviderName();\n })\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": this.options.enablePermissions ? '160px' : '120px',\n \"render\": _.bind(function (data, type, row) {\n let buttons = '';\n buttons += '';\n buttons += '';\n return '
' + buttons + '
';\n }, this)\n }\n ]\n });\n },\n addClicked: function () {\n this.editProvider(new PJQ.models.sso.Provider({\n isDefault: _.size(this.collection.models) === 0\n }));\n },\n editClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n note = row.data();\n this.editProvider(note);\n },\n deleteClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr'));\n this.deleteProvider(row);\n },\n editProvider: function (provider) {\n let isNew = provider.isNew();\n new PJQ.views.settings.EditSSOProviderModal({\n model: provider,\n onSave: _.bind(function () {\n if (isNew) {\n this.collection.add(provider);\n }\n this.render();\n }, this),\n onDelete: _.bind(function (provider) {\n if (!isNew) {\n this.collection.remove(provider);\n this.render();\n }\n }, this)\n });\n },\n deleteProvider: function (row) {\n let provider = row.data();\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete this provider?\",\n onDelete: _.bind(function () {\n this.collection.remove(provider);\n provider.destroy();\n this.dataTable.removeRow(row);\n }, this)\n });\n }\n});\n\nPJQ.views.settings.EditSSOProviderModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-sso'),\n minWidth: 600,\n onSave: null,\n isUpdatingCertificate: false\n },\n defaultEvents: {\n 'change .cb-enable-provisioning': 'provisioningChanged',\n 'click .btn-refresh-provisioning-token': 'refreshProvisioningToken',\n 'click .btn-update-certificate': 'updateCertificate',\n 'click .btn-save': 'save',\n 'click .btn-cancel': 'cancel',\n 'click .btn-delete': 'delete'\n },\n beforeModalCreated: function () {\n if (this.model == null) {\n this.model = new PJQ.models.sso.Provider({\n isDefault: false,\n provider: PJQ.constants.sso.providers.AZURE_AD\n });\n }\n\n if (_.size(this.model.get('provider')) === 0) {\n this.model.set('provider', PJQ.constants.sso.providers.AZURE_AD);\n }\n },\n renderData: function () {\n return {\n model: this.model,\n options: this.options\n };\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input',\n 'textarea'\n ]\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-provider'),\n hideDisabled: true,\n defaultValue: this.model.get('provider'),\n onChange: _.bind(function (value) {\n this.model.set('provider', value);\n this.render();\n }, this)\n });\n },\n provisioningChanged: function (e) {\n let provisioningEnabled = $(e.currentTarget).prop('checked');\n this.model.set('disableProvisioning', !provisioningEnabled);\n if (provisioningEnabled && _.size(this.model.get('provisioningToken')) === 0) {\n this.model.refreshProvisioningToken(_.bind(function () {\n this.render();\n }, this));\n } else {\n this.render();\n }\n },\n refreshProvisioningToken: function () {\n new PJQ.views.modals.YesNo({\n header: \"Confirm Authentication Token Refresh\",\n body: 'Are you sure you want to generate a new authentication token? This action cannot be reversed.',\n onYes: _.bind(function () {\n new PJQ.Loader(this.$('.provisioning-token-outer'));\n this.model.refreshProvisioningToken(_.bind(function () {\n PJQ.notifications.notify.successNotify({\n message: 'Provisioning token successfully refreshed'\n });\n this.render();\n }, this));\n }, this)\n });\n },\n updateCertificate: function () {\n this.options.isUpdatingCertificate = true;\n this.render();\n },\n validate: function(){\n let isValid = true;\n\n let isSignOnUrlValid =_.size(this.model.get('issuer')) > 0;\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-sign-on-url'), isSignOnUrlValid);\n isValid = isValid && isSignOnUrlValid;\n\n let isIssuerValid =_.size(this.model.get('issuer')) > 0;\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-issuer'), isIssuerValid);\n isValid = isValid && isIssuerValid;\n\n if(this.options.isUpdatingCertificate || this.model.isNew()){\n let isCertificateValid =_.size(this.model.get('certificate')) > 0;\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-certificate'), isCertificateValid);\n isValid = isValid && isCertificateValid;\n }\n\n if(!isValid) {\n if (this.errorAlert != null) {\n this.errorAlert.destroy();\n }\n this.errorAlert = new PJQ.Alert(this.$('.error-container'), {\n type: 'danger',\n text: 'Required fields missing data'\n });\n }\n\n return isValid;\n },\n save: function () {\n if(!this.validate()){\n return;\n }\n\n this.model.save(null, {\n success: _.bind(function () {\n PJQ.notifications.notify.successNotify({\n message: 'SSO provider successfully created'\n });\n this.removeModal();\n if (typeof this.options.onSave === 'function') {\n this.options.onSave(this.model);\n }\n }, this)\n })\n },\n cancel: function () {\n this.model.restore();\n this.removeModal();\n },\n delete: function () {\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete this provider?\",\n onDelete: _.bind(function () {\n this.model.destroy();\n this.removeModal();\n if (typeof this.options.onDelete === 'function') {\n this.options.onDelete(this.model);\n }\n }, this)\n });\n }\n});","PJQ.views.settings.TermsList = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Terms')\n },\n events: {\n 'click .edit-terms': 'editTermsClicked',\n 'click .delete-terms': 'deleteTermsClicked',\n 'click .add-terms': 'addTermsClicked'\n },\n beforeFirstRender: function () {\n this.context = this.options.context.toLowerCase();\n if(this.context && !this.collection){\n switch(this.context) {\n case 'commitments':\n PJQ.app.session.fetchCommitmentTerms(_.bind(function(termsCollection){\n this.collection = termsCollection;\n this.render();\n }, this));\n break;\n case 'contracts':\n PJQ.app.session.fetchPrimeContractTerms(_.bind(function(termsCollection){\n this.collection = termsCollection;\n this.render();\n }, this));\n }\n }\n },\n renderData: function () {\n return {\n\n };\n },\n afterRender: function () {\n if(this.collection) {\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".terms-table\"),\n data: this.collection.models,\n rowId: \"cid\",\n order: [0, 'asc'],\n language: {\n zeroRecords: 'Click \"Add Terms\" to create new terms'\n },\n pageLength: 50,\n isHideSearch: true,\n bSort: false,\n onRowDoubleClick: _.bind(function (row) {\n this.editTerms(row.data());\n }, this),\n contextMenuOptions: {\n actions: [\n {\n name: 'Edit',\n onClick: _.bind(function (row) {\n this.editTerms(row.data());\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n onClick: _.bind(function (row) {\n this.deleteGroup(row);\n }, this)\n\n }\n ]\n },\n columns: [\n {\n \"title\": \"Name\",\n \"data\": \"attributes.name\",\n \"orderable\": true\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"80px\",\n \"render\": _.bind(function (data, type, row) {\n return '
';\n }, this)\n }\n ]\n });\n }\n },\n addTermsClicked: function(e){\n let newTerm = new this.collection.model({\n name: '',\n type: this.context,\n terms: '',\n isDefault: false\n });\n\n this.editTerms(newTerm);\n },\n editTermsClicked: function(e){\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr'));\n this.editTerms(row.data());\n },\n editTerms: function (terms) {\n new PJQ.views.settings.EditTermsModal({\n model: terms,\n onSave: _.bind(function (model) {\n if (model.hasChanged() || model.isNew()) {\n if (model.isNew()) {\n this.collection.add(model);\n this.dataTable.addRow(model);\n }\n model.save(null, {\n notify: true,\n success: _.bind(function(){\n if(model.get('isDefault')){\n _.each(this.collection.models, function(term){\n if(term !== model){\n term.set('isDefault', false);\n }\n }, this)\n }\n }, this)\n });\n this.dataTable.refresh();\n }\n }, this),\n onDelete: _.bind(function(model){\n if (model.id > 0) {\n let row = this.dataTable.getRow(model.cid);\n this.collection.remove(model);\n model.destroy();\n if (row != null) {\n this.dataTable.removeRow(row);\n }\n }\n }, this)\n })\n },\n deleteTermsClicked: function(e){\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr'));\n this.deleteTerms(row);\n },\n deleteTerms: function(row){\n let terms = row.data();\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete these terms?\",\n onDelete: _.bind(function () {\n this.collection.remove(terms);\n terms.destroy();\n this.dataTable.removeRow(row);\n }, this)\n });\n }\n});\n\nPJQ.views.settings.EditTermsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Terms'),\n maxWidth: 650\n },\n events: {\n 'click .btn-close': 'close',\n 'click .btn-delete': 'delete',\n 'click .btn-save': 'save'\n },\n beforeRender: function () {\n this.renderData = {\n model: this.model\n }\n },\n afterRender: function () {\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ]\n });\n\n this.termsEditor = new PJQ.inputs.HTMLEditor({\n el: this.$('.terms-editor'),\n editorHeight: 150,\n isHideTokens: true,\n defaultValue: this.model.get('terms'),\n onChange: _.bind(function (contents) {\n this.model.set('terms', contents);\n }, this)\n });\n },\n close: function () {\n this.removeModal()\n },\n save: function () {\n if(typeof this.options.onSave === \"function\"){\n this.options.onSave(this.model);\n }\n this.removeModal();\n },\n delete: function(){\n if(typeof this.options.onDelete === 'function'){\n this.options.onDelete(this.model);\n }\n this.removeModal();\n }\n});","PJQ.views.settings.TimeCardSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Time-Card-Settings')\n },\n events: {\n 'change .cb-enable-line-items': 'render',\n 'change .cb-enable-clock-in': 'enableClockInChanged',\n 'click .add-timecard-category': 'addCategory',\n 'click .btn-save-category': 'saveCategory',\n 'click .btn-edit-category': 'editCategory',\n 'click .btn-cancel-edit-category': 'cancelEditCategory',\n 'click .btn-delete-category': 'deleteCategory'\n },\n beforeFirstRender: function () {\n if (typeof this.options.onChange === 'function') {\n this.listenTo(this.model, 'change', function () {\n this.options.onChange(this.model);\n });\n }\n\n this.isFetched = false;\n PJQ.app.session.fetchCostTypes((costTypes) => {\n this.costTypes = costTypes;\n this.isFetched = true;\n this.render();\n })\n },\n renderData: function () {\n return {\n model: this.model,\n isFetched: this.isFetched\n }\n },\n afterRender: function () {\n if (!this.isFetched) {\n return;\n }\n\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input'\n ]\n });\n\n this.renderCategoryTable();\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.week-start'),\n isIntChoices: true,\n defaultValue: this.model.get('weekStart'),\n onChange: _.bind(function (value) {\n this.model.set('weekStart', value);\n }, this)\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('.select-default-cost-type'),\n isIntChoices: true,\n defaultValue: this.model.get('defaultCostTypeId'),\n choices: _.map(this.costTypes.models, function (costType) {\n return {\n id: costType.id,\n name: costType.get('name')\n }\n }),\n onChange: _.bind(function (value) {\n this.model.set('defaultCostTypeId', value);\n }, this)\n });\n },\n renderCategoryTable: function () {\n this.categoryContext = null;\n if (this.model.get('enableLineItems')) {\n return\n }\n\n this.categoryDataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".time-card-categories\"),\n data: this.options.categories.models,\n isHideSearch: true,\n targets: 'no-sort',\n order: [0, 'asc'],\n language: {\n zeroRecords: 'Click \"Add Category\" to create a new Category'\n },\n bSort: false,\n columns: [\n {\n \"data\": {\n \"display\": _.bind(function (row) {\n if (this.categoryContext != null && this.categoryContext.id === row.id) {\n return '';\n } else {\n return row.get('name');\n }\n }, this)\n },\n \"title\": \"Category\",\n \"orderable\": false\n },\n {\n \"data\": \"attributes.sortOrder\",\n \"title\": \"\",\n \"searchable\": false,\n \"visible\": false\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": '70px',\n \"render\": _.bind(function (data, type, row) {\n let buttons = '';\n if (this.categoryContext != null && this.categoryContext.id === row.id) {\n buttons = '';\n } else {\n buttons += '';\n buttons += '';\n }\n return '
' + buttons + '
'\n }, this)\n }\n ],\n });\n },\n enableClockInChanged: function (e) {\n let enabled = $(e.currentTarget).prop('checked');\n if (enabled) {\n this.model.set({\n enableOvertime: false,\n enableDoubletime: false\n });\n }\n this.render();\n },\n addCategory: function () {\n let newCategory = new PJQ.models.timecards.TimeCardCategory({\n name: \"\",\n sortOrder: this.options.categories.length + 1\n });\n this.options.categories.add(newCategory);\n this.categoryContext = newCategory;\n this.categoryDataTable.addRow(newCategory);\n },\n editCategory: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n category = this.categoryDataTable.getRow($row).data();\n this.categoryContext = category;\n this.categoryDataTable.render();\n },\n saveCategory: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n category = this.categoryDataTable.getRow($row).data(),\n $name = $row.find('.input-name');\n category.set('name', $name.val());\n category.set('sortOrder', category.attributes.sortOrder);\n\n let isNameValid = _.size(category.get('name')) > 0;\n PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n if (isNameValid) {\n category.save(null, {\n success: _.bind(function () {\n this.categoryContext = null;\n this.categoryDataTable.render();\n }, this)\n });\n }\n },\n cancelEditCategory: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n category = this.categoryDataTable.getRow($row).data();\n\n new PJQ.views.modals.YesNo({\n header: \"Cancel \" + (category.isNew() ? \"Add\" : \"Edit\"),\n body: \"Do you want to cancel \" + (category.isNew() ? 'adding' : 'editing') + \" this Category?\",\n onYes: _.bind(function () {\n if (category.isNew()) {\n this.options.categories.remove([category]);\n }\n\n this.categoryContext = null;\n this.categoryDataTable.render();\n }, this)\n });\n },\n deleteCategory: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n category = this.categoryDataTable.getRow($row).data();\n\n new PJQ.views.modals.YesNo({\n header: \"Delete Category\",\n body: \"Do you want to delete this Category?\",\n onYes: _.bind(function () {\n category.destroy({\n success: _.bind(function () {\n this.options.categories.remove([category]);\n this.categoryDataTable.render();\n }, this)\n });\n }, this)\n });\n }\n});\n","PJQ.views.settings.UserSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management'),\n subTemplates: {\n userSeats: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-seats-header'),\n userLimits: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-limits-header')\n }\n },\n events: {\n 'change .cb-enable-permissions': 'enablePermissions',\n 'click .btn-add-user': 'addClicked',\n 'click .btn-edit-user-perms': 'editPermissionsClicked',\n 'click .btn-edit-user': 'editClicked',\n 'click .btn-delete-user': 'deleteClicked',\n 'click .btn-edit-notification-settings': 'notificationSettingsClicked',\n 'click .btn-change-seats': 'manageUserSeats',\n 'click .btn-change-limits': 'manageUserLimits'\n },\n beforeRender: function () {\n this.options.enablePermissions = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n },\n renderData: function () {\n return {\n enablePermissions: this.options.enablePermissions\n };\n },\n afterRender: function () {\n\n let columns = [\n {\n 'title': \"hidden_search\",\n \"data\": \"\",\n 'width': '0px',\n 'visible': false,\n \"render\": _.bind(function (data, type, row) {\n return row.get('phone') + ' ' + row.get('address1') + ' ' + row.get('address2') + ' ' + row.get('city') + ' ' + row.get('state') + ' ' + row.get('zip');\n })\n },\n {\n 'title': \"Active\",\n \"data\": \"attributes.isActive\",\n 'width': '40px',\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (data === true) {\n content = ''\n } else {\n content = ''\n }\n return content\n })\n },\n {\n \"title\": \"User Type\",\n \"data\": \"userType\",\n \"render\": _.bind(function (data, type, row) {\n if (type === 'sort' && row.userType !== undefined) {\n return row.userType.get('sortOrder');\n }\n return '' + (row.userType !== undefined ? row.userType.get('name') : \"\") + '';\n }, this)\n },\n {\n \"title\": \"Username\",\n \"data\": \"attributes.username\",\n },\n {\n \"title\": \"Name\",\n \"data\": \"attributes.contactName\",\n },\n {\n \"title\": \"Email\",\n \"data\": \"attributes.email\",\n },\n {\n 'title': \"ITB User\",\n \"data\": \"attributes.itbUser\",\n 'width': '40px',\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (data === true) {\n content = ''\n }\n return content\n })\n },\n {\n 'title': \"PM User\",\n \"data\": \"attributes.pmUser\",\n 'width': '40px',\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (data === true) {\n content = ''\n }\n return content\n })\n }\n ];\n\n // for Document Clerk add the CreatedOn column to assist with billing\n if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)) {\n columns.push({\n \"columnData\": \"createdDate\",\n \"data\": {\n \"_\": function (row) {\n return new Date(row.attributes.createdDate);\n },\n \"filter\": \"attributes.createdDate\",\n \"display\": function (row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.attributes.createdDate), PJQ.helpers.dateHelpers.dateFormats.DATE, true);\n }\n },\n \"title\": \"Created\"\n });\n }\n\n columns.push({\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": this.options.enablePermissions ? '160px' : '120px',\n \"render\": _.bind(function (data, type, row) {\n let buttons = '',\n notificationButton = '';\n if (this.options.enablePermissions) {\n buttons += '';\n buttons += (row.get('userId') === PJQ.app.session.user.get('userId') || PJQ.app.session.hasPermission('users.canModifyNotifications')) ? notificationButton : ``\n } else {\n buttons += notificationButton;\n }\n\n buttons += ''\n\n if (row.get('userId') !== PJQ.app.session.user.id) {\n buttons += '';\n }\n\n return '
' + buttons + '
';\n }, this)\n });\n\n this.renderUserSeats();\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".users-table\"),\n data: this.collection.models,\n rowId: \"cid\",\n order: [1, 'asc'],\n language: {\n zeroRecords: \"You don't have any users\"\n },\n rowCallback: function (row, data) {\n if (data.userType) {\n $(row).find('td:eq(7)').css('color', data.userType.get('color'));\n }\n },\n onRowDoubleClick: _.bind(function (row) {\n this.editUser(row.data());\n }, this),\n onTableDraw: _.bind(function () {\n this.$(\".users-table\").find('th').each(function (index, column) {\n if (index === 0) {\n $(column).removeClass('sorting')\n }\n });\n }, this),\n contextMenuOptions: {\n actions: [\n {\n name: 'Edit',\n onClick: _.bind(function (row) {\n this.editUser(row.data());\n }, this)\n },\n {\n name: 'Notifications',\n onClick: _.bind(function (row) {\n this.notificationSettings(row.data());\n }, this)\n },\n {\n name: 'Permissions',\n isShown: _.bind(function () {\n return this.options.enablePermissions;\n }, this),\n onClick: _.bind(function (row) {\n this.editPermissions(row.data());\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n onClick: _.bind(function (row) {\n this.deleteUser(row);\n }, this)\n }\n ]\n },\n columns: columns\n });\n },\n renderUserSeats: function () {\n let $userSeats = this.$('.user-seats');\n if (!PJQ.app.session.get('onAccount') && PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n let subscription = PJQ.app.session.subscription;\n if (subscription.id === PJQ.constants.subscriptions.types.FREE || subscription.get('isFreeTrial')) {\n $userSeats.empty();\n } else {\n this.renderSubTemplate(false, this.options.subTemplates.userSeats, $userSeats, {\n subscription: subscription,\n users: this.collection\n }, _.bind(function () {\n PJQ.app.session.listenSubscriptionChanged(\"accountSettings\", _.bind(function () {\n this.renderUserSeats();\n }, this));\n }, this));\n }\n } else if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)) {\n PJQ.app.session.fetchUserLimits(_.bind(function (userLimits) {\n this.userLimits = userLimits;\n this.renderSubTemplate(false, this.options.subTemplates.userLimits, $userSeats, {\n userLimits: userLimits,\n users: this.collection,\n showButtons: true\n });\n }, this))\n }\n },\n manageUserSeats: function () {\n new PJQ.views.settings.UserSeatsManagementModal();\n },\n manageUserLimits: function () {\n new PJQ.views.settings.UserLimitsManagementModal({\n model: this.userLimits,\n onSave: _.bind(function () {\n this.render();\n }, this)\n });\n },\n enablePermissions: function () {\n let enable = !this.options.enablePermissions;\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'permissions'\n },\n {\n endpoint: 'enable'\n }\n ], [\n {\n parameter: 'enable',\n value: enable\n }\n ])\n }).put().done(_.bind(function () {\n if (enable) {\n PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS, true);\n } else {\n PJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n }\n this.render();\n }, this));\n },\n addClicked: function () {\n let fnNew = _.bind(function () {\n let newUser = new PJQ.models.users.User({\n companyName: PJQ.app.session.user.get('companyName'),\n contactName: \"\",\n username: \"\",\n email: \"\",\n phone: \"\",\n address1: PJQ.app.session.user.get('address1'),\n address2: PJQ.app.session.user.get('address2'),\n city: PJQ.app.session.user.get('city'),\n state: PJQ.app.session.user.get('state'),\n zip: PJQ.app.session.user.get('zip'),\n country: PJQ.app.session.user.get('country'),\n sortOrder: this.collection.length + 1,\n pmUser: true,\n itbUser: true,\n isActive: true,\n userTypeId: PJQ.app.session.userTypes.getDefault(true).get('userTypeId')\n });\n this.editUser(newUser);\n }, this);\n\n if (PJQ.app.session.user.isFetched) {\n fnNew();\n } else {\n PJQ.app.session.user.fetch({\n success: fnNew\n })\n }\n },\n notificationSettingsClicked: function (e) {\n let target = $(e.currentTarget),\n user = this.dataTable.getRow(target.closest('tr')).data();\n this.notificationSettings(user);\n },\n notificationSettings: function (user) {\n new PJQ.views.notificationSettings.NotificationSettingsEditorModal({\n model: user\n });\n },\n editPermissionsClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n user = row.data();\n\n this.editPermissions(user);\n },\n editPermissions: function (user) {\n new PJQ.views.permissions.PermissionsEditorModal({\n model: user\n });\n },\n editClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n user = row.data();\n\n this.editUser(user);\n },\n editUser: function (user) {\n let isNew = user.isNew();\n // force the modal to re-fetch\n user.isFetched = false;\n new PJQ.views.contacts.BaseEditContactModal({\n model: user,\n onSave: _.bind(function (user) {\n if (isNew) {\n user.set('createdDate', new Date());\n this.collection.add(user);\n this.dataTable.addRow(user);\n }\n this.renderUserSeats();\n this.dataTable.refresh();\n }, this),\n onClose: _.bind(function (user) {\n if (user.hasChanged()) {\n user.fetch({\n success: _.bind(function () {\n this.dataTable.refresh();\n }, this)\n });\n }\n }, this),\n onDelete: _.bind(function (user) {\n if (!user.isNew()) {\n let row = this.dataTable.getRow(user.cid);\n this.collection.remove(user);\n if (row != null) {\n this.dataTable.removeRow(row);\n }\n this.renderUserSeats();\n }\n }, this)\n });\n },\n deleteClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr'));\n this.deleteUser(row);\n },\n deleteUser: function (row) {\n let user = row.data();\n new PJQ.views.modals.DeleteCancel({\n header: \"Confirm Deletion\",\n body: \"Are you sure you want to delete this user?\",\n onDelete: _.bind(function () {\n this.collection.remove(user);\n user.destroy();\n this.dataTable.removeRow(row);\n }, this)\n });\n }\n});\n\nPJQ.views.settings.UserSeatsManagementModal = PJQ.views.payment.PaySimplePaymentModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-user-seats-management'),\n minWidth: 500,\n onSave: null,\n onError: null,\n isVerticalCenter: true,\n isShowCloseButton: true,\n selectedSubscriptionId: null\n },\n defaultEvents: {\n 'click .btn-add-seat': 'userSeatAdded',\n 'click .btn-remove-seat': 'userSeatRemoved',\n 'keyup .input-user-seats': 'userSeatsInputChanged',\n 'click .btn-save': 'save'\n },\n beforeModalCreated: function () {\n this.userSeats = PJQ.app.session.subscription.get('userSeats');\n PJQ.app.session.subscription.getCostsPerUser(_.bind(function (costs) {\n this.changeCosts = costs;\n PJQ.app.session.fetchUsers(_.bind(function (users) {\n this.activeUsers = _.size(users.where({isActive: true}));\n this.render();\n }, this));\n }, this));\n },\n renderData: function () {\n return {\n subscription: PJQ.app.session.subscription,\n userSeats: this.userSeats,\n activeUsers: this.activeUsers\n };\n },\n afterRender: function () {\n if (this.activeUsers == null) {\n new PJQ.Loader(this.$('.modal-content'));\n return;\n }\n this.$('.input-user-seats').focus().select();\n },\n userSeatAdded: function () {\n this.userSeats += 1;\n this.userSeatsChanged();\n },\n userSeatRemoved: function () {\n this.userSeats -= 1;\n this.userSeatsChanged();\n },\n userSeatsInputChanged: function () {\n this.userSeats = parseInt(this.$('.input-user-seats').val());\n this.userSeatsChanged();\n },\n userSeatsChanged: function () {\n this.$('.input-user-seats').val(this.userSeats);\n this.$('.btn-remove-seat').prop('disabled', this.userSeats === 0);\n\n let $err = this.$('.error-container'),\n $btnSave = this.$('.btn-save');\n if (this.userSeats < this.activeUsers) {\n // cant have less seats than active users\n $err.html(\"You can't select less seats than you have active users\");\n $btnSave.prop('disabled', true);\n } else {\n let $payment = this.$('.payment-outer');\n if (this.userSeats > PJQ.app.session.subscription.get('userSeats')) {\n this.renderTotal();\n $payment.removeClass('hidden');\n } else {\n $payment.addClass('hidden');\n }\n\n $err.empty();\n $btnSave.prop('disabled', false);\n }\n },\n renderTotal: function () {\n let subscription = PJQ.app.session.subscription,\n cost;\n switch (subscription.id) {\n case PJQ.constants.subscriptions.types.BASIC:\n cost = this.changeCosts.basic;\n break;\n case PJQ.constants.subscriptions.types.PRO:\n cost = this.changeCosts.pro;\n break;\n case PJQ.constants.subscriptions.types.ENTERPRISE:\n cost = this.changeCosts.enterprise;\n break;\n default:\n cost = 0;\n break;\n }\n\n let $pOuter = this.$('.payment-outer'),\n newUserSeats = this.userSeats - subscription.get('userSeats');\n if (newUserSeats > 0) {\n this.$('.payment-total').html(PJQ.helpers.formatHelpers.formatCurrency(cost * newUserSeats, 2, true));\n this.$('.new-seats-count').html(newUserSeats);\n $pOuter.removeClass('hidden');\n } else {\n $pOuter.addClass('hidden');\n }\n },\n save: function () {\n if (this.userSeats !== PJQ.app.session.subscription.get('userSeats')) {\n let loader = new PJQ.Loader(this.$('.modal-content')),\n err = function () {\n loader.remove();\n PJQ.notifications.notify.errorNotify({\n message: 'Encountered an error upgrading your subscription. Please contact customer service.'\n });\n };\n PJQ.app.session.changeUserSeats(this.userSeats, _.bind(function (data) {\n if (data == null || data.subscription == null) {\n err();\n } else {\n PJQ.notifications.notify.successNotify({\n message: 'Users seats successfully updated'\n });\n this.removeModal();\n }\n }, this), _.bind(function () {\n err();\n }, this));\n } else {\n this.removeModal();\n }\n }\n});\n\nPJQ.views.settings.UserLimitsManagementModal = PJQ.views.payment.PaySimplePaymentModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-user-limits-management'),\n subTemplates: {\n userLimits: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-limits-header')\n },\n minWidth: 500,\n onSave: null,\n onError: null,\n isVerticalCenter: true,\n isShowCloseButton: true\n },\n defaultEvents: {\n 'click .btn-add-itb-seat': 'itbUserSeatAdded',\n 'click .btn-add-pm-seat': 'pmUserSeatAdded',\n 'click .btn-remove-pm-seat': 'itbUserSeatRemoved',\n 'click .btn-remove-itb-seat': 'pmUserSeatRemoved',\n 'keyup .input-itb-user-seats': 'itbUserSeatsInputChanged',\n 'keyup .input-pm-user-seats': 'pmUserSeatsInputChanged',\n 'click .btn-cancel': 'cancel',\n 'click .btn-save': 'save'\n },\n beforeModalCreated: function () {\n this.isFetched = false;\n let fnFetchUsers = _.bind(function () {\n PJQ.app.session.fetchUsers(_.bind(function (users) {\n this.users = users;\n this.isFetched = true;\n this.render();\n }, this))\n }, this);\n\n if (this.model == null) {\n PJQ.app.session.fetchUserLimits(_.bind(function (userLimits) {\n fnFetchUsers();\n }, this))\n } else {\n fnFetchUsers();\n }\n },\n renderData: function () {\n return {\n model: this.model,\n itbUsers: this.itbUsers,\n pmUsers: this.pmUsers\n };\n },\n afterRender: function () {\n if (!this.isFetched) {\n new PJQ.Loader(this.$('.modal-content'));\n return;\n }\n this.$('.input-itb-user-seats').focus().select();\n\n this.renderHeader();\n },\n renderHeader: function(){\n this.renderSubTemplate(false, this.options.subTemplates.userLimits, this.$('.limits-header'), {\n userLimits: this.model,\n users: this.users\n });\n },\n pmUserSeatAdded: function () {\n this.model.set('pmUserLimit', this.model.get('pmUserLimit') + 1);\n this.userSeatsChanged();\n },\n pmUserSeatRemoved: function () {\n let seats = this.model.get('pmUserLimit');\n this.model.set('pmUserLimit', seats > 0 ? seats - 1 : 0);\n this.userSeatsChanged();\n },\n pmUserSeatsInputChanged: function () {\n let seats = parseInt(this.$('.input-pm-user-seats').val());\n if(isNaN(seats) || seats < 0){\n seats = 0;\n }\n this.model.set('pmUserLimit', seats);\n this.userSeatsChanged();\n },\n itbUserSeatAdded: function () {\n this.model.set('itbUserLimit', this.model.get('itbUserLimit') + 1);\n this.userSeatsChanged();\n },\n itbUserSeatRemoved: function () {\n let seats = this.model.get('itbUserLimit');\n this.model.set('itbUserLimit', seats > 0 ? seats - 1 : 0);\n this.userSeatsChanged();\n },\n itbUserSeatsInputChanged: function () {\n let seats = parseInt(this.$('.input-itb-user-seats').val());\n if(isNaN(seats) || seats < 0){\n seats = 0;\n }\n this.model.set('itbUserLimit', seats);\n this.userSeatsChanged();\n },\n userSeatsChanged: function () {\n this.renderHeader();\n },\n cancel: function () {\n this.model.restore();\n this.removeModal();\n },\n save: function () {\n let loader = new PJQ.Loader(this.$('.modal-content')),\n err = function () {\n loader.remove();\n PJQ.notifications.notify.errorNotify({\n message: 'Encountered an error update user seats'\n });\n };\n this.model.save(null, {\n success: _.bind(function () {\n PJQ.notifications.notify.successNotify({\n message: 'User seats updated'\n });\n\n if (typeof this.options.onSave === 'function') {\n this.options.onSave();\n }\n\n this.removeModal();\n }, this),\n error: _.bind(err, this)\n })\n }\n});\n","PJQ.views.settings.UserTypeSettings = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'User-Type-Settings')\n },\n events: {\n 'click .add-user-type': 'addClicked',\n 'click .btn-edit-ut-perms': 'editPermissionsClicked',\n 'click .btn-edit-user-type': 'editUserTypeClicked',\n 'click .btn-delete-user-type': 'deleteUserTypeClicked',\n 'click .btn-save-user-type': 'userTypeSave',\n 'click .btn-cancel-edit-user-type': 'cancelEditUserType',\n 'click .add-company-user-type': 'addCompanyClicked',\n 'click .btn-edit-company-ut-perms': 'editCompanyPermissionsClicked',\n 'click .btn-edit-company-user-type': 'editCompanyUserTypeClicked',\n 'click .btn-delete-company-user-type': 'deleteCompanyUserTypeClicked',\n 'click .btn-save-company-user-type': 'companyUserTypeSave',\n 'click .btn-cancel-edit-company-user-type': 'cancelEditCompanyUserType',\n 'click .btn-edit-company-user-type-notification-settings': 'companyNotificationSettingsClicked',\n 'click .btn-edit-notification-settings': 'notificationSettingsClicked',\n 'colorpickerCreate': 'createColorPickerBind',\n 'colorpickerChange': 'setColorPickerValue',\n },\n beforeFirstRender: function () {\n this.options.enablePermissions = !PJQ.app.session.get('onAccount') || PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n this.users = new PJQ.collections.users.Users();\n this.listenTo(this.users, 'sync', this.render);\n this.users.fetch();\n },\n afterRender: function () {\n this.companyDataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".company-user-type-table\"),\n isHideSearch: true,\n data: this.collection.getByIsCompany(true),\n rowId: \"cid\",\n targets: 'no-sort',\n order: [2, 'asc'],\n language: {\n zeroRecords: 'Click \"Add\" to create a new User Type'\n },\n bSort: false,\n rowCallback: function (row, data) {\n $(row).find('td:eq(0)').css('color', data.get('color'));\n },\n contextMenuOptions: {\n actions: [\n {\n name: 'Notifications',\n onClick: _.bind(function (row) {\n this.notificationSettings(row.data());\n }, this)\n },\n {\n name: 'Permissions',\n isShown: _.bind(function () {\n return this.options.enablePermissions;\n }, this),\n onClick: _.bind(function (row) {\n this.editPermissions(row.data());\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n isShown: _.bind(function (row) {\n return row.data().get('masterUserId') !== -1;\n }, this),\n onClick: _.bind(function (row) {\n this.deleteUserType(row);\n }, this)\n }\n ]\n },\n columns: [\n {\n \"data\": {\n \"display\": _.bind(function (row) {\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n return '';\n } else {\n return row.get('name');\n }\n }, this)\n },\n \"title\": \"Company User Types\",\n \"orderable\": false\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"width\": \"120px\",\n \"orderable\": false,\n \"searchable\": false,\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n content = '
'\n }\n return '
' + content + '
'\n }, this)\n },\n {\n \"data\": \"attributes.sortOrder\",\n \"title\": \"\",\n \"searchable\": false,\n \"visible\": false\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": this.options.enablePermissions ? '160px' : '120px',\n \"render\": _.bind(function (data, type, row) {\n let buttons = '',\n notificationButton = '';\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n buttons = '';\n } else {\n if (this.options.enablePermissions) {\n buttons += '';\n buttons += PJQ.app.session.hasPermission('users.canModifyNotifications') ? notificationButton : ``;\n }\n else{\n buttons += notificationButton;\n }\n buttons += '';\n if (row.get('masterUserId') !== -1) {\n buttons += '';\n }\n }\n return '
' + buttons + '
'\n }, this)\n }\n ],\n });\n\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".user-type-table\"),\n isHideSearch: true,\n data: this.collection.getByIsCompany(false),\n rowId: \"cid\",\n targets: 'no-sort',\n order: [2, 'asc'],\n language: {\n zeroRecords: 'Click \"Add\" to create a new User Type'\n },\n bSort: false,\n rowCallback: function (row, data, index) {\n $(row).find('td:eq(0)').css('color', data.get('color'));\n },\n contextMenuOptions: {\n actions: [\n {\n name: 'Notifications',\n onClick: _.bind(function (row) {\n this.notificationSettings(row.data());\n }, this)\n },\n {\n name: 'Permissions',\n isShown: _.bind(function () {\n return this.options.enablePermissions;\n }, this),\n onClick: _.bind(function (row) {\n this.editPermissions(row.data());\n }, this)\n },\n {\n name: 'Delete',\n isDanger: true,\n isShown: _.bind(function (row) {\n return row.data().get('masterUserId') !== -1;\n }, this),\n onClick: _.bind(function (row) {\n this.deleteCompanyUserType(row);\n }, this)\n }\n ]\n },\n columns: [\n {\n \"data\": {\n \"display\": _.bind(function (row) {\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n return '';\n } else {\n return row.get('name');\n }\n }, this)\n },\n \"title\": \"User Types\",\n \"orderable\": false\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"width\": \"120px\",\n \"orderable\": false,\n \"searchable\": false,\n \"render\": _.bind(function (data, type, row) {\n let content = '';\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n content = '
'\n }\n return '
' + content + '
'\n }, this)\n },\n {\n \"data\": \"attributes.sortOrder\",\n \"title\": \"\",\n \"searchable\": false,\n \"visible\": false\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": this.options.enablePermissions ? '160px' : '120px',\n \"render\": _.bind(function (data, type, row) {\n let buttons = '',\n notificationButton = ''\n if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n buttons = '';\n } else {\n if (this.options.enablePermissions) {\n buttons += '';\n buttons += PJQ.app.session.hasPermission('users.canModifyNotifications') ? notificationButton : ``\n }\n else{\n buttons += notificationButton\n }\n buttons += '';\n if (row.get('masterUserId') !== -1) {\n buttons += '';\n }\n }\n return '
' + buttons + '
'\n }, this)\n },\n ],\n });\n },\n createColorPickerBind: function(e) {\n let io = this.$('.color-io');\n\n io.val(e.color.string());\n\n io.on('change keyup', function () {\n e.colorpicker.setValue(io.val());\n });\n },\n setColorPickerValue: function(e) {\n let io = this.$('.color-io');\n\n if (e.value === io.val() || !e.color || !e.color.isValid()) {\n return;\n }\n\n io.val(e.color.string());\n },\n refreshDataTables: function () {\n this.dataTable.refresh();\n this.companyDataTable.refresh();\n },\n changeDefaultTypeAlert(returnCopy, callback) {\n this.dataTable.refresh();\n new PJQ.views.modals.YesNo({\n header: \"Change User Types?\",\n body: 'You are currently using the system default user types. To edit a user type, we will need to create custom user types for your company. This may take a minute, would you like to continue?',\n onYes: _.bind(function () {\n this.copyUserTypes(returnCopy, _.bind(function (userTypes, newUserType) {\n callback(userTypes, newUserType);\n this.refreshDataTables();\n }, this));\n }, this)\n });\n },\n copyUserTypes: function (returnCopy, callback) {\n this.collection.copy(_.bind(function () {\n let newUt = null;\n if (returnCopy != null) {\n let returnName = returnCopy.get('name');\n newUt = _.find(this.collection.models, function (u) {\n return u.get('name') === returnName;\n });\n }\n callback(this.collection.models, newUt);\n }, this));\n },\n addClicked: function () {\n let fnAdd = _.bind(function () {\n let newUserType = new PJQ.models.userTypes.UserType({\n name: \"\",\n color: '#000000',\n sortOrder: this.collection.length + 1,\n isCompanyUser: false\n });\n this.collection.add(newUserType);\n this.dataTable.addRow(newUserType);\n this.userTypeContext = newUserType;\n this.defaultColor = this.userTypeContext.get('color');\n this.userTypeColor = this.userTypeContext.attributes.color;\n this.dataTable.refresh();\n this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n format: 'hex',\n color: this.userTypeColor,\n onChange: _.bind(function (value) {\n this.userTypeContext.set('color', value);\n this.$('.input-user-type-name').css('color', value);\n }, this)\n });\n this.$('.input-user-type-name').css('color', this.userTypeContext.get('color'));\n }, this);\n if (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(null, function () {\n fnAdd();\n });\n } else {\n fnAdd();\n }\n },\n addCompanyClicked: function () {\n let fnAdd = _.bind(function () {\n let newUserType = new PJQ.models.userTypes.UserType({\n name: \"\",\n color: '#000000',\n sortOrder: this.collection.length + 1,\n isCompanyUser: true\n });\n this.collection.add(newUserType);\n this.companyDataTable.addRow(newUserType);\n this.userTypeContext = newUserType;\n this.defaultColor = this.userTypeContext.get('color');\n this.userTypeColor = this.userTypeContext.attributes.color;\n this.companyDataTable.refresh();\n this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n format: 'hex',\n color: this.userTypeColor,\n onChange: _.bind(function (value) {\n this.userTypeContext.set('color', value);\n this.$('.input-user-type-name').css('color', value);\n }, this)\n });\n this.$('.input-user-type-name').css('color', this.userTypeContext.get('color'));\n }, this);\n if (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(null, function () {\n fnAdd();\n });\n } else {\n fnAdd();\n }\n },\n companyNotificationSettingsClicked: function (e) {\n let target = $(e.currentTarget),\n userType = this.companyDataTable.getRow(target.closest('tr')).data();\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n this.notificationSettings(newUserType);\n });\n } else {\n this.notificationSettings(userType);\n }\n },\n notificationSettingsClicked: function (e) {\n let target = $(e.currentTarget),\n userType = this.dataTable.getRow(target.closest('tr')).data();\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n this.notificationSettings(newUserType);\n });\n } else {\n this.notificationSettings(userType);\n }\n },\n notificationSettings: function (userType) {\n new PJQ.views.notificationSettings.NotificationSettingsEditorModal({\n model: userType\n });\n },\n editCompanyPermissionsClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.companyDataTable.getRow(target.closest('tr')),\n userType = row.data();\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n this.editPermissions(newUserType);\n });\n } else {\n this.editPermissions(userType);\n }\n },\n editPermissionsClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n userType = row.data();\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n this.editPermissions(newUserType);\n });\n } else {\n this.editPermissions(userType);\n }\n },\n editPermissions: function (userType) {\n new PJQ.views.permissions.PermissionsEditorModal({\n model: userType\n });\n },\n editUserTypeClicked: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.dataTable.getRow($row),\n userType = row.data();\n this.editUserType(userType);\n },\n editUserType: function (userType) {\n let fnEdit = _.bind(function (eut) {\n this.userTypeContext = eut;\n this.defaultColor = eut.get('color');\n this.dataTable.refresh();\n this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n format: 'hex',\n color: eut.get('color'),\n onChange: _.bind(function (value) {\n this.userTypeContext.set('color', value);\n this.$('.input-user-type-name').css('color', value);\n }, this)\n });\n this.$('.input-user-type-name').css('color', eut.get('color'));\n }, this);\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n fnEdit(newUserType);\n });\n } else {\n fnEdit(userType);\n }\n },\n editCompanyUserTypeClicked: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.companyDataTable.getRow($row),\n userType = row.data();\n this.editCompanyUserType(userType);\n },\n editCompanyUserType: function (userType) {\n let fnEdit = _.bind(function (eut) {\n this.userTypeContext = eut;\n this.defaultColor = eut.get('color');\n this.companyDataTable.refresh();\n this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n format: 'hex',\n color: eut.get('color'),\n onChange: _.bind(function (value) {\n this.userTypeContext.set('color', value);\n this.$('.input-user-type-name').css('color', value);\n }, this)\n });\n this.$('.input-user-type-name').css('color', eut.get('color'));\n }, this);\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n fnEdit(newUserType);\n });\n } else {\n fnEdit(userType);\n }\n },\n deleteUserTypeClicked(e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.dataTable.getRow($row);\n this.deleteUserType(row);\n },\n deleteUserType: function (row) {\n let userType = row.data(),\n fnDelete = _.bind(function (dut) {\n new PJQ.views.modals.DeleteCancel({\n header: \"Delete User Type\",\n body: \"Are you sure you want to delete this user type? Any user who currently has this role will have to be changed to a new user type.\",\n onDelete: _.bind(function () {\n let userHasType = false;\n _.each(this.users.models, function (user) {\n if (user.get('userTypeId') === userType.get('userTypeId')) {\n userHasType = true;\n }\n });\n if (userHasType) {\n new PJQ.views.settings.ChangeUserTypeModal({\n userTypeId: userType.get('userTypeId'),\n title: userType.get('name') + \" Users\",\n users: this.users,\n onDelete: _.bind(function () {\n userType.destroy({\n success: _.bind(function () {\n this.collection.remove(dut);\n this.dataTable.removeRow(row);\n this.dataTable.refresh();\n }, this)\n });\n }, this)\n });\n } else {\n userType.destroy({\n success: _.bind(function () {\n this.collection.remove(dut);\n this.dataTable.removeRow(row);\n this.dataTable.refresh();\n }, this)\n });\n }\n }, this)\n });\n }, this);\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n fnDelete(newUserType);\n });\n } else {\n fnDelete(userType);\n }\n },\n deleteCompanyUserTypeClicked(e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.companyDataTable.getRow($row);\n this.deleteCompanyUserType(row);\n },\n deleteCompanyUserType: function (row) {\n let userType = row.data(),\n fnDelete = _.bind(function (dut) {\n new PJQ.views.modals.DeleteCancel({\n header: \"Delete User Type\",\n body: \"Are you sure you want to delete this user type? Any user who currently has this role will have to be changed to a new user type.\",\n onDelete: _.bind(function () {\n let userHasType = false;\n _.each(this.users.models, function (user) {\n if (user.get('userTypeId') === userType.get('userTypeId')) {\n userHasType = true;\n }\n });\n if (userHasType) {\n new PJQ.views.settings.ChangeUserTypeModal({\n userTypeId: userType.get('userTypeId'),\n title: userType.get('name') + \" Users\",\n users: this.users,\n onDelete: _.bind(function () {\n userType.destroy({\n success: _.bind(function () {\n this.collection.remove(dut);\n this.companyDataTable.removeRow(row);\n this.companyDataTable.refresh();\n }, this)\n });\n }, this)\n });\n } else {\n userType.destroy({\n success: _.bind(function () {\n this.collection.remove(dut);\n this.companyDataTable.removeRow(row);\n this.companyDataTable.refresh();\n }, this)\n });\n }\n }, this)\n });\n }, this);\n if (userType.get('masterUserId') === -1) {\n this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n fnDelete(newUserType);\n });\n } else {\n fnDelete(userType);\n }\n },\n userTypeSave: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n userType = this.dataTable.getRow($row).data(),\n $name = $row.find('.input-user-type-name');\n userType.set('name', $name.val());\n userType.set('sortOrder', userType.attributes.sortOrder);\n\n let isNameValid = _.size(userType.get('name')) > 0;\n PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n if (isNameValid) {\n userType.save(null, {\n success: _.bind(function () {\n this.userTypeContext = null;\n this.dataTable.refresh();\n }, this)\n });\n }\n },\n companyUserTypeSave: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n userType = this.companyDataTable.getRow($row).data(),\n $name = $row.find('.input-user-type-name');\n userType.set('name', $name.val());\n userType.set('sortOrder', userType.attributes.sortOrder);\n\n let isNameValid = _.size(userType.get('name')) > 0;\n PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n if (isNameValid) {\n userType.save(null, {\n success: _.bind(function () {\n this.userTypeContext = null;\n this.companyDataTable.refresh();\n }, this)\n });\n }\n },\n cancelEditUserType: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.dataTable.getRow($row),\n user = row.data();\n user.set('color', this.defaultColor);\n this.userTypeContext = null;\n this.userTypeColor = null;\n if (user.get('name').length === 0) {\n this.dataTable.removeRow(row);\n }\n this.dataTable.refresh();\n },\n cancelEditCompanyUserType: function (e) {\n let $row = $(e.currentTarget).closest('tr'),\n row = this.companyDataTable.getRow($row),\n user = row.data();\n user.set('color', this.defaultColor);\n this.userTypeContext = null;\n this.userTypeColor = null;\n if (user.get('name').length === 0) {\n this.companyDataTable.removeRow(row);\n }\n this.companyDataTable.refresh();\n },\n});\n\nPJQ.views.settings.ChangeUserTypeModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Change-User-Type'),\n title: \"Change User Types\",\n subtitle: \"These Users Type must be changed before deleting.\"\n },\n events: {\n 'click .btn-edit-user': 'editClicked',\n 'click .user-type-change-done': 'checkDone'\n },\n beforeModalCreated: function () {\n this.users = this.options.users;\n },\n beforeRender: function () {\n this.renderData = {\n options: this.options\n };\n },\n afterRender: function () {\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$(\".user-table\"),\n isHideSearch: true,\n paginate: false,\n data: this.users.getByUserType(this.options.userTypeId),\n rowId: \"cid\",\n targets: 'no-sort',\n order: [2, 'asc'],\n bSort: false,\n language: {\n zeroRecords: 'No more users have this type. Hit done to complete deleting.'\n },\n rowCallback: function (row, data) {\n $(row).find('td:eq(0)').css('color', data.get('color'));\n },\n contextMenuOptions: {\n actions: [\n {\n name: 'Edit',\n onClick: _.bind(function (row) {\n this.editUser(row.data());\n }, this)\n }\n ]\n },\n columns: [\n {\n \"title\": \"User Type\",\n \"data\": \"userType\",\n \"render\": _.bind(function (data, type, row) {\n if (type === 'sort' && row.userType !== undefined) {\n return row.userType.get('sortOrder');\n }\n return '' + (row.userType !== undefined ? row.userType.get('name') : \"\") + '';\n }, this)\n },\n {\n \"title\": \"Username\",\n \"data\": \"attributes.username\",\n },\n {\n \"title\": \"Name\",\n \"data\": \"attributes.contactName\",\n },\n {\n \"title\": \"Email\",\n \"data\": \"attributes.email\",\n },\n {\n \"data\": \"\",\n \"title\": \"\",\n \"orderable\": false,\n \"searchable\": false,\n \"width\": '40px',\n \"render\": _.bind(function (data, type, row) {\n let button = '';\n button += '';\n return '
' + button + '
'\n }, this)\n }\n ],\n });\n this.checkUsersLength()\n },\n editClicked: function (e) {\n let target = $(e.currentTarget),\n row = this.dataTable.getRow(target.closest('tr')),\n user = row.data();\n\n this.editUser(user);\n },\n editUser: function (user) {\n new PJQ.views.contacts.BaseEditContactModal({\n model: user,\n onSave: _.bind(function (user) {\n if (user.hasChanged()) {\n user.save(null, {\n notify: true\n });\n }\n this.dataTable.refresh();\n this.checkUsersLength()\n }, this),\n onClose: _.bind(function (user) {\n if (user.hasChanged()) {\n user.fetch({\n success: _.bind(function () {\n this.dataTable.refresh();\n }, this)\n });\n this.checkUsersLength()\n }\n }, this),\n onDelete: _.bind(function (user) {\n let row = this.dataTable.getRow(user.cid);\n this.users.remove(user);\n if (row != null) {\n this.dataTable.removeRow(row);\n }\n this.checkUsersLength()\n }, this)\n });\n },\n checkUsersLength: function () {\n if (this.users.getByUserType(this.options.userTypeId).length === 0) {\n this.$('.user-type-change-done').attr('disabled', false)\n }\n },\n checkDone: function () {\n if (this.users.getByUserType(this.options.userTypeId).length === 0) {\n this.options.onDelete;\n this.removeModal();\n }\n }\n});\n\n"]}