{"version":3,"sources":["app.js","brokers/themeConfig.js","ecapwest/themeConfig.js","eceip/themeConfig.js","joule/themeConfig.js","neca/themeConfig.js","odeim/themeConfig.js","pdplatform/themeconfig.js","products/themeConfig.js","qa-demo/themeConfig.js","qa-demo-new/themeConfig.js","renu/themeConfig.js","commonModule.js","controllers/commonController.js","controllers/contactAccountManagersController.js","controllers/contractorProjectsForEntityController.js","controllers/navbarCommentsController.js","controllers/navbarController.js","controllers/simpleSearchController.js","controllers/workflowsForEntityController.js","directives/addQuestion.js","directives/automaticFileUploader.js","directives/booleanSearchField.js","directives/booleanSearchFieldConfiguration.js","directives/calcHeight.js","directives/circleAutomaticFileUploader.js","directives/commentsTile.js","directives/contactAccountManager.js","directives/contenteditable.js","directives/convertToFloat.js","directives/convertToInt.js","directives/customClickOutside.js","directives/decimalSearchField.js","directives/decimalSearchFieldConfiguration.js","directives/editableTitle.js","directives/entityCard.js","directives/entityIcon.js","directives/expandRow.js","directives/fileUploader.js","directives/formSearch.js","directives/handleError.js","directives/informationPartDocument.js","directives/informationPartQuestion.js","directives/informationPartQuestionSet.js","directives/integerSearchField.js","directives/integerSearchFieldConfiguration.js","directives/itemOperations.js","directives/itemScroller.js","directives/itemTile.js","directives/ivViewer.js","directives/ivViewerGallery.js","directives/mdTheme.js","directives/overflowToggle.js","directives/phaseDocuments.js","directives/phaseQuestionSets.js","directives/platformEntityReferralGenerator.js","directives/productCard.js","directives/scrollTo.js","directives/searchFieldConfiguration.js","directives/setClassWhenAtTop.js","directives/simpleSearch.js","directives/skipTabbing.js","directives/sortColumn.js","directives/statusSearchField.js","directives/statusSearchFieldConfiguration.js","directives/stopEvent.js","directives/textSearchField.js","directives/textSearchFieldConfiguration.js","directives/toggle.js","directives/valueNotInListValidate.js","directives/wirePopover.js","directives/wizardProgress.js","directives/wizardSearch.js","filters/camelCaseToUnderscores.js","filters/cut.js","filters/encodeUriComponent.js","filters/excludeByArray.js","filters/excludeByArrayProperty.js","filters/excludeSelectedApplicants.js","filters/excludeSelectedPartners.js","filters/fileNameToIconClass.js","filters/getAttributeDisplayValue.js","filters/getSearchFieldDisplayValue.js","filters/join.js","filters/localeDateString.js","filters/makeUrl.js","filters/range.js","filters/splitToWords.js","filters/titleCase.js","filters/typeFromId.js","filters/underscoresToCamelCase.js","services/chatlioService.js","services/configurationOptionsDataService.js","services/contractorDataService.js","services/contractorProjectDataService.js","services/createEntityTypesDataService.js","services/dashboardFeaturesDataService.js","services/entityAdminEditsDataService.js","services/entityDataService.js","services/findAPartnerService.js","services/functionsConfigurationDataService.js","services/mailRequestDataService.js","services/milestoneModalService.js","services/myProfileDataService.js","services/notifyService.js","services/platformEntitiesDataService.js","services/platformEntityReferralDataService.js","services/productDefinitionDataService.js","services/productTypeConfigurationOptionsDataService.js","services/profileDataService.js","services/questionViewModelConfigurationService.js","services/requestForProposalDataService.js","services/requestForProposalResponseDataService.js","services/requestOptionsDataService.js","services/scrollingService.js","services/searchConfigurationDataService.js","services/searchDataService.js","services/searchFieldConfigurationsDataService.js","services/searchService.js","services/sessionDataService.js","services/signalRService.js","services/thumbnailsDataService.js","services/workflowConfigurationDataService.js","services/workflowDataService.js","services/zipbuilderDataService.js","registrationModule.js","registrationRoutes.js","controllers/homepageRegistrationModalController.js","controllers/registerEntityController.js","controllers/registerEntityHomePageController.js","controllers/registrationSelectorController.js","controllers/requestDemoController.js","controllers/requestDemoSmallController.js","services/registrationDataService.js","services/requestDemoDataService.js","crmModule.js","crmRoutes.js","controllers/assignAccountManagersController.js","controllers/createEntityController.js","controllers/crmController.js","controllers/editEntityController.js","controllers/requestForProposalResponsesSearchController.js","controllers/requestForProposalsController.js","controllers/resourcePartnerConnectionSummariesController.js","services/accountManagerDataService.js","services/crmActionsDataService.js","services/projectApplicationRequestsDataService.js","services/resourcePartnerConnectionsDataService.js","dashboardsModule.js","dashboardRoutes.js","controllers/applyForProjectsController.js","controllers/commentsController.js","controllers/crmAccountEditorController.js","controllers/directPartnerConnectionEditorController.js","controllers/editMyProfileController.js","controllers/entityActivitiesController.js","controllers/entityDashboardController.js","controllers/entityPublishingModalController.js","controllers/milestoneModalController.js","controllers/searchController.js","directives/globalCommentsMenu.js","services/dashboardActivityOptionsDataService.js","services/directPartnerConnectionsDataService.js","services/entityProfilePercentageCompleteCalculatorService.js","services/mostRecentItemsDataService.js","services/underwritingNotesDataService.js","siteConfigurationModule.js","siteConfigurationRoutes.js","controllers/adminEntityConfigurationEditorController.js","controllers/adminEntityConfigurationsController.js","controllers/configurationEditorController.js","controllers/siteConfigurationMainController.js","controllers/siteConfigurationsController.js","directives/activityConfiguration.js","directives/adminEntityConfiguration.js","directives/documentConfiguration.js","directives/documentResourcesGroupConfiguration.js","directives/documentResourcesGroupConfigurationContent.js","directives/documentUploadConfiguration.js","directives/documentUploadGroupConfiguration.js","directives/entityConfiguration.js","directives/formSearchConfiguration.js","directives/freeFormTextQuestionConfiguration.js","directives/informationPartConfiguration.js","directives/internalContentConfiguration.js","directives/internalContentPhaseInformationPartConfiguration.js","directives/linkResourcesGroupConfiguration.js","directives/linkResourcesGroupConfigurationContent.js","directives/optionConfiguration.js","directives/optionsQuestionConfiguration.js","directives/phaseConfiguration.js","directives/phaseInformationPartConfiguration.js","directives/questionConfiguration.js","directives/questionGroupConfiguration.js","directives/questionSetConfiguration.js","directives/requestForProposalConfiguration.js","directives/requiredDownloadConfiguration.js","directives/searchConfigurationContent.js","directives/siteConfiguration.js","directives/wizardSearchConfiguration.js","directives/workflowConfiguration.js","directives/workflowPhaseConfiguration.js","directives/yesNoQuestionConfiguration.js","services/adminEntityConfigurationDataService.js","services/configurationDataService.js","workflowModule.js","workflowRoutes.js","controllers/contractorProjectController.js","controllers/createWorkflowController.js","controllers/deletePhaseModalController.js","controllers/deleteWorkflowModalController.js","controllers/findAPartnerController.js","controllers/productSelectionController.js","controllers/removePhaseModalController.js","controllers/shareWithPartnersController.js","controllers/workflowController.js","controllers/workflowDocumentsController.js","controllers/workflowInternalFilesController.js","controllers/workflowMainController.js","controllers/workflowNavigatorController.js","controllers/workflowNotesController.js","controllers/workflowPathController.js","controllers/workflowRoadmapController.js","controllers/workflowSharingController.js","controllers/workflowSharingSearchController.js","controllers/workflowSummaryController.js","directives/addPhase.js","directives/addRequiredDownload.js","directives/addUnderwritingNote.js","directives/addWorkflowInformationPart.js","directives/commentEditor.js","directives/commentsMenu.js","directives/contractorProject.js","directives/documentUploadGroup.js","directives/htmlTemplate.js","directives/linkedTemplateReference.js","directives/partnerFanOut.js","directives/partnerSelector.js","directives/phaseDrawSchedule.js","directives/projectDrawScheduleItemsCollection.js","directives/questionGroup.js","directives/saveProgress.js","directives/searchField.js","directives/sharingDetails.js","directives/underwritingNote.js","directives/workflow.js","directives/workflowPhase.js","directives/workflowPhaseIcon.js","filters/excludeSelectedProducts.js","filters/excludeSelectedResourcePartners.js","filters/hasActiveProducts.js","services/fileUploadsService.js","services/workflowProcessingService.js","services/workflowStateService.js","services/workflowThumbnailsService.js","requestForProposalModule.js","requestForProposalRoutes.js","controllers/deleteRequestForProposalModalController.js","controllers/deleteRequestForProposalResponseModalController.js","controllers/requestForProposalBasicInformationController.js","controllers/requestForProposalContentController.js","controllers/requestForProposalController.js","controllers/requestForProposalFindRespondentsController.js","controllers/requestForProposalResponseContentController.js","controllers/requestForProposalResponseController.js","controllers/requestForProposalResponseEditorController.js","controllers/requestForProposalResponseRfpSummaryController.js","controllers/requestForProposalResponsesController.js","directives/rfpResponse.js","services/requestForProposalResponseStateService.js","services/requestForProposalStateService.js","subscriptionsModule.js","subscriptionsRoutes.js","controllers/subscriptionSignupController.js"],"names":["angular","module","EcapRun","$rootScope","$state","$log","chatlioService","$on","evt","to","params","redirectTo","preventDefault","go","location","event","unfoundState","fromState","fromParams","debug","toParams","options","toState","error","name","viewConfig","$inject","run","EcapConfig","$httpProvider","$routeProvider","$locationProvider","$urlRouterProvider","toastrConfig","$mdIconProvider","defaultFontSet","fontSet","interceptors","push","$","hasClass","html5Mode","enabled","rewriteLinks","hashPrefix","defaults","transformResponse","response","replaceDynamicList","obj","k","has","Object","prototype","hasOwnProperty","bind","otherwise","$injector","$location","tinyMCE","baseURL","extend","autoDismiss","containerId","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","target","config","httpInterceptor","$q","modifyRequest","requestOptions","req","AuthorizationHeader","headers","baseUrlSegment","url","split","replace","ApiBaseUrls","responseError","$broadcast","status","reject","request","TokenExpirationDate","moment","utc","isAfter","cache","get","getRequestOptions","then","res","factory","constant","abbrev","brokersThemeConfig","$mdThemingProvider","definePalette","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","contrastDefaultColor","contrastDarkColors","contrastLightColors","theme","primaryPalette","accentPalette","warnPalette","brokersThemeRun","$themes","primaryColor","accentColor","ecapwestThemeConfig","ecapwestThemeRun","eceipThemeConfig","eceipThemeRun","jouleThemeConfig","jouleThemeRun","necaThemeConfig","default","necaThemeRun","odeimThemeConfig","odeimThemeRun","pdplatformThemeConfig","pdplatformThemeRun","productsThemeConfig","productsThemeRun","qaDemoThemeConfig","qaDemoThemRun","qaDemoNewThemeConfig","qaDemoNewThemeRun","renuThemeConfig","renuThemeRun","commonController","$timeout","console","log","current","controller","contactAccountManagersController","$scope","$route","$routeParams","sessionDataService","mailRequestDataService","notifyService","self","this","entityId","insuranceAgencies","init","loadSession","sessionData","EntityId","contactAccountManager","accountManagerId","AccountManagerId","data","notify","contractorProjectsForEntityController","vm","results","navbarCommentsController","$attrs","underwritingNotesDataService","updateCommentsCountText","commentsCountText","currentCommentsCount","refreshComments","getNewNotes","length","parseInt","args","navbarController","$pbService","percentageComplete","progressIsSkipped","progressCircleOptions","color","$currentTheme","duration","strokeWidth","trailWidth","easing","text","autoStyleContainer","style","position","left","top","padding","margin","transform","prefix","value","fontSize","newPercentageComplete","set","simpleSearchController","$watch","newVal","busy","datasetName","nextResults","Error","workflowsForEntityController","addQuestion","questionViewModelConfigurationService","restrict","templateUrl","scope","toggleIsActive","addNewQuestion","link","element","attrs","questionTypes","model","newQuestionType","$type","titleAndPrompt","newQuestion","buildQuestion","close","directive","automaticFileUploader","dropZoneElementClass","allowedExtensions","label","fileType","parent","allowMultiple","maxFiles","transclude","uploads","fileName","percentComplete","totalBytes","uploader","qq","azure","FineUploaderBasic","endpoint","signature","customHeaders","id","matchingFile","toString","guid","BlobReference","FileName","uploadSuccess","chunking","concurrent","retry","enableAuto","button","find","multiple","validation","sizeLimit","autoUpload","deleteFile","callbacks","onComplete","responseJson","matchingUpload","success","Complete","UploadedByUserName","UserName","UploadedByEntityId","UploadedByEntity","Entity","upload","blobs","onUpload","onSubmit","uuid","v4","DateUploaded","Date","toISOString","Bytes","getSize","filter","map","join","reduce","add","$apply","onProgress","uploadedBytes","Math","floor","onError","reason","xhr","indexOf","warn","a","b","setItemLimit","DragAndDrop","dropZoneElements","processingDroppedFiles","processingDroppedFilesComplete","files","dropTarget","addFiles","uploadStoredFiles","Path","booleanSearchField","attribute","changeEvent","hasChangeEvent","booleanSearchFieldConfiguration","calcHeight","selector","convertPxToInt","val","setElementHeight","foundElement","childHeightElement","not","height","css","elementName","circleAutomaticFileUploader","uploadMessage","allowAllExtensions","expandedValidation","extraButtons","commentsTile","$document","badgeContext","popoverConfig","noCommentsIconPath","commentsIconPath","commentsTileClass","setNoteBadgeData","showBadge","comments","ProjectUnderwritingNotes","note","IsDeleted","badgeImage","badgeText","forEach","mode","assignedAccountManagers","AssignedAccountManagers","contactAllAccountManagers","contenteditable","$sce","require","ngModel","saveChanges","removeClass","$evalAsync","read","html","stripBr","stripped","$setViewValue","$render","getTrustedHtml","$viewValue","on","addClass","e","keyCode","stopPropagation","blur","convertToFloat","$parsers","parseFloat","$formatters","convertToInt","customClickOutside","clickOutside","clickOutsideSelector","clickOutsideIgnoreSelector","handler","ignoreElement","contains","$applyAsync","off","decimalSearchField","decimalSearchFieldConfiguration","editableTitle","cssClass","title","save","cancel","siblingNames","isInnerSection","saveTitle","cancelSaveTitle","entityCard","entity","cardStyle","actions","showBadges","toggleEntityAccordion","open","hasActions","callAction","actionName","call","preventSelection","entityIcon","iconObject","iconProperty","iconText","iconWidth","iconHeight","iconMode","parseDimension","parsed","isNaN","canShowIcon","iconUrl","isFirstLoad","truncateLabelLength","showNameBelow","expandRow","fileUploader","$http","$compile","$window","fileUploadsService","documentUpload","groupTitle","user","requireUpload","getGuid","idsAndGuids","matchingFileUpload","_","fileUploads","Guid","BlobSummaries","markFileAsComplete","markFileAsUploading","size","DocumentUploadTitle","DocumentUploadGroupTitle","UploaderId","TotalBytes","UploadedBytes","PercentComplete","Status","matchingIndex","findIndex","addUploader","formSearch","searchDataService","searchService","searchControlId","searchConfiguration","showResults","attributes","additionalQueryString","pageSize","pageNum","totalItems","queryModel","uri","Uri","numPages","orderBy","DefaultOrderBy","orderByDirection","DefaultOrderByDirection","toLowerCase","predicates","injectedPredicates","InjectedSearchCriteria","defaultPredicates","DefaultSearchCriteria","pageSizes","SearchCriteria","item","SearchFieldName","SearchCondition","PresetValues","condition","watch","getResults","Results","TotalResults","$emit","getAttributes","pageIndex","handleError","rootScope","elem","attr","el","compiledEl","replaceWith","informationPartDocument","workflowStateService","zipbuilderDataService","scrollingService","identifier","documentData","parentData","removeDocument","deleteUpload","canDelete","reorderMode","stateUpdatedEventName","updateDocumentPrompt","sessionEntity","thumbnails","updateZipDownloadButton","showZipDownload","blob","Access","View","IsRemoved","zipDownloadBlobReference","Prompt","setHasAvailableContent","hasAvailableContent","some","titleContext","editTitleData","Title","OriginalTitle","showPartners","Id","InformationParts","part","p","workflowTitleMode","Edit","editWorkflowTitle","saveWorkflowTitle","cancelSaveWorkflowTitle","toggleDetails","isCollapsed","buildZipFile","Blobs","filteredBlob","buildingZipFile","build","catch","err","hasNotesOrSharing","Partners","removeUpload","blobIndex","phase","toggleItem","ShowPartners","Notes","scrollTo","scrollToElementId","containerName","isVisible","onNoteAdded","noteCount","onNoteRemoved","noteId","noteToRemoveIndex","NoteId","splice","allowMultipleFiles","canReorder","informationPartQuestion","questionData","editorMode","removeQuestion","syncQuestion","access","editQuestionPromptModel","editQuestionContentModel","copy","toggleEditQuestionPrompt","editingQuestionPrompt","toggleEditQuestionContent","Options","option","IsSelected","editingQuestionContent","addOptionToQuestion","removeOptionFromQuestion","optionIndex","optionExists","optionPrompt","toggleOption","matchingOption","informationPartQuestionSet","questionSetData","removeQuestionSet","syncQuestionSet","Questions","question","updateText","toggleEditPrompt","editedPrompt","editingPrompt","selectedOption","SelectedOption","oldVal","equals","IsMultiSelect","addQuestionIsActive","toggleAddQuestion","reorderQuestions","questionIndex","integerSearchField","integerSearchFieldConfiguration","itemOperations","index","undefined","Array","move","old_index","new_index","moveItemUp","canMoveItemUp","moveItemDown","canMoveItemDown","removeItem","itemScroller","$templateCache","items","itemFillerContainerClass","fillerTemplateUrl","visibilityContainerName","defaultItemWidth","visibiltityContainerName","firstItemIndex","lastVisibleItemIndex","currentPosition","canGoBackward","canGoForward","itemCapacity","hiddenItemsCount","shownItemsCount","listElement","containerElement","recalculateStyles","containerLeft","offset","containerRight","width","fillerCount","min","lowerBound","upperBound","fillerRange","i","moveForward","moveBackward","itemTile","imageUrl","description","path","click","ivViewer","lowResUrl","hiResUrl","ImageViewer","load","ivViewerGallery","images","currentImageIndex","currentImageViewer","total","wrapper","container","showImage","destroy","imageElement","imageElements","imageEl","toArray","showNext","showPrevious","mdTheme","overflowToggle","toggleButtonExpandText","toggleButtonCollapseText","toggleTriggerName","toggleTriggerMatchData","toggleEnabled","showToggleText","maxHeight","toggleButtonClass","toggleButtonId","toggleButtonScrollOffset","isExpanded","toggleOffset","expandedHeight","toggleOverflow","isInitialized","templateWithoutText","templateWithText","append","initialized","phaseDocuments","removeRequiredDownload","templates","template","removeTemplate","templateIndex","downloadIndex","toggleRequiredDownloadEdit","requiredDownloadIndex","isEditingTitle","saveRequiredDownloadPrompt","OriginalPrompt","updateRequiredDownloadPrompt","toggleBlobSummaryEdit","saveBlobSummaryFileName","FileNameWithoutExtension","OriginalFileNameWithoutExtension","Extension","updateBlobSummmaryFileName","phaseQuestionSets","originalQuestionSetData","backupQuestionSet","platformEntityReferralGenerator","platformEntityReferralDataService","referralData","shareAction","initiallyActivated","hideButton","onActivated","onClosed","formController","formData","isActive","activate","referralSubmitted","companyName","firstName","emailAddress","send","createPlatformEntityReferral","PlatformId","platformId","SiteConfigurationId","siteConfigurationId","CompanyName","FirstName","LastName","lastName","EmailAddress","ReferralObject","ReferrerEntityId","referrerEntityId","ObjectType","objectType","ObjectId","objectId","ObjectReferralPath","objectReferralPath","ObjectReferralMessage","objectReferralMessage","ResponseType","partner","Value","referralSent","productCard","product","actionText","action","toggleProductAccordion","onElementClick","searchFieldConfiguration","setClassWhenAtTop","$win","stateNames","setClass","is","topClass","offsetTop","fixToTop","scrollTop","simpleSearch","searchFieldName","searchCondition","searchFieldPrompt","defaultOrderBy","defaultOrderByDirection","isLoading","showPager","allowPageSizeChange","enableSearchBox","getAllResults","pagerElement","pagerEvent","canInfiniteScroll","firstDataLoad","dataLoaded","isAppending","concat","isAllDataLoaded","resultsReady","skipTabbing","$set","sortColumn","columnName","activeSortDirection","activeSortColumnName","sortClick","changeSort","statusSearchField","statusSearchFieldConfiguration","stopEvent","textSearchField","exists","Selected","toggle","textSearchFieldConfiguration","collapsedClass","expandedClass","toggleContent","children","first","show","hide","valueNotInListValidate","valuesList","unshift","valid","$setValidity","wirePopover","contextId","togglePopoverClicked","isPopoverClicked","closePopover","isPopoverOpen","wizardProgress","numberOfSteps","currentStepIndex","stepColumnSize","2","3","4","getNumber","num","wizardSearch","presetAttributes","returnToWizardPrompt","isHidden","showResultsPrompt","currentWizardStep","isWizardComplete","WizardSteps","PreselectedValues","preselectedValues","PreviousStepIndex","lastStepBeforeCompletion","Name","stepIndex","wizardStep","previousStepPredicate","predicate","optionValue","isArray","uniq","fieldName","optVal","indexOfItemToRemove","details","difference","valueIndex","retreatStep","advanceStep","stepsToAdvance","wizardStepOptions","stepHasMultipleOptionsSelected","stepsToAdvanceValue","StepsToAdvance","Completed","stepValueIsSelected","intersection","stepHasSelectedValue","hasResults","formatted","charVal","substring","toUpperCase","wordwise","max","tail","substr","lastspace","lastIndexOf","encodeUriComponent","encodeURIComponent","arrayProperty","arrayItems","excludeArrayItems","excludeArrayProperty","excludeItem","applicants","allApplicantIds","applicant","filteredData","include","projectSharingConnections","projectEntityId","allSharingPartnerIds","attributeData","formattedValue","joinedList","joinedTextValueList","matchingValue","Text","searchFields","j","joinChar","format","returnString","test","range","output","l","capRe","Humanize","titleCase","slice","wasPreviousCharSeparator","initialize","_chatlio","IsGuest","configure","requireInfo","identify","EntityType","Contact","email","site","SiteName","document","addEventListener","service","configurationOptionsDataService","baseUrl","loadMasterConfigurationOptions","loadConfigurationOptions","loadGeneralConfigurationOptions","contractorDataService","loadContractor","saveContractor","put","contractorProjectDataService","loadContractorProject","saveContractorProject","deleteUploadBlob","blobReference","deleteContractorProject","delete","createEntityTypesDataService","getCreatePlatformEntityTypes","dashboardFeaturesDataService","loadDashboardFeatures","entityAdminEditsDataService","myProfileData","loadAdminEntityEdits","updateAdminEntityEdits","entityAdminEdits","entityDataService","createEntity","post","isError","findAPartnerService","currentPartnerType","findAnEntityOptions","getPartnerType","setPartnerType","partnerType","getFindAnEntityOptions","setFindAnEntityOptions","newFindAnEntityOptions","functionsConfigurationDataService","loadConfiguration","sendProjectReminder","projectId","sendPremiumUpgradeRequest","sendWorkflowSharingUpdate","sendWorkflowUpdate","sendConnectionRequest","sendPublishedUpdate","sendRequestForProposalResponseCreated","sendRequestForProposalResponseUpdate","sendRequestForProposalRespondentUpdate","milestoneModalService","$uibModal","myProfileDataService","openModal","milestonesAndTemplates","resolve","windowClass","result","completedMilestoneNames","updateMilestones","getMilestonesAndTemplates","milestones","loadMyProfile","profile","milestone","Milestones","MilestonesAndLinkedTemplateIds","milestoneName","templateId","svc","when","loadEntityProfile","updateMyProfile","updateEntityProfile","toastr","message","allowHtml","closeButton","timeOut","extendedTimeOut","platformEntitiesDataService","loadPlatformEntity","updatePlatformEntityReferral","removePlatformEntityReferral","ObjectPath","productDefinitionDataService","loadProductDefinitions","loadProductDefinition","productTypeConfigurationOptionsDataService","profileDataService","namespace","FreeFormTextQuestionFlavor","CanSkip","questionName","prompt","matchingQuestionType","qType","assign","requestForProposalDataService","loadRequestForProposal","saveRequestForProposal","deleteRequestForProposal","requestForProposalResponseDataService","loadRequestForProposalResponse","loadRequestForProposalResponsesForRequestForProposal","createRequestForProposalResponse","saveRequestForProposalResponse","deleteRequestForProposalResponse","requestOptionsDataService","currentScrollingTarget","elementToScrollTo","scrollDuration","getElementById","scrollToElementAnimated","searchConfigurationDataService","loadEntitiesSearch","workflowId","loadProductDefinitionsSearch","body","queryOptions","key","matchingInjectedPredicate","matchingPredicate","matchingDefaultSearchPredicate","IsOverride","isNumber","isFinite","isBool","processPredicate","predictateKey","predicateObject","field","methodType","leftoverInjectedPredicate","leftoverDefaultPredicate","getQueryOptions","pageNumber","orderByField","searchFieldConfigurationsDataService","loadSearchFieldConfigurations","entityType","loadSearchFieldConfigurationsForSite","siteName","signalrService","getConnectionInfo","thumbnailsDataService","loadThumbnails","loadThumbnailsForWorkflows","workflowIds","WorkflowIds","loadThumbnailsForObjectPaths","workflowPaths","WorkflowPaths","loadThumbnailsForWorkflowsAndPaths","workflowsAndPaths","WorkflowsAndPaths","workflowConfigurationDataService","apiBaseUrl","loadLinkedTemplate","loadHtmlTemplate","getWorkflowConfiguration","workflowDataService","loadWorkflow","saveWorkflow","deleteWorkflow","getEntitySearches","createWorkflow","t","createWorkflowForEntity","registrationRouteConfig","$stateProvider","state","controllerAs","registrationConfiguration","registrationDataService","$filter","getRegistrationOptions","Entities","entityTypeUnderscores","views","register","demo","showProgressHeader","homepageRegistrationModalController","$uibModalInstance","$cookies","ReferralCampaign","ReferralToken","errors","submit","hideButtons","AccountType","EditableEntityType","registerEntity","Errors","remove","canCheckBox","accepted","HasAcceptedTermsOfService","clicked","iframe","contentWindow","scroll","innerHeight","registerEntityController","STATES_LIST","statesList","registerEntityHomePageController","isLoggedIn","registrationSelectorController","formattedEntityType","registrationGroups","group","tileClass","entities","tileIndex","requestDemoController","requestDemoDataService","states","isSuccess","State","requestDemo","requestDemoSmallController","crmRouteConfig","canChoosePartnerType","canChooseEntityType","defaultEntityType","$stateParams","Attributes","Mode","AdminAttributes","CanAccessAdminEdits","dashboardActivities","dashboardActivityOptionsDataService","getDashboardActivityOptionsForEntity","platformEntityTypes","assignAccountManagersController","crmActionsDataService","accountManagerDataService","accountManagersData","accountManagerTypes","configurationOptionsData","AccountManagerTypes","loadAll","accountManagers","addAssignedAccountManager","saveAssignedAccountManagers","assignAccountManagersForm","$valid","assignAccountManagers","toJson","contractor","alert","createEntityController","CompanyDetails","keys","crmController","getWorkflowsUrl","getSharedWorkflowsUrl","getRfpsUrl","getRfpResponsesUrl","editEntityController","entityProfilePercentageCompleteCalculatorService","createNewPopoverUrl","currentProfilePanelIndex","baseProfileCompletedPercentage","isProfileEditorVisible","allowedLogoUploadFileExtensions","updateErrors","toggleEditMode","goBack","history","back","stayInEditMode","myProfileForm","calculateProfileCompletedPercentage","$setPristine","errorResponse","profileCompletedPercentage","profilePanelCount","Logo","requestForProposalResponsesSearchController","requestForProposalsController","resourcePartnerConnectionSummariesController","resourcePartnerConnectionsDataService","resetEditor","currentResourcePartnerConnection","currentResourcePartnerConnectionIndex","isActiveRow","editResourcePartnerConnection","originalStatus","cancelEditResourcePartnerConnection","saveResourcePartnerConnection","update","PartnerId","ActivityDate","loadProjectsForEntity","loadWorkflowsForEntity","projectApplicationRequestsDataService","getAvaliableProjects","createProjectApplicationRequests","resourcePartnerId","dashboardRoutes","myProfile","dashboardFeatures","PlatformEntityId","getDashboardActivityOptions","mostRecentItems","mostRecentItemsDataService","getMostRecentItems","mostRecentItemsThumbnails","WorkflowId","newNotesData","thumbnailsData","Note","milestonesAndProfile","milestoneNames","applyForProjectsController","commentsController","setMode","x","thumbnailMatch","Thumbnails","IsTemplate","ThumbnailUrl","crmAccountEditorController","ReplaceFile","tinymceOptions","menubar","statusbar","resize","plugins","advlist_bullet_styles","toolbar","valid_elements","debounce","directPartnerConnectionEditorController","directPartnerConnectionsDataService","project","requestedPartners","DefaultPageSize","isPortalAdmin","isSearchHidden","toggleSearchVisibility","togglePartnerConnection","isSelected","createDirectPartnerConnectionRequests","createRequests","createBatch","createDirectPartnerRequest","togglePartnerIntroduction","partnerConnections","partnerIds","indexOfPartnerToAdd","LastActivityDate","Partner","doAction","changePageIndex","changePageSize","editMyProfileController","profilePanels","ViewModelType","workflowsUrl","simplePublish","IsPublished","updatePublishingState","openPublishingAlert","simpleUnpublish","premiumPublish","IsPremiumAccount","publishActions","Self","SelfAndAdmin","Premium","unpublishActions","isEntityPublishable","PublishingType","isEntityUnpublishable","publishingState","modelOptions","updateOn","change","newPct","setProfilePanel","toggleProfileEditor","permissionMappingExists","list","listItem","permissionMappingToggle","matchingItem","updateAdminEdits","adminEditsForm","updateAdminEditsErrors","entityActivitiesController","showIncompleteProfileMessage","entityDashboardController","showOpportunities","showSharing","showSiteNameInLists","SiteMappings","IsAdminEntity","DashboardActivityOptionType","matchingThumbnailObj","toggleCreateNewMenu","showCreateNewMenu","entityPublishingModalController","ok","milestoneModalController","milestoneAndTemplate","isMarkedComplete","updatePosition","currentMilestoneIndex","canGoBackwards","goForward","goBackwards","searchController","globalCommentsMenu","totalPercentage","TelephoneNumber","trim","City","ZipCode","Address","Url","Narrative","getResolvedNotes","siteConfigurationRouteConfig","createMode","siteId","configurationData","configurationDataService","adminEntityConfigurationsData","adminEntityConfigurationDataService","adminEntityConfigurationData","adminEntityType","loadSummaries","adminEntityConfigurationEditorController","FriendlyId","configurationOptions","addItem","property","logConfiguration","saveConfiguration","adminEntityConfigurationForm","adminEntityConfigurationsController","adminEntityConfigurations","configurationEditorController","setUpSearchCriterion","searchCriterion","Type","TextSearchFieldType","getAllEntityTypes","allEntityTypes","originalEntityTypes","configuredEntityTypes","getAllEntitySearchFields","allEntitySearchFields","flatten","SearchFields","FriendlyPrompt","adminEntity","DefaultEntitySearchFields","searchField","searchableAdminEntities","AdminOnly","IsSelectedByDefault","configurationIsValid","allProductSearchFields","productSearchFieldsMap","AllProductSearchFields","AdditionalEntityTypes","Resources","EntitySearches","search","setDefaultSearchCriteriaFromTemplate","refreshAllEntityTypes","refreshAllEntitySearchFields","siteConfigurationForm","createConfiguration","logSearchData","siteConfigurationMainController","siteConfigurationsController","siteConfigurations","loadAllConfigurations","activityConfiguration","adminEntityConfiguration","documentConfiguration","documentResourcesGroupConfiguration","documentResourcesGroupConfigurationContent","documentUploadConfiguration","documentUploadGroupConfiguration","entityConfiguration","formSearchConfiguration","freeFormTextQuestionConfiguration","informationPartConfiguration","internalContentConfiguration","internalContentPhaseInformationPartConfiguration","linkResourcesGroupConfiguration","linkResourcesGroupConfigurationContent","optionConfiguration","optionsQuestionConfiguration","phaseConfiguration","phaseInformationPartConfiguration","questionConfiguration","questionGroupConfiguration","questionSetConfiguration","requestForProposalConfiguration","requiredDownloadConfiguration","requiredDownloadData","linkedTemplatesList","searchConfigurationContent","searchFieldsProperty","siteConfiguration","wizardSearchConfiguration","workflowConfiguration","workflowPhaseConfiguration","yesNoQuestionConfiguration","workflowRouteConfig","adminMode","workflowConfigurationData","functionsConfigurationData","workflowData","setThumbnails","roadmapThumbnails","phasePaths","Phases","filteredPhase","entitySearches","phaseThumbnails","workflowThumbnailsService","getThumbnails","entitySearchConfiguration","entitySearchIndex","contractorProjectController","$interval","workflowProcessingService","sharedMode","selectedFiles","productQualifications","convertToDecimal","newValue","nextPhaseSummary","getNextPhaseSummary","Project","CurrentPhaseIndex","getEditorUrl","phaseIndex","switchPhase","getReviewUrl","phaseHasMarketingMaterials","array","accessingEntityId","CurrentProjectExtensionIndex","CurrentProjectExtension","CurrentProjectPhaseExtensionIndex","CurrentProjectPhaseExtension","CurrentPhaseForExtensionIndex","projectOwnerMode","isInternalDetailsExtensionAvailable","extension","AllowAdminAccess","contractorProjectId","removeProjectSharingConnection","ProjectExtensions","ProjectSharingConnections","connection","deleteProductQualification","hasProductQualifications","ProjectPhaseExtensions","ProductQualifications","allProjectPhaseExtensions","chain","pluck","HasPartners","PartnerConnections","HasTasks","EditorMode","IsProjectApplication","IsUploadProject","CanShareWithPartners","HasMyTeam","productSelectionExtension","extensionIndex","shareWithPartnersExtension","LockedForProjectOwner","HasInternalDetails","NextPhaseSummary","phaseHasDocuments","DocumentUploads","isLastPhase","blobDeleteData","saveData","deletedFileName","toggleLockProjectForOwner","unskipPhase","submitPhase","contractorProjectForm","advancePhase","modal","skipPhase","updatePhase","editExtension","saveExtension","form","cancelSaveExtension","clearProjectExtensionForm","defaultValues","attrname","editMyTeam","myTeamExtension","logToConsole","editPhaseExtension","phaseType","phaseData","savePhaseExtension","cancelSavePhaseExtension","setProductQualifications","ProductGroups","ProductDefinitions","ProductId","Product","createWorkflowController","configuration","viewModel","workflowIconStyle","IconFileName","deletePhaseModalController","deleteWorkflowModalController","workflowTypeIdentifier","deleteMessage","findAPartnerController","initialPartnerIds","EntitySearchIndex","initialPartnerConnectionIds","productSelectionController","initialProductIds","ProductDefinitionSearchIndex","toggleProductApplication","productIds","indexOfProductToAdd","extensionData","removePhaseModalController","phaseTitle","shareWithPartnersController","querySucceeded","partners","selectedSharingPartners","selectedPartner","searchFormTitle","EntityTypes","dynamicField","togglePartnerSelection","indexOfEntityToAdd","extraParameters","workflowController","canSeeWholeWorkflow","WorkflowTypeIdentifier","stateParams","tabs","workflow.roadmap","header","active","additionalStates","workflow.navigator","workflow.documents","workflow.internalfiles","InternalContent","workflow.notes","workflow.sharing","workflow.summary","updateProgressBar","startAtZero","animate","progressPercentageComplete","class","placement","outsideSelector","outsideIgnoreSelector","trailColor","saveLocalTitle","currentStateName","titleBarButtons","changeTab","workflowReorderMode","workflowReorderModeToast","clear","isCommentsPopoverVisible","popoverContext","PercentageComplete","workflowViewMode","showTitleBarButton","deleteProjectButton","wasDeleted","addPhaseButton","newPhaseCount","startsWith","addPhase","resolveNotesForPath","togglePhaseSkip","showProgress","phaseIndexToAdvanceTo","toggleWorkflowReorderMode","info","closeHtml","onHidden","newProgressPercentageComplete","isRequiredDownloadCollection","workflowObject","getObjectFromPath","Context","RecordedActivity","Description","UsersToNotify","filteredPartner","fileNames","tabName","updateName","negotiate","Code","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","accessToken","dir","depth","existingThumbnails","every","thumbnailBlobReference","BlobReferences","onclose","start","workflowDocumentsController","buildPhaseDocs","phaseDocs","prefilteredPart","allBlob","Phase","documents","doc","sort","reverse","workflowInternalFilesController","hasNoContents","informationPart","isAddingInformationPart","toggleAddMenuDropdown","$event","isAddMenuOpen","addToPhaseMenuItems","activateAddDocument","iconClass","activateAddQuestionSet","isAddingQuestionSet","isAddingDocument","removeInformationPart","partIndex","removeInformationPartFromInternalContent","addingInformationPartType","activateAddInformationPart","type","addInformationPart","addInformationPartToInternalContent","reorderInformationParts","informationPartIndex","workflowMainController","workflowNavigatorController","hlStickyStack","filteredPhases","setFilteredPhases","currentPhaseIndex","updateNavigationStates","updateProgressCircles","routePhaseIndex","isAddingRequiredDownload","allowSearchEditing","currentPhaseHasRequiredDownloads","currentPhaseHasNotes","toggleEditPhaseHeaderCopy","isEditingHeaderCopy","activateEditPhaseHeaderCopy","HeaderCopyHtmlOverride","HeaderCopyHtmlTemplateId","OriginalHeaderCopyHtmlOverride","Html","closeEditPhaseHeaderCopy","triggerMatchData","navigatorPartnersPopoverConfig","setInformationPartPopovers","RequiredDownloads","requiredDownload","requiredDownloadCommentPopoverClass","partnerPopoverClass","blobSummary","blobSummaryCommentPopoverClass","clientY","stack","Index","download","BlobSummary","isAddingNote","canNavigateForward","canNavigateBackward","phasePercentageComplete","eventName","isDefined","mousePosition","window","pageYOffset","stackHeightCurrent","heightCurrent","stackHeightAtPosition","heightAt","toggleAddNote","navigateToPhase","navigate","navigateToNextInProgressPhase","indexToNavigateTo","unfinishedPhaseIndices","navigateForward","navigateToPhaseFromUserAction","navigateBackward","previousPhases","removeRequiredDownloadFromPhase","removeInformationPartFromPhase","topProgressCircleOptions","smallProgressCircleOptions","progressCircleOptionsSkipped","smallProgressCircleOptionsSkipped","percentChanged","focus","activateAddRequiredDownload","addInformationPartToPhase","updatePhaseIndex","toggleSkipPhase","arrayPhaseIndex","advanceMode","advanceToNextPhase","reorderRequiredDownloads","reorderPhaseInformationParts","saveSearchChanges","updatePrompt","onPhaseNoteAdded","onPhaseNoteRemoved","workflowNotesController","buildNotes","underwritingNotesMap","UnderwritingNotes","prev","objectFromPath","notes","cleanPath","getCleanPath","UpdatedDate","workflowPathController","object","getRouteDataFromPath","route","workflowRoadmapController","copyTogglesEnabled","commentPopoverClass","projectPartnersPopoverConfig","showRemovePhasePrompt","removePhase","reorderPhases","activateAddPhase","isAddingPhase","addPhaseData","PhaseTitle","resetAddPhase","AdminEntitySearchIndex","workflowSharingController","updateSharingConnectionsStatus","hasSharingConnections","SharingConnections","IsVisible","updateWorkflowData","IsSharedAtProjectLevel","PathAndPermissionMappings","mapping","canShareAtProjectLevel","AccessLevel","canRemoveSharingLevel","canTogglePrivatePartnerConnection","flippedOwnerPermissions","AdminConfigModifyingOnly","AdminSharingOnly","AdminUnderwritingNotesOnly","canEditOwnerPermissions","canEditPermission","permission","removeSharingConnection","entityConnection","PathsAndPermissions","pathAndPermission","toggleSharingPermission","Permissions","projectLevelChanges","shareAtProjectLevel","permissions","Share","SharedWithEntityId","toggleOwnerPermission","togglePrivatePartnerConnection","connectionPathAndPermissions","pathAndPermissions","IsPrivate","workflowSharingSearchController","returnToPhaseIndex","returnToState","workflow","isAdmin","currentPartners","getPartners","selectedEntityIds","stateName","stateObject","hasAdminEntitySearch","adminEntitySearchIndex","hideReferralButton","toggleSharingConnection","matchingPartner","addedConnection","updatePartners","toggledEntityIdIndex","requestIntroduction","RequesterEntityId","RequesteeEntityId","activateReferral","workflowSummaryController","hasAdminStatuses","attributeOptions","hasStatuses","hasAttributes","hasAdminAttributes","updateField","redirectToEntityViewer","entityActions","view","openDeleteAlert","titleAndPromptModel","addPhaseForm","$setUntouched","addRequiredDownload","uploadContext","stagedUpload","removeStagedUpload","addRequiredDownloadToPhase","addUnderwritingNote","onAdd","parentCollection","newNote","addNote","saveUnderwritingNote","addWorkflowInformationPart","informationParts","informationPartType","updateSiblingNames","addPhaseInformationPartForm","placeholder","addDocument","addQuestionSet","modelChange","commentEditor","savePrompt","editCommentModel","editComment","cancelEditComment","originalPartners","getPartnersForPath","filteredPartners","partnerSearchText","saveAction","targetUsers","m","regex","str","exec","lastIndex","match","matchPartner","getTargetUsers","saveCommentText","cancelAction","keyUp","eventElem","caret","ctrl","end","setSelectionRange","selectionStart","selectionEnd","selection","createRange","duplicate","moveStart","getCaretPosition","lastWord","showDropdown","comparisonValue","selectPartner","commentsMenu","resetAddCommentState","addCommentObject","resetSaveCommentState","comment","saveCommentObject","originalComment","session","IsResolved","CreatedByEntityId","outerComments","CanResolve","deleteComment","removeUnderwritingNote","matchingComment","originalNoteText","addComment","addCommentObjCopy","CreatedByUserName","CreatedByEntity","TargetUsers","cancelAddComment","saveComment","cancelSaveComment","UpdatedByUserName","resolveComment","resolveUnderwritingNote","contractorProject","documentUploadGroup","InformationPart","htmlTemplate","referenceId","htmlTemplateId","linkedTemplateReference","linkedTemplateId","partnerFanOut","$mdDialog","canAddPartners","maxPartnersToShow","showAddPartnersPrompt","isLoaded","sharingState","expandedPartners","additionalPartnerCount","goToEntitySearch","Number","openPartnersMenu","$mdOpenMenu","ev","partnerSelector","referrals","clearSearch","partnerSearchResults","partnerSearchResultsTotalItems","showInviteMessage","partnerSearch","addPartnerSearchValue","showInvalidEmailMessage","IconText","pathObject","pathAccess","expandedReferrals","referral","r","Data","isSharingButtonActive","totalPartnersCount","pathMarker","owner","canManagePartnerPermissions","showPartnersMenu","togglePartnersMenu","toggleManageOwner","IsExpanded","permissionValue","toggleManagePartner","togglePartnerVisibility","toggleManageReferral","toggleReferralPermission","ObjectData","toggleReferralVisibility","removeReferral","getPartnerSearchResults","ContactName","existingShares","filteredResults","addSharingConnection","addReferral","String","basicPermissions","ObjectReferralData","addPartnerForm","phaseDrawSchedule","drawScheduleData","Items","DatePickerIsOpen","DrawDate","updateDrawSchedule","DrawScheduleForm","syncDrawSchedule","addDrawScheduleItem","removeDrawScheduleItem","openDatepicker","projectDrawScheduleItemsCollection","Datepickers","parentCtrl","ProjectDrawScheduleItems","addDatepicker","removeDatepicker","questionGroup","saveProgress","uploaders","sharingDetails","underwritingNote","noteData","noteIndex","onRemove","resetState","canSave","removeNote","editNote","saveNote","IsNew","cancelEditNote","workflowPhase","phaseContainer","hasDownloads","hasUploads","hasQuestions","datepickers","datepickerIsOpened","which","uploaderIndex","LinkedTemplateIds","removeFile","selectedFile","showContainerData","workflowPhaseIcon","skipped","allProductIds","productQualification","resourcePartnerConnections","allResourcePartnerIds","resourcePartnerConnection","ResourcePartnerId","fileUploaders","fileUpload","fileUploadIndex","uploadFiles","phases","NextPhaseIndex","NextPhaseTitle","onUploadsComplete","phasesContainer","onAdvanceComplete","onUnskipComplete","pathParts","pathPartsLeftCount","pathString","getAccessToPath","sharingPathsAndPermissions","workflowAccessLevel","defaultSharingAndShowPartnersPermissionForOwnersAndAdmins","sortedPathsAndPermissions","isInternalFiles","getUnderwritingNotesForPath","originalCollection","updateInformationPart","skipPartnersAndNotes","Referrals","getReferrals","sharingPartner","sharingConnection","notesCount","notesText","blobCount","ExpandText","pop","questionCount","hasQuestionContent","UploadedByCleanName","silent","ownerEntityId","Role","UpdatedByCleanName","UpdatedByEntity","createPhaseDescription","descriptionStripped","cutDescription","hasNoDocuments","hasNoQuestionSets","forceSave","OriginalPercentageComplete","getPhasePercentageComplete","updateRequiredDownload","originalPhaseIndex","isPrivate","pathName","PathName","updateWithSessionData","allPartners","matchingPermission","pp","isQuestionSetComplete","questionSet","numberOfCompletedItems","numberOfItems","removeSharingConnectionsForPath","requiredDownloadToRemove","matchingPhase","informationPartToRemove","phaseToRemovePrompt","phasePath","blobPath","internalInformationPartIndex","isAlreadyComplete","drawSchedule","existingNote","noteItem","originalNote","UpdatedByEntityId","noteDate","workflowNote","notesIdsToBeArchived","UnderwritingNoteArchives","allPaths","blobSummaryPaths","blobSummaries","requiredDownloadPaths","filtered","requestForProposalConfig","rfpData","requestForProposalStateService","rfpId","adminEntitySearchConfiguration","rfpResponses","onEnter","rfpResponseData","rfpResponseId","dismiss","$dismiss","$close","finally","requestForProposalResponseStateService","deleteRequestForProposalModalController","deleteRequestForProposalResponseModalController","entityName","requestForProposalBasicInformationController","updateRfp","formWatcher","BasicInformationForm","canAdvance","requestForProposalContentController","canDeleteInformationPart","toggleRfpContentReorderMode","rfpContentReorderMode","rfpContentReorderModeToast","toggleRfpContentPreviewMode","rfpContentPreviewMode","rfpContentPreviewModeToast","updateDocumentPromptForRfpContent","deleteUploadForRfpContent","removeInformationPartFromRfpContent","syncRfpContentQuestionSet","addInformationPartToRfpContent","requestForProposalController","rfp.basicInformation","rfp.content","rfp.findRespondents","rfp.responseContent","rfp.responses","canEditContent","canEditResponseContent","canFindRespondents","documentObject","requestForProposalFindRespondentsController","updateRespondentsToIgnore","rfpRespondentsToIgnore","compositeAttributes","ApplicantAttributes","pendingUpdate","activateSearchOptions","showCriteria","hasAdminSearch","adminApplicantAttributes","adminAttributes","adminResults","showAdminResults","adminConfig","adminPageIndex","adminPageSize","adminTotalItems","updateNoResults","resultsCopy","noResults","hasCompositeAttributes","updateNoAdminResults","adminResultsCopy","noAdminResults","contactRespondent","toggleRespondent","newRfpResponse","RequestForProposalId","matchingResponse","removedResponse","RequestForProposalResponseEntity","RequestForProposalResponseId","selectEntityActions","adminSelectEntityActions","requestForProposalResponseContentController","ResponseContent","togglerfpResponseContentReorderMode","rfpResponseContentReorderMode","rfpResponseContentReorderModeToast","toggleRfpResponseContentPreviewMode","rfpResponseContentPreviewMode","rfpResponseContentPreviewModeToast","updateDocumentPromptForResponseContent","deleteUploadForResponseContent","removeInformationPartFromResponseContent","syncRfpResponseQuestionSet","addInformationPartToResponseContent","requestForProposalResponseController","rfpResponse.rfpSummary","rfpResponse.responseEditor","requestForProposalResponseEditorController","hasPermissionsSet","rfpEntityActions","updateRfpResponse","ResponseStatus","HasBeenSubmitted","requestForProposalResponseRfpSummaryController","rfpSummaryMode","hasRequiredDownloads","RequestForProposal","noopFunction","noop","requestForProposalResponsesController","responseStatuses","awardStatuses","updateResponseAvailabilityStatus","IsAvailable","recordedActivity","saveAndSendEmailUpdate","updateResponseAwardStatus","awardStatusText","AwardStatus","openProposal","rfpResponse","responseActions","showProposal","deleteProposal","rfpResponseReorderMode","matchingInformationPart","rfp","responseContentInformationPartIndex","subscriptionsRouteConfig","plans","subscriptionSignupController","selectedPlanId","iframeIsReady","iframeSource","routeFirstLoaded","planId","maxPlanPrice","apply","plan","PeriodUnit","Price","totalCost","AnnualSavings","loadSignupForm"],"mappings":"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","file":"../app.min.js","sourcesContent":["(function () {\n 'use strict';\n\n angular.module('ecap', [\n //External modules (must be defined first followed by our own modules):\n 'ngAnimate',\n 'ngSanitize',\n 'ngMessages',\n 'ngAria',\n 'ngCookies',\n 'ngMaterial',\n 'ui.router',\n 'ngSanitize',\n 'ngRoute',\n 'duScroll',\n 'ui.bootstrap',\n 'ui.slider',\n 'ui.tinymce',\n 'checklist-model',\n 'angularProgressbar',\n //'sticky',\n 'hl.sticky',\n 'dndLists',\n 'toastr',\n 'slick',\n 'angularTrix',\n 'infinite-scroll',\n //Our modules:\n 'ecap.common',\n 'ecap.registration',\n 'ecap.crm',\n 'ecap.dashboards',\n 'ecap.siteConfiguration',\n 'ecap.workflow',\n 'ecap.requestForProposal',\n 'ecap.subscriptions'\n ]);\n\n var EcapRun = function ($rootScope, $state, $log, chatlioService) {\n //chatlioService.initialize();\n\n $rootScope.$state = $state;\n\n $rootScope.$on('$stateChangeStart', function (evt, to, params) {\n if (to.redirectTo) {\n evt.preventDefault();\n $state.go(to.redirectTo, params, { location: 'replace' });\n }\n });\n\n $rootScope.$on('$stateNotFound',\n function (event, unfoundState, fromState, fromParams) {\n $log.debug(unfoundState.to); // \"lazy.state\"\n $log.debug(unfoundState.toParams); // {a:1, b:2}\n $log.debug(unfoundState.options); // {inherit:false} + default options\n });\n\n $rootScope.$on('$stateChangeError',\n function (event, toState, toParams, fromState, fromParams, error) {\n $log.debug(toState);\n $log.debug(toParams);\n $log.debug(fromState);\n $log.debug(fromParams);\n $log.debug(error);\n });\n\n $rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){\n $log.debug('$stateChangeSuccess to '+\n toState.name +\n '- fired once the state transition is complete.');\n });\n\n $rootScope.$on('$viewContentLoading',function(event, viewConfig){\n $log.debug('$viewContentLoading - view begins loading - dom not rendered',\n viewConfig);\n });\n };\n\n EcapRun.$inject = ['$rootScope', '$state', '$log', 'chatlioService'];\n angular.module('ecap').run(EcapRun);\n\n var EcapConfig = function ($httpProvider, $routeProvider, $locationProvider,\n $urlRouterProvider, toastrConfig, $mdIconProvider) {\n\n $mdIconProvider\n .defaultFontSet('FontAwesome')\n .fontSet('fa', 'FontAwesome');\n\n $httpProvider.interceptors.push('httpInterceptor');\n\n //use html5 mode to enable the use of regular urls without the use of hasbangs.\n var ishtml5Mode = ($('html').hasClass('history'));\n if (ishtml5Mode) {\n $locationProvider.html5Mode({\n enabled: true,\n rewriteLinks: false\n });\n }\n $locationProvider.hashPrefix('!');\n\n function replaceDynamicList(obj) {\n var k;\n var has = Object.prototype.hasOwnProperty.bind(obj);\n for (k in obj) if (has(k)) {\n switch (typeof obj[k]) {\n case \"object\":\n if (obj[k] != null && obj[k][\"$values\"]) {\n obj[k] = obj[k][\"$values\"];\n }\n else {\n replaceDynamicList(obj[k]);\n }\n break;\n }\n }\n\n return obj;\n };\n\n $httpProvider.defaults.transformResponse.push(function (response) {\n return replaceDynamicList(response);\n });\n\n // Example of using function rule as param\n $urlRouterProvider.otherwise(function ($injector, $location) {\n // do nothing\n });\n\n tinyMCE.baseURL = '/bundles/js/tinymce';\n\n angular.extend(toastrConfig, {\n autoDismiss: false,\n containerId: 'toast-container',\n maxOpened: 0,\n newestOnTop: true,\n positionClass: 'toast-top-full-width',\n preventDuplicates: false,\n preventOpenDuplicates: false,\n target: 'body'\n });\n };\n\n EcapConfig.$inject =['$httpProvider', '$routeProvider', '$locationProvider', '$urlRouterProvider', 'toastrConfig','$mdIconProvider'];\n angular.module('ecap').config(EcapConfig);\n\n var httpInterceptor = function ($q, $rootScope, $injector) {\n function modifyRequest(requestOptions, req) {\n if (requestOptions.AuthorizationHeader) {\n req.headers['Authorization'] = requestOptions.AuthorizationHeader;\n }\n\n var baseUrlSegment = req.url.split('/')[0].replace('[', '').replace('Host]', '');\n if (requestOptions.ApiBaseUrls[baseUrlSegment]) {\n req.url = req.url.replace('[' + baseUrlSegment + 'Host]/', requestOptions.ApiBaseUrls[baseUrlSegment]);\n }\n }\n\n var requestOptions;\n var interceptor = {\n responseError: function (response) {\n $rootScope.$broadcast(\"response_error\", response.status);\n return $q.reject(response);\n },\n request: function (req) {\n if (req.url === '/requestoptions') {\n if (!requestOptions || !requestOptions.TokenExpirationDate ||\n moment.utc().isAfter(moment(requestOptions.TokenExpirationDate))) {\n req.cache = true;\n }\n\n return req;\n }\n\n if (!requestOptions || moment.utc().isAfter(moment(requestOptions.TokenExpirationDate))) {\n return $injector.get('requestOptionsDataService').getRequestOptions()\n .then(function (res) {\n requestOptions = res;\n modifyRequest(requestOptions, req);\n return req;\n });\n }\n else {\n modifyRequest(requestOptions, req);\n return req;\n }\n }\n }\n return interceptor;\n };\n\n httpInterceptor.$inject = ['$q', '$rootScope', '$injector'];\n angular.module('ecap').factory('httpInterceptor', httpInterceptor);\n\n angular.module('ecap').constant(\"STATES_LIST\", [\n { abbrev: \"\", name: \"\" },\n { abbrev: \"AL\", name: \"Alabama\" },\n { abbrev: \"AK\", name: \"Alaska\" },\n { abbrev: \"AZ\", name: \"Arizona\" },\n { abbrev: \"AR\", name: \"Arkansas\" },\n { abbrev: \"CA\", name: \"California\" },\n { abbrev: \"CO\", name: \"Colorado\" },\n { abbrev: \"CT\", name: \"Connecticut\" },\n { abbrev: \"DE\", name: \"Delaware\" },\n { abbrev: \"FL\", name: \"Florida\" },\n { abbrev: \"GA\", name: \"Georgia\" },\n { abbrev: \"HI\", name: \"Hawaii\" },\n { abbrev: \"ID\", name: \"Idaho\" },\n { abbrev: \"IL\", name: \"Illinois\" },\n { abbrev: \"IN\", name: \"Indiana\" },\n { abbrev: \"IA\", name: \"Iowa\" },\n { abbrev: \"KS\", name: \"Kansas\" },\n { abbrev: \"KY\", name: \"Kentucky\" },\n { abbrev: \"LA\", name: \"Louisiana\" },\n { abbrev: \"ME\", name: \"Maine\" },\n { abbrev: \"MD\", name: \"Maryland\" },\n { abbrev: \"MA\", name: \"Massachusetts\" },\n { abbrev: \"MI\", name: \"Michigan\" },\n { abbrev: \"MN\", name: \"Minnesota\" },\n { abbrev: \"MS\", name: \"Mississippi\" },\n { abbrev: \"MO\", name: \"Missouri\" },\n { abbrev: \"MT\", name: \"Montana\" },\n { abbrev: \"NE\", name: \"Nebraska\" },\n { abbrev: \"NV\", name: \"Nevada\" },\n { abbrev: \"NH\", name: \"New Hampshire\" },\n { abbrev: \"NJ\", name: \"New Jersey\" },\n { abbrev: \"NM\", name: \"New Mexico\" },\n { abbrev: \"NY\", name: \"New York\" },\n { abbrev: \"NC\", name: \"North Carolina\" },\n { abbrev: \"ND\", name: \"North Dakota\" },\n { abbrev: \"OH\", name: \"Ohio\" },\n { abbrev: \"OK\", name: \"Oklahoma\" },\n { abbrev: \"OR\", name: \"Oregon\" },\n { abbrev: \"PA\", name: \"Pennsylvania\" },\n { abbrev: \"RI\", name: \"Rhode Island\" },\n { abbrev: \"SC\", name: \"South Carolina\" },\n { abbrev: \"SD\", name: \"South Dakota\" },\n { abbrev: \"TN\", name: \"Tennessee\" },\n { abbrev: \"TX\", name: \"Texas\" },\n { abbrev: \"UT\", name: \"Utah\" },\n { abbrev: \"VT\", name: \"Vermont\" },\n { abbrev: \"VA\", name: \"Virginia\" },\n { abbrev: \"WA\", name: \"Washington\" },\n { abbrev: \"WV\", name: \"West Virginia\" },\n { abbrev: \"WI\", name: \"Wisconsin\" },\n { abbrev: \"WY\", name: \"Wyoming\" },\n { abbrev: \"DC\", name: \"Washington DC\" }\n ]);\n})();","(function () {\n var brokersThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('brokers-primary', {\n '50': 'e8f1f9',\n '100': 'c6dcef',\n '200': 'a1c5e5',\n '300': '7baeda',\n '400': '5e9cd2',\n '500': '428bca',\n '600': '3c83c5',\n '700': '3378bd',\n '800': '2b6eb7',\n '900': '1d5bab',\n 'A100': 'e3eeff',\n 'A200': 'b0d0ff',\n 'A400': '7db2ff',\n 'A700': '63a3ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('brokers-accent', {\n '50': 'f1f8f6',\n '100': 'ddede8',\n '200': 'c7e1d8',\n '300': 'b0d5c8',\n '400': '9fccbd',\n '500': '8ec3b1',\n '600': '86bdaa',\n '700': '7bb5a1',\n '800': '71ae98',\n '900': '5fa188',\n 'A100': 'ffffff',\n 'A200': 'dbfff1',\n 'A400': 'a8ffde',\n 'A700': '8fffd4',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('brokers-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('brokers')\n .primaryPalette('brokers-primary')\n .accentPalette('brokers-accent')\n .warnPalette('brokers-warn');\n };\n\n brokersThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(brokersThemeConfig);\n\n var brokersThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['ecapwest'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n brokersThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(brokersThemeRun);\n})();\n","(function () {\n var ecapwestThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('ecapwest-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('ecapwest-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('ecapwest-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('ecapwest')\n .primaryPalette('ecapwest-primary')\n .accentPalette('ecapwest-accent')\n .warnPalette('ecapwest-warn');\n };\n\n ecapwestThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(ecapwestThemeConfig);\n\n var ecapwestThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['ecapwest'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n ecapwestThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(ecapwestThemeRun);\n})();","(function () {\n var eceipThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('eceip-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('eceip-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('eceip-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('eceip')\n .primaryPalette('eceip-primary')\n .accentPalette('eceip-accent')\n .warnPalette('eceip-warn');\n };\n\n eceipThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(eceipThemeConfig);\n\n var eceipThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['eceip'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n eceipThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(eceipThemeRun);\n})();","(function () {\n var jouleThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('joule-primary', {\n '50': 'e8f1f9',\n '100': 'c6dcef',\n '200': 'a1c5e5',\n '300': '7baeda',\n '400': '5e9cd2',\n '500': '428bca',\n '600': '3c83c5',\n '700': '3378bd',\n '800': '2b6eb7',\n '900': '1d5bab',\n 'A100': 'e3eeff',\n 'A200': 'b0d0ff',\n 'A400': '7db2ff',\n 'A700': '63a3ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('joule-accent', {\n '50': 'ebf7fb',\n '100': 'ceecf5',\n '200': 'ade0ef',\n '300': '8cd3e8',\n '400': '74c9e3',\n '500': '5bc0de',\n '600': '53bada',\n '700': '49b2d5',\n '800': '40aad1',\n '900': '2f9cc8',\n 'A100': 'ffffff',\n 'A200': 'd9f3ff',\n 'A400': 'a6e4ff',\n 'A700': '8cdcff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': []\n });\n\n $mdThemingProvider.definePalette('joule-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('joule')\n .primaryPalette('joule-primary')\n .accentPalette('joule-accent')\n .warnPalette('joule-warn');\n };\n\n jouleThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(jouleThemeConfig);\n\n var jouleThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['ecapwest'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n jouleThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(jouleThemeRun);\n})();\n","(function () {\n var necaThemeConfig = function ($mdThemingProvider, $rootScope) {\n $mdThemingProvider.definePalette('neca-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('neca-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('neca-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('neca')\n .primaryPalette('neca-primary')\n .accentPalette('neca-accent', { 'default': '500' })\n .warnPalette('neca-warn', { 'default': '500' });\n };\n\n necaThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(necaThemeConfig);\n\n var necaThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['neca'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n necaThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(necaThemeRun);\n})();","(function () {\n var odeimThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('odeim-primary', {\n '50': 'e8f1f9',\n '100': 'c6dcef',\n '200': 'a1c5e5',\n '300': '7baeda',\n '400': '5e9cd2',\n '500': '428bca',\n '600': '3c83c5',\n '700': '3378bd',\n '800': '2b6eb7',\n '900': '1d5bab',\n 'A100': 'e3eeff',\n 'A200': 'b0d0ff',\n 'A400': '7db2ff',\n 'A700': '63a3ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('odeim-accent', {\n '50': 'e1e7ec',\n '100': 'b5c3d0',\n '200': '839bb1',\n '300': '517392',\n '400': '2c557a',\n '500': '073763',\n '600': '06315b',\n '700': '052a51',\n '800': '042347',\n '900': '021635',\n 'A100': '6d97ff',\n 'A200': '3a73ff',\n 'A400': '074fff',\n 'A700': '0044ec',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('odeim-warn', {\n '50': 'fef1e4',\n '100': 'fcdcbc',\n '200': 'fbc58f',\n '300': 'f9ae62',\n '400': 'f79c41',\n '500': 'f68b1f',\n '600': 'f5831b',\n '700': 'f37817',\n '800': 'f26e12',\n '900': 'ef5b0a',\n 'A100': 'ffffff',\n 'A200': 'ffede5',\n 'A400': 'ffcab3',\n 'A700': 'ffb899',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '900'\n ]\n });\n\n $mdThemingProvider.theme('odeim')\n .primaryPalette('odeim-primary')\n .accentPalette('odeim-accent')\n .warnPalette('odeim-warn');\n };\n\n odeimThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(odeimThemeConfig);\n\n var odeimThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['ecapwest'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n odeimThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(odeimThemeRun);\n})();\n","(function () {\n var pdplatformThemeConfig = function ($mdThemingProvider, $rootScope) {\n $mdThemingProvider.definePalette('pdplatform-primary', {\n '50': 'e0ecfe',\n '100': 'b3d0fe',\n '200': '80b1fd',\n '300': '4d91fc',\n '400': '267afb',\n '500': '0062fa',\n '600': '005af9',\n '700': '0050f9',\n '800': '0046f8',\n '900': '0034f6',\n 'A100': 'ffffff',\n 'A200': 'eaedff',\n 'A400': 'b7c2ff',\n 'A700': '9dacff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '400',\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('pdplatform-accent', {\n '50': 'e0ecfe',\n '100': 'b3d0fe',\n '200': '80b1fd',\n '300': '4d91fc',\n '400': '267afb',\n '500': '0062fa',\n '600': '005af9',\n '700': '0050f9',\n '800': '0046f8',\n '900': '0034f6',\n 'A100': 'ffffff',\n 'A200': 'eaedff',\n 'A400': 'b7c2ff',\n 'A700': '9dacff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '400',\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('pdplatform-warn', {\n '50': 'fae9e5',\n '100': 'f3c7bd',\n '200': 'eba291',\n '300': 'e27c65',\n '400': 'dc6044',\n '500': 'd64423',\n '600': 'd13e1f',\n '700': 'cc351a',\n '800': 'c62d15',\n '900': 'bc1f0c',\n 'A100': 'ffeae8',\n 'A200': 'ffbbb5',\n 'A400': 'ff8c82',\n 'A700': 'ff7569',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('pdplatform')\n .primaryPalette('pdplatform-primary')\n .accentPalette('pdplatform-accent', { 'default': '500' })\n .warnPalette('pdplatform-warn', { 'default': '500' });\n };\n\n pdplatformThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(pdplatformThemeConfig);\n\n var pdplatformThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['pdplatform'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n pdplatformThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(pdplatformThemeRun);\n})();","(function () {\n var productsThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('products-primary', {\n '50': 'e8f1f9',\n '100': 'c6dcef',\n '200': 'a1c5e5',\n '300': '7baeda',\n '400': '5e9cd2',\n '500': '428bca',\n '600': '3c83c5',\n '700': '3378bd',\n '800': '2b6eb7',\n '900': '1d5bab',\n 'A100': 'e3eeff',\n 'A200': 'b0d0ff',\n 'A400': '7db2ff',\n 'A700': '63a3ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('products-accent', {\n '50': 'f1f8f6',\n '100': 'ddede8',\n '200': 'c7e1d8',\n '300': 'b0d5c8',\n '400': '9fccbd',\n '500': '8ec3b1',\n '600': '86bdaa',\n '700': '7bb5a1',\n '800': '71ae98',\n '900': '5fa188',\n 'A100': 'ffffff',\n 'A200': 'dbfff1',\n 'A400': 'a8ffde',\n 'A700': '8fffd4',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('products-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('products')\n .primaryPalette('products-primary')\n .accentPalette('products-accent')\n .warnPalette('products-warn');\n };\n\n productsThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(productsThemeConfig);\n\n var productsThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['ecapwest'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n productsThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(productsThemeRun);\n})();\n","(function () {\n var qaDemoThemeConfig = function ($mdThemingProvider, $rootScope) {\n $mdThemingProvider.definePalette('qa-demo-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('qa-demo-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('qa-demo-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('qa-demo')\n .primaryPalette('qa-demo-primary')\n .accentPalette('qa-demo-accent', { 'default': '500' })\n .warnPalette('qa-demo-warn', { 'default': '500' });\n };\n\n qaDemoThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(qaDemoThemeConfig);\n\n var qaDemoThemRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['qa-demo'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n qaDemoThemRun.$inject = ['$rootScope'];\n angular.module('ecap').run(qaDemoThemRun);\n})();","(function () {\n var qaDemoNewThemeConfig = function ($mdThemingProvider, $rootScope) {\n $mdThemingProvider.definePalette('qa-demo-new-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('qa-demo-new-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('qa-demo-new-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('qa-demo-new')\n .primaryPalette('qa-demo-new-primary')\n .accentPalette('qa-demo-new-accent', { 'default': '500' })\n .warnPalette('qa-demo-new-warn', { 'default': '500' });\n };\n\n qaDemoNewThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(qaDemoNewThemeConfig);\n\n var qaDemoNewThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['qa-demo-new'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n qaDemoNewThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(qaDemoNewThemeRun);\n})();","(function () {\n var renuThemeConfig = function ($mdThemingProvider) {\n $mdThemingProvider.definePalette('renu-primary', {\n '50': 'e5e7ed',\n '100': 'bdc4d1',\n '200': '919cb3',\n '300': '657495',\n '400': '44577e',\n '500': '233967',\n '600': '1f335f',\n '700': '1a2c54',\n '800': '15244a',\n '900': '0c1739',\n 'A100': '7391ff',\n 'A200': '4069ff',\n 'A400': '0d41ff',\n 'A700': '0034f2',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n 'A100'\n ],\n 'contrastLightColors': [\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A200',\n 'A400',\n 'A700'\n ]\n });\n\n $mdThemingProvider.definePalette('renu-accent', {\n '50': 'e4f0fe',\n '100': 'bbdafc',\n '200': '8ec2fa',\n '300': '61a9f8',\n '400': '3f96f7',\n '500': '1d84f5',\n '600': '1a7cf4',\n '700': '1571f2',\n '800': '1167f0',\n '900': '0a54ee',\n 'A100': 'ffffff',\n 'A200': 'e4ebff',\n 'A400': 'b1c7ff',\n 'A700': '97b4ff',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.definePalette('renu-warn', {\n '50': 'f9e9e9',\n '100': 'efc8c8',\n '200': 'e5a4a4',\n '300': 'da7f7f',\n '400': 'd26363',\n '500': 'ca4848',\n '600': 'c54141',\n '700': 'bd3838',\n '800': 'b73030',\n '900': 'ab2121',\n 'A100': 'ffe5e5',\n 'A200': 'ffb3b3',\n 'A400': 'ff8080',\n 'A700': 'ff6666',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': [\n '50',\n '100',\n '200',\n '300',\n '400',\n 'A100',\n 'A200',\n 'A400',\n 'A700'\n ],\n 'contrastLightColors': [\n '500',\n '600',\n '700',\n '800',\n '900'\n ]\n });\n\n $mdThemingProvider.theme('renu')\n .primaryPalette('renu-primary')\n .accentPalette('renu-accent')\n .warnPalette('renu-warn');\n };\n\n renuThemeConfig.$inject = ['$mdThemingProvider'];\n angular.module('ecap').config(renuThemeConfig);\n\n var renuThemeRun = function ($rootScope) {\n if (!$rootScope.$themes) {\n $rootScope.$themes = {};\n }\n $rootScope.$themes['renu'] = {\n primaryColor: '#233967',\n accentColor: '#1d84f5'\n };\n };\n\n renuThemeRun.$inject = ['$rootScope'];\n angular.module('ecap').run(renuThemeRun);\n})();","(function() {\n 'use strict';\n\n angular.module('ecap.common', []);\n\n})();\n\n","(function() {\n 'use strict';\n\n function commonController($state, $timeout) {\n console.log($state.get());\n $timeout(function () { console.log($state.current); }, 1000);\n }\n\n commonController.$inject = ['$state', '$timeout'];\n\n angular.module('ecap.common').controller('commonController', commonController);\n})();","(function () {\n 'use strict';\n\n function contactAccountManagersController($scope, $route, $routeParams, $location, sessionDataService, mailRequestDataService, notifyService) {\n var self = this;\n this.entityId = '';\n this.insuranceAgencies = [];\n\n this.init = function () {\n sessionDataService.loadSession().then(function (sessionData) {\n self.entityId = sessionData.EntityId;\n });\n };\n\n this.contactAccountManager = function (accountManagerId) {\n mailRequestDataService.contactAccountManager({\n 'EntityId': self.entityId,\n 'AccountManagerId': accountManagerId\n }).then(function (data) {\n notifyService.notify('Your contact request was successfully sent.');\n });\n }\n\n this.init();\n }\n\n contactAccountManagersController.$inject = ['$scope', '$route', '$routeParams', '$location', 'sessionDataService', 'mailRequestDataService', 'notifyService'];\n\n angular.module('ecap.common').controller('contactAccountManagersController', contactAccountManagersController);\n})();","(function () {\n 'use strict';\n\n function contractorProjectsForEntityController($scope) {\n var vm = this;\n vm.results = [];\n vm.entityId = '';\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.entityId = toParams.entityId;\n });\n }\n\n contractorProjectsForEntityController.$inject = ['$scope'];\n\n angular.module('ecap.common').controller('contractorProjectsForEntityController', contractorProjectsForEntityController);\n})();","/*\n*/\n\n (function() {\n 'use strict';\n\n function navbarCommentsController($rootScope, $timeout, $attrs, underwritingNotesDataService) {\n var vm = this;\n\n vm.currentCommentsCount= parseInt($attrs.currentCommentsCount, 10);\n\n function updateCommentsCountText() {\n vm.commentsCountText = vm.currentCommentsCount > 0\n ? vm.currentCommentsCount + \" Notifications\"\n : \"\";\n }\n\n updateCommentsCountText();\n\n function refreshComments() {\n $timeout(function () {\n underwritingNotesDataService.getNewNotes().then(function (data) {\n vm.currentCommentsCount = data.length;\n updateCommentsCountText();\n });\n }, 2000);\n }\n\n $rootScope.$on('noteResolved', function (event, args) {\n refreshComments();\n });\n\n $rootScope.$on('noteSaved', function (event, args) {\n refreshComments();\n })\n }\n\n navbarCommentsController.$inject = ['$rootScope', '$timeout', '$attrs', 'underwritingNotesDataService'];\n\n angular.module('ecap.common').controller('navbarCommentsController', navbarCommentsController);\n})();","/*\n*/\n\n (function() {\n 'use strict';\n\n function navbarController($rootScope, $timeout, $attrs, $pbService) {\n var vm = this;\n vm.percentageComplete = parseInt($attrs.percentageComplete, 10);\n vm.progressIsSkipped = false;\n vm.progressCircleOptions = {\n color: $rootScope.$themes[$rootScope.$currentTheme || 'pdplatform'].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme || 'pdplatform'].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '1.5em',\n }\n }\n };\n\n $rootScope.$on('profilePercentageChanged', function (event, args) {\n var newPercentageComplete = args.percentageComplete;\n if (newPercentageComplete !== vm.percentageComplete) {\n vm.percentageComplete = newPercentageComplete;\n $pbService.set('navbarProgress', vm.percentageComplete / 100);\n }\n })\n\n $timeout(function () {\n $pbService.set('navbarProgress', vm.percentageComplete / 100);\n });\n }\n\n navbarController.$inject = ['$rootScope', '$timeout', '$attrs', '$pbService'];\n\n angular.module('ecap.common').controller('navbarController', navbarController);\n})();","(function () {\n 'use strict';\n\n function simpleSearchController($scope, $rootScope) {\n var vm = this;\n vm.results = [];\n\n $scope.$watch(function () {\n return vm.results;\n }, function (newVal) {\n if (newVal && newVal.length > 0) {\n vm.busy = false;\n $rootScope.$broadcast('simpleSearchResultsUpdated', { results: vm.results });\n }\n });\n\n $rootScope.$on('noMoreResults', function (event, args) {\n if (args.datasetName === vm.datasetName) {\n console.log('stopping get more results');\n vm.nextResults = function () {};\n }\n })\n\n vm.nextResults = (function () {\n vm.busy = true;\n console.log('get more');\n $rootScope.$broadcast('getNextResults', { datasetName: vm.datasetName })\n })\n\n $scope.init = function (datasetName) {\n if (!datasetName) {\n throw Error('Simple search must be initialized with an name');\n }\n\n vm.datasetName = datasetName;\n }\n\n }\n\n simpleSearchController.$inject = ['$scope', '$rootScope'];\n\n angular.module('ecap.common').controller('simpleSearchController', simpleSearchController);\n})();","(function () {\n 'use strict';\n\n function workflowsForEntityController($scope) {\n var vm = this;\n vm.results = [];\n vm.entityId = '';\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.entityId = toParams.entityId;\n });\n }\n\n workflowsForEntityController.$inject = ['$scope'];\n\n angular.module('ecap.common').controller('workflowsForEntityController', workflowsForEntityController);\n})();","(function () {\n 'use strict';\n\n function addQuestion(questionViewModelConfigurationService, $timeout) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/addQuestion.html',\n scope: {\n toggleIsActive: '&',\n addNewQuestion: '&'\n },\n link: function (scope, element, attrs) {\n scope.questionTypes = questionViewModelConfigurationService.questionTypes;\n scope.model = {\n newQuestionType: questionViewModelConfigurationService.questionTypes[0].$type,\n titleAndPrompt: ''\n };\n\n scope.addQuestion = function () {\n $timeout(function () {\n var newQuestion = questionViewModelConfigurationService.buildQuestion(scope.model.newQuestionType,\n scope.model.titleAndPrompt);\n scope.addNewQuestion()(newQuestion);\n scope.toggleIsActive()();\n }, 0);\n }\n\n scope.close = function () {\n scope.toggleIsActive()();\n scope.model.titleAndPrompt = '';\n scope.newQuestionType = null;\n }\n }\n };\n }\n\n addQuestion.$inject = ['questionViewModelConfigurationService', '$timeout'];\n\n angular.module('ecap.common').directive('addQuestion', addQuestion);\n})();\n\n","(function () {\n 'use strict';\n\n function automaticFileUploader($rootScope, $log, sessionDataService, notifyService) {\n return {\n restrict: 'E',\n scope: {\n dropZoneElementClass: '@',\n allowedExtensions: '=',\n label: '@',\n fileType: '@',\n parent: '=',\n allowMultiple: '=?',\n maxFiles: '=?'\n },\n transclude: true,\n templateUrl: 'common/directives/templates/automaticFileUploader.html',\n link: function (scope, element) {\n scope.uploads = [];\n scope.fileName = '';\n scope.percentComplete = 0;\n scope.totalBytes = 0;\n var uploader = new qq.azure.FineUploaderBasic({\n request: { endpoint: \"https://ecapstorage.blob.core.windows.net/uploads\" },\n signature: {\n endpoint: \"/sas?fileType=\" + scope.fileType,\n customHeaders: function (id) {\n var matchingFile = scope.uploads[parseInt(id.toString().split('.')[0], 10)];\n return {\n \"guid\": matchingFile.BlobReference,\n \"fileName\": matchingFile.FileName\n }\n }\n },\n uploadSuccess: { endpoint: \"/aus\" },\n chunking: {\n enabled: true,\n concurrent: {\n enabled: true\n }\n },\n retry: {\n enableAuto: false\n },\n debug: false,\n button: $(element).find('.file-uploader-button')[0],\n multiple: scope.allowMultiple,\n validation: {\n allowedExtensions: scope.allowedExtensions,\n sizeLimit: 2147483647\n },\n autoUpload: true,\n deleteFile: {\n enabled: false\n },\n callbacks: {\n onComplete: function (id, fileName, responseJson) {\n var matchingUpload = scope.uploads[parseInt(id.toString().split('.')[0], 10)];\n if (!matchingUpload) {\n throw new Error('File to mark as uploaded - ' + fileName + ' was not found');\n }\n\n if (responseJson.success) {\n sessionDataService.loadSession().then(function (sessionData) {\n matchingUpload.Complete = true;\n matchingUpload.UploadedByUserName = sessionData.UserName;\n matchingUpload.UploadedByEntityId = sessionData.EntityId;\n matchingUpload.UploadedByEntity = sessionData.Entity;\n\n if (!scope.uploads.find(function (upload) {\n return !upload.Complete;\n })) {\n scope.percentComplete = 0;\n }\n\n $rootScope.$broadcast('fileUploaded',\n { blobs: [matchingUpload], parent: scope.parent });\n scope.fileName = '';\n });\n }\n else {\n scope.percentComplete = 0;\n }\n },\n onUpload: function (id, fileName) {\n },\n onSubmit: function (id, fileName) {\n var guid = uuid.v4();\n scope.uploads.push({\n FileName: fileName,\n BlobReference: guid,\n DateUploaded: (new Date()).toISOString(),\n UploadedByUserName: '',\n UploadedByEntityId: null,\n UploadedByEntity: null,\n Complete: false,\n Bytes: this.getSize(id)\n });\n scope.fileName = scope.uploads.filter(function (upload) {\n return !upload.Complete;\n }).map(function (upload) {\n return upload.FileName;\n }).join(', ');\n scope.totalBytes = scope.uploads.map(function (upload) {\n return upload.Bytes;\n }).reduce(add, 0);\n scope.$apply();\n },\n onProgress: function (id, fileName, uploadedBytes) {\n scope.percentComplete = Math.floor((uploadedBytes / scope.totalBytes) * 100);\n scope.$apply();\n },\n onError: function (id, name, reason, xhr) {\n if (reason === 'No files to upload.') {\n // do nothing\n }\n else if (reason.indexOf('Too many items') !== -1) {\n notifyService.notify(\n 'Too many items were selected. You are limited to ' + scope.maxFiles + ' uploads.', true);\n }\n else {\n notifyService.notify(\"There was an error uploading \" + name + \". Please try again.\", true);\n $log.warn(name + \" - \" + reason);\n }\n }\n }\n });\n\n if (scope.maxFiles) {\n uploader.setItemLimit(scope.maxFiles);\n }\n\n function add(a, b) {\n return a + b;\n }\n\n var dragAndDropModule = new qq.DragAndDrop({\n dropZoneElements: [$(element).find('.' + scope.dropZoneElementClass)[0]],\n callbacks: {\n processingDroppedFiles: function () {\n //TODO: display some sort of a \"processing\" or spinner graphic\n },\n processingDroppedFilesComplete: function (files, dropTarget) {\n //TODO: hide spinner/processing graphic\n uploader.addFiles(files); //this submits the dropped files to Fine Uploader\n }\n }\n });\n\n scope.upload = function () {\n uploader.uploadStoredFiles();\n }\n\n $rootScope.$on('fileRemoved',\n function (event, args) {\n if (args.parent.Path === scope.parent.Path) {\n // TODO: anything here\n }\n });\n }\n };\n }\n\n automaticFileUploader.$inject = ['$rootScope', '$log', 'sessionDataService', 'notifyService'];\n\n angular.module('ecap.common').directive('automaticFileUploader', automaticFileUploader);\n})();\n","(function () {\n 'use strict';\n\n function booleanSearchField() {\n return {\n restrict: 'E',\n scope: {\n attribute: '=',\n changeEvent: '&'\n },\n templateUrl: 'common/directives/templates/booleanSearchField.html',\n link: function (scope, element, attrs) {\n scope.hasChangeEvent = attrs.changeEvent;\n }\n };\n }\n\n booleanSearchField.$inject = [];\n\n angular.module('ecap.common').directive('booleanSearchField', booleanSearchField);\n})();","(function () {\n 'use strict';\n\n function booleanSearchFieldConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/booleanSearchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n booleanSearchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('booleanSearchFieldConfiguration', booleanSearchFieldConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function calcHeight($timeout, $rootScope) {\n return {\n restrict: 'A',\n scope: {\n name: '@',\n selector: '@'\n },\n link: function (scope, element, attrs) {\n function convertPxToInt(val) {\n if (!val) {\n return 0;\n }\n return parseInt(val.replace('px', ''), 10);\n }\n\n function setElementHeight() {\n $timeout(function () {\n var foundElement = $(element[0]);\n var childHeightElement = $(element[0]).find(scope.selector)\n .not('.ng-hide');\n console.log(foundElement.height());\n foundElement.css('maxHeight', childHeightElement.height() +\n convertPxToInt(foundElement.css('padding-top')) +\n convertPxToInt(foundElement.css('padding-bottom')) +\n convertPxToInt(childHeightElement.css('padding-top')) +\n convertPxToInt(childHeightElement.css('padding-bottom')) +\n \"px\");\n }, 0);\n }\n\n setElementHeight(element);\n\n $rootScope.$on('elementHeightChanged', function (event, args) {\n if (scope.name === args.elementName) {\n setElementHeight();\n }\n });\n }\n };\n }\n\n calcHeight.$inject = ['$timeout', '$rootScope'];\n\n angular.module('ecap.common').directive('calcHeight', calcHeight);\n})();","(function () {\n 'use strict';\n\n function circleAutomaticFileUploader($rootScope, $log, sessionDataService, notifyService) {\n return {\n restrict: 'E',\n scope: {\n dropZoneElementClass: '@',\n allowedExtensions: '=',\n label: '@',\n fileType: '@',\n parent: '=',\n allowMultiple: '=?',\n maxFiles: '=?',\n uploadMessage: '=?'\n },\n transclude: true,\n templateUrl: 'common/directives/templates/circleAutomaticFileUploader.html',\n link: function (scope, element) {\n scope.uploads = [];\n scope.fileName = '';\n scope.percentComplete = 0;\n scope.totalBytes = 0;\n scope.uploadMessage = scope.uploadMessage || 'Drag & Drop or Click to Upload';\n\n scope.allowAllExtensions = scope.allowedExtensions.length === 1 && scope.allowedExtensions[0] === '*';\n var validation = scope.allowAllExtensions ? { } : { allowedExtensions: scope.allowedExtensions };\n var expandedValidation = {\n sizeLimit: 2147483647\n };\n if (!scope.allowAllExtensions) {\n expandedValidation.allowedExtensions = scope.allowedExtensions;\n }\n\n var uploader = new qq.azure.FineUploaderBasic({\n request: { endpoint: \"https://ecapwebstorage.blob.core.windows.net/uploads\" },\n signature: {\n endpoint: \"/sas?fileType=\" + scope.fileType,\n customHeaders: function (id) {\n var matchingFile = scope.uploads[parseInt(id.toString().split('.')[0], 10)];\n return {\n \"guid\": matchingFile.BlobReference,\n \"fileName\": matchingFile.FileName\n }\n }\n },\n uploadSuccess: { endpoint: \"/aus\" },\n chunking: {\n enabled: true,\n concurrent: {\n enabled: true\n }\n },\n retry: {\n enableAuto: false\n },\n debug: false,\n button: $(element).find('.file-uploader-button')[0],\n extraButtons: [\n {\n element: $(element).find('.fab-uploader-button')[0],\n validation: validation\n }\n ],\n multiple: scope.allowMultiple,\n validation: expandedValidation,\n autoUpload: true,\n deleteFile: {\n enabled: false\n },\n callbacks: {\n onComplete: function (id, fileName, responseJson) {\n var matchingUpload = scope.uploads[parseInt(id.toString().split('.')[0], 10)];\n if (!matchingUpload) {\n throw new Error('File to mark as uploaded - ' + fileName + ' was not found');\n }\n\n if (responseJson.success) {\n sessionDataService.loadSession().then(function (sessionData) {\n matchingUpload.Complete = true;\n matchingUpload.UploadedByUserName = sessionData.UserName;\n matchingUpload.UploadedByEntityId = sessionData.EntityId;\n matchingUpload.UploadedByEntity = sessionData.Entity;\n\n if (!scope.uploads.find(function (upload) {\n return !upload.Complete;\n })) {\n scope.percentComplete = 0;\n }\n\n $rootScope.$broadcast('fileUploaded',\n { blobs: [matchingUpload], parent: scope.parent });\n scope.fileName = '';\n });\n }\n else {\n scope.percentComplete = 0;\n }\n },\n onUpload: function (id, fileName) {\n },\n onSubmit: function (id, fileName) {\n var guid = uuid.v4();\n scope.uploads.push({\n FileName: fileName,\n BlobReference: guid,\n DateUploaded: (new Date()).toISOString(),\n UploadedByUserName: '',\n UploadedByEntityId: null,\n UploadedByEntity: null,\n Complete: false,\n Bytes: this.getSize(id)\n });\n scope.fileName = scope.uploads.filter(function (upload) {\n return !upload.Complete;\n }).map(function (upload) {\n return upload.FileName;\n }).join(', ');\n scope.totalBytes = scope.uploads.map(function (upload) {\n return upload.Bytes;\n }).reduce(add, 0);\n scope.$apply();\n },\n onProgress: function (id, fileName, uploadedBytes) {\n scope.percentComplete = Math.floor((uploadedBytes / scope.totalBytes) * 100);\n scope.$apply();\n },\n onError: function (id, name, reason, xhr) {\n if (reason === 'No files to upload.') {\n // do nothing\n }\n else if (reason.indexOf('Too many items') !== -1) {\n notifyService.notify(\n 'Too many items were selected. You are limited to ' + scope.maxFiles + ' uploads.', true);\n }\n else if (reason.indexOf('invalid extension') !== -1) {\n notifyService.notify(\n 'This file type is not allowed. The following file types are allowed: ' + \n scope.allowedExtensions.join(', ') + ',', true);\n }\n else {\n notifyService.notify(\"There was an error uploading \" + name + \". Please try again.\", true);\n $log.warn(name + \" - \" + reason);\n }\n }\n }\n });\n\n if (scope.maxFiles) {\n uploader.setItemLimit(scope.maxFiles);\n }\n\n function add(a, b) {\n return a + b;\n }\n\n var dragAndDropModule = new qq.DragAndDrop({\n dropZoneElements: [$(element).find('.' + scope.dropZoneElementClass)[0]],\n callbacks: {\n processingDroppedFiles: function () {\n //TODO: display some sort of a \"processing\" or spinner graphic\n },\n processingDroppedFilesComplete: function (files, dropTarget) {\n //TODO: hide spinner/processing graphic\n uploader.addFiles(files); //this submits the dropped files to Fine Uploader\n }\n }\n });\n\n scope.upload = function () {\n uploader.uploadStoredFiles();\n }\n\n $rootScope.$on('fileRemoved',\n function (event, args) {\n if (args.parent.Path === scope.parent.Path) {\n // TODO: anything here\n }\n });\n }\n };\n }\n\n circleAutomaticFileUploader.$inject = ['$rootScope', '$log', 'sessionDataService', 'notifyService'];\n\n angular.module('ecap.common').directive('circleAutomaticFileUploader', circleAutomaticFileUploader);\n})();\n","(function () {\n 'use strict';\n\n function commentsTile($timeout, $document, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/commentsTile.html',\n scope: {\n badgeContext: '=',\n popoverConfig: '=',\n noCommentsIconPath: '@',\n commentsIconPath: '@',\n commentsTileClass: '@' \n },\n link: function (scope, element, attrs) {\n function setNoteBadgeData() {\n scope.showBadge = true;\n var comments = scope.badgeContext.ProjectUnderwritingNotes.filter(function (note) {\n return !note.IsDeleted;\n });\n scope.badgeImage = comments.length == 0 ? scope.noCommentsIconPath : scope.commentsIconPath;\n scope.badgeText = comments.length === 0 ? '' : comments.length;\n }\n\n setNoteBadgeData();\n var events = [\"noteSaved\", \"noteRemoved\", \"noteResolved\"];\n events.forEach(function (event) {\n $rootScope.$on(event, function (event, args) {\n if (args === scope.badgeContext.Path) {\n setNoteBadgeData();\n }\n });\n });\n\n $rootScope.$on('updateWorkflowTitleBar', function () {\n $timeout(function () { setNoteBadgeData(); }, 0);\n });\n }\n };\n }\n\n commentsTile.$inject = ['$timeout', '$document', '$rootScope'];\n\n angular.module('ecap.common').directive('commentsTile', commentsTile);\n})();","(function () {\n 'use strict';\n\n function contactAccountManager(sessionDataService, mailRequestDataService, notifyService) {\n return {\n restrict: 'E',\n scope: {\n mode: '@'\n },\n templateUrl: 'common/directives/templates/contactAccountManager.html',\n link: function (scope, element, attrs) {\n scope.assignedAccountManagers = [];\n scope.entityId = '';\n sessionDataService.loadSession().then(function (sessionData) {\n scope.assignedAccountManagers = sessionData.AssignedAccountManagers;\n scope.entityId = sessionData.EntityId;\n });\n\n scope.contactAccountManager = function (accountManagerId) {\n mailRequestDataService.contactAccountManager({\n 'EntityId': scope.entityId,\n 'AccountManagerId': accountManagerId\n }).then(function (data) {\n notifyService.notify('Your contact request was successfully sent.');\n });\n }\n\n scope.contactAllAccountManagers = function () {\n mailRequestDataService.contactAllAccountManagers({\n 'EntityId': scope.entityId\n }).then(function (data) {\n notifyService.notify('Your request for help was successfully sent.');\n });\n }\n }\n };\n }\n\n contactAccountManager.$inject = ['sessionDataService', 'mailRequestDataService', 'notifyService'];\n\n angular.module('ecap.common').directive('contactAccountManager', contactAccountManager);\n})();","(function () {\n 'use strict';\n\n function contenteditable($timeout, $sce) {\n return {\n restrict: 'A',\n require: \"ngModel\",\n scope: {\n changeEvent: '&',\n },\n link: function (scope, element, attrs, ngModel) {\n if (!ngModel) return; // do nothing if no ng-model\n\n // Specify how UI should be updated\n ngModel.$render = function () {\n element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));\n };\n\n element.on(\"blur\", function () {\n saveChanges();\n });\n\n element.on(\"mouseover\", function () {\n element.addClass('content-editing-hover');\n });\n\n element.on(\"mouseout\", function () {\n element.removeClass('content-editing-hover');\n });\n\n element.on(\"click\",\n function() {\n element.removeClass('content-editing-hover');\n element.addClass('content-editing');\n });\n\n element.on(\"keydown\", function (e){\n // handle enter key - save the element\n if(e.keyCode == 13 && element.hasClass('content-editing')) {\n e.preventDefault();\n e.stopPropagation();\n saveChanges();\n element.blur();\n }\n })\n\n function saveChanges() {\n element.removeClass('content-editing');\n scope.$evalAsync(read);\n $timeout(function() { scope.changeEvent(); }, 0);\n }\n \n // Write data to the model\n function read() {\n var html = element.html();\n // When we clear the content editable the browser leaves a
behind\n // If strip-br attribute is provided then we strip this out\n // strip all html tags\n if (attrs.stripBr && html == '
') {\n html = '';\n }\n\n var stripped = html.replace(/(<([^>]+)>)/gi, \"\");\n stripped = stripped.replace(' ', '');\n\n ngModel.$setViewValue(stripped);\n }\n }\n };\n }\n\n contenteditable.$inject = ['$timeout', '$sce'];\n\n angular.module('ecap.common').directive('contenteditable', contenteditable);\n})();","(function () {\n 'use strict';\n\n function convertToFloat() {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attrs, ngModel) {\n ngModel.$parsers.push(function(val) {\n return val != null ? parseFloat(val) : null;\n });\n ngModel.$formatters.push(function(val) {\n return val != null ? '' + val : null;\n });\n }\n };\n }\n\n convertToFloat.$inject = [];\n\n angular.module('ecap.common').directive('convertToFloat', convertToFloat);\n})();","(function () {\n 'use strict';\n\n function convertToInt() {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attrs, ngModel) {\n ngModel.$parsers.push(function(val) {\n return val != null ? parseInt(val, 10) : null;\n });\n ngModel.$formatters.push(function(val) {\n return val != null ? '' + val : null;\n });\n }\n };\n }\n\n convertToInt.$inject = [];\n\n angular.module('ecap.common').directive('convertToInt', convertToInt);\n})();","(function () {\n 'use strict';\n\n function customClickOutside($document) {\n return {\n restrict: 'A',\n scope: {\n clickOutside: '&customClickOutside',\n clickOutsideSelector: '@',\n clickOutsideIgnoreSelector: '@'\n },\n link: function (scope) {\n var handler = function (event) {\n var ignoreElement = $(scope.clickOutsideIgnoreSelector);\n if (!ignoreElement.length) {\n return;\n }\n\n if (ignoreElement === event.target || ignoreElement[0].contains(event.target)) {\n // do nothing\n return;\n }\n\n var element = $(scope.clickOutsideSelector);\n if (!element[0]) {\n return;\n }\n if (element !== event.target && !element[0].contains(event.target)) {\n scope.$applyAsync(function () {\n scope.clickOutside();\n });\n }\n };\n\n // Might not work on elements that stop events from bubbling up\n $document.on('click', handler);\n\n // Clean up event so it does not keep firing after leaving scope\n scope.$on('$destroy', function() {\n $document.off('click', handler);\n });\n }\n }\n }\n\n customClickOutside.$inject = ['$document'];\n\n angular.module('ecap.common').directive('customClickOutside', customClickOutside);\n})();","(function () {\n 'use strict';\n\n function decimalSearchField() {\n return {\n restrict: 'E',\n scope: {\n attribute: '=',\n changeEvent: '&'\n },\n templateUrl: 'common/directives/templates/decimalSearchField.html',\n link: function (scope, element, attrs) {\n scope.hasChangeEvent = attrs.changeEvent;\n }\n };\n }\n\n decimalSearchField.$inject = [];\n\n angular.module('ecap.common').directive('decimalSearchField', decimalSearchField);\n})();","(function () {\n 'use strict';\n\n function decimalSearchFieldConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/decimalSearchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n decimalSearchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('decimalSearchFieldConfiguration', decimalSearchFieldConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function editableTitle($timeout) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/editableTitle.html',\n scope: {\n cssClass: '@?',\n title: '=',\n mode: '=?',\n save: '&',\n cancel: '&',\n siblingNames: '=',\n isInnerSection: '=?'\n },\n link: function (scope, element, attrs) {\n scope.mode = scope.mode || 'display';\n scope.siblingNames = scope.siblingNames || [];\n scope.saveTitle = function () {\n scope.save();\n }\n\n scope.cancelSaveTitle = function () {\n scope.cancel();\n }\n }\n };\n }\n\n editableTitle.$inject = ['$timeout'];\n\n angular.module('ecap.common').directive('editableTitle', editableTitle);\n})();\n\n","(function () {\n 'use strict';\n\n function entityCard() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/entityCard.html',\n scope: {\n entity: '=',\n cardStyle: '@',\n actions: '=',\n showBadges: '='\n },\n link: function (scope, element, attrs) {\n scope.toggleEntityAccordion = function () {\n scope.entity.open = !scope.entity.open;\n }\n\n scope.hasActions = attrs.actions;\n\n scope.callAction = function(actionName) {\n scope.actions[actionName].call(scope.entity);\n }\n\n if ('preventSelection' in attrs) {\n scope.preventSelection = true;\n }\n }\n };\n }\n\n entityCard.$inject = [];\n\n angular.module('ecap.common').directive('entityCard', entityCard);\n})();","(function () {\n 'use strict';\n\n function entityIcon($timeout) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/entityIcon.html',\n scope: {\n 'iconObject': '=',\n 'iconProperty': '@',\n 'iconText': '@',\n 'iconWidth': '@?',\n 'iconHeight': '@?',\n 'iconMode': '@?'\n },\n link: function (scope, element, attrs) {\n function parseDimension(val) {\n if (!val) {\n return '70';\n }\n var parsed = parseInt(val);\n if (isNaN(parsed)) {\n return '70';\n }\n return val;\n }\n if (!scope.iconMode) {\n scope.iconMode = 'small';\n }\n scope.canShowIcon = false;\n scope.iconUrl = '';\n scope.isFirstLoad = true;\n\n scope.truncateLabelLength = attrs['truncateLabelLength'] ?\n parseInt(attrs['truncateLabelLength'], 10)\n : 13;\n scope.iconWidth = parseDimension(scope.iconWidth);\n scope.iconHeight = parseDimension(scope.iconHeight);\n\n scope.showNameBelow = 'showNameBelow' in attrs;\n\n scope.$watch(function () {\n return scope.iconObject;\n }, function (newVal) {\n if (newVal && newVal[scope.iconProperty]) {\n scope.canShowIcon = true;\n if (!scope.isFirstLoad) {\n $timeout(function () {\n scope.iconUrl = '/files/getlogo?blobReference=' +\n scope.iconObject.BlobReference + '&fileName=' + scope.iconObject.FileName +\n '&width=' + scope.iconWidth + '&height=' + scope.iconHeight;\n }, 1000);\n }\n else {\n scope.iconUrl = '/files/getlogo?blobReference=' +\n scope.iconObject.BlobReference + '&fileName=' + scope.iconObject.FileName +\n '&width=' + scope.iconWidth + '&height=' + scope.iconHeight;\n }\n }\n else {\n scope.canShowIcon = false;\n scope.iconUrl = '';\n }\n scope.isFirstLoad = false;\n });\n }\n };\n }\n\n entityIcon.$inject = ['$timeout'];\n\n angular.module('ecap.common').directive('entityIcon', entityIcon);\n})();","(function () {\n 'use strict';\n\n function expandRow() {\n return {\n restrict: 'A',\n scope: {},\n link: function (scope, element, attrs) {\n element.on(\"mouseover\", function () {\n element.removeClass('truncated');\n element.addClass('not-truncated');\n });\n element.on(\"mouseleave\", function () {\n element.removeClass('not-truncated');\n element.addClass('truncated');\n });\n }\n };\n }\n\n expandRow.$inject = [];\n\n angular.module('ecap.common').directive('expandRow', expandRow);\n})();\n","(function () {\n 'use strict';\n\n function fileUploader($http, $compile, $window, fileUploadsService, notifyService) {\n return {\n restrict: 'E',\n scope: {\n documentUpload: '=',\n groupTitle: '=',\n user: '=',\n title: '=',\n requireUpload: '='\n },\n templateUrl: 'common/directives/templates/fileUploader.html',\n link: function (scope, element) {\n var uploader = new qq.azure.FineUploaderBasic({\n request: { endpoint: \"https://ecapwebstorage.blob.core.windows.net/uploads\" },\n signature: {\n endpoint: \"/sas?fileType=Upload\",\n customHeaders: function (id) {\n return {\n \"guid\": uploader.getGuid(id)\n }\n }\n },\n uploadSuccess: { endpoint: \"/aus\" },\n chunking: {\n enabled: true,\n concurrent: {\n enabled: true\n }\n },\n retry: {\n enableAuto: true\n },\n debug: false,\n button: $(element).find('.file-uploader-button')[0],\n multiple: true,\n validation: {\n allowedExtensions: ['pdf', 'csv', 'xlsx', 'xls', 'doc', 'docx', 'tif', 'tiff', 'ai', 'ppt', 'pptx', 'zip', 'jpg'],\n sizeLimit: 2147483647\n },\n autoUpload: false,\n deleteFile: {\n enabled: false\n },\n callbacks: {\n onComplete: function (id, fileName, responseJson) {\n var guid = uploader.idsAndGuids[id];\n var matchingFileUpload = _.find(fileUploadsService.fileUploads, { Guid: guid });\n\n scope.documentUpload.BlobSummaries.push({\n 'FileName': fileName,\n 'BlobReference': guid,\n 'DateUploaded': new Date(),\n 'UploadedByUserName': this.user\n });\n\n this.fileUploadsService.markFileAsComplete(matchingFileUpload);\n },\n onUpload: function (id, fileName) {\n fileUploadsService.markFileAsUploading(uploader.idsAndGuids[id]);\n },\n onSubmit: function (id, fileName) {\n var guid = uuid.v4();\n var size = this.getSize(id);\n fileUploadsService.fileUploads.push(\n {\n 'FileName': fileName,\n 'DocumentUploadTitle': this.title,\n 'DocumentUploadGroupTitle': this.groupTitle,\n 'UploaderId': id,\n 'TotalBytes': size,\n 'UploadedBytes': 0,\n 'PercentComplete': 0,\n 'Guid': guid,\n 'Status': 'submitted'\n });\n uploader.idsAndGuids[id] = guid;\n scope.$apply();\n },\n onProgress: function (id, fileName, uploadedBytes, totalBytes) {\n var matchingIndex = _.findIndex(fileUploadsService.fileUploads, { Guid: uploader.getGuid(id) });\n fileUploadsService.fileUploads[matchingIndex].Status = 'uploading';\n fileUploadsService.fileUploads[matchingIndex].UploadedBytes = uploadedBytes;\n fileUploadsService.fileUploads[matchingIndex].PercentComplete =\n Math.floor((fileUploadsService.fileUploads[matchingIndex].UploadedBytes /\n fileUploadsService.fileUploads[matchingIndex].TotalBytes) * 100);\n },\n onError: function (id, name, reason, xhr) {\n if (reason === 'No files to upload.') {\n // do nothing\n }\n else {\n notifyService.notify(reason, true);\n }\n }\n }\n });\n\n uploader.idsAndGuids = {};\n uploader.getGuid = function (id) {\n return uploader.idsAndGuids[id.toString().split('.')[0]];\n }\n uploader.user = scope.user;\n uploader.title = scope.title;\n uploader.groupTitle = scope.groupTitle;\n uploader.fileUploadsService = fileUploadsService;\n fileUploadsService.addUploader(uploader);\n\n }\n };\n }\n\n fileUploader.$inject = ['$http', '$compile', '$window', 'fileUploadsService', 'notifyService'];\n\n angular.module('ecap.common').directive('fileUploader', fileUploader);\n})();\n","(function () {\n 'use strict';\n\n function formSearch($rootScope, searchDataService, searchService) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/formSearch.html',\n scope: {\n searchControlId: '@',\n results: '=',\n searchConfiguration: '=',\n sessionData: '=',\n showResults: '=',\n attributes: '=',\n additionalQueryString: '@?',\n pageSize: '=?',\n pageNum: '=?',\n totalItems: '=?'\n },\n link: function (scope, element, attrs) {\n scope.showResults = true;\n\n if (!attrs.searchControlId) {\n scope.searchControlId = 'searchControlId';\n }\n\n scope.queryModel = {\n entity: scope.searchConfiguration.Entity,\n uri: scope.searchConfiguration.Uri,\n pageSize: scope.pageSize || 10,\n pageNum: scope.pageNum || 0,\n numPages: 0,\n orderBy: scope.searchConfiguration.DefaultOrderBy,\n orderByDirection: scope.searchConfiguration.DefaultOrderByDirection.toLowerCase(),\n predicates: {},\n injectedPredicates: scope.searchConfiguration.InjectedSearchCriteria,\n defaultPredicates: scope.searchConfiguration.DefaultSearchCriteria\n };\n\n if (scope.additionalQueryString) {\n scope.queryModel.additionalQueryString = scope.additionalQueryString;\n }\n\n scope.pageSizes = [5, 10, 15, 20, 25];\n\n scope.searchConfiguration.SearchCriteria.forEach(function (item) {\n scope.queryModel.predicates[item.SearchFieldName] = {\n value: item.SearchCondition === 'In' ? item.PresetValues : item.PresetValues.length > 0 ? item.PresetValues[0] : null,\n condition: item.SearchCondition,\n watch: function () { return true; }\n }\n });\n\n scope.$watch(function () { return scope.queryModel; },\n function () {\n getSearchResults(scope.queryModel);\n }, true);\n\n $rootScope.$on('pageIndexChanged', function (event, args) {\n if (args.searchControlId === scope.searchControlId) {\n scope.queryModel.pageNum = args.pageIndex;\n }\n });\n\n $rootScope.$on('pageSizeChanged', function (event, args) {\n if (args.searchControlId === scope.searchControlId) {\n scope.queryModel.pageSize = args.pageSize;\n scope.queryModel.pageNum = args.pageIndex;\n }\n });\n\n function getSearchResults() {\n searchDataService.getResults(scope.queryModel).then(function (data) {\n scope.results = data.Results;\n scope.totalItems = data.TotalResults;\n $rootScope.$emit('searchResultsChanged', {\n searchControlId: scope.searchControlId,\n results: scope.results,\n totalItems: scope.totalItems\n });\n });\n\n scope.attributes = searchService.getAttributes(scope.queryModel.predicates);\n }\n }\n };\n }\n\n formSearch.$inject = ['$rootScope', 'searchDataService', 'searchService'];\n\n angular.module('ecap.common').directive('formSearch', formSearch);\n})();","(function () {\n 'use strict';\n\n function handleError(rootScope, $compile) {\n return {\n link: function (scope, elem, attr) {\n //attach a method so the event raised from custom http interceptor\n scope.$on('response_error', function (e, status) {\n var el = angular.element('

An Error Was Encountered

' +\n '

We\\'re sorry, but the aplication encountered an error. Our support team has been notified.

');\n var compiledEl = $compile(el)(scope);\n $(elem).replaceWith(compiledEl);\n });\n }\n };\n }\n\n handleError.$inject = ['$rootScope', '$compile'];\n\n angular.module('ecap.common').directive('handleError', handleError);\n})();","(function () {\n 'use strict';\n\n function informationPartDocument(workflowStateService, zipbuilderDataService,\n notifyService, scrollingService, $timeout, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/informationPartDocument.html',\n scope: {\n identifier: '@',\n documentData: '=',\n parentData: '=',\n removeDocument: '&',\n deleteUpload: '&',\n canDelete: '=',\n mode: '=?',\n reorderMode: '=',\n stateUpdatedEventName: '@',\n updateDocumentPrompt: '&',\n sessionEntity: '=?',\n thumbnails: '='\n },\n link: function (scope, element, attrs) {\n scope.titleContext = '';\n scope.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n\n scope.showPartners = !(scope.parentData.Id && scope.parentData.Id.indexOf('WorkflowInternalContents') > -1);\n\n scope.siblingNames = scope.parentData.InformationParts.filter(function (part) {\n return !part.IsRemoved;\n }).map(function (p) { return p.Title; });\n\n scope.workflowTitleMode = scope.documentData.Access.Edit ? 'display': 'readonly';\n scope.editTitleData.Title = scope.documentData.Prompt;\n\n scope.editWorkflowTitle = function () {\n scope.workflowTitleMode = 'edit';\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n }\n\n scope.saveWorkflowTitle = function () {\n scope.documentData.Prompt = scope.editTitleData.Title;\n scope.updateDocumentPrompt();\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n scope.workflowTitleMode = 'display';\n notifyService.notify('The ' + scope.titleContext + ' title has been updated');\n }\n\n scope.cancelSaveWorkflowTitle = function () {\n scope.workflowTitleMode = 'display';\n scope.editTitleData.Title = scope.editTitleData.OriginalTitle;\n }\n\n scope.toggleDetails = function () {\n scope.documentData.isCollapsed = !scope.documentData.isCollapsed;\n }\n\n function updateZipDownloadButton(data) {\n scope.showZipDownload = scope.documentData.BlobSummaries.filter(function (blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).length > 1;\n\n if (data) {\n scope.zipDownloadBlobReference = data;\n notifyService.notify('A zip file was created for ' +\n scope.parentData.Prompt + ' - ' +\n 'Download Zip File');\n }\n else {\n scope.zipDownloadBlobReference = null;\n }\n }\n\n scope.buildZipFile = function () {\n var data = {\n Blobs: scope.documentData.BlobSummaries.filter(function(blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).map(function(filteredBlob) {\n return {\n FileName: filteredBlob.FileName,\n BlobReference: filteredBlob.BlobReference\n };\n })\n };\n scope.buildingZipFile = true;\n zipbuilderDataService.build(data).then(function (data) {\n scope.buildingZipFile = false;\n updateZipDownloadButton(data);\n }).catch(function (err) {\n scope.buildingZipFile = false;\n });\n };\n\n scope.$on(scope.stateUpdatedEventName, function () {\n setHasAvailableContent();\n scope.documentData.showZipDownload = updateZipDownloadButton();\n });\n\n updateZipDownloadButton();\n\n function setHasAvailableContent() {\n scope.hasAvailableContent = scope.documentData.BlobSummaries.some(function (blob) { return !blob.IsRemoved && blob.Access.View; });\n }\n setHasAvailableContent();\n scope.hasNotesOrSharing = scope.documentData.Partners ||\n scope.documentData.ProjectUnderwritingNotes;\n\n scope.removeUpload = function (blobIndex) {\n // TODO: change this\n scope.deleteUpload({ phase: scope.parentData, documentData: scope.documentData, blobIndex: blobIndex});\n\n $rootScope.$emit('fileRemoved',\n {\n parent: scope.documentData\n });\n }\n\n scope.toggleItem = function (item) {\n if (item.Access.ShowPartners || item.Access.Notes) {\n item.open = !item.open;\n }\n\n scrollingService.scrollTo(attrs.scrollToElementId + (item.open ? \"_expanded\" : \"\"),\n item.open ? 0 : 250, 0, 0);\n\n $rootScope.$emit('containerVisibilityChange',\n {\n containerName: scope.identifier,\n isVisible: item.open\n });\n }\n\n scope.onNoteAdded = function () {\n scope.noteCount += 1;\n }\n\n scope.onNoteRemoved = function (noteId) {\n var noteToRemoveIndex = scope.documentData.ProjectUnderwritingNotes.findIndex(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n scope.documentData.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n scope.noteCount -= 1;\n }\n\n scope.allowMultipleFiles = true;\n\n scope.canReorder = false;\n\n $rootScope.$watch(function () { return scope.reorderMode },\n function (newVal) { scope.canReorder = newVal; });\n }\n };\n }\n\n informationPartDocument.$inject = ['workflowStateService', 'zipbuilderDataService',\n 'notifyService', 'scrollingService', '$timeout', '$rootScope'];\n\n angular.module('ecap.common').directive('informationPartDocument', informationPartDocument);\n})();\n\n","(function () {\n 'use strict';\n\n function informationPartQuestion($rootScope, $timeout, notifyService) {\n\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/informationPartQuestion.html',\n scope: {\n questionData: '=',\n editorMode: '=?',\n canDelete: '=',\n removeQuestion: '&',\n syncQuestion: '&',\n reorderMode: '=',\n access: '='\n },\n link: function (scope, element, attrs) {\n if (!attrs.mode) {\n scope.editorMode = 'Editor';\n }\n\n scope.titleContext = '';\n scope.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n\n scope.siblingNames = [];\n\n scope.workflowTitleMode = scope.access.Edit ? 'display': 'readonly';\n scope.editTitleData.Title = scope.questionData.Prompt;\n\n scope.editWorkflowTitle = function () {\n scope.workflowTitleMode = 'edit';\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n }\n\n scope.saveWorkflowTitle = function () {\n scope.questionData.Prompt = scope.editTitleData.Title;\n scope.syncQuestion();\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n scope.workflowTitleMode = 'display';\n notifyService.notify('The ' + scope.titleContext + ' title has been updated');\n }\n\n scope.cancelSaveWorkflowTitle = function () {\n scope.workflowTitleMode = 'display';\n scope.editTitleData.Title = scope.editTitleData.OriginalTitle;\n }\n \n scope.editQuestionPromptModel = {\n Prompt: scope.questionData.Prompt\n }\n\n scope.editQuestionContentModel = angular.copy(scope.questionData);\n\n scope.toggleEditQuestionPrompt = function (save) {\n if (save) {\n // wait until changes propagate\n $timeout(function () {\n scope.questionData.Prompt = scope.editQuestionPromptModel.Prompt;\n scope.syncQuestion();\n }, 0);\n }\n else {\n scope.editQuestionPromptModel.Prompt = scope.questionData.Prompt;\n }\n\n scope.editingQuestionPrompt = !scope.editingQuestionPrompt;\n }\n\n scope.toggleEditQuestionContent = function (save) {\n if (save) {\n // wait until changes propagate\n $timeout(function () {\n if (scope.editQuestionContentModel.Options) {\n scope.questionData.Options =\n scope.editQuestionContentModel.Options.map(\n function (option) {\n return {\n Title: option.Title,\n Prompt: option.Prompt,\n IsSelected: option.IsSelected\n }\n }\n );\n }\n scope.syncQuestion();\n }, 0);\n }\n else {\n scope.editQuestionContentModel = angular.copy(scope.questionData);\n }\n\n scope.editingQuestionContent = !scope.editingQuestionContent;\n }\n\n scope.addOptionToQuestion = function () {\n scope.editQuestionContentModel.Options.push({\n Title: 'New Option',\n Prompt: 'New Option',\n IsSelected: false\n });\n }\n\n scope.removeOptionFromQuestion = function (optionIndex) {\n scope.editQuestionContentModel.Options.splice(optionIndex, 1);\n }\n\n scope.canReorder = false;\n\n scope.optionExists = function (optionPrompt) {\n return scope.questionData.Options.find(function (option) {\n return option.Prompt === optionPrompt && option.IsSelected;\n });\n };\n\n scope.toggleOption = function(optionPrompt) {\n var matchingOption = scope.questionData.Options.find(function (option) {\n return option.Prompt === optionPrompt });\n matchingOption.IsSelected = !matchingOption.IsSelected;\n }\n\n $rootScope.$watch(function () { return scope.reorderMode },\n function (newVal) { scope.canReorder = newVal; });\n }\n };\n }\n\n informationPartQuestion.$inject = ['$rootScope', '$timeout', 'notifyService'];\n\n angular.module('ecap.common').directive('informationPartQuestion', informationPartQuestion);\n})();\n\n","(function () {\n 'use strict';\n\n function informationPartQuestionSet(questionViewModelConfigurationService, notifyService, $rootScope, $timeout) {\n var controller = [\n '$scope', function ($scope) {\n this.addNewQuestion = function (newQuestion) {\n $scope.questionSetData.Questions.push(newQuestion);\n }\n\n this.toggleAddQuestion = function () {\n $scope.toggleAddQuestion();\n }\n }\n ];\n\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/informationPartQuestionSet.html',\n scope: {\n identifier: '@',\n questionSetData: '=',\n parentData: '=',\n mode: '=?',\n canDelete: '=',\n removeQuestionSet: '&',\n syncQuestionSet: '&',\n reorderMode: '=',\n stateUpdatedEventName: '@',\n sessionEntity: '=?'\n },\n link: function (scope, element, attrs) {\n if (!attrs.mode) {\n scope.mode = 'Editor';\n }\n\n scope.showPartners = !(scope.parentData.Id && scope.parentData.Id.indexOf('WorkflowInternalContents') > -1);\n\n scope.titleContext = '';\n scope.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n\n scope.siblingNames = scope.parentData.InformationParts.filter(function (part) {\n return !part.IsRemoved;\n }).map(function (p) { return p.Title; });\n\n scope.workflowTitleMode = scope.questionSetData.Access.Edit ? 'display': 'readonly';\n scope.editTitleData.Title = scope.questionSetData.Prompt;\n\n scope.editWorkflowTitle = function () {\n scope.workflowTitleMode = 'edit';\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n }\n\n scope.saveWorkflowTitle = function () {\n scope.questionSetData.Prompt = scope.editTitleData.Title;\n scope.updateText();\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n scope.workflowTitleMode = 'display';\n notifyService.notify('The ' + scope.titleContext + ' title has been updated');\n }\n\n scope.cancelSaveWorkflowTitle = function () {\n scope.workflowTitleMode = 'display';\n scope.editTitleData.Title = scope.editTitleData.OriginalTitle;\n }\n\n scope.toggleDetails = function () {\n scope.questionSetData.isCollapsed = !scope.questionSetData.isCollapsed;\n }\n\n scope.toggleEditPrompt = function (save) {\n if (save) {\n // wait until changes propagate\n $timeout(function () {\n scope.questionSetData.Prompt = scope.model.editedPrompt;\n scope.syncQuestionSet();\n }, 0);\n }\n scope.editingPrompt = !scope.editingPrompt;\n }\n\n function setHasAvailableContent() {\n scope.hasAvailableContent = scope.questionSetData.Questions\n .some(function (question) {\n return !question.IsRemoved;\n });\n }\n\n function mapData() {\n scope.questionSetData.Questions.filter(function (question) {\n return question.$type ===\n \"Ecap.Api.ViewModels.OptionsQuestionViewModel, Ecap.Api\";\n }).forEach(function (question) {\n var selectedOption = question.Options.find(function (option) {\n return option.IsSelected;\n });\n\n if (selectedOption) {\n question.SelectedOption = selectedOption.Prompt;\n }\n });\n }\n\n scope.$on(scope.stateUpdatedEventName, function () {\n setHasAvailableContent();\n });\n\n setHasAvailableContent();\n mapData();\n\n scope.hasNotesOrSharing = scope.questionSetData.Partners ||\n scope.questionSetData.ProjectUnderwritingNotes;\n // Issue here is that the note we create is not saved\n // when we go to sync the question set, we need to\n // have a way to not write over those notes\n scope.$watch(function () { return scope.questionSetData.Questions; },\n function (newVal, oldVal) {\n if (newVal && oldVal) {\n if (!angular.equals(newVal, oldVal)) {\n // Make sure we match up the Title and Prompt for Options Questions\n scope.questionSetData.Questions.filter(function (question) {\n return question.$type ===\n \"Ecap.Api.ViewModels.OptionsQuestionViewModel, Ecap.Api\";\n }).forEach(function (question) {\n question.Options.forEach(function (option) {\n option.Title = option.Prompt;\n\n if (!question.IsMultiSelect) {\n option.IsSelected = (question.SelectedOption === option.Prompt);\n }\n });\n\n });\n\n scope.syncQuestionSet();\n }\n }\n }, true);\n\n scope.onNoteAdded = function () {\n scope.noteCount += 1;\n }\n\n scope.onNoteRemoved = function (noteId) {\n var noteToRemoveIndex = scope.questionSetData.ProjectUnderwritingNotes.findIndex(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n scope.questionSetData.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n scope.noteCount -= 1;\n }\n\n scope.updateText = function () {\n // This trick makes sure the model is updated before we actually send the update\n $timeout(function () {\n scope.syncQuestionSet();\n }, 0);\n }\n\n scope.addQuestionIsActive = false;\n scope.toggleAddQuestion = function () {\n scope.addQuestionIsActive = !scope.addQuestionIsActive;\n }\n\n scope.reorderQuestions = function (questionIndex) {\n scope.questionSetData.Questions.splice(questionIndex, 1);\n scope.syncQuestionSet();\n }\n\n scope.removeQuestion = function (questionIndex) {\n scope.questionSetData.Questions[questionIndex].IsRemoved = true;\n scope.syncQuestionSet();\n notifyService.notify('You removed the question ' +\n scope.questionSetData.Questions[questionIndex].Prompt);\n }\n\n scope.optionExists = function (questionIndex, optionPrompt) {\n var question = scope.questionSetData.Questions[questionIndex];\n return question.Options.find(function (option) {\n return option.Prompt === optionPrompt && option.IsSelected;\n });\n };\n\n scope.canReorder = false;\n\n $rootScope.$watch(function () { return scope.reorderMode },\n function (newVal) { scope.canReorder = newVal; });\n },\n controller: controller\n };\n }\n\n informationPartQuestionSet.$inject = ['questionViewModelConfigurationService', 'notifyService', '$rootScope', '$timeout'];\n\n angular.module('ecap.common').directive('informationPartQuestionSet', informationPartQuestionSet);\n})();\n\n","(function () {\n 'use strict';\n\n function integerSearchField() {\n return {\n restrict: 'E',\n scope: {\n attribute: '=',\n changeEvent: '&'\n },\n templateUrl: 'common/directives/templates/integerSearchField.html',\n link: function (scope, element, attrs) {\n scope.hasChangeEvent = attrs.changeEvent;\n }\n };\n }\n\n integerSearchField.$inject = [];\n\n angular.module('ecap.common').directive('integerSearchField', integerSearchField);\n})();","(function () {\n 'use strict';\n\n function integerSearchFieldConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/integerSearchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n integerSearchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('integerSearchFieldConfiguration', integerSearchFieldConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function itemOperations($log) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/itemOperations.html',\n scope: {\n target: '=',\n index: '='\n },\n link: function (scope, element, attrs) {\n if (scope.target == undefined) {\n $log.error('could not find target for item operations ');\n $log.debug(attrs);\n }\n Array.prototype.move = function (old_index, new_index) {\n while (old_index < 0) {\n old_index += this.length;\n }\n while (new_index < 0) {\n new_index += this.length;\n }\n if (new_index >= this.length) {\n var k = new_index - this.length;\n while ((k--) + 1) {\n this.push(undefined);\n }\n }\n this.splice(new_index, 0, this.splice(old_index, 1)[0]);\n return this; // for testing purposes\n };\n\n\n scope.moveItemUp = function () {\n scope.target.move(scope.index, scope.index - 1);\n };\n\n scope.canMoveItemUp = function () {\n return scope.index > 0;\n };\n\n scope.moveItemDown = function () {\n scope.target.move(scope.index, scope.index + 1);\n };\n\n scope.canMoveItemDown = function () {\n return scope.index < (scope.target.length - 1);\n };\n\n // Remove function\n scope.removeItem = function () {\n scope.target.splice(scope.index, 1);\n };\n\n }\n };\n }\n\n itemOperations.$inject = ['$compile', '$http'];\n\n angular.module('ecap.common').directive('itemOperations', itemOperations);\n})();\n","(function () {\n 'use strict';\n\n function itemScroller($window, $timeout, $templateCache, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/itemScroller.html',\n transclude: true,\n scope: {\n items: '=',\n itemFillerContainerClass: '@'\n },\n link: function (scope, element, attrs) {\n function convertPxToInt(val) {\n if (!val) {\n return 0;\n }\n return parseInt(val.replace('px', ''), 10);\n }\n\n var fillerTemplateUrlAttrName = 'fillerTemplateUrl';\n if (attrs.hasOwnProperty(fillerTemplateUrlAttrName)) {\n scope.fillerTemplateUrl = attrs[fillerTemplateUrlAttrName];\n }\n\n var visibilityContainerAttrName = \"visibilityContainerName\";\n if (attrs.hasOwnProperty(visibilityContainerAttrName)) {\n scope.visibilityContainerName = attrs[visibilityContainerAttrName];\n }\n\n var defaultItemWidthAttrName = 'defaultItemWidth';\n if (attrs.hasOwnProperty(defaultItemWidthAttrName)) {\n scope.defaultItemWidth = parseInt(attrs[defaultItemWidthAttrName], 10);\n }\n\n scope.visibiltityContainerName =\n scope.firstItemIndex = 0;\n scope.lastVisibleItemIndex = 100;\n scope.currentPosition = 0;\n scope.canGoBackward = false;\n scope.canGoForward = false;\n scope.itemCapacity = 0;\n scope.hiddenItemsCount = 0;\n scope.shownItemsCount = 0;\n\n var listElement = $(element).find('.scrolling-list')[0];\n var containerElement = $(element).find('.item-scroller-items-container')[0];\n\n function getItemActualWidth(item) {\n return item.width() +\n convertPxToInt(item.css('margin-left')) +\n convertPxToInt(item.css('margin-right')) +\n convertPxToInt(item.css('padding-left')) +\n convertPxToInt(item.css('padding-right'));\n }\n\n function recalculateStyles() {\n var containerLeft = $(containerElement).offset().left;\n var containerRight = $(containerElement).offset().left +\n getItemActualWidth($(containerElement));\n\n if (!scope.defaultItemWidth) {\n throw new Error('must set default item width');\n }\n\n scope.itemCapacity = Math.floor((containerRight - containerLeft) / scope.defaultItemWidth);\n scope.fillerCount = scope.itemCapacity - Math.min(scope.itemCapacity, scope.items.length);\n scope.lowerBound = scope.currentPosition;\n scope.upperBound = scope.itemCapacity + scope.currentPosition;\n scope.canGoForward = scope.fillerCount === 0 &&\n (scope.currentPosition + scope.itemCapacity) < scope.items.length;\n scope.canGoBackward = scope.currentPosition > 0;\n $(listElement).css('left', (-1 * scope.currentPosition * scope.defaultItemWidth) + 'px');\n\n scope.fillerRange = [];\n if (scope.fillerCount && scope.fillerTemplateUrl) {\n for (var i = 0; i < scope.fillerCount; i++) {\n scope.fillerRange.push(i);\n }\n }\n }\n\n scope.moveForward = function () {\n scope.currentPosition += 1;\n recalculateStyles();\n }\n\n scope.moveBackward = function () {\n scope.currentPosition -= 1;\n recalculateStyles();\n }\n\n //angular.element($window).bind('resize', function () {\n // scope.width = $window.innerWidth;\n\n // // manuall $digest required as resize event\n // // is outside of angular\n\n // recalculateStyles();\n\n // scope.$digest();\n //});\n\n $rootScope.$on('containerVisibilityChange',\n function (event, args) {\n if (args.containerName === scope.visibilityContainerName &&\n args.isVisible) {\n $timeout(function () {\n recalculateStyles();\n }, 500);\n }\n });\n\n scope.$watch(function () { return scope.items.length },\n function (newVal, oldVal) {\n recalculateStyles();\n });\n\n $timeout(function () {\n recalculateStyles();\n });\n }\n };\n }\n\n itemScroller.$inject = ['$window', '$timeout', '$templateCache', '$rootScope'];\n\n angular.module('ecap.common').directive('itemScroller', itemScroller);\n})();\n","(function () {\n 'use strict';\n\n function itemTile($timeout, $document, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/itemTile.html',\n transclude: true,\n scope: {\n mode: '@?',\n imageUrl: '=',\n description: '=',\n badgeContext: '=',\n popoverConfig: '='\n },\n link: function (scope, element, attrs) {\n function setNoteBadgeData() {\n scope.showBadge = true;\n var comments = scope.badgeContext.ProjectUnderwritingNotes.filter(function (note) {\n return !note.IsDeleted;\n });\n scope.badgeImage = comments.length == 0 ? '/images/add_comment_plus_white.png' : '/images/add_comment_white.png';\n scope.badgeText = comments.length === 0 ? '' : comments.length;\n }\n\n if (scope.mode === 'comments') {\n setNoteBadgeData();\n var events = [\"noteSaved\", \"noteRemoved\", \"noteResolved\"];\n events.forEach(function (event) {\n $rootScope.$on(event, function (event, args) {\n if (args === scope.badgeContext.Path) {\n setNoteBadgeData();\n }\n });\n });\n\n $rootScope.$on('jumpToComment', function (event, args) {\n if (args.path === scope.badgeContext.Path) {\n var button = $(element).find('.item-tile-image-button');\n button.click();\n }\n });\n }\n if (scope.mode === 'readonly') {\n scope.showBadge = false;\n }\n\n if (scope.mode === 'addNew') {\n scope.showBadge = false;\n }\n }\n };\n }\n\n itemTile.$inject = ['$timeout', '$document', '$rootScope'];\n\n angular.module('ecap.common').directive('itemTile', itemTile);\n})();","(function () {\n 'use strict';\n\n var ivViewer = function () {\n return {\n restrict: 'AE',\n scope: {\n lowResUrl: '@',\n hiResUrl: '@'\n },\n link: function (scope, element, attrs) {\n var el = element[0];\n var viewer = new ImageViewer(el);\n viewer.load(scope.lowResUrl);\n\n // element.bind('contextmenu', function (event) {\n // event.preventDefault();\n // console.log(event);\n // console.log(viewer);\n // });\n }\n }\n };\n\n ivViewer.$inject = [];\n angular.module('ecap.common').directive('ivViewer', ivViewer);\n})();","(function () {\n 'use strict';\n\n var ivViewerGallery = function ($timeout) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/ivViewerGallery.html',\n scope: {\n images: '=',\n height: '@',\n width: '@'\n },\n link: function (scope, element, attrs) {\n scope.currentImageIndex = 0;\n var total = scope.images.length;\n\n var wrapper = element[0];\n var container = $(wrapper).find('.image-container')[0];\n\n var currentImageViewer;\n $timeout(function () {\n scope.imageElements = $(container).find('img').toArray();\n console.log(scope.imageElements);\n showImage();\n });\n\n function showImage() {\n if (currentImageViewer) {\n currentImageViewer.destroy();\n currentImageViewer = null;\n }\n var imageElement = scope.imageElements[scope.currentImageIndex];\n var imageEl = angular.element(imageElement);\n imageEl.css('width', scope.width + 'px');\n imageEl.css('height', scope.height + 'px');\n currentImageViewer = new ImageViewer(imageElement);\n }\n\n scope.showNext = function() {\n if (scope.currentImageIndex < total - 1) {\n scope.currentImageIndex++;\n showImage();\n }\n };\n\n scope.showPrevious = function () {\n if (scope.currentImageIndex > 0) {\n scope.currentImageIndex--;\n showImage();\n }\n };\n }\n }\n };\n\n ivViewerGallery.$inject = ['$timeout'];\n angular.module('ecap.common').directive('ivViewerGallery', ivViewerGallery);\n})();","(function () {\n 'use strict';\n\n function mdTheme($rootScope) {\n return {\n restrict: 'A',\n link: function (scope, elem, attrs) {\n $rootScope.$currentTheme = attrs['mdTheme'];\n }\n };\n }\n\n mdTheme.$inject = ['$rootScope'];\n\n angular.module('ecap.common').directive('mdTheme', mdTheme);\n})();","(function () {\n 'use strict';\n\n function overflowToggle($compile, $timeout, $rootScope, scrollingService) {\n\n return {\n restrict: 'A',\n scope: {\n toggleButtonExpandText: '@',\n toggleButtonCollapseText: '@',\n toggleTriggerName: '@',\n toggleTriggerMatchData: '=',\n toggleEnabled: '='\n },\n link: function (scope, element, attrs) {\n if ('showToggleText' in attrs) {\n scope.showToggleText = true;\n }\n\n if (!scope.toggleEnabled) {\n return;\n }\n\n if (!attrs.maxHeight) {\n throw new Error('max-height is missing');\n }\n\n if (!attrs.toggleButtonExpandText) {\n throw new Error('toggle-button-expand-text is missing');\n }\n\n if (!attrs.toggleButtonCollapseText) {\n throw new Error('toggle-button-collapse-text is missing');\n }\n\n if (!attrs.toggleButtonClass) {\n throw new Error('toggle-button-class is missing');\n }\n\n if (!attrs.toggleButtonId) {\n throw new Error('toggle-button-id is missing');\n }\n\n if (!attrs.toggleButtonScrollOffset) {\n throw new Error('toggle-button-scroll-offset is missing');\n }\n\n scope.isExpanded = true;\n var maxHeight = 0;\n var toggleOffset = 0;\n var expandedHeight = 0;\n\n scope.toggleOverflow = function () {\n if (scope.isExpanded) {\n $(element).css('max-height', attrs.maxHeight + 'px');\n $(element).css('overflow', 'hidden');\n }\n else {\n $(element).css('max-height', '');\n $(element).css('overflow', '');\n }\n\n if (scope.isInitialized) {\n scrollingService.scrollTo(attrs.toggleButtonId,\n scope.isExpanded ? toggleOffset : toggleOffset + expandedHeight, 0, 0);\n }\n\n scope.isExpanded = !scope.isExpanded;\n scope.isInitialized = true;\n }\n\n if (attrs.toggleTriggerName) {\n $rootScope.$on(attrs.toggleTriggerName, function (event, args) {\n if (angular.equals(args, scope.toggleTriggerMatchData)) {\n initialize();\n }\n });\n }\n\n scope.initialized = false;\n\n function generateTemplate(toggleButtonId, toggleButtonClass) {\n var templateWithoutText = '
' +\n '
' +\n '' +\n '
';\n\n var templateWithText = '
' +\n '
' +\n '
';\n return scope.showToggleText ? templateWithText : templateWithoutText;\n }\n\n function initialize() {\n expandedHeight = $(element).height();\n toggleOffset = parseInt(attrs.toggleButtonScrollOffset, 10);\n maxHeight = parseInt(attrs.maxHeight, 10);\n if ($(element).height() > maxHeight) {\n $(element).parent().append($compile(generateTemplate(attrs.toggleButtonId, attrs.toggleButtonClass))(scope));\n scope.toggleOverflow();\n }\n }\n }\n };\n };\n\n overflowToggle.$inject = ['$compile', '$timeout', '$rootScope', 'scrollingService'];\n angular.module('ecap.common').directive('overflowToggle', overflowToggle);\n})();","(function () {\n 'use strict';\n\n function phaseDocuments(workflowStateService, zipbuilderDataService,\n notifyService, scrollingService, $timeout, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/phaseDocuments.html',\n scope: {\n identifier: '@',\n documentData: '=',\n parentData: '=',\n removeDocument: '&',\n deleteUpload: '&',\n removeRequiredDownload: '&',\n canDelete: '=',\n mode: '=?',\n reorderMode: '=',\n stateUpdatedEventName: '@',\n updateDocumentPrompt: '&',\n sessionEntity: '=?',\n thumbnails: '=',\n templates: '='\n },\n link: function (scope, element, attrs) {\n scope.titleContext = '';\n scope.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n\n scope.showPartners = !(scope.parentData.Id && scope.parentData.Id.indexOf('WorkflowInternalContents') > -1);\n\n scope.siblingNames = scope.parentData.InformationParts.filter(function (part) {\n return !part.IsRemoved;\n }).map(function (p) { return p.Title; });\n\n scope.workflowTitleMode = scope.documentData.Access.Edit ? 'display': 'readonly';\n scope.editTitleData.Title = scope.documentData.Prompt;\n\n scope.editWorkflowTitle = function () {\n scope.workflowTitleMode = 'edit';\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n }\n\n scope.saveWorkflowTitle = function () {\n scope.documentData.Prompt = scope.editTitleData.Title;\n scope.updateDocumentPrompt();\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n scope.workflowTitleMode = 'display';\n notifyService.notify('The ' + scope.titleContext + ' title has been updated');\n }\n\n scope.cancelSaveWorkflowTitle = function () {\n scope.workflowTitleMode = 'display';\n scope.editTitleData.Title = scope.editTitleData.OriginalTitle;\n }\n\n scope.toggleDetails = function () {\n scope.documentData.isCollapsed = !scope.documentData.isCollapsed;\n }\n\n function updateZipDownloadButton(data) {\n scope.showZipDownload = scope.documentData.BlobSummaries.filter(function (blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).length > 1;\n\n if (data) {\n scope.zipDownloadBlobReference = data;\n notifyService.notify('A zip file was created for ' +\n scope.parentData.Prompt + ' - ' +\n 'Download Zip File');\n }\n else {\n scope.zipDownloadBlobReference = null;\n }\n }\n\n scope.buildZipFile = function () {\n var data = {\n Blobs: scope.documentData.BlobSummaries.filter(function(blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).map(function(filteredBlob) {\n return {\n FileName: filteredBlob.FileName,\n BlobReference: filteredBlob.BlobReference\n };\n })\n };\n scope.buildingZipFile = true;\n zipbuilderDataService.build(data).then(function (data) {\n scope.buildingZipFile = false;\n updateZipDownloadButton(data);\n }).catch(function (err) {\n scope.buildingZipFile = false;\n });\n };\n\n scope.$on(scope.stateUpdatedEventName, function () {\n setHasAvailableContent();\n scope.documentData.showZipDownload = updateZipDownloadButton();\n });\n\n updateZipDownloadButton();\n\n function setHasAvailableContent() {\n scope.hasAvailableContent = scope.documentData.BlobSummaries.some(function (blob) { return !blob.IsRemoved && blob.Access.View; }) || scope.templates.some(function (template) { return !template.IsRemoved; });\n }\n setHasAvailableContent();\n scope.hasNotesOrSharing = scope.documentData.Partners ||\n scope.documentData.ProjectUnderwritingNotes;\n\n scope.removeUpload = function (blobIndex) {\n // TODO: change this\n scope.deleteUpload({ phase: scope.parentData, documentData: scope.documentData, blobIndex: blobIndex});\n\n $rootScope.$emit('fileRemoved',\n {\n parent: scope.documentData\n });\n }\n\n scope.removeTemplate = function (templateIndex) {\n scope.removeRequiredDownload({ downloadIndex: templateIndex });\n }\n\n scope.toggleItem = function (item) {\n if (item.Access.ShowPartners || item.Access.Notes) {\n item.open = !item.open;\n }\n\n scrollingService.scrollTo(attrs.scrollToElementId + (item.open ? \"_expanded\" : \"\"),\n item.open ? 0 : 250, 0, 0);\n\n $rootScope.$emit('containerVisibilityChange',\n {\n containerName: scope.identifier,\n isVisible: item.open\n });\n }\n\n scope.onNoteAdded = function () {\n scope.noteCount += 1;\n }\n\n scope.onNoteRemoved = function (noteId) {\n var noteToRemoveIndex = scope.documentData.ProjectUnderwritingNotes.findIndex(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n scope.documentData.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n scope.noteCount -= 1;\n }\n\n scope.allowMultipleFiles = true;\n\n scope.canReorder = false;\n\n scope.toggleRequiredDownloadEdit = function (title) {\n var requiredDownloadIndex = scope.templates.findIndex(function (template) { return template.Title == title});\n scope.templates[requiredDownloadIndex].isEditingTitle = !scope.templates[requiredDownloadIndex].isEditingTitle;\n }\n\n scope.saveRequiredDownloadPrompt = function(title) {\n var requiredDownloadIndex = scope.templates.findIndex(function (template) { return template.Title == title});\n if (scope.templates[requiredDownloadIndex].OriginalPrompt !== scope.templates[requiredDownloadIndex].Prompt) {\n notifyService.notify('You updated the title to ' + scope.templates[requiredDownloadIndex].Prompt);\n workflowStateService.updateRequiredDownloadPrompt(scope.parentData, scope.templates[requiredDownloadIndex]);\n }\n }\n\n scope.toggleBlobSummaryEdit = function (index) {\n scope.documentData.BlobSummaries[index].isEditingTitle = !scope.documentData.BlobSummaries[index].isEditingTitle;\n console.log(scope.documentData.BlobSummaries[index]);\n }\n\n scope.saveBlobSummaryFileName = function(index) {\n if (scope.documentData.BlobSummaries[index].FileNameWithoutExtension !== \n scope.documentData.BlobSummaries[index].OriginalFileNameWithoutExtension) {\n notifyService.notify('You updated the title to ' + scope.documentData.BlobSummaries[index].FileNameWithoutExtension + \n scope.documentData.BlobSummaries[index].Extension);\n workflowStateService.updateBlobSummmaryFileName(scope.parentData, scope.documentData, scope.documentData.BlobSummaries[index], index);\n }\n }\n\n $rootScope.$watch(function () { return scope.reorderMode },\n function (newVal) { scope.canReorder = newVal; });\n }\n };\n }\n\n phaseDocuments.$inject = ['workflowStateService', 'zipbuilderDataService',\n 'notifyService', 'scrollingService', '$timeout', '$rootScope'];\n\n angular.module('ecap.common').directive('phaseDocuments', phaseDocuments);\n})();\n\n","(function () {\n 'use strict';\n\n function phaseQuestionSets(questionViewModelConfigurationService, workflowStateService, notifyService, $rootScope, $timeout) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/phaseQuestionSets.html',\n scope: {\n identifier: '@',\n questionSetData: '=',\n parentData: '=',\n mode: '=?',\n canDelete: '=',\n removeQuestionSet: '&',\n syncQuestionSet: '&',\n reorderMode: '=',\n stateUpdatedEventName: '@',\n sessionEntity: '=?'\n },\n link: function (scope, element, attrs) {\n if (!attrs.mode) {\n scope.mode = 'Editor';\n }\n\n scope.addNewQuestion = function (newQuestion) {\n scope.questionSetData.Questions.push(newQuestion);\n }\n\n scope.showPartners = !(scope.parentData.Id && scope.parentData.Id.indexOf('WorkflowInternalContents') > -1);\n\n scope.titleContext = '';\n scope.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n\n scope.siblingNames = scope.parentData.InformationParts.filter(function (part) {\n return !part.IsRemoved;\n }).map(function (p) { return p.Title; });\n\n scope.workflowTitleMode = scope.questionSetData.Access.Edit ? 'display': 'readonly';\n scope.editTitleData.Title = scope.questionSetData.Prompt;\n\n scope.editWorkflowTitle = function () {\n scope.workflowTitleMode = 'edit';\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n }\n\n scope.saveWorkflowTitle = function () {\n scope.questionSetData.Prompt = scope.editTitleData.Title;\n scope.updateText();\n scope.editTitleData.OriginalTitle = scope.editTitleData.Title;\n scope.workflowTitleMode = 'display';\n notifyService.notify('The ' + scope.titleContext + ' title has been updated');\n }\n\n scope.cancelSaveWorkflowTitle = function () {\n scope.workflowTitleMode = 'display';\n scope.editTitleData.Title = scope.editTitleData.OriginalTitle;\n }\n\n scope.toggleDetails = function () {\n scope.questionSetData.isCollapsed = !scope.questionSetData.isCollapsed;\n }\n\n scope.toggleEditPrompt = function (save) {\n if (save) {\n // wait until changes propagate\n $timeout(function () {\n scope.questionSetData.Prompt = scope.model.editedPrompt;\n scope.syncQuestionSet();\n scope.questionSetData.originalQuestionSetData = workflowStateService.backupQuestionSet(scope.questionSetData);\n }, 0);\n }\n scope.editingPrompt = !scope.editingPrompt;\n }\n\n function setHasAvailableContent() {\n scope.hasAvailableContent = scope.questionSetData.Questions\n .some(function (question) {\n return !question.IsRemoved;\n }) || scope.addQuestionIsActive;\n }\n\n function mapData() {\n scope.questionSetData.Questions.filter(function (question) {\n return question.$type ===\n \"Ecap.Api.ViewModels.OptionsQuestionViewModel, Ecap.Api\";\n }).forEach(function (question) {\n var selectedOption = question.Options.find(function (option) {\n return option.IsSelected;\n });\n\n if (selectedOption) {\n question.SelectedOption = selectedOption.Prompt;\n }\n });\n }\n\n scope.$on(scope.stateUpdatedEventName, function () {\n setHasAvailableContent();\n });\n\n setHasAvailableContent();\n mapData();\n\n scope.hasNotesOrSharing = scope.questionSetData.Partners ||\n scope.questionSetData.ProjectUnderwritingNotes;\n // Issue here is that the note we create is not saved\n // when we go to sync the question set, we need to\n // have a way to not write over those notes\n scope.$watch(function () { return scope.questionSetData.Questions; },\n function (newVal, oldVal) {\n if (newVal) {\n setHasAvailableContent();\n }\n if (newVal && oldVal) {\n if (!angular.equals(newVal, oldVal)) {\n // Make sure we match up the Title and Prompt for Options Questions\n scope.questionSetData.Questions.filter(function (question) {\n return question.$type ===\n \"Ecap.Api.ViewModels.OptionsQuestionViewModel, Ecap.Api\";\n }).forEach(function (question) {\n question.Options.forEach(function (option) {\n option.Title = option.Prompt;\n\n if (!question.IsMultiSelect) {\n option.IsSelected = (question.SelectedOption === option.Prompt);\n }\n });\n\n });\n\n scope.syncQuestionSet();\n scope.questionSetData.originalQuestionSetData = workflowStateService.backupQuestionSet(scope.questionSetData);\n }\n }\n }, true);\n\n scope.onNoteAdded = function () {\n scope.noteCount += 1;\n }\n\n scope.onNoteRemoved = function (noteId) {\n var noteToRemoveIndex = scope.questionSetData.ProjectUnderwritingNotes.findIndex(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n scope.questionSetData.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n scope.noteCount -= 1;\n }\n\n scope.updateText = function () {\n // This trick makes sure the model is updated before we actually send the update\n $timeout(function () {\n scope.syncQuestionSet();\n scope.questionSetData.originalQuestionSetData = workflowStateService.backupQuestionSet(scope.questionSetData);\n }, 0);\n }\n\n scope.addQuestionIsActive = false;\n scope.toggleAddQuestion = function () {\n scope.addQuestionIsActive = !scope.addQuestionIsActive;\n setHasAvailableContent();\n }\n\n scope.reorderQuestions = function (questionIndex) {\n scope.questionSetData.Questions.splice(questionIndex, 1);\n scope.syncQuestionSet();\n scope.questionSetData.originalQuestionSetData = workflowStateService.backupQuestionSet(scope.questionSetData);\n }\n\n scope.removeQuestion = function (questionIndex) {\n scope.questionSetData.Questions[questionIndex].IsRemoved = true;\n scope.syncQuestionSet();\n scope.questionSetData.originalQuestionSetData = workflowStateService.backupQuestionSet(scope.questionSetData);\n\n notifyService.notify('You removed the question ' +\n scope.questionSetData.Questions[questionIndex].Prompt);\n }\n\n scope.optionExists = function (questionIndex, optionPrompt) {\n var question = scope.questionSetData.Questions[questionIndex];\n return question.Options.find(function (option) {\n return option.Prompt === optionPrompt && option.IsSelected;\n });\n };\n\n scope.canReorder = false;\n\n $rootScope.$watch(function () { return scope.reorderMode },\n function (newVal) { scope.canReorder = newVal; });\n }\n };\n }\n\n phaseQuestionSets.$inject = ['questionViewModelConfigurationService', 'workflowStateService', 'notifyService', '$rootScope', '$timeout'];\n\n angular.module('ecap.common').directive('phaseQuestionSets', phaseQuestionSets);\n})();\n\n","(function () {\n 'use strict';\n\n function platformEntityReferralGenerator($rootScope, platformEntityReferralDataService, notifyService) {\n return {\n restrict: 'E',\n require: '^form',\n templateUrl: 'common/directives/templates/platformEntityReferralGenerator.html',\n scope: {\n referralData: '=',\n shareAction: '&',\n initiallyActivated: '=',\n hideButton: '=?',\n onActivated: '&',\n onClosed: '&'\n },\n link: function (scope, element, attrs, formController) {\n scope.formData = formController;\n scope.isActive = false;\n scope.activate = function() {\n scope.isActive = true;\n scope.onActivated();\n }\n\n scope.close = function(referralSubmitted) {\n scope.isActive = false;\n scope.companyName = '';\n scope.firstName = '';\n scope.emailAddress = '';\n scope.onClosed(referralSubmitted);\n }\n\n if (scope.initiallyActivated) {\n scope.activate();\n }\n\n scope.send = function() {\n platformEntityReferralDataService.createPlatformEntityReferral({\n PlatformId: scope.referralData.platformId,\n SiteConfigurationId: scope.referralData.siteConfigurationId,\n CompanyName: scope.formData.companyName.$viewValue,\n FirstName: scope.formData.firstName.$viewValue,\n LastName: scope.formData.lastName.$viewValue,\n EmailAddress: scope.formData.emailAddress.$viewValue,\n ReferralObject:\n {\n ReferrerEntityId: scope.referralData.referrerEntityId,\n ObjectType: scope.referralData.objectType,\n ObjectId: scope.referralData.objectId,\n ObjectReferralPath: scope.referralData.objectReferralPath,\n ObjectReferralMessage: scope.referralData.objectReferralMessage\n }\n }).then(function(data) {\n if (data.ResponseType === 'Entity') {\n scope.shareAction({ partner: data.Value });\n }\n else {\n notifyService.notify('Your referral has been sent');\n }\n scope.close({referralSent: true});\n }).catch(function(error) {\n notifyService.notify('There was an error sending your referral', true);\n });\n }\n\n $rootScope.$on('platformEntityReferralGeneratorActivated',\n function(event, args) {\n scope.activate();\n });\n }\n };\n }\n\n platformEntityReferralGenerator.$inject = ['$rootScope', 'platformEntityReferralDataService', 'notifyService'];\n\n angular.module('ecap.common').directive('platformEntityReferralGenerator', platformEntityReferralGenerator);\n})();","(function () {\n 'use strict';\n\n function productCard() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/productCard.html',\n scope: {\n product: '=',\n actionText: '@',\n action: '&'\n },\n link: function (scope, element, attrs) {\n scope.toggleProductAccordion = function () {\n scope.product.open = !scope.product.open;\n }\n }\n };\n }\n\n productCard.$inject = [];\n\n angular.module('ecap.common').directive('productCard', productCard);\n})();","(function () {\n 'use strict';\n\n var scrollTo = function ($log, scrollingService) {\n var linker = function (scope, element, attrs) {\n\n var onElementClick = function () {\n scrollingService.scrollTo(attrs[\"scrollTo\"], attrs[\"scrollOffset\"], attrs[\"scrollDuration\"], attrs[\"scrollEasing\"]);\n };\n\n element.on('click', onElementClick);\n\n scope.$on('$destroy', function () {\n element.off('click', onElementClick);\n });\n };\n\n return {\n restrict: 'A',\n link: linker,\n scope: {}\n };\n };\n\n scrollTo.$inject = ['$log', 'scrollingService'];\n angular.module('ecap.common').directive('scrollTo', scrollTo);\n})();","(function () {\n 'use strict';\n\n function searchFieldConfiguration() {\n\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/searchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n searchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('searchFieldConfiguration', searchFieldConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function setClassWhenAtTop($window, $timeout, $rootScope) {\n var $win = angular.element($window); // wrap window object as jQuery object\n function getStateName() {\n return $rootScope.$state.current.name;\n }\n\n return {\n restrict: 'A',\n scope: {\n stateNames : '@'\n },\n link: function (scope, element, attrs) {\n\n $timeout(function() {\n // this waits for the dom to be ready\n if (scope.stateNames) {\n var stateNames = scope.stateNames.split(',');\n // when tabs change we want to recalibrate\n scope.$watch(function () { return getStateName(); }, function (newVal, oldVal) {\n if (newVal && (newVal !== oldVal)) {\n if (stateNames.indexOf(newVal) !== -1) {\n setClass(element);\n }\n }\n });\n\n // just in case the tab is active when the page loaded\n if ($(element).is(':visible')) {\n setClass(element);\n }\n } else {\n setClass(element);\n }\n\n function setClass(element) {\n var topClass = attrs.setClassWhenAtTop; // get CSS class from directive's attribute value\n var offsetTop = element.offset().top; // get element's offset top relative to document\n\n fixToTop();\n\n $win.on('scroll', function(e) {\n fixToTop();\n });\n\n function fixToTop() {\n if ($win.scrollTop() >= offsetTop) {\n element.addClass(topClass);\n } else {\n element.removeClass(topClass);\n }\n }\n }\n });\n }\n };\n };\n\n setClassWhenAtTop.$inject = ['$window', '$timeout', '$rootScope'];\n angular.module('ecap.common').directive('setClassWhenAtTop', setClassWhenAtTop);\n})();","(function () {\n 'use strict';\n\n function simpleSearch(searchDataService, searchService,\n $log, $timeout, $window, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/simpleSearch.html',\n transclude: true,\n scope: {\n results: '=',\n uri: '@',\n pageSize: '@',\n searchFieldName: '@',\n searchCondition: '@',\n searchFieldPrompt: '@',\n defaultOrderBy: '@',\n defaultOrderByDirection: '@',\n datasetName: '@'\n },\n link: function (scope, element, attrs) {\n scope.isLoading = true;\n scope.queryModel = {\n uri: scope.uri,\n pageSize: scope.pageSize,\n pageNum: 0,\n numPages: 0,\n orderBy: scope.defaultOrderBy,\n orderByDirection: scope.defaultOrderByDirection.toLowerCase(),\n predicates: {},\n injectedPredicates: []\n };\n\n scope.showPager = attrs.showPager != undefined;\n scope.allowPageSizeChange = attrs.allowPageSizeChange != undefined;\n scope.enableSearchBox = true;\n scope.getAllResults = attrs.getAllResults != undefined;\n\n if (scope.getAllResults) {\n scope.queryModel.getAllResults = true;\n }\n\n if (scope.showPager) {\n $timeout(function() {\n scope.pagerElement = $(element).find('.simple-search-results-container');\n });\n }\n\n if (scope.searchFieldName && scope.searchFieldPrompt && scope.searchCondition) {\n scope.queryModel.predicates[scope.searchFieldName] = {\n value: null,\n condition: scope.searchCondition,\n watch: function () { return true; }\n };\n }\n else if (!scope.searchFieldName && !scope.searchFieldPrompt && !scope.searchCondition) {\n scope.enableSearchBox = false;\n }\n else {\n scope.enableSearchBox = true;\n $log.warn('Invalid configuration for simpleSearch. Must provide searchFieldName, searchFieldPrompt and searchCondition');\n }\n\n scope.pageSizes = [5, 10, 15, 20, 25];\n\n scope.$watch(function () { return scope.queryModel; },\n function (newVal, oldVal) {\n if (oldVal && oldVal.pageNum >= 0 && oldVal.pageSize >= 0) {\n if ((oldVal.pageNum !== newVal.pageNum) ||\n (oldVal.pageSize !== newVal.pageSize)) {\n scope.pagerEvent = true;\n }\n }\n console.log('get results: ' + scope.datasetName + '| page ' + scope.queryModel.pageNum);\n getSearchResults(scope.queryModel);\n scope.resultsReady = true;\n }, true);\n\n function getSearchResults() {\n scope.isLoading = true;\n scope.canInfiniteScroll = false;\n searchDataService.getResults(scope.queryModel).then(function (data) {\n if (!scope.firstDataLoad) {\n scope.dataLoaded = true;\n // if (scope.pagerEvent && !append) {\n // $timeout(function() {\n // // scroll to top of grid\n // if (scope.pagerElement) {\n // var offset = $(scope.pagerElement).offset();\n // // TODO: make configurable\n // $window.scroll(offset.left, offset.top - 100);\n // scope.pagerEvent = false;\n // }\n // });\n // }\n }\n scope.results = scope.isAppending ? scope.results.concat(data.Results) : data.Results;\n scope.totalItems = data.TotalResults;\n scope.isLoading = false;\n scope.isAllDataLoaded = scope.results.length === data.TotalResults;\n\n if (scope.datasetName && scope.isAllDataLoaded) {\n $rootScope.$emit('noMoreResults', { datasetName: scope.datasetName });\n }\n });\n\n scope.attributes = searchService.getAttributes(scope.queryModel.predicates);\n }\n\n\n if (scope.datasetName) {\n $rootScope.$on('getNextResults', function (event, args) {\n if (args.datasetName === scope.datasetName) {\n scope.isAppending = true;\n scope.queryModel.pageNum += 1;\n }\n })\n }\n }\n };\n }\n\n simpleSearch.$inject = ['searchDataService', 'searchService',\n '$log', '$timeout', '$window', '$rootScope'];\n\n angular.module('ecap.common').directive('simpleSearch', simpleSearch);\n})();","(function () {\n 'use strict';\n\n function skipTabbing() {\n return {\n restrict: 'A',\n link: function (scope, element, attrs) {\n attrs.$set('tabindex', '-1');\n }\n };\n }\n\n skipTabbing.$inject = [];\n\n angular.module('ecap.common').directive('skipTabbing', skipTabbing);\n})();","(function () {\n 'use strict';\n\n function sortColumn() {\n return {\n restrict: 'A',\n templateUrl: 'common/directives/templates/sortColumn.html',\n scope: {\n columnName: '@',\n activeSortDirection: '=',\n activeSortColumnName: '=',\n sortClick: '&'\n },\n link: function (scope, element, attrs) {\n scope.changeSort = function () {\n\n }\n }\n };\n }\n\n sortColumn.$inject = [];\n\n angular.module('ecap.common').directive('sortColumn', sortColumn);\n})();","(function () {\n 'use strict';\n\n function statusSearchField() {\n return {\n restrict: 'E',\n scope: {\n attribute: '=',\n changeEvent: '&'\n },\n templateUrl: 'common/directives/templates/statusSearchField.html',\n link: function (scope, element, attrs) {\n scope.hasChangeEvent = attrs.changeEvent;\n }\n };\n }\n\n statusSearchField.$inject = [];\n\n angular.module('ecap.common').directive('statusSearchField', statusSearchField);\n})();","(function () {\n 'use strict';\n\n function statusSearchFieldConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/statusSearchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n statusSearchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('statusSearchFieldConfiguration', statusSearchFieldConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function stopEvent() {\n return {\n restrict: 'A',\n link: function (scope, element, attr) {\n element.on(attr.stopEvent, function (e) {\n e.stopPropagation();\n });\n }\n }\n }\n\n stopEvent.$inject = [];\n\n angular.module('ecap.common').directive('stopEvent', stopEvent);\n})();","(function () {\n 'use strict';\n\n function textSearchField() {\n return {\n restrict: 'E',\n scope: {\n attribute: '=',\n changeEvent: '&'\n },\n templateUrl: 'common/directives/templates/textSearchField.html',\n link: function (scope, element, attrs) {\n scope.hasChangeEvent = attrs.changeEvent;\n\n scope.exists = function (optionPrompt) {\n return scope.attribute.Options.find(function (option) {\n return option.Value === optionPrompt && option.Selected;\n });\n };\n\n scope.toggle = function(optionPrompt) {\n var matchingOption = scope.attribute.Options.find(function (option) {\n return option.Value === optionPrompt });\n matchingOption.Selected = !matchingOption.Selected;\n\n scope.attribute.Value = scope.attribute.Options.filter(\n function (option) {\n return option.Selected;\n }\n ).map(function (selectedOption) {\n return selectedOption.Value;\n });\n }\n // scope.exists = function (item, list) {\n // if (!list) {\n // list = [];\n // }\n // return list.indexOf(item) > -1;\n // };\n\n // scope.toggle = function (item, list) {\n // var index = list.indexOf(item);\n // if (index > -1)\n // {\n // list.splice(index, 1);\n // }\n // else\n // {\n // list.push(item);\n // }\n // };\n }\n };\n }\n\n textSearchField.$inject = [];\n\n angular.module('ecap.common').directive('textSearchField', textSearchField);\n})();","(function () {\n 'use strict';\n\n function textSearchFieldConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/textSearchFieldConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n textSearchFieldConfiguration.$inject = [];\n\n angular.module('ecap.common').directive('textSearchFieldConfiguration', textSearchFieldConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function toggle() {\n return {\n restrict: 'C',\n scope: {\n 'collapsedClass': '@',\n 'expandedClass': '@'\n },\n link: function (scope, element, attrs) {\n var collapsedClass = scope.collapsedClass || 'glyphicon-chevron-down';\n var expandedClass = scope.expandedClass || 'glyphicon-chevron-right';\n element.on(\"click\", function () {\n var toggleContent = element.parent().children('.toggleContent').first();\n if (toggleContent.is(':hidden')) {\n element.find('span').first().removeClass(collapsedClass);\n element.find('span').first().addClass(expandedClass);\n toggleContent.show();\n } else {\n element.find('span').first().addClass(collapsedClass);\n element.find('span').first().removeClass(expandedClass);\n toggleContent.hide();\n }\n });\n }\n };\n }\n\n toggle.$inject = [];\n\n angular.module('ecap.common').directive('toggle', toggle);\n})();","(function () {\n 'use strict';\n\n function valueNotInListValidate() {\n return {\n restrict: 'A',\n scope: {\n valuesList: '='\n },\n require: 'ngModel',\n link: function (scope, element, attrs, ngModel) {\n // add a parser that will process each time the value is \n // parsed into the model when the user updates it.\n ngModel.$parsers.unshift(function (value) {\n if (!scope.valuesList || scope.valuesList.length === 0) {\n return value;\n }\n\n // test and set the validity after update.\n var valid = scope.valuesList.indexOf(value) === -1;\n // if it's valid, return the value to the model, \n // otherwise return undefined.\n\n ngModel.$setValidity('valueNotInListValidate', valid);\n\n return valid ? value : undefined;\n });\n\n // add a formatter that will process each time the value\n // is updated on the DOM element.\n ngModel.$formatters.unshift(function (value) {\n // return the value or nothing will be written to the DOM.\n return value;\n });\n }\n };\n }\n\n valueNotInListValidate.$inject = [];\n\n angular.module('ecap.common').directive('valueNotInListValidate', valueNotInListValidate);\n})();","(function () {\n 'use strict';\n\n function wirePopover($rootScope, $timeout) {\n return {\n restrict: 'A',\n link: function (scope, element, attrs) {\n scope.contextId = attrs['wirePopover'];\n scope.togglePopoverClicked = function(event) {\n event.preventDefault();\n event.stopPropagation();\n scope.isPopoverClicked = !scope.isPopoverClicked;\n $rootScope.$broadcast('popoverOpened', { contextId: scope.contextId });\n };\n\n scope.closePopover = function() {\n if (scope.isPopoverClicked) {\n delete scope.isPopoverClicked;\n }\n };\n \n scope.isPopoverOpen = function() {\n if(scope.isPopoverClicked) {\n return true;\n } else if(false === scope.isPopoverClicked){\n return false;\n }\n };\n\n $rootScope.$on('popoverOpened', function (event, args) {\n $timeout(function () {\n if (args.contextId !== scope.contextId) {\n scope.isPopoverClicked = false;\n }\n });\n });\n }\n }\n }\n\n wirePopover.$inject = ['$rootScope', '$timeout'];\n\n angular.module('ecap.common').directive('wirePopover', wirePopover);\n})();","(function () {\n 'use strict';\n\n function wizardProgress($log) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/wizardProgress.html',\n scope: {\n numberOfSteps: '=',\n title: '@'\n },\n link: function (scope, element, attrs) {\n if (scope.numberOfSteps > 4) {\n throw Error('wizardProgress only supports up to 4 steps');\n }\n\n var defaultColumnSizes = {\n 2: 6,\n 3: 4,\n 4: 3\n };\n\n scope.currentStepIndex = 0;\n scope.stepColumnSize = defaultColumnSizes[scope.numberOfSteps];\n\n scope.getNumber = function (num) {\n return new Array(num);\n }\n }\n };\n }\n\n wizardProgress.$inject = [];\n\n angular.module('ecap.common').directive('wizardProgress', wizardProgress);\n})();","(function () {\n 'use strict';\n\n function wizardSearch($rootScope, searchDataService, searchService) {\n return {\n restrict: 'E',\n templateUrl: 'common/directives/templates/wizardSearch.html',\n scope: {\n searchControlId: '@',\n results: '=',\n searchConfiguration: '=',\n sessionData: '=',\n showResults: '=',\n attributes: '=',\n presetAttributes: '=',\n returnToWizardPrompt: '@',\n isHidden: '=?',\n additionalQueryString: '@?',\n pageSize: '=?',\n pageNum: '=?',\n totalItems: '=?',\n showResultsPrompt: '@?'\n },\n link: function (scope, element, attrs) {\n if (!attrs.searchControlId) {\n scope.searchControlId = 'searchControlId';\n }\n\n if (!attrs.returnToWizardPrompt) {\n scope.returnToWizardPrompt = \"Return to wizard\";\n }\n\n if (!attrs.isHidden) {\n scope.isHidden = false;\n }\n\n scope.currentWizardStep = 0;\n\n scope.queryModel = {\n entity: scope.searchConfiguration.Entity,\n uri: scope.searchConfiguration.Uri,\n pageSize: scope.pageSize || 10,\n pageNum: scope.pageNum || 0,\n numPages: 0,\n orderBy: \"Name\",\n orderByDirection: \"asc\",\n predicates: {},\n injectedPredicates: scope.searchConfiguration.InjectedSearchCriteria,\n defaultPredicates: scope.searchConfiguration.DefaultSearchCriteria,\n isWizardComplete: false\n };\n\n if (scope.additionalQueryString) {\n scope.queryModel.additionalQueryString = scope.additionalQueryString;\n }\n\n scope.searchConfiguration.WizardSteps.forEach(function (item) {\n scope.queryModel.predicates[item.SearchFieldName] = {\n value: item.SearchCondition === 'In' ? item.PreselectedValues : item.PreselectedValues.length > 0 ? item.PreselectedValues[0] : null,\n condition: item.SearchCondition,\n preselectedValues: item.PreselectedValues,\n watch: function () { return true; }\n }\n item.PreviousStepIndex = 0;\n\n item.Options.forEach(function (option) {\n option.IsSelected = false;\n });\n });\n\n scope.lastStepBeforeCompletion = 0;\n\n scope.pageSizes = [5, 10, 15, 20, 25];\n\n if (scope.presetAttributes) {\n scope.presetAttributes.forEach(function (attribute) {\n scope.queryModel.predicates[attribute.Name].value = attribute.Value;\n });\n\n scope.queryModel.isWizardComplete = true;\n\n scope.showResults = true;\n };\n\n scope.toggleOption = function (stepIndex, optionIndex) {\n var wizardStep = scope.searchConfiguration.WizardSteps[stepIndex];\n var previousStepPredicate = scope.searchConfiguration.WizardSteps[wizardStep.PreviousStepIndex].predicate;\n var predicate = scope.queryModel.predicates[wizardStep.SearchFieldName];\n var optionValue = wizardStep.Options[optionIndex].Value;\n wizardStep.Options[optionIndex].IsSelected = !(wizardStep.Options[optionIndex].IsSelected);\n\n // if we are turning on an option\n if (wizardStep.Options[optionIndex].IsSelected) {\n // If its an in, its additive\n if (predicate.condition === 'In') {\n if (Array.isArray(predicate.value)) {\n // add the value to the existing array\n if (Array.isArray(optionValue)) {\n // combine the arrays\n predicate.value = predicate.value.concat(optionValue);\n }\n else {\n // push the new value\n predicate.value.push(optionValue);\n }\n }\n else {\n // make it an array\n predicate.value = [predicate.value];\n if (Array.isArray(optionValue)) {\n // combine the arrays\n predicate.value = predicate.value.concat(optionValue);\n }\n else {\n // push the new value\n predicate.value.push(optionValue);\n }\n }\n // remove duplicates\n predicate.value = _.uniq(predicate.value);\n }\n // otherwise, just replace the value\n else {\n predicate.value = optionValue;\n }\n }\n // if we are turning off an option\n else {\n if (predicate.condition === 'In') {\n // it should always be an array\n if (!Array.isArray(predicate.value)) {\n predicate.value = [predicate.value];\n }\n\n // we need to preserve the previous step's state\n if (Array.isArray(optionValue)) {\n // only remove the items that are not in the previous step's values if the predicates are the same name\n if (previousStepPredicate && previousStepPredicate.fieldName === wizardStep.SearchFieldName) {\n optionValue.forEach(function (optVal) {\n var indexOfItemToRemove = predicate.value.indexOf(optVal);\n var previousStepValIndex = previousStepPredicate.details.value.indexOf(optVal);\n if (previousStepValIndex === -1) {\n predicate.value.splice(indexOfItemToRemove, 1);\n }\n });\n } else {\n // remove the value\n predicate.value = _.difference(predicate.value, optionValue);\n }\n } else {\n // just remove that one value if it doesnt already exist\n if (previousStepPredicate && previousStepPredicate.fieldName === wizardStep.SearchFieldName) {\n var valueIndex = previousStepPredicate.details.value.indexOf(optionValue);\n if (valueIndex === -1) {\n predicate.value.splice(valueIndex, 1);\n }\n } else {\n // remove the value\n var indexOfItemToRemove = predicate.value.indexOf(optionValue);\n predicate.value.splice(indexOfItemToRemove, 1);\n }\n }\n }\n else {\n predicate.value = null;\n }\n }\n\n // this will come later with multi select options in wizards\n //if (Array.isArray(predicate.value)) {\n // if (wizardStep.IsMultiSelect) {\n // if (Array.isArray(optionValue)) {\n // predicate.value = _.intersection(predicate.value, optionValue).length > 0\n // ? _.difference(predicate.value, optionValue)\n // : predicate.value.concat(optionValue);\n // }\n // else {\n // var optionValueIndex = predicate.value.indexOf(optionValue);\n // if (optionValueIndex === -1) {\n // predicate.value.push(optionValue);\n // } else {\n // predicate.value.splice(optionValueIndex, 1);\n // }\n // }\n // }\n // else {\n // if (Array.isArray(optionValue)) {\n // predicate.value = _.intersection(predicate.value, optionValue).length > 0\n // ? predicate.preselectedValues\n // : predicate.preselectedValues.concat(optionValue);\n // }\n // else {\n // var optionValueIndex1 = predicate.value.indexOf(optionValue);\n // if (optionValueIndex1 === -1) {\n // predicate.value = angular.copy(predicate.preselectedValues);\n // predicate.value.push(optionValue);\n // } else {\n // predicate.value = angular.copy(predicate.preselectedValues);\n // }\n // }\n // }\n //}\n //else {\n // predicate.value = predicate.value === optionValue\n // ? null\n // : optionValue;\n //}\n }\n\n scope.retreatStep = function (stepIndex) {\n var wizardStep = scope.searchConfiguration.WizardSteps[stepIndex];\n if (wizardStep) {\n wizardStep.predicate = {\n fieldName: wizardStep.SearchFieldName,\n details: angular.copy(scope.queryModel.predicates[wizardStep.SearchFieldName])\n };\n }\n\n scope.currentWizardStep = scope.queryModel.isWizardComplete\n ? scope.lastStepBeforeCompletion\n : scope.searchConfiguration.WizardSteps[stepIndex].PreviousStepIndex;\n\n scope.showResults = false;\n scope.queryModel.isWizardComplete = false;\n }\n\n scope.advanceStep = function (stepIndex, stepsToAdvance) {\n var wizardStep = scope.searchConfiguration.WizardSteps[stepIndex];\n wizardStep.predicate = {\n fieldName: wizardStep.SearchFieldName,\n details: angular.copy(scope.queryModel.predicates[wizardStep.SearchFieldName])\n };\n\n var wizardStepOptions = wizardStep.Options;\n var stepHasMultipleOptionsSelected =\n wizardStepOptions.filter(function (option) {\n return option.IsSelected;\n }).length > 1;\n\n var stepsToAdvanceValue = stepsToAdvance ||\n stepHasMultipleOptionsSelected\n ? _.min(scope.searchConfiguration.WizardSteps[stepIndex].Options.map(function (option) {\n return option.StepsToAdvance;\n }))\n : wizardStepOptions.find(function (option) { return option.IsSelected; }).StepsToAdvance;\n\n scope.searchConfiguration.WizardSteps[stepIndex].Completed = true;\n\n if (scope.searchConfiguration.WizardSteps.length > stepIndex + stepsToAdvanceValue) {\n scope.currentWizardStep = stepIndex + stepsToAdvanceValue;\n scope.searchConfiguration.WizardSteps[stepIndex + stepsToAdvanceValue].PreviousStepIndex = stepIndex;\n }\n else {\n scope.showResults = scope.searchConfiguration.WizardSteps[scope.currentWizardStep].Completed;\n scope.currentWizardStep = scope.searchConfiguration.WizardSteps.length - 1;\n scope.queryModel.isWizardComplete = true;\n scope.lastStepBeforeCompletion = stepIndex;\n }\n }\n\n scope.stepValueIsSelected = function (stepIndex, optionIndex) {\n var predicate = scope.queryModel.predicates[scope.searchConfiguration.WizardSteps[stepIndex].SearchFieldName];\n var optionValue = scope.searchConfiguration.WizardSteps[stepIndex].Options[optionIndex].Value;\n\n // this will come later with multi select options in wizards\n if (Array.isArray(predicate.value)) {\n if (Array.isArray(optionValue)) {\n return _.intersection(predicate.value, optionValue).length > 0;\n }\n return predicate.value.indexOf(optionValue) !== -1;\n }\n\n return predicate.value === optionValue;\n }\n\n scope.stepHasSelectedValue = function (stepIndex) {\n var predicate = scope.queryModel.predicates[scope.searchConfiguration.WizardSteps[stepIndex].SearchFieldName];\n var value = scope.queryModel.predicates[scope.searchConfiguration.WizardSteps[stepIndex].SearchFieldName].value;\n\n if (Array.isArray(value)) {\n var selectedOption = scope.searchConfiguration.WizardSteps[stepIndex].Options.find(function (option) {\n return option.IsSelected;\n });\n\n if (selectedOption)\n return true;\n\n return false;\n }\n\n return value !== null;\n }\n\n scope.hasResults = false;\n\n scope.$watch(function () { return scope.queryModel; },\n function () {\n if (scope.queryModel.isWizardComplete && !scope.hasResults) {\n scope.hasResults = true;\n getSearchResults(scope.queryModel);\n } else {\n scope.hasResults = false;\n }\n }, true);\n\n $rootScope.$on('pageIndexChanged', function (event, args) {\n if (args.searchControlId === scope.searchControlId) {\n scope.queryModel.pageNum = args.pageIndex;\n }\n });\n\n $rootScope.$on('pageSizeChanged', function (event, args) {\n if (args.searchControlId === scope.searchControlId) {\n scope.queryModel.pageSize = args.pageSize;\n scope.queryModel.pageNum = args.pageIndex;\n }\n });\n\n function getSearchResults() {\n searchDataService.getResults(scope.queryModel).then(function (data) {\n scope.results = data.Results;\n scope.totalItems = data.TotalResults;\n $rootScope.$emit('searchResultsChanged', {\n searchControlId: scope.searchControlId,\n results: scope.results,\n totalItems: scope.totalItems\n });\n });\n\n scope.attributes = searchService.getAttributes(scope.queryModel.predicates);\n }\n }\n };\n }\n\n wizardSearch.$inject = ['$rootScope', 'searchDataService', 'searchService'];\n\n angular.module('ecap.common').directive('wizardSearch', wizardSearch);\n})();","\n(function () {\n 'use strict';\n\n function camelCaseToUnderscores() {\n return function (value) {\n var formatted = '';\n for (var i = 0; i < value.length; i++) {\n var charVal = value.substring(i, i + 1);\n if (charVal.toUpperCase() === charVal) {\n if (formatted.length > 0) {\n formatted = formatted + '_';\n }\n formatted = formatted + charVal.toLowerCase();\n } else {\n formatted = formatted + charVal;\n }\n }\n \n return formatted;\n };\n }\n\n angular.module('ecap.common').filter('camelCaseToUnderscores', camelCaseToUnderscores);\n})();","(function () {\n 'use strict';\n\n function cut() {\n return function (value, wordwise, max, tail) {\n if (!value) return '';\n\n max = parseInt(max, 10);\n if (!max) return value;\n if (value.length <= max) return value;\n\n value = value.substr(0, max);\n if (wordwise) {\n var lastspace = value.lastIndexOf(' ');\n if (lastspace != -1) {\n value = value.substr(0, lastspace);\n }\n }\n\n return value + (tail || '…');\n };\n }\n\n angular.module('ecap.common').filter('cut', cut);\n})();","(function () {\n 'use strict';\n\n function encodeUriComponent($window) {\n return function (value) {\n return $window.encodeURIComponent(value);\n };\n }\n\n encodeUriComponent.$inject = ['$window'];\n\n angular.module('ecap.common').filter('encodeUriComponent', encodeUriComponent);\n})();","(function () {\n 'use strict';\n\n function excludeByArray() {\n return function (items, arrayProperty, arrayItems) {\n return items.filter(function(item) {\n return arrayItems.indexOf(item[arrayProperty]) === -1;\n });\n };\n }\n\n angular.module('ecap.common').filter('excludeByArray', excludeByArray);\n})();","(function () {\n 'use strict';\n\n function excludeByArrayProperty() {\n return function (items, arrayProperty, excludeArrayItems, excludeArrayProperty) {\n return items.filter(function (item) {\n return excludeArrayItems.map(function (excludeItem) {\n return excludeItem[excludeArrayProperty];\n }).indexOf(item[arrayProperty]) === -1;\n });\n };\n }\n\n angular.module('ecap.common').filter('excludeByArrayProperty', excludeByArrayProperty);\n})();","(function () {\n 'use strict';\n\n function excludeSelectedApplicants() {\n return function (items, applicants) {\n var allApplicantIds = _.map(applicants, (function (applicant) {\n return applicant.Id;\n }));\n\n var filteredData = [];\n angular.forEach(items, function (item) {\n if (!(_.include(allApplicantIds, item.Id))) {\n filteredData.push(item);\n }\n });\n return filteredData;\n };\n }\n\n angular.module('ecap.common').filter('excludeSelectedApplicants', excludeSelectedApplicants);\n})();","(function () {\n 'use strict';\n\n function excludeSelectedPartners() {\n return function (items, projectSharingConnections, projectEntityId) {\n var allSharingPartnerIds = _.map(projectSharingConnections, (function (item) {\n return item.EntityId;\n }));\n\n var filteredData = [];\n angular.forEach(items, function (item) {\n if (!(_.include(allSharingPartnerIds, item.EntityId)) && item.EntityId !== projectEntityId) {\n filteredData.push(item);\n }\n });\n return filteredData;\n };\n }\n\n angular.module('ecap.common').filter('excludeSelectedPartners', excludeSelectedPartners);\n})();","(function () {\n 'use strict';\n\n function fileNameToIconClass() {\n return function (value) {\n if (!value) {\n return 'fa-file-o';\n }\n\n var extension = value.substr(value.lastIndexOf('.') + 1).toLowerCase();\n\n switch (extension) {\n case ('ppt'):\n case ('pptx'):\n return 'fa-file-powerpoint-o';\n case ('doc'):\n case ('docx'):\n return 'fa-file-word-o';\n case ('xls'):\n case ('xlsx'):\n case ('xlsm'):\n case ('csv'):\n return 'fa-file-excel-o';\n case ('zip'):\n return 'fa-file-zip-o';\n case ('tif'):\n case ('tiff'):\n case ('ai'):\n case ('jpg'):\n return 'fa-image-o';\n case ('pdf'):\n return 'fa-file-pdf-o';\n default:\n return 'fa-file-o';\n }\n };\n }\n\n angular.module('ecap.common').filter('fileNameToIconClass', fileNameToIconClass);\n})();","(function () {\n 'use strict';\n\n function getAttributeDisplayValue() {\n return function (value, attributeData) {\n var formattedValue = value;\n\n if (!attributeData.$type) {\n if (Array.isArray(formattedValue)) {\n var joinedList = formattedValue.join(\", \");\n return joinedList.length > 0 ? joinedList : \"N/A\";\n }\n\n if (typeof(formattedValue) === \"boolean\") {\n return formattedValue ? \"Yes\" : \"No\";\n }\n\n return formattedValue;\n }\n\n switch (attributeData.$type) {\n case (\"Ecap.Api.ViewModels.TextSearchFieldViewModel, Ecap.Api\"):\n if (Array.isArray(value)) {\n var joinedTextValueList = formattedValue.join(\", \");\n formattedValue = joinedTextValueList.length > 0 ? joinedTextValueList : \"N/A\";\n }\n break;\n case (\"Ecap.Api.ViewModels.IntegerSearchFieldViewModel, Ecap.Api\"):\n case (\"Ecap.Api.ViewModels.DecimalSearchFieldViewModel, Ecap.Api\"):\n if (!value) {\n return \"N/A\";\n }\n\n var matchingValue = attributeData.Options.find(function(option) {\n return option.Value = value.toString();\n });\n if (matchingValue) {\n formattedValue = matchingValue.Text;\n }\n break;\n case (\"Ecap.Api.ViewModels.BooleanSearchFieldViewModel, Ecap.Api\"):\n formattedValue = attributeData.Value ? 'Yes' : 'No';\n break;\n }\n\n return formattedValue;\n };\n }\n\n angular.module('ecap.common').filter('getAttributeDisplayValue', getAttributeDisplayValue);\n})();","(function () {\n 'use strict';\n\n function getSearchFieldDisplayValue() {\n return function (attributeData, searchFields) {\n\n for (var i = 0; i < searchFields.length; i++) {\n if (searchFields[i].Title == attributeData.Name) {\n\n for (var j = 0; j < searchFields[i].Options.length; j++) {\n if (searchFields[i].Options[j].Value == attributeData.Value) {\n return searchFields[i].Options[j].Prompt;\n }\n }\n }\n }\n\n\n if (Array.isArray(attributeData.Value)) {\n return attributeData.Value.join(\", \");\n }\n\n else if (typeof attributeData.Value == 'boolean') {\n return attributeData.Value ? 'Yes' : 'No';\n }\n\n return attributeData.Value;\n };\n }\n\n angular.module('ecap.common').filter('getSearchFieldDisplayValue', getSearchFieldDisplayValue);\n})();","(function () {\n 'use strict';\n\n function join() {\n return function (value, joinChar) {\n\n if (Array.isArray(value)) {\n return value.join(joinChar);\n }\n\n return value;\n };\n }\n\n angular.module('ecap.common').filter('join', join);\n})();","(function () {\n 'use strict';\n\n function localeDateString() {\n return function (value) {\n var timevalue = moment(value);\n return timevalue.format('MM/DD/YYYY hh:mm A z');\n };\n }\n\n angular.module('ecap.common').filter('localeDateString', localeDateString);\n})();","(function () {\n 'use strict';\n\n function makeUrl() {\n return function (value) {\n var returnString = value;\n if (!/^https?:\\/\\//i.test(value)) {\n returnString = 'http://' + value;\n }\n\n return returnString;\n };\n }\n\n angular.module('ecap.common').filter('makeUrl', makeUrl);\n})();","(function () {\n 'use strict';\n\n function range() {\n return function (value, min, max) {\n return _.range(min, max);\n };\n }\n\n angular.module('ecap.common').filter('range', range);\n})();","(function () {\n 'use strict';\n\n function splitToWords() {\n return function (value) {\n var output, i, l, capRe = /[A-Z]/;\n if (typeof (value) !== \"string\") {\n throw new Error(\"The \\\"word\\\" parameter must be a string.\");\n }\n output = [];\n for (i = 0, l = value.length; i < l; i += 1) {\n if (i === 0) {\n output.push(value[i].toUpperCase());\n }\n else {\n if (i > 0 && capRe.test(value[i])) {\n output.push(\" \");\n }\n output.push(value[i]);\n }\n }\n return output.join(\"\");\n };\n }\n\n angular.module('ecap.common').filter('splitToWords', splitToWords);\n})();","(function () {\n 'use strict';\n\n function titleCase() {\n return function (value) {\n return Humanize.titleCase(value.replace(/([A-Z])/g, ' $1'));\n };\n }\n\n angular.module('ecap.common').filter('titleCase', titleCase);\n})();","(function () {\n 'use strict';\n\n function typeFromId() {\n return function (value) {\n return Humanize.titleCase(value.split('/')[0]).slice(0, -1);\n };\n }\n\n angular.module('ecap.common').filter('typeFromId', typeFromId);\n})();","\n(function () {\n 'use strict';\n\n function underscoresToCamelCase() {\n return function (value) {\n var formatted = '';\n var wasPreviousCharSeparator = true;\n for (var i = 0; i < value.length; i++) {\n var charVal = value.substring(i, i + 1);\n if (wasPreviousCharSeparator) {\n formatted = formatted + charVal.toUpperCase();\n wasPreviousCharSeparator = false;\n } else if (charVal === '_') {\n formatted = formatted + ' ';\n wasPreviousCharSeparator = true;\n } else {\n formatted = formatted + charVal;\n wasPreviousCharSeparator = false;\n }\n }\n \n return formatted;\n };\n }\n\n angular.module('ecap.common').filter('underscoresToCamelCase', underscoresToCamelCase);\n})();","(function () {\n 'use strict';\n\n function chatlioService($window, sessionDataService) {\n document.addEventListener('chatlio.ready', function (e) {\n initialize();\n }, false);\n\n function initialize() {\n sessionDataService.loadSession().then(function (data) {\n if (!$window._chatlio) {\n return;\n }\n\n if (data.IsGuest) {\n $window._chatlio.configure({\n requireInfo: true\n });\n } else {\n $window._chatlio.identify(data.UserName,\n {\n name: data.EntityType === 'Portal Administrator'\n ? 'Super Admin'\n : data.Entity.Contact.FirstName + ' ' + data.Entity.Contact.LastName,\n email: data.UserName,\n site: data.SiteName\n });\n }\n $window._chatlio.show();\n });\n }\n\n return {\n initialize: initialize\n }\n }\n\n chatlioService.$inject = ['$window', 'sessionDataService'];\n\n angular.module('ecap.common').service('chatlioService', chatlioService);\n})();\n","(function () {\n 'use strict';\n\n function configurationOptionsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/configurationoptions';\n\n function loadMasterConfigurationOptions() {\n return $http.get('[BuildifyApiHost]/api/masterconfigurationoptions').then(function (response) {\n return response.data;\n });\n };\n\n function loadConfigurationOptions(id) {\n return $http.get(baseUrl + '/'+ id).then(function (response) {\n return response.data;\n });\n };\n\n function loadGeneralConfigurationOptions() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadMasterConfigurationOptions: loadMasterConfigurationOptions,\n loadConfigurationOptions: loadConfigurationOptions,\n loadGeneralConfigurationOptions: loadGeneralConfigurationOptions\n }\n }\n\n configurationOptionsDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('configurationOptionsDataService', configurationOptionsDataService);\n})();","(function () {\n 'use strict';\n\n function contractorDataService() {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadContractor(id) {\n return $http.get(baseUrl + 'Contractors/' + id).then(function (response) {\n return response.data;\n });\n };\n\n function saveContractor(id, data) {\n return $http.put(baseUrl + id, data).then(\n function (response) { return true; }\n );\n };\n\n\n return {\n loadContractor: loadContractor,\n saveContractor: saveContractor\n }\n }\n\n contractorDataService.$inject = [];\n\n angular.module('ecap.common').service('contractorDataService', contractorDataService);\n})();\n","(function () {\n 'use strict';\n\n function contractorProjectDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadContractorProject(id) {\n return $http.get(baseUrl + 'ContractorProjects/' + id).then(function (response) {\n return response.data;\n });\n };\n\n function saveContractorProject(id, data) {\n return $http.put(baseUrl + id, data).then(\n function (response) { return true; }\n );\n };\n\n function deleteUploadBlob(blobReference) {\n return $http.get('/Files/DeleteUploadBlob?blobReference=' + blobReference).then(\n function (response) { return response.data; });\n };\n\n\n function deleteContractorProject(id) {\n return $http.delete(baseUrl + 'ContractorProjects/' + id).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadContractorProject: loadContractorProject,\n saveContractorProject: saveContractorProject,\n deleteUploadBlob: deleteUploadBlob,\n deleteContractorProject: deleteContractorProject\n }\n }\n\n contractorProjectDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('contractorProjectDataService', contractorProjectDataService);\n})();\n","(function () {\n 'use strict';\n\n function createEntityTypesDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/createentitytypes';\n\n function getCreatePlatformEntityTypes() {\n return $http.get(baseUrl + '/platformentity').then(\n function (response) {\n return response.data;\n }\n );\n };\n\n return {\n getCreatePlatformEntityTypes: getCreatePlatformEntityTypes\n }\n }\n\n createEntityTypesDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('createEntityTypesDataService', createEntityTypesDataService);\n})();\n","(function () {\n 'use strict';\n\n function dashboardFeaturesDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/dashboardfeatures';\n\n function loadDashboardFeatures() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadDashboardFeatures: loadDashboardFeatures\n }\n }\n\n dashboardFeaturesDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('dashboardFeaturesDataService', dashboardFeaturesDataService);\n})();","(function () {\n 'use strict';\n\n function entityAdminEditsDataService($http, $q) {\n var baseUrl = '[BuildifyApiHost]/api/entityadminedits';\n var svc = this;\n svc.myProfileData = null;\n\n function loadAdminEntityEdits(entityId) {\n return $http.get(baseUrl + '/' + entityId).then(function (response) {\n return response.data;\n });\n };\n\n function updateAdminEntityEdits(entityId, entityAdminEdits) {\n return $http.put(baseUrl + '/' + entityId, entityAdminEdits).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadAdminEntityEdits: loadAdminEntityEdits,\n updateAdminEntityEdits: updateAdminEntityEdits\n }\n }\n\n entityAdminEditsDataService.$inject = ['$http', '$q'];\n\n angular.module('ecap.common').service('entityAdminEditsDataService', entityAdminEditsDataService);\n})();","(function () {\n 'use strict';\n\n function entityDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/entities';\n\n function createEntity(entity) {\n return $http.post(baseUrl, entity).then(\n function (response) {\n return response.data;\n },\n function (response) {\n var errorResponse = {\n data: response.data,\n isError: true\n }\n return errorResponse;\n }\n );\n };\n\n return {\n createEntity: createEntity\n }\n }\n\n entityDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('entityDataService', entityDataService);\n})();\n","(function () {\n 'use strict';\n\n function findAPartnerService() {\n var currentPartnerType = null;\n var findAnEntityOptions = {};\n\n function setPartnerType(partnerType) {\n currentPartnerType = partnerType;\n }\n\n function getPartnerType() {\n return currentPartnerType;\n }\n\n function getFindAnEntityOptions() {\n return findAnEntityOptions;\n }\n\n function setFindAnEntityOptions(newFindAnEntityOptions) {\n findAnEntityOptions = newFindAnEntityOptions;\n }\n\n return {\n getPartnerType: getPartnerType,\n setPartnerType: setPartnerType,\n getFindAnEntityOptions: getFindAnEntityOptions,\n setFindAnEntityOptions: setFindAnEntityOptions\n };\n }\n\n findAPartnerService.$inject = [];\n\n angular.module('ecap.common').service('findAPartnerService', findAPartnerService);\n})();","(function () {\n 'use strict';\n\n function functionsConfigurationDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/functionsconfiguration';\n\n function loadConfiguration() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadConfiguration: loadConfiguration\n };\n }\n\n functionsConfigurationDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('functionsConfigurationDataService', functionsConfigurationDataService);\n})();\n","(function () {\n 'use strict';\n\n function mailRequestDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/mailrequest/';\n\n\n function contactAccountManager(data) {\n return $http.post(baseUrl + 'contactaccountmanager', data).then(\n function (response) {\n return true;\n });\n }\n\n function contactAllAccountManagers(data) {\n return $http.post(baseUrl + 'contactallaccountmanagers', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendProjectReminder(projectId) {\n return $http.post(baseUrl + 'projectreminder/' + projectId, {}).then(\n function (response) {\n return true;\n });\n }\n\n function sendPremiumUpgradeRequest(data) {\n return $http.post(baseUrl + 'sendpremiumupgraderequest', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendWorkflowSharingUpdate(data) {\n return $http.post(baseUrl + 'sendworkflowsharingupdate', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendWorkflowUpdate(data) {\n return $http.post(baseUrl + 'sendworkflowupdate', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendConnectionRequest(data) {\n return $http.post(baseUrl + 'sendconnectionrequest', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendPublishedUpdate(data) {\n return $http.post(baseUrl + 'sendpublishedupdate', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendRequestForProposalResponseCreated(data) {\n return $http.post(baseUrl + 'sendrequestforproposalresponsecreated', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendRequestForProposalResponseUpdate(data) {\n return $http.post(baseUrl + 'sendrequestforproposalresponseupdate', data).then(\n function (response) {\n return true;\n });\n }\n\n function sendRequestForProposalRespondentUpdate(data) {\n return $http.post(baseUrl + 'sendrequestforproposalrespondentupdate', data).then(\n function (response) {\n return true;\n });\n }\n\n return {\n contactAccountManager: contactAccountManager,\n contactAllAccountManagers: contactAllAccountManagers,\n sendProjectReminder: sendProjectReminder,\n sendPremiumUpgradeRequest: sendPremiumUpgradeRequest,\n sendWorkflowSharingUpdate: sendWorkflowSharingUpdate,\n sendWorkflowUpdate: sendWorkflowUpdate,\n sendConnectionRequest: sendConnectionRequest,\n sendPublishedUpdate: sendPublishedUpdate,\n sendRequestForProposalResponseCreated: sendRequestForProposalResponseCreated,\n sendRequestForProposalResponseUpdate: sendRequestForProposalResponseUpdate,\n sendRequestForProposalRespondentUpdate: sendRequestForProposalRespondentUpdate\n }\n }\n\n mailRequestDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('mailRequestDataService', mailRequestDataService);\n})();\n","(function () {\n 'use strict';\n\n function milestoneModalService($uibModal, myProfileDataService) {\n function openModal(milestonesAndTemplates) {\n var modalInstance = $uibModal.open({\n templateUrl: 'dashboards/partials/milestoneModal.html',\n controller: 'milestoneModalController',\n resolve: {\n milestonesAndTemplates: function () {\n return milestonesAndTemplates;\n }\n },\n windowClass: 'milestone-modal'\n });\n\n return modalInstance.result.then(function (completedMilestoneNames) {\n if (completedMilestoneNames.length > 0) {\n myProfileDataService.updateMilestones(completedMilestoneNames).then(function (data) {\n // do nothing for now\n });\n }\n });\n }\n\n function getMilestonesAndTemplates(milestones) {\n return myProfileDataService.loadMyProfile().then(function (profile) {\n var milestonesAndTemplates = [];\n milestones.forEach(function(milestone) {\n if (profile.Milestones.indexOf(milestone) === -1 &&\n profile.MilestonesAndLinkedTemplateIds &&\n profile.MilestonesAndLinkedTemplateIds[milestone]) {\n // add milestone to collection for milestone modal\n milestonesAndTemplates.push({\n milestoneName: milestone,\n templateId: profile.MilestonesAndLinkedTemplateIds[milestone]\n });\n }\n });\n\n return milestonesAndTemplates;\n });\n }\n\n return {\n openModal: openModal,\n getMilestonesAndTemplates: getMilestonesAndTemplates\n };\n }\n\n milestoneModalService.$inject = ['$uibModal', 'myProfileDataService'];\n\n angular.module('ecap.common').service('milestoneModalService', milestoneModalService);\n})();\n","(function () {\n 'use strict';\n\n function myProfileDataService($http, $q) {\n var baseUrl = '[BuildifyApiHost]/api/myprofile';\n var svc = this;\n svc.myProfileData = null;\n\n function loadMyProfile() {\n if (svc.myProfileData) {\n return $q.when(svc.myProfileData);\n }\n\n return $http.get(baseUrl).then(function (response) {\n svc.myProfileData = response.data;\n return svc.myProfileData;\n });\n }; \n\n function loadEntityProfile(entityId) {\n return $http.get(baseUrl + '/' + entityId).then(function (response) {\n return response.data;\n });\n };\n\n function updateMyProfile(profile) {\n return $http.put(baseUrl, profile).then(function (response) {\n svc.myProfileData = null;\n return response.data;\n });\n };\n\n function updateEntityProfile(entityId, profile) {\n return $http.put(baseUrl + '/' + entityId, profile).then(function (response) {\n return response.data;\n });\n };\n\n function updateMilestones(milestones) {\n return $http.post(baseUrl + '/milestones', milestones).then(function (response) {\n svc.myProfileData = null;\n return response.data;\n });\n }\n\n return {\n loadMyProfile: loadMyProfile,\n loadEntityProfile: loadEntityProfile,\n updateMyProfile: updateMyProfile,\n updateEntityProfile: updateEntityProfile,\n updateMilestones: updateMilestones\n }\n }\n\n myProfileDataService.$inject = ['$http', '$q'];\n\n angular.module('ecap.common').service('myProfileDataService', myProfileDataService);\n})();\n","(function () {\n 'use strict';\n\n function notifyService(toastr) {\n function notify(message, error) {\n //if (!error) {\n // toastr.success(message,\n // {\n // allowHtml: true,\n // \"closeButton\": false,\n // \"timeOut\": \"5000\",\n // \"extendedTimeOut\": \"1000\"\n // });\n //} else {\n // toastr.error(message,\n // );\n //}\n\n toastr[error ? \"error\" : \"success\"](message, \n {\n allowHtml: true,\n closeButton: false,\n timeOut: 3000,\n extendedTimeOut: 1000\n });\n\n\n //$.pnotify({\n // title: 'Notification',\n // text: message,\n // addclass: error ? 'customError' : 'custom',\n // history: false,\n // style: 'bootstrap',\n // before_open: function (pnotify) {\n // pnotify.css({\n // \"top\": \"50px\",\n // \"left\": ($(window).width() / 2) - (pnotify.width() / 2)\n // });\n // }\n //});\n };\n\n return {\n notify: notify\n };\n }\n\n notifyService.$inject = ['toastr'];\n\n angular.module('ecap.common').service('notifyService', notifyService);\n})();\n","(function () {\n 'use strict';\n\n function platformEntitiesDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/platformentities/';\n\n function loadPlatformEntity(id) {\n return $http.get(baseUrl + id.split('/')[1]).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadPlatformEntity: loadPlatformEntity\n }\n }\n\n platformEntitiesDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('platformEntitiesDataService', platformEntitiesDataService);\n})();\n","(function () {\n 'use strict';\n\n function platformEntityReferralDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/platformentityreferrals';\n\n function createPlatformEntityReferral(data) {\n return $http.post(baseUrl, data).then(function (response) {\n return response.data;\n });\n };\n\n function updatePlatformEntityReferral(id, data) {\n return $http.put(baseUrl + '/' + id, data).then(function (response) {\n return response.data;\n });\n };\n\n function removePlatformEntityReferral(id, objectId, path) {\n return $http.post(baseUrl + '/' + id + '/delete', {\n ObjectId: objectId,\n ObjectPath: path\n }).then(function (response) {\n return response.data;\n });\n };\n\n return {\n createPlatformEntityReferral: createPlatformEntityReferral,\n updatePlatformEntityReferral: updatePlatformEntityReferral,\n removePlatformEntityReferral: removePlatformEntityReferral\n }\n }\n\n platformEntityReferralDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('platformEntityReferralDataService', platformEntityReferralDataService);\n})();\n","(function () {\n 'use strict';\n\n function productDefinitionDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/admin/productDefinitions/';\n\n function loadProductDefinitions() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n };\n function loadProductDefinition(id) {\n return $http.get(baseUrl + id).then(function (response) {\n return response.data;\n }\n );\n };\n\n return {\n loadProductDefinitions: loadProductDefinitions,\n loadProductDefinition: loadProductDefinition\n }\n }\n\n productDefinitionDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('productDefinitionDataService', productDefinitionDataService);\n})();\n","(function () {\n 'use strict';\n\n function productTypeConfigurationOptionsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/producttypeconfigurationoptions/';\n\n function loadConfigurationOptions(id) {\n return $http.get(baseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadConfigurationOptions: loadConfigurationOptions\n }\n }\n\n productTypeConfigurationOptionsDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('productTypeConfigurationOptionsDataService', productTypeConfigurationOptionsDataService);\n})();","(function () {\n 'use strict';\n\n function profileDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/profile';\n\n function loadEntityProfile(entityId) {\n return $http.get(baseUrl + '/' + entityId).then(function (response) {\n return response.data;\n });\n };\n\n function updateEntityProfile(entityId, entity) {\n return $http.post(baseUrl + '/' + entityId, entity).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadEntityProfile: loadEntityProfile,\n updateEntityProfile: updateEntityProfile\n }\n }\n\n profileDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('profileDataService', profileDataService);\n})();","(function () {\n 'use strict';\n\n function questionViewModelConfigurationService() {\n var namespace = \"Ecap.Api\";\n\n var questionTypes = [\n {\n $type: namespace + \".ViewModels.FreeFormTextQuestionViewModel, \" + namespace,\n name: \"Free form text question with one line answer\",\n template: { FreeFormTextQuestionFlavor: \"SingleLine\"}\n },\n {\n $type: namespace + \".ViewModels.FreeFormTextQuestionViewModel, \" + namespace,\n name: \"Free form text with multi-line answer\",\n template: { FreeFormTextQuestionFlavor: \"MultiLine\" }\n },\n {\n $type: namespace + \".ViewModels.YesNoQuestionViewModel, \" + namespace,\n name: \"Yes/No question\",\n template: {\n CanSkip: false,\n Value: false\n }\n },\n {\n $type: namespace + \".ViewModels.YesNoQuestionViewModel, \" + namespace,\n name: \"Yes/No/Skipped question\",\n template: {\n CanSkip: true\n }\n },\n {\n $type: namespace + \".ViewModels.OptionsQuestionViewModel, \" + namespace,\n name: \"Check box list question (select multiple answers)\",\n template: {\n Options: [\n ],\n IsMultiSelect: true\n }\n },\n {\n $type: namespace + \".ViewModels.OptionsQuestionViewModel, \" + namespace,\n name: \"Drop down list question (select one answer)\",\n template: {\n Options: [\n ],\n IsMultiSelect: false\n }\n }\n ];\n\n var buildQuestion = function (questionName, prompt) {\n var matchingQuestionType = questionTypes.find(function (qType) {\n return qType.name === questionName;\n })\n var newQuestion = Object.assign ({ $type: matchingQuestionType.$type }, matchingQuestionType.template);\n if (prompt && prompt.length > 0) {\n newQuestion.Prompt = prompt;\n newQuestion.Title = prompt;\n }\n\n return newQuestion;\n }\n\n return {\n questionTypes: questionTypes,\n buildQuestion: buildQuestion\n };\n }\n\n questionViewModelConfigurationService.$inject = [];\n\n angular.module('ecap.common').service('questionViewModelConfigurationService', questionViewModelConfigurationService);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadRequestForProposal(id) {\n return $http.get(baseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n function saveRequestForProposal(data) {\n return $http.put(baseUrl + data.Id, data).then(\n function (response) { return true; }\n );\n };\n\n function deleteUploadBlob(blobReference) {\n return $http.get('/Files/DeleteUploadBlob?blobReference=' + blobReference).then(\n function (response) { return response.data; });\n };\n\n\n function deleteRequestForProposal(id) {\n return $http.delete(baseUrl + id).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadRequestForProposal: loadRequestForProposal,\n saveRequestForProposal: saveRequestForProposal,\n deleteUploadBlob: deleteUploadBlob,\n deleteRequestForProposal: deleteRequestForProposal\n }\n }\n\n requestForProposalDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('requestForProposalDataService', requestForProposalDataService);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponseDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadRequestForProposalResponse(id) {\n return $http.get(baseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n function loadRequestForProposalResponsesForRequestForProposal(id) {\n return $http.get(baseUrl + 'requestforproposalresponses/' + id).then(function (response) {\n return response.data;\n });\n };\n\n function createRequestForProposalResponse(data) {\n return $http.post(baseUrl + 'requestforproposalresponses', data).then(\n function (response) { return response.data; }\n );\n };\n\n function saveRequestForProposalResponse(data) {\n return $http.put(baseUrl + data.Id, data).then(\n function (response) { return true; }\n );\n };\n\n function deleteUploadBlob(blobReference) {\n return $http.get('/Files/DeleteUploadBlob?blobReference=' + blobReference).then(\n function (response) { return response.data; });\n };\n\n\n function deleteRequestForProposalResponse(id) {\n return $http.delete(baseUrl + id).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadRequestForProposalResponse: loadRequestForProposalResponse,\n loadRequestForProposalResponsesForRequestForProposal: loadRequestForProposalResponsesForRequestForProposal,\n createRequestForProposalResponse: createRequestForProposalResponse,\n saveRequestForProposalResponse: saveRequestForProposalResponse,\n deleteUploadBlob: deleteUploadBlob,\n deleteRequestForProposalResponse: deleteRequestForProposalResponse\n }\n }\n\n requestForProposalResponseDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('requestForProposalResponseDataService', requestForProposalResponseDataService);\n})();\n","(function () {\n 'use strict';\n\n function requestOptionsDataService($http) {\n var url = '/requestoptions';\n\n function getRequestOptions() {\n return $http.get(url).then(function (response) {\n return response.data;\n });\n };\n\n return {\n getRequestOptions: getRequestOptions\n }\n }\n\n requestOptionsDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('requestOptionsDataService', requestOptionsDataService);\n})();\n","(function () {\n 'use strict';\n\n var scrollingService = function ($document) {\n\n var currentScrollingTarget;\n\n function scrollTo(elementToScrollTo, offset, scrollDuration, easing) {\n // Prevent scroll to specified position if it's already happening.\n if (elementToScrollTo === currentScrollingTarget) {\n return;\n }\n else {\n currentScrollingTarget = elementToScrollTo;\n }\n\n var target = angular.element($document[0].getElementById(currentScrollingTarget));\n if (target.length) {\n $document.scrollToElementAnimated(target, offset, scrollDuration, easing);\n // Reset current scrolling target so that we can scroll there consecutively if requested.\n currentScrollingTarget = null;\n }\n }\n\n return {\n scrollTo: scrollTo\n };\n };\n\n scrollingService.$inject = ['$document'];\n angular.module('ecap.common').factory('scrollingService', scrollingService);\n})();","(function () {\n 'use strict';\n\n function searchConfigurationDataService($http, $q) {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadEntitiesSearch(index, workflowId) {\n if (index === \"\") {\n return $q.when(null);\n }\n var url = baseUrl + 'entitysearches/' + index + (workflowId ? '/workflows/' + workflowId : '');\n return $http.get(url).then(function (response) {\n return response.data;\n });\n };\n\n function loadProductDefinitionsSearch(index, projectId) {\n var url = baseUrl + 'productdefinitionsearches/' + index + (projectId ? '/' + projectId : '');\n return $http.get(url).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadEntitiesSearch: loadEntitiesSearch,\n loadProductDefinitionsSearch: loadProductDefinitionsSearch\n }\n }\n\n searchConfigurationDataService.$inject = ['$http', '$q'];\n\n angular.module('ecap.common').factory('searchConfigurationDataService', searchConfigurationDataService);\n})();\n","(function () {\n 'use strict';\n\n function searchDataService($http) {\n var baseSearchUrl = '[BuildifyApiHost]/api/';\n\n function getQueryOptions(predicates, injectedPredicates, defaultPredicates) {\n var options = [];\n for (var key in predicates) {\n\n var predicate = predicates[key];\n var value = predicate.value;\n\n var matchingInjectedPredicate = injectedPredicates.find(function(matchingPredicate) {\n return matchingPredicate.SearchFieldName === key;\n });\n\n if (matchingInjectedPredicate) {\n if (Array.isArray(predicate.value)) {\n if (Array.isArray(matchingInjectedPredicate.Value)) {\n predicate.value = predicate.value.concat(matchingInjectedPredicate.Value);\n }\n else {\n predicate.value.push(matchingInjectedPredicate.Value);\n }\n }\n\n injectedPredicates.splice(injectedPredicates.indexOf(matchingInjectedPredicate), 1);\n }\n\n if (defaultPredicates) {\n var matchingDefaultSearchPredicate = defaultPredicates.find(function (matchingPredicate) {\n return matchingPredicate.SearchFieldName === key;\n });\n\n if (matchingDefaultSearchPredicate) {\n if (matchingDefaultSearchPredicate.IsOverride) {\n predicate.condition = matchingDefaultSearchPredicate.SearchCondition;\n predicate.value = matchingDefaultSearchPredicate.Value;\n value = predicate.value;\n }\n else {\n if (Array.isArray(predicate.value)) {\n if (Array.isArray(matchingDefaultSearchPredicate.Value)) {\n predicate.value = predicate.value.concat(matchingDefaultSearchPredicate.Value);\n } else {\n predicate.value.push(matchingDefaultSearchPredicate.Value);\n }\n }\n }\n\n defaultPredicates.splice(defaultPredicates.indexOf(matchingDefaultSearchPredicate), 1);\n }\n }\n\n var isNumber = !isNaN(parseFloat(value)) && isFinite(value);\n var isBool = typeof value === \"boolean\";\n var isArray = Array.isArray(value);\n if (predicate.watch != undefined) {\n if (value && predicate.watch(value)) {\n if (isNumber) {\n processPredicate(key, predicate);\n } else if (isBool) {\n processPredicate(key, predicate);\n } else if (isArray) {\n predicate.value = predicate.value.join(',');\n processPredicate(key, predicate);\n } else if (value.length > 0) {\n processPredicate(key, predicate);\n }\n\n }\n }\n }\n\n injectedPredicates.forEach(function(leftoverInjectedPredicate) {\n processPredicate(leftoverInjectedPredicate.SearchFieldName,\n {\n value: leftoverInjectedPredicate.Value,\n condition: leftoverInjectedPredicate.SearchCondition\n });\n });\n\n if (defaultPredicates) {\n defaultPredicates.forEach(function(leftoverDefaultPredicate) {\n processPredicate(leftoverDefaultPredicate.SearchFieldName,\n {\n value: leftoverDefaultPredicate.Value,\n condition: leftoverDefaultPredicate.SearchCondition\n });\n });\n }\n\n function processPredicate(predictateKey, predicateObject) {\n options.push({\n field: predictateKey,\n value: predicateObject.value,\n methodType: predicateObject.condition\n });\n }\n\n return options;\n }\n\n function getResults(queryModel) {\n var url = queryModel.entity ? (baseSearchUrl + queryModel.entity) : queryModel.uri;\n var body = {\n queryOptions: getQueryOptions(queryModel.predicates, queryModel.injectedPredicates, queryModel.defaultPredicates),\n pageSize: queryModel.pageSize,\n pageNumber: queryModel.pageNum,\n orderByField: queryModel.orderBy,\n orderByDirection: queryModel.orderByDirection,\n getAllResults: queryModel.getAllResults\n }\n return $http.post(url + '?' + (queryModel.additionalQueryString ? '&' + queryModel.additionalQueryString: ''),\n body).then(function (response) {\n return response.data;\n });\n };\n\n return {\n getResults: getResults\n }\n }\n\n searchDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('searchDataService', searchDataService);\n})();","(function () {\n 'use strict';\n\n function searchFieldConfigurationsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/searchfieldconfigurations/';\n\n function loadSearchFieldConfigurations(entityType) {\n return $http.get(baseUrl + entityType).then(function (response) {\n return response.data;\n });\n };\n\n function loadSearchFieldConfigurationsForSite(siteName) {\n return $http.get(baseUrl + 'site/' + siteName).then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadSearchFieldConfigurations: loadSearchFieldConfigurations,\n loadSearchFieldConfigurationsForSite: loadSearchFieldConfigurationsForSite\n }\n }\n\n searchFieldConfigurationsDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('searchFieldConfigurationsDataService', searchFieldConfigurationsDataService);\n})();\n","(function () {\n 'use strict';\n\n function searchService() {\n\n function getAttributes(predicates) {\n var attributes = [];\n for (var key in predicates) {\n var predicate = predicates[key];\n var value = predicate.value;\n\n var isNumber = !isNaN(parseFloat(value)) && isFinite(value);\n var isBool = typeof value === \"boolean\";\n var isArray = Array.isArray(value);\n if (predicate.watch != undefined) {\n if (value && predicate.watch(value)) {\n if (isNumber) {\n attributes.push(processPredicate(key, predicate));\n } else if (isBool) {\n attributes.push(processPredicate(key, predicate));\n } else if (isArray) {\n predicate.value = predicate.value.join(',');\n attributes.push(processPredicate(key, predicate));\n } else if (value.length > 0) {\n attributes.push(processPredicate(key, predicate));\n }\n }\n }\n }\n return attributes;\n }\n\n function processPredicate(key, predicate) {\n return {\n 'Name': key,\n 'Value': predicate.value\n };\n }\n\n return {\n getAttributes: getAttributes\n }\n }\n\n searchService.$inject = [];\n\n angular.module('ecap.common').service('searchService', searchService);\n})();","(function () {\n 'use strict';\n\n function sessionDataService($http, $q) {\n var baseUrl = '[BuildifyApiHost]/api/session';\n var svc = this;\n svc.sessionData = null;\n\n function loadSession() {\n if (svc.sessionData) {\n return $q.when(svc.sessionData);\n }\n\n return $http.get(baseUrl).then(function (response) {\n svc.sessionData = response.data;\n return svc.sessionData;\n });\n };\n\n return {\n loadSession: loadSession\n }\n }\n\n sessionDataService.$inject = ['$http', '$q'];\n\n angular.module('ecap.common').service('sessionDataService', sessionDataService);\n})();\n","(function () {\n 'use strict';\n\n function signalrService($http) {\n function getConnectionInfo(url) {\n return $http.post(url).then(function (response) {\n return response.data;\n });\n }\n\n return {\n getConnectionInfo: getConnectionInfo\n }\n }\n\n signalrService.$inject = ['$http'];\n\n angular.module('ecap.common').service('signalrService', signalrService);\n})();\n","(function () {\n 'use strict';\n\n function thumbnailsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/thumbnails';\n\n function loadThumbnails(objectId) {\n return $http.get(baseUrl + '/' + objectId.toLowerCase()).then(function (response) {\n return response.data;\n });\n };\n\n function loadThumbnailsForWorkflows(workflowIds) {\n return $http.post(baseUrl + '/workflows', { WorkflowIds: workflowIds }).then(function (response) {\n return response.data;\n });\n }\n\n function loadThumbnailsForObjectPaths(objectId, workflowPaths) {\n return $http.post(baseUrl + '/' + objectId.toLowerCase() + '/paths', { WorkflowPaths: workflowPaths }).then(function (response) {\n return response.data;\n });\n };\n\n function loadThumbnailsForWorkflowsAndPaths(workflowsAndPaths) {\n return $http.post(baseUrl + '/workflowsandpaths', { WorkflowsAndPaths: workflowsAndPaths }).then(function (response) {\n return response.data;\n });\n }\n\n return {\n loadThumbnails: loadThumbnails,\n loadThumbnailsForWorkflows: loadThumbnailsForWorkflows,\n loadThumbnailsForObjectPaths: loadThumbnailsForObjectPaths,\n loadThumbnailsForWorkflowsAndPaths: loadThumbnailsForWorkflowsAndPaths\n };\n }\n\n thumbnailsDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('thumbnailsDataService', thumbnailsDataService);\n})();\n","(function () {\n 'use strict';\n\n function workflowConfigurationDataService($http) {\n var apiBaseUrl = '[BuildifyApiHost]/api/';\n\n function loadLinkedTemplate(id) {\n return $http.get(apiBaseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n function loadHtmlTemplate(id) {\n return $http.get(apiBaseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n function getWorkflowConfiguration(id, entityType, entityId) {\n var url = apiBaseUrl;\n if (entityType && entityId) {\n url += entityType + '/' + entityId + '/';\n }\n\n url += 'workflowconfigurations?t=' + id;\n return $http.get(url).then (function (response) {\n return response.data;\n });\n };\n\n return {\n loadLinkedTemplate: loadLinkedTemplate,\n loadHtmlTemplate: loadHtmlTemplate,\n getWorkflowConfiguration: getWorkflowConfiguration\n }\n }\n\n workflowConfigurationDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('workflowConfigurationDataService', workflowConfigurationDataService);\n})();","(function () {\n 'use strict';\n\n function workflowDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function loadWorkflow(id) {\n return $http.get(baseUrl + id).then(function (response) {\n return response.data;\n });\n };\n\n function saveWorkflow(data) {\n return $http.put(baseUrl + data.Id, data).then(\n function (response) { return true; }\n );\n };\n\n function deleteUploadBlob(blobReference) {\n return $http.get('/Files/DeleteUploadBlob?blobReference=' + blobReference).then(\n function (response) { return response.data; });\n };\n\n\n function deleteWorkflow(id) {\n return $http.delete(baseUrl + id).then(function (response) {\n return response.data;\n });\n }\n\n function getEntitySearches(id) {\n return $http.get(baseUrl + id + '/entitySearches').then(function (response) {\n return response.data;\n });\n }\n\n function createWorkflow(data, t) {\n return $http.post(baseUrl + 'workflows/create/' + t, data).then(\n function (response) { return response.data; },\n function (response) {\n var errorResponse = {\n data: response.data,\n isError: true\n }\n return errorResponse;\n }\n );\n }\n\n function createWorkflowForEntity(entityId, data, t) {\n return $http.post(baseUrl + 'workflows/create/' + t + '/entity/' + entityId.toLowerCase(),\n data).then(\n function (response) { return response.data; },\n function (response) {\n var errorResponse = {\n data: response.data,\n isError: true\n }\n return errorResponse;\n }\n );\n }\n\n return {\n loadWorkflow: loadWorkflow,\n saveWorkflow: saveWorkflow,\n deleteUploadBlob: deleteUploadBlob,\n deleteWorkflow: deleteWorkflow,\n getEntitySearches: getEntitySearches,\n createWorkflow: createWorkflow,\n createWorkflowForEntity: createWorkflowForEntity\n }\n }\n\n workflowDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('workflowDataService', workflowDataService);\n})();\n","(function () {\n 'use strict';\n\n function zipbuilderDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/zipbuilder';\n var svc = this;\n svc.sessionData = null;\n\n function build(data) {\n return $http.post(baseUrl, data).then(function (response) {\n return response.data.BlobReference;\n });\n };\n\n return {\n build: build\n }\n }\n\n zipbuilderDataService.$inject = ['$http'];\n\n angular.module('ecap.common').service('zipbuilderDataService', zipbuilderDataService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.registration', []);\n\n})();","(function () {\n 'use strict';\n\n function registrationRouteConfig($stateProvider) {\n\n $stateProvider\n .state('register', {\n url: '/register',\n controller: 'registrationSelectorController',\n controllerAs: 'registrationSelectorCtrl',\n templateUrl: 'registration/templates/registrationSelector.html',\n resolve: {\n registrationConfiguration: [\n \"registrationDataService\", \"$state\", \"$filter\", function (registrationDataService, $state, $filter) {\n return registrationDataService.getRegistrationOptions().then(\n function (data) {\n if (data.Entities.length === 1) {\n var entityType = data.Entities[0].EntityType;\n var entityTypeUnderscores = $filter('camelCaseToUnderscores')(entityType);\n $state.go('registerEntity', { entityType: entityTypeUnderscores });\n }\n return data;\n }\n )\n }\n ]\n }\n })\n .state('homeregister', {\n url: '/',\n views: {\n \"register\": {\n controller: 'registerEntityHomePageController',\n controllerAs: 'registerEntityHomePageCtrl',\n templateUrl: 'registration/templates/homepageRegistration.html',\n resolve: {\n entityType: [\n \"registrationDataService\", function (registrationDataService) {\n return registrationDataService.getRegistrationOptions().then(\n function (data) {\n return data.Entities[0].EntityType;\n }\n )\n }\n ],\n sessionData: [\n \"sessionDataService\", function (sessionDataService) {\n return sessionDataService.loadSession().then(function (data) {\n return data;\n });\n }\n ]\n }\n },\n \"demo\": {\n url: '/requestademo',\n controller: 'requestDemoSmallController',\n controllerAs: 'requestDemoCtrl',\n templateUrl: 'registration/templates/requestDemoSmall.html'\n }\n }\n })\n .state('registerEntity', {\n url: '/register/*entityType',\n controller: 'registerEntityController',\n controllerAs: 'registerEntityCtrl',\n templateUrl: 'registration/templates/registerEntity.html',\n resolve: {\n showProgressHeader: [\n \"registrationDataService\", function (registrationDataService) {\n return registrationDataService.getRegistrationOptions().then(\n function (data) {\n return (data.Entities.length > 1);\n }\n )\n }\n ]\n }\n })\n .state('requestdemo', {\n url: '/requestademo',\n controller: 'requestDemoController',\n controllerAs: 'requestDemoCtrl',\n templateUrl: 'registration/templates/requestDemo.html'\n });\n };\n\n registrationRouteConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.registration').config(registrationRouteConfig);\n})();","(function () {\n 'use strict';\n\n function homepageRegistrationModalController($scope, $log, $timeout, $rootScope, $uibModalInstance,\n $location, $window, $cookies, $filter,\n entityType, registrationDataService, notifyService) {\n\n $scope.model = {\n EntityType: entityType,\n ReferralCampaign: $cookies.get('referralCampaign'),\n ReferralToken: $cookies.get('referralToken')\n };\n\n $scope.errors = [];\n $scope.submit = function() {\n $scope.hideButtons = true;\n\n if ($scope.model.AccountType === \"PlatformEntity\" && !$scope.model.EditableEntityType) {\n $scope.errors = [\"EntityType is missing\"];\n return;\n }\n\n registrationDataService.registerEntity($scope.model).then(\n function (result) {\n if (result.Errors && result.Errors.length > 0) {\n $scope.errors = result.Errors;\n $scope.hideButtons = false;\n }\n else {\n $scope.hideButtons = true;\n $scope.errors = [];\n notifyService.notify('Your account has been created. You are being logged in.');\n\n // remove cookies\n if ($cookies.get('referralCampaign')) {\n $cookies.remove('referralCampaign');\n }\n\n if ($cookies.get('referralToken')) {\n $cookies.remove('referralToken');\n }\n\n $timeout(function () {\n $('#submitAfterRegisteringForm').submit();\n }, 2000);\n }\n }\n )\n }\n\n $scope.canCheckBox = false;\n\n $scope.close = function () {\n $uibModalInstance.close({\n accepted: $scope.model.HasAcceptedTermsOfService,\n clicked: true\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close();\n };\n\n $timeout(function () {\n var iframe = document.getElementById(\"termsOfService\").contentWindow;\n $(iframe).scroll(function () {\n if ($(iframe).scrollTop()*1.0 / $(iframe.document).innerHeight() > 0.9) {\n $scope.canCheckBox = true;\n $scope.$apply();\n }\n });\n }, 1000);\n }\n\n homepageRegistrationModalController.$inject = ['$scope', '$log', '$timeout', '$rootScope', '$uibModalInstance',\n '$location', '$window', '$cookies', '$filter',\n 'entityType', 'registrationDataService', 'notifyService'];\n\n angular.module('ecap.registration').controller('homepageRegistrationModalController', homepageRegistrationModalController);\n})();","(function () {\n 'use strict';\n\n function registerEntityController($scope, $log, $timeout, $rootScope,\n $location, $window, $cookies, $filter,\n showProgressHeader, STATES_LIST, registrationDataService, notifyService) {\n\n var vm = this;\n vm.entityType = $filter('underscoresToCamelCase')($rootScope.$state.params.entityType);\n vm.showProgressHeader = showProgressHeader;\n vm.statesList = STATES_LIST;\n\n vm.model = {\n EntityType: vm.entityType,\n ReferralCampaign: $cookies.get('referralCampaign'),\n ReferralToken: $cookies.get('referralToken')\n };\n\n $timeout(function () {\n var iframe = document.getElementById(\"termsOfService\").contentWindow;\n $(iframe).scroll(function () {\n if ($(iframe).scrollTop()*1.0 / $(iframe.document).innerHeight() > 0.9) {\n vm.canCheckBox = true;\n $scope.$apply();\n }\n });\n }, 1000);\n\n vm.errors = [];\n vm.submit = function() {\n vm.hideButtons = true;\n // if (!vm.model.CompanyDetails.State) {\n // vm.errors = [\"State is missing\"];\n // vm.hideButtons = false;\n // return;\n // }\n\n if (vm.model.AccountType === \"PlatformEntity\" && !vm.model.EditableEntityType) {\n vm.errors = [\"EntityType is missing\"];\n vm.hideButtons = false;\n return;\n }\n\n registrationDataService.registerEntity(vm.model).then(\n function (result) {\n if (result.Errors && result.Errors.length > 0) {\n vm.errors = result.Errors;\n vm.hideButtons = false;\n }\n else {\n vm.hideButtons = true;\n vm.errors = [];\n notifyService.notify('Your account has been created. You are being logged in.');\n\n // remove cookies\n if ($cookies.get('referralCampaign')) {\n $cookies.remove('referralCampaign');\n }\n\n if ($cookies.get('referralToken')) {\n $cookies.remove('referralToken');\n }\n\n $timeout(function () {\n $('#submitAfterRegisteringForm').submit();\n }, 2000);\n }\n }\n )\n }\n }\n\n registerEntityController.$inject = [\n '$scope', '$log', '$timeout', '$rootScope',\n '$location', '$window', '$cookies', '$filter',\n 'showProgressHeader', 'STATES_LIST', 'registrationDataService', 'notifyService'\n ];\n\n angular.module('ecap.registration').controller('registerEntityController', registerEntityController);\n})();","(function () {\n 'use strict';\n\n function registerEntityHomePageController($uibModal, entityType, sessionData, $state) {\n\n var vm = this;\n vm.isLoggedIn = !sessionData.IsGuest;\n vm.openModal = function() {\n var modalInstance = $uibModal.open({\n templateUrl: 'registration/templates/homepageRegistrationModal.html',\n controller: 'homepageRegistrationModalController',\n windowClass: 'home-page-registration-modal',\n resolve: {\n entityType: function () { return entityType; }\n }\n });\n\n return modalInstance.result.then(function (result) {\n // if (result.accepted && result.clicked) {\n // vm.model.HasAcceptedTermsOfService = true;\n // vm.submit();\n // }\n // do nothing\n });\n }\n\n \n }\n\n registerEntityHomePageController.$inject = ['$uibModal', 'entityType', 'sessionData','$state'];\n\n angular.module('ecap.registration').controller('registerEntityHomePageController', registerEntityHomePageController);\n})();","(function () {\n 'use strict';\n\n function registrationSelectorController($scope, $log, $timeout, $rootScope, $location, $window,\n $filter, registrationConfiguration) {\n\n var vm = this;\n vm.registrationConfiguration = registrationConfiguration;\n\n if (vm.registrationConfiguration.Entities) {\n vm.registrationConfiguration.Entities.forEach(function (entity, index) {\n entity.formattedEntityType = $filter('splitToWords')(entity.EntityType)\n .replace(' ','_')\n .toLowerCase();\n });\n };\n\n vm.registrationGroups = [];\n\n for (var i = 0; i < vm.registrationConfiguration.Entities.length; i+= 3) {\n var group = {\n tileClass: '',\n entities: []\n }\n switch (vm.registrationConfiguration.Entities.length - i)\n {\n case 1:\n group.tileClass = \"one-in-row\";\n break;\n case 2:\n group.tileClass = \"two-in-row\";\n break;\n default:\n group.tileClass = \"three-in-row\";\n break;\n }\n\n for (var j = 0;\n j < Math.min(\n vm.registrationConfiguration.Entities.length - i, 3);\n j++)\n {\n var tileIndex = i + j;\n group.entities.push(vm.registrationConfiguration.Entities[tileIndex]);\n }\n\n vm.registrationGroups.push(group);\n }\n // var vm = this;\n // vm.sessionData = sessionData;\n // vm.statesList = STATES_LIST;\n // vm.platformEntityTypes = platformEntityTypes;\n\n // function formatEntityType(entityType) {\n // var formatted = '';\n // var wasPreviousCharSeparator = true;\n // for (var i = 0; i < entityType.length; i++) {\n // var charVal = entityType.substring(i, i + 1);\n // if (wasPreviousCharSeparator) {\n // formatted = formatted + charVal.toUpperCase();\n // wasPreviousCharSeparator = false;\n // } else if (charVal === '_') {\n // formatted = formatted + ' ';\n // wasPreviousCharSeparator = true;\n // } else {\n // formatted = formatted + charVal;\n // wasPreviousCharSeparator = false;\n // }\n // }\n\n // return formatted;\n // }\n\n // vm.entityType = formatEntityType($rootScope.$state.params.entityType);\n\n // vm.model = {\n // AccountType: vm.entityType.replace(' ','')\n // };\n\n // vm.errors = [];\n // vm.submit = function() {\n // vm.hideButtons = true;\n // if (!vm.model.CompanyDetails.State) {\n // vm.errors = [\"State is missing\"];\n // return;\n // }\n\n // if (vm.model.AccountType === \"PlatformEntity\" && !vm.model.EditableEntityType) {\n // vm.errors = [\"EntityType is missing\"];\n // return;\n // }\n\n // return entityDataService.createEntity(vm.model).then(\n // function (result) {\n // if (result.isError) {\n // vm.errors = [];\n // Object.keys(result.data.Errors).forEach(function(key) {\n // vm.errors = vm.errors.concat(result.data.Errors[key]);\n // });\n // vm.hideButtons = false;\n // }\n // else {\n // vm.hideButtons = true;\n // vm.errors = [];\n // notifyService.notify('The new account was created successfully and the user was sent a registration email. You are being redirected to your dashboard.');\n // $timeout(function () {\n // $window.location = '/crm/accounts/details/' + result.EntityId.toLowerCase();\n // }, 2000);\n // }\n // }\n // )\n // }\n }\n\n registrationSelectorController.$inject = [\n '$scope', '$log', '$timeout', '$rootScope', '$location', '$window', '$filter',\n 'registrationConfiguration'\n ];\n\n angular.module('ecap.registration').controller('registrationSelectorController', registrationSelectorController);\n})();","(function () {\n 'use strict';\n\n function requestDemoController($scope, requestDemoDataService, STATES_LIST) {\n\n var vm = this;\n vm.states = STATES_LIST;\n vm.model = {};\n vm.isSuccess = false;\n vm.errors = [];\n vm.submit = function() {\n vm.hideButtons = true;\n if (!vm.model.State) {\n vm.errors = [\"State is missing\"];\n return;\n }\n\n return requestDemoDataService.requestDemo(vm.model).then(\n function (result) {\n if (result.Errors && result.Errors.length > 0) {\n vm.errors = result.Errors;\n vm.hideButtons = false;\n }\n else {\n vm.hideButtons = true;\n vm.errors = [];\n vm.isSuccess = true;\n }\n }\n )\n }\n }\n\n requestDemoController.$inject = [\n '$scope', 'requestDemoDataService', 'STATES_LIST'\n ];\n\n angular.module('ecap.registration').controller('requestDemoController', requestDemoController);\n})();","(function () {\n 'use strict';\n\n function requestDemoSmallController($scope, requestDemoDataService, STATES_LIST) {\n\n var vm = this;\n vm.states = STATES_LIST;\n vm.model = {};\n vm.isSuccess = false;\n vm.errors = [];\n vm.submit = function() {\n vm.hideButtons = true;\n if (!vm.model.State) {\n vm.errors = [\"State is missing\"];\n return;\n }\n\n return requestDemoDataService.requestDemo(vm.model).then(\n function (result) {\n if (result.Errors && result.Errors.length > 0) {\n vm.errors = result.Errors;\n vm.hideButtons = false;\n }\n else {\n vm.hideButtons = true;\n vm.errors = [];\n vm.isSuccess = true;\n }\n }\n )\n }\n }\n\n requestDemoSmallController.$inject = [\n '$scope', 'requestDemoDataService', 'STATES_LIST'\n ];\n\n angular.module('ecap.registration').controller('requestDemoSmallController', requestDemoSmallController);\n})();","(function () {\n 'use strict';\n\n function registrationDataService($http) {\n\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function getRegistrationOptions() {\n return $http.get(baseUrl + 'registrationconfiguration').then(function (response) {\n return response.data;\n });\n };\n\n function registerEntity(entity) {\n return $http.post(baseUrl + 'register', entity).then(function (response) {\n return response.data;\n });\n }\n\n return {\n getRegistrationOptions: getRegistrationOptions,\n registerEntity: registerEntity\n }\n }\n\n registrationDataService.$inject = ['$http'];\n\n angular.module('ecap.registration').service('registrationDataService', registrationDataService);\n})();\n","(function () {\n 'use strict';\n\n function requestDemoDataService($http) {\n\n var baseUrl = '[BuildifyApiHost]/api/';\n\n function requestDemo(request) {\n return $http.post(baseUrl + 'requestdemo', request).then(function (response) {\n return response.data;\n });\n }\n\n return {\n requestDemo: requestDemo\n }\n }\n\n requestDemoDataService.$inject = ['$http'];\n\n angular.module('ecap.registration').service('requestDemoDataService', requestDemoDataService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.crm', []);\n\n})();","(function () {\n 'use strict';\n\n function crmRouteConfig($stateProvider) {\n\n $stateProvider\n .state('entitydashboard', {\n url: '/crm/accounts/dashboard/*entityId',\n controller: 'crmController',\n controllerAs: 'ctrl'\n })\n .state('entityaccountmanagers', {\n url: '/crm/accounts/accountmanagers/*entityId',\n controller: 'assignAccountManagersToContractorController',\n controllerAs: 'ctrl'\n })\n .state('entityprojectopportunities', {\n url: '/crm/projectopportunities/*projectId',\n controller: 'projectOpportunityEditorController',\n controllerAs: 'editor',\n templateUrl: 'crm/templates/projectOpportunityEditor.html',\n resolve: {\n findAnEntityOptions: function () {\n return {\n canChoosePartnerType: true,\n canChooseEntityType: true,\n defaultEntityType: 'Contractors'\n }\n }\n }\n })\n .state('crmaccountdetails', {\n url: '/crm/accounts/details/*entityId',\n controller: 'editEntityController',\n controllerAs: 'dashboardCtrl',\n templateUrl: 'crm/templates/editEntityProfile.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n profile: [\n \"myProfileDataService\", \"$stateParams\", function(myProfileDataService, $stateParams) {\n return myProfileDataService.loadEntityProfile($stateParams.entityId).then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n data.AdminAttributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n return data;\n });\n }\n ],\n entityAdminEdits: [\n \"entityAdminEditsDataService\", \"profile\", \"$stateParams\",\n function(entityAdminEditsDataService, profile, $stateParams)\n {\n if (profile.CanAccessAdminEdits)\n {\n return entityAdminEditsDataService.loadAdminEntityEdits($stateParams.entityId).then(function (data){\n return data;\n })\n }\n }\n ],\n entityId: [\n \"$stateParams\", function($stateParams) {\n return $stateParams.entityId;\n }\n ],\n dashboardActivities: [\n \"dashboardActivityOptionsDataService\", \"$stateParams\", function (dashboardActivityOptionsDataService, $stateParams) {\n return dashboardActivityOptionsDataService.getDashboardActivityOptionsForEntity(\n $stateParams.entityId\n ).then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('crmaccountcreate', {\n url: '/crm/accounts/create/:entityType',\n controller: 'createEntityController',\n controllerAs: 'createEntityCtrl',\n templateUrl: 'crm/templates/createEntity.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n platformEntityTypes: [\n \"createEntityTypesDataService\", function(createEntityTypesDataService) {\n return createEntityTypesDataService.getCreatePlatformEntityTypes().then(function (data) {\n return data;\n })\n }\n ]\n }\n });\n };\n\n crmRouteConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.crm').config(crmRouteConfig);\n})();","(function () {\n 'use strict';\n\n function assignAccountManagersController($scope, $log, sessionDataService, crmActionsDataService,\n configurationOptionsDataService, accountManagerDataService, platformEntitiesDataService,\n notifyService) {\n\n var self = this;\n\n this.entityId = null;\n this.entityType = '';\n\n this.assignedAccountManagers = [];\n this.accountManagersData = {};\n\n this.accountManagerTypes = [];\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n self.entityId = toParams.entityId;\n\n\n sessionDataService.loadSession().then(function (sessionData) {\n configurationOptionsDataService.loadConfigurationOptions(sessionData.SiteName).then(function (configurationOptionsData) {\n self.accountManagerTypes = configurationOptionsData.AccountManagerTypes;\n $log.debug(self.accountManagerTypes);\n\n accountManagerDataService.loadAll().then(function (accountManagers) {\n self.accountManagersData = accountManagers;\n platformEntitiesDataService.loadPlatformEntity(self.entityId).then(function (entity) {\n self.assignedAccountManagers = entity.AssignedAccountManagers;\n self.entityType = entity.EntityType;\n });\n });\n\n });\n });\n });\n\n\n this.addAssignedAccountManager = function () {\n this.assignedAccountManagers.push({});\n };\n\n this.saveAssignedAccountManagers = function () {\n if ($scope.assignAccountManagersForm.$valid) {\n crmActionsDataService.assignAccountManagers(self.entityId, angular.toJson(self.assignedAccountManagers)).then(\n function (contractor) {\n notifyService.notify('Your changes were saved successfully');\n });\n }\n else {\n alert('invalid data');\n }\n };\n }\n\n assignAccountManagersController.$inject = ['$scope', '$log', 'sessionDataService', 'crmActionsDataService',\n 'configurationOptionsDataService', 'accountManagerDataService',\n 'platformEntitiesDataService', 'notifyService'];\n\n angular.module('ecap.crm').controller('assignAccountManagersController', assignAccountManagersController);\n})();\n","(function () {\n 'use strict';\n\n function createEntityController($scope, $log, $timeout, $rootScope, $location, $window,\n $filter, sessionData, platformEntityTypes, STATES_LIST, entityDataService, notifyService) {\n\n var vm = this;\n vm.sessionData = sessionData;\n vm.statesList = STATES_LIST;\n vm.platformEntityTypes = platformEntityTypes;\n\n vm.entityType = $filter('underscoresToCamelCase')($rootScope.$state.params.entityType);\n\n vm.model = {\n AccountType: vm.entityType.replace(' ','')\n };\n\n vm.errors = [];\n vm.submit = function() {\n vm.hideButtons = true;\n if (!vm.model.CompanyDetails.State) {\n vm.errors = [\"State is missing\"];\n return;\n }\n\n if (vm.model.AccountType === \"PlatformEntity\" && !vm.model.EditableEntityType) {\n vm.errors = [\"EntityType is missing\"];\n return;\n }\n\n return entityDataService.createEntity(vm.model).then(\n function (result) {\n if (result.isError) {\n vm.errors = [];\n Object.keys(result.data.Errors).forEach(function(key) {\n vm.errors = vm.errors.concat(result.data.Errors[key]);\n });\n vm.hideButtons = false;\n }\n else {\n vm.hideButtons = true;\n vm.errors = [];\n notifyService.notify('The new account was created successfully and the user was sent a registration email. You are being redirected to their dashboard.');\n $timeout(function () {\n $window.location = '/crm/accounts/details/' + result.EntityId.toLowerCase();\n }, 2000);\n }\n }\n )\n }\n }\n\n createEntityController.$inject = [\n '$scope', '$log', '$timeout', '$rootScope', '$location', '$window', '$filter',\n 'sessionData', 'platformEntityTypes', 'STATES_LIST', 'entityDataService', 'notifyService'\n ];\n\n angular.module('ecap.crm').controller('createEntityController', createEntityController);\n})();","(function () {\n 'use strict';\n\n function crmController() {\n var vm = this;\n vm.getWorkflowsUrl = function(entityId) {\n return \"[BuildifyApiHost]/api/\" + entityId + \"/workflows\";\n }\n\n vm.getSharedWorkflowsUrl = function(entityId) {\n return \"[BuildifyApiHost]/api/\" + entityId + \"/workflowsharingconnections\";\n }\n\n vm.getRfpsUrl = function(entityId) {\n return \"[BuildifyApiHost]/api/\" + entityId + \"/requestforproposals\";\n }\n\n vm.getRfpResponsesUrl = function(entityId) {\n return \"[BuildifyApiHost]/api/\" + entityId + \"/requestforproposalresponses\";\n }\n }\n\n crmController.$inject = [];\n\n angular.module('ecap.crm').controller('crmController', crmController);\n})();\n","(function () {\n 'use strict';\n\n function editEntityController($scope, $log, $timeout, $rootScope, $location, $uibModal, $window,\n sessionData, profile, entityId, entityAdminEdits, dashboardActivities,\n myProfileDataService, entityAdminEditsDataService, notifyService,\n mailRequestDataService, entityProfilePercentageCompleteCalculatorService,\n STATES_LIST) {\n\n var vm = this;\n vm.mode = 'Display';\n vm.createNewPopoverUrl = 'dashboards/templates/createNew.html';\n vm.sessionData = sessionData;\n vm.entity = profile;\n vm.entity.open = true;\n vm.statesList = STATES_LIST;\n vm.currentProfilePanelIndex = 0;\n vm.baseProfileCompletedPercentage = 30;\n vm.isProfileEditorVisible = true;\n vm.entityId = entityId;\n vm.entityAdminEdits = entityAdminEdits;\n vm.dashboardActivities = dashboardActivities;\n\n vm.allowedLogoUploadFileExtensions = ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'svg'];\n vm.updateErrors = null;\n vm.path = [];\n vm.entity.Attributes.forEach(function (attr) {\n attr.Mode = vm.mode;\n });\n\n vm.toggleEditMode = function () {\n vm.mode = vm.mode === 'Display' ? 'Editor' : 'Display';\n vm.entity.Attributes.forEach(function (attr) {\n attr.Mode = vm.mode;\n });\n };\n\n vm.goBack = function () {\n $window.history.back();\n }\n\n vm.updateEntityProfile = function (stayInEditMode) {\n if ($scope.myProfileForm.$valid) {\n vm.updateErrors = null;\n\n return myProfileDataService.updateEntityProfile(vm.entityId, angular.toJson(vm.entity)).then(\n function (response) {\n //notifyService.notify('Updated profile');\n var newPct = vm.calculateProfileCompletedPercentage();\n // $rootScope.$emit('profilePercentageChanged', {\n // percentageComplete: newPct\n // });\n $scope.myProfileForm.$setPristine();\n if (!stayInEditMode) {\n notifyService.notify('You updated the user\\'s profile');\n vm.toggleEditMode();\n }\n },\n function (errorResponse) {\n self.updateErrors = errorResponse.data;\n });\n } else {\n self.errors = 'Form errors';\n notifyService.notify('There was an error saving your profile', true);\n return false;\n }\n };\n\n // vm.simplePublish = function () {\n // vm.entity.IsPublished = true;\n // mailRequestDataService.sendPublishedUpdate({\n // EntityId: vm.entityId\n // });\n // vm.updateEntityProfile();\n // vm.updatePublishingState();\n // vm.openPublishingAlert();\n // }\n\n // vm.simpleUnpublish = function () {\n // vm.entity.IsPublished = false;\n // vm.updateEntityProfile();\n // vm.updatePublishingState();\n // vm.openPublishingAlert('unpublished');\n // }\n\n // vm.premiumPublish = function () {\n // if (vm.entity.IsPremiumAccount) {\n // vm.entity.IsPublished = true;\n // mailRequestDataService.sendPublishedUpdate({\n // EntityId: vm.entityId\n // });\n // vm.updateEntityProfile();\n // vm.updatePublishingState();\n // }\n // vm.openPublishingAlert();\n // }\n\n // vm.publishActions = {\n // 'Self': {\n // call: vm.simplePublish\n // },\n // 'SelfAndAdmin': {\n // call: vm.simplePublish\n // },\n // 'Premium': {\n // call: vm.premiumPublish\n // }\n // }\n\n // vm.unpublishActions = {\n // 'Self': {\n // call: vm.simpleUnpublish\n // },\n // 'SelfAndAdmin': {\n // call: vm.simpleUnpublish\n // },\n // 'Premium': {\n // call: vm.simpleUnpublish\n // }\n // }\n\n // vm.updatePublishingState = function () {\n // vm.isEntityPublishable = !vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n // vm.isEntityUnpublishable = vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n // }\n\n // vm.updatePublishingState();\n\n // vm.openPublishingAlert = function (state) {\n // var modalInstance = $uibModal.open({\n // templateUrl: 'publishEventModal',\n // controller: 'entityPublishingModalController',\n // resolve: {\n // publishingState: function () {\n // if (state === 'unpublished') {\n // return 'Unpublished'\n // } else if (vm.entity.PublishingType === 'Premium' && !vm.entity.IsPremiumAccount) {\n // return 'UpgradeRequired';\n // }\n\n // return 'Published';\n // },\n // entityId: function () {\n // return vm.entityId;\n // }\n // }\n // });\n\n // return modalInstance.result.then(function () {});\n // }\n\n vm.calculateProfileCompletedPercentage = function () {\n vm.profileCompletedPercentage = entityProfilePercentageCompleteCalculatorService.calculateProfileCompletedPercentage(vm.entity, vm.baseProfileCompletedPercentage);\n\n if (vm.profileCompletedPercentage === 100) {\n vm.profilePanelCount = 4;\n }\n }\n\n vm.calculateProfileCompletedPercentage();\n\n // vm.modelOptions = {\n // updateOn: 'default blur',\n // debounce: {\n // \"default\": 300,\n // \"blur\": 0\n // }\n // };\n\n // $timeout(function () {\n // vm.myProfileForm = $scope.myProfileForm;\n // $scope.$watch(\n // function () {\n // return {\n // dirty: vm.myProfileForm.$dirty,\n // valid: vm.myProfileForm.$valid\n // }\n // },\n // function (newVal) {\n // if (newVal.valid && newVal.dirty) {\n // // TODO: Hack to hangle checkbox-list not working with ng-modeloptions\n // $timeout(function () {\n // vm.updateEntityProfile();\n // }, 0);\n // }\n // },\n // true);\n\n // vm.adminEditsForm = $scope.adminEditsForm;\n // $scope.$watch(\n // function () {\n // return {\n // dirty: vm.adminEditsForm.$dirty,\n // valid: vm.adminEditsForm.$valid\n // }\n // },\n // function (newVal) {\n // if (newVal.valid && newVal.dirty) {\n // // TODO: Hack to hangle checkbox-list not working with ng-modeloptions\n // $timeout(function () {\n // vm.updateAdminEdits();\n // }, 0);\n // }\n // },\n // true);\n // }, 0);\n\n // vm.change = function () {\n // $log.debug('checklist changed');\n // }\n\n $rootScope.$on('fileUploaded', function (event, args) {\n vm.entity.Logo = args.blobs[0];\n vm.updateEntityProfile(true);\n });\n\n // vm.updateEntityProfile = function () {\n // if ($scope.myProfileForm.$valid) {\n // vm.updateErrors = null;\n\n // return myProfileDataService.updateEntityProfile(vm.entityId,\n // angular.toJson(vm.entity)).then(\n // function (response) {\n // //notifyService.notify('Updated profile');\n // vm.calculateProfileCompletedPercentage();\n // $scope.myProfileForm.$setPristine();\n // },\n // function (errorResponse) {\n // self.updateErrors = errorResponse.data;\n // });\n // } else {\n // self.errors = 'Form errors';\n // return false;\n // }\n // };\n\n // vm.tinymceOptions = {\n // height: \"300\",\n // menubar: false,\n // statusbar: false,\n // resize: false,\n // plugins: [\n // \"advlist autolink link paste\"\n // ],\n // advlist_bullet_styles: \"disc\",\n // toolbar: \"undo redo | bold italic | bullist | link\",\n // valid_elements: '*[*]',\n // debounce: true\n // };\n\n // vm.setProfilePanel = function (index) {\n // vm.currentProfilePanelIndex = index;\n // vm.isProfileEditorVisible = true;\n // }\n\n // $rootScope.$on('toggleProfileEditor', function () {\n // vm.isProfileEditorVisible = !vm.isProfileEditorVisible;\n // });\n\n // vm.toggleProfileEditor = function () {\n // $rootScope.$broadcast('toggleProfileEditor');\n // }\n\n // vm.permissionMappingExists = function (item, list) {\n // return list.find(function (listItem)\n // {\n // return listItem.Value === item && listItem.Selected;\n // });\n // };\n\n // vm.permissionMappingToggle = function (item, list) {\n // var matchingItem = list.find(function (listItem)\n // {\n // return listItem.Value === item ;\n // });\n // if (matchingItem)\n // {\n // matchingItem.Selected = !matchingItem.Selected;\n // }\n\n // vm.updateAdminEdits();\n // };\n\n // vm.updateAdminEdits = function () {\n // if ($scope.adminEditsForm.$valid) {\n // console.log(vm.entityAdminEdits);\n // vm.updateAdminEditsErrors = null;\n\n // return entityAdminEditsDataService.updateAdminEntityEdits(vm.entityId,\n // angular.toJson(vm.entityAdminEdits)).then(\n // function (response) {\n // $scope.adminEditsForm.$setPristine();\n // },\n // function (errorResponse) {\n // self.updateAdminEditsErrors = errorResponse.data;\n // });\n // } else {\n // self.errors = 'Form errors';\n // return false;\n // }\n // };\n }\n\n editEntityController.$inject = [\n '$scope', '$log', '$timeout', '$rootScope', '$location', '$uibModal', '$window',\n 'sessionData', 'profile', 'entityId', 'entityAdminEdits', 'dashboardActivities',\n 'myProfileDataService', 'entityAdminEditsDataService', 'notifyService',\n 'mailRequestDataService', 'entityProfilePercentageCompleteCalculatorService',\n 'STATES_LIST'\n ];\n\n angular.module('ecap.crm').controller('editEntityController', editEntityController);\n})();","(function () {\n 'use strict';\n\n function requestForProposalResponsesSearchController($scope) {\n var vm = this;\n vm.results = [];\n vm.entityId = '';\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.entityId = toParams.entityId;\n });\n\n }\n\n requestForProposalResponsesSearchController.$inject = ['$scope'];\n\n angular.module('ecap.crm').controller('requestForProposalResponsesSearchController', requestForProposalResponsesSearchController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalsController($scope) {\n var vm = this;\n vm.results = [];\n vm.entityId = '';\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.entityId = toParams.entityId;\n });\n\n }\n\n requestForProposalsController.$inject = ['$scope'];\n\n angular.module('ecap.crm').controller('requestForProposalsController', requestForProposalsController);\n})();\n","(function() {\n 'use strict';\n\n function resourcePartnerConnectionSummariesController($scope, $routeParams, resourcePartnerConnectionsDataService, notifyService) {\n var vm = this;\n vm.entityId = '';\n vm.results = [];\n vm.currentResourcePartnerConnectionIndex = null;\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.entityId = toParams.entityId;\n });\n\n function resetEditor() {\n vm.currentResourcePartnerConnection = {};\n vm.currentResourcePartnerConnectionIndex = null;\n }\n\n vm.isActiveRow = function (index) {\n return index === vm.currentResourcePartnerConnectionIndex;\n }\n\n vm.editResourcePartnerConnection = function (index) {\n vm.currentResourcePartnerConnectionIndex = index;\n vm.currentResourcePartnerConnection = vm.results[index];\n vm.originalStatus = vm.currentResourcePartnerConnection.Status;\n }\n\n vm.cancelEditResourcePartnerConnection = function () {\n vm.currentResourcePartnerConnection.Status = vm.originalStatus;\n resetEditor();\n }\n\n vm.saveResourcePartnerConnection = function () {\n resourcePartnerConnectionsDataService.update(vm.entityId,\n vm.currentResourcePartnerConnection.PartnerId,\n { Status: vm.currentResourcePartnerConnection.Status, ActivityDate: new Date() }).then(function () {\n notifyService.notify('Your changes were saved successfully');\n resetEditor();\n });\n }\n }\n\n resourcePartnerConnectionSummariesController.$inject = ['$scope', '$routeParams', 'resourcePartnerConnectionsDataService', 'notifyService'];\n\n angular.module('ecap.crm').controller('resourcePartnerConnectionSummariesController', resourcePartnerConnectionSummariesController);\n})();\n","(function () {\n 'use strict';\n\n function accountManagerDataService($http) {\n\n function loadAll() {\n return $http.get('[BuildifyApiHost]/api/accountmanagers').then(function (response) {\n return response.data;\n });\n };\n\n function loadProjectsForEntity(entityId) {\n return $http.get('[BuildifyApiHost]/api/' + entityId + '/contractorprojects?pageSize=1024').then(function (response) {\n return response.data;\n });\n };\n\n function loadWorkflowsForEntity(entityId) {\n return $http.get('[BuildifyApiHost]/api/' + entityId + '/workflows?pageSize=1024').then(function (response) {\n return response.data;\n });\n };\n\n return {\n loadAll: loadAll,\n loadProjectsForEntity: loadProjectsForEntity,\n loadWorkflowsForEntity: loadWorkflowsForEntity\n }\n }\n\n accountManagerDataService.$inject = ['$http'];\n\n angular.module('ecap.crm').service('accountManagerDataService', accountManagerDataService);\n})();\n","(function () {\n 'use strict';\n\n function crmActionsDataService($http) {\n\n var baseUrl = '[BuildifyApiHost]/api/crm/';\n\n function assignAccountManagers(entityId, assignedAccountManagers) {\n return $http.put(baseUrl + 'assignaccountmanagers/' + entityId, assignedAccountManagers).then(function (response) {\n return response.data;\n });\n };\n\n return {\n assignAccountManagers: assignAccountManagers\n }\n }\n\n crmActionsDataService.$inject = ['$http'];\n\n angular.module('ecap.crm').service('crmActionsDataService', crmActionsDataService);\n})();\n","(function () {\n 'use strict';\n\n function projectApplicationRequestsDataService($http) {\n\n var baseUrl = '/api';\n\n function getAvaliableProjects() {\n return $http.get(baseUrl + '/applyforprojects').then(\n function (response) {\n return response.data;\n }\n );\n };\n\n function createProjectApplicationRequests(data) {\n return $http.post(baseUrl = '/projectapplication', data).then(\n function (response) { return true; }\n );\n };\n\n return {\n getAvaliableProjects: getAvaliableProjects,\n createProjectApplicationRequests: createProjectApplicationRequests\n }\n }\n\n projectApplicationRequestsDataService.$inject = ['$http'];\n\n angular.module('ecap.crm').service('projectApplicationRequestsDataService', projectApplicationRequestsDataService);\n})();\n","(function () {\n 'use strict';\n\n function resourcePartnerConnectionsDataService($http) {\n\n var baseUrl = '[BuildifyApiHost]/api/partnerconnections/';\n\n function update(entityId, resourcePartnerId, data) {\n return $http.post((baseUrl + entityId + '/partners/' + resourcePartnerId).toLowerCase(), data).then(function (response) {\n return response.data;\n });\n };\n\n return {\n update: update\n }\n }\n\n resourcePartnerConnectionsDataService.$inject = ['$http'];\n\n angular.module('ecap.crm').service('resourcePartnerConnectionsDataService', resourcePartnerConnectionsDataService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.dashboards', []);\n\n})();","(function () {\n 'use strict';\n\n function dashboardRoutes($stateProvider) {\n\n $stateProvider\n .state('findpartners', {\n url: '/entities/find/partners/:index',\n controller: 'directPartnerConnectionEditorController',\n controllerAs: 'search',\n templateUrl: 'dashboards/templates/directPartnerConnectionEditor.html',\n resolve: {\n searchConfiguration: [\n \"$stateParams\", \"searchConfigurationDataService\", function($stateParams, searchConfigurationDataService) {\n return searchConfigurationDataService.loadEntitiesSearch($stateParams.index).then(function(data) {\n return data;\n });\n }\n ],\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n milestones: function () {\n return ['FindPartners'];\n }\n }\n })\n .state('applyforprojects', {\n url: '/entities/find/projects',\n controller: 'applyForProjectsController',\n controllerAs: 'applyForProjectsCtrl',\n templateUrl: 'dashboards/templates/applyForProjects.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n milestones: function() {\n return ['ProjectOpportunities'];\n }\n }\n })\n .state('findentities', {\n url: '/search/entities/:index',\n controller: 'searchController',\n controllerAs: 'search',\n templateUrl: 'dashboards/templates/search.html',\n resolve: {\n searchConfiguration: [\n \"$stateParams\", \"searchConfigurationDataService\", function($stateParams, searchConfigurationDataService) {\n return searchConfigurationDataService.loadEntitiesSearch($stateParams.index).then(function(data) {\n return data;\n });\n }\n ],\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ]\n }\n })\n .state('entitydashboardhome', {\n url: '/entities/home/index',\n controller: 'entityDashboardController',\n controllerAs: 'dashboardCtrl',\n templateUrl: 'dashboards/templates/entityDashboard.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n myProfile: [\n \"myProfileDataService\", function(myProfileDataService) {\n return myProfileDataService.loadMyProfile().then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n return data;\n });\n }\n ],\n milestones: function () {\n return ['Dashboard'];\n }\n }\n })\n .state('entitydashboardmyprofile', {\n url: '/entities/home/index/myprofile',\n controller: 'entityDashboardController',\n controllerAs: 'dashboardCtrl',\n templateUrl: 'dashboards/templates/entityDashboard.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n myProfile: [\n \"myProfileDataService\", function(myProfileDataService) {\n return myProfileDataService.loadMyProfile().then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n return data;\n });\n }\n ],\n milestones: function() {\n return ['Dashboard'];\n }\n }\n })\n .state('dashboard', {\n url: '/dashboard',\n controller: 'entityDashboardController',\n controllerAs: 'dashboardCtrl',\n templateUrl: 'dashboards/templates/entityDashboard.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n myProfile: [\n \"myProfileDataService\", function(myProfileDataService) {\n return myProfileDataService.loadMyProfile().then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n return data;\n });\n }\n ],\n dashboardFeatures: [\n \"dashboardFeaturesDataService\", function(dashboardFeaturesDataService) {\n return dashboardFeaturesDataService.loadDashboardFeatures().then(function(data) {\n return data;\n });\n }\n ],\n dashboardActivities: [\n \"sessionData\", \"dashboardActivityOptionsDataService\", function (sessionData, dashboardActivityOptionsDataService) {\n if (sessionData.Entity && sessionData.Entity.PlatformEntityId) {\n return dashboardActivityOptionsDataService.getDashboardActivityOptionsForEntity(\n sessionData.Entity.PlatformEntityId.toLowerCase()\n ).then(function (data) {\n return data;\n });\n }\n else {\n return dashboardActivityOptionsDataService.getDashboardActivityOptions().then(function (data) {\n return data;\n });\n }\n }\n ],\n mostRecentItems: [\n \"mostRecentItemsDataService\", function (mostRecentItemsDataService) {\n return mostRecentItemsDataService.getMostRecentItems().then(function (data) {\n return data;\n });\n }\n ],\n mostRecentItemsThumbnails: [\n \"mostRecentItems\", \"thumbnailsDataService\", function (mostRecentItems, thumbnailsDataService) {\n var workflowIds = mostRecentItems.map(function (item) {\n return item.WorkflowId\n });\n\n return thumbnailsDataService.loadThumbnailsForWorkflows(workflowIds).then(function (data) {\n return data\n });\n }\n ],\n milestones: function () {\n return ['Dashboard'];\n }\n }\n })\n .state('editmyprofile', {\n url: '/myprofile',\n controller: 'editMyProfileController',\n controllerAs: 'editMyProfileCtrl',\n templateUrl: 'dashboards/templates/editMyProfile.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n profile: [\n \"myProfileDataService\", \"$stateParams\", function(myProfileDataService, $stateParams) {\n return myProfileDataService.loadMyProfile().then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n data.AdminAttributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n return data;\n });\n }\n ]\n }\n })\n .state('resources', {\n url: '/resources',\n })\n .state('comments', {\n url: '/comments',\n controller: 'commentsController',\n controllerAs: 'commentsCtrl',\n templateUrl: 'dashboards/templates/comments.html',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n newNotesData: [\n \"underwritingNotesDataService\", function (underwritingNotesDataService) {\n return underwritingNotesDataService.getNewNotes().then(function (data) {\n return data;\n });\n }\n ],\n thumbnailsData: [\n \"newNotesData\", \"thumbnailsDataService\",\n function (newNotesData, thumbnailsDataService) {\n var workflowsAndPaths = [];\n newNotesData.forEach(function (note) {\n workflowsAndPaths.push({\n WorkflowId: note.Note.ObjectId,\n Path: note.Note.Path\n });\n });\n\n return thumbnailsDataService.loadThumbnailsForWorkflowsAndPaths(workflowsAndPaths)\n .then(function (data) {\n return data\n });\n }\n ]\n }\n })\n .state('entityactivities', {\n url: '/entities/home/activities',\n controller: 'entityActivitiesController',\n controllerAs: 'activitiesCtrl',\n templateUrl: 'dashboards/templates/entityActivities.html',\n resolve: {\n milestonesAndProfile: [\n \"myProfileDataService\", function(myProfileDataService) {\n return myProfileDataService.loadMyProfile().then(function(data) {\n data.Attributes.forEach(function(attribute) {\n attribute.Mode = 'Editor';\n });\n\n var milestoneNames = ['Activities'];\n if (data.ReferralCampaign && data.ReferralCampaign.length > 0) {\n milestoneNames.push(\"ReferralCampaign\");\n }\n\n return {\n profile: data,\n milestones: milestoneNames\n }\n });\n }\n ]\n }\n });\n }\n\n dashboardRoutes.$inject = ['$stateProvider'];\n\n angular.module('ecap.dashboards').config(dashboardRoutes);\n})();","(function () {\n 'use strict';\n\n function applyForProjectsController(sessionData, milestones, milestoneModalService) {\n var vm = this;\n vm.sessionData = sessionData;\n vm.results = [];\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n }\n\n applyForProjectsController.$inject = ['sessionData','milestones', 'milestoneModalService'];\n\n angular.module('ecap.dashboards').controller('applyForProjectsController', applyForProjectsController);\n})();\n","(function () {\n 'use strict';\n\n function commentsController($scope, $log, $timeout, $rootScope, $location,\n sessionData, newNotesData, thumbnailsData) {\n var vm = this;\n vm.sessionData = sessionData;\n vm.thumbnailsData = thumbnailsData;\n vm.newNotesData = newNotesData;\n\n vm.mode = 'New';\n vm.setMode = function (mode) {\n vm.mode = mode;\n }\n\n vm.newNotesData.forEach(function (x) {\n var thumbnailMatch = vm.thumbnailsData.find(function (t) {\n return (t.WorkflowId === x.Note.ObjectId) && (t.Path === x.Note.Path);\n });\n if (thumbnailMatch && thumbnailMatch.Thumbnails.length > 0) {\n var prefix = thumbnailMatch.IsTemplate ? 'gettemplate' : 'getupload';\n x.Note.ThumbnailUrl = '/files/' + prefix + '?blobreference=' + thumbnailMatch.Thumbnails[0] + '&fileName='+ thumbnailMatch.Thumbnails[0];\n }\n });\n }\n\n commentsController.$inject = ['$scope', '$log', '$timeout', '$rootScope', '$location',\n 'sessionData', 'newNotesData', 'thumbnailsData'];\n\n angular.module('ecap.dashboards').controller('commentsController', commentsController);\n})();\n","(function () {\n 'use strict';\n\n function crmAccountEditorController($scope, $log, $timeout, $rootScope, $location,\n sessionData, entity) {\n\n var vm = this;\n vm.sessionData = sessionData;\n vm.entity = entity;\n vm.ReplaceFile = false;\n\n vm.allowedLogoUploadFileExtensions = ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'svg'];\n\n $rootScope.$on('fileUploaded', function (event, args) {\n vm.entity.Logo = args.blobs[0];\n vm.ReplaceFile = true;\n });\n\n vm.tinymceOptions = {\n height: \"300\",\n menubar: false,\n statusbar: false,\n resize: false,\n plugins: [\n \"advlist autolink link paste\"\n ],\n advlist_bullet_styles: \"disc\",\n toolbar: \"undo redo | bold italic | bullist | link\",\n valid_elements: '*[*]',\n debounce: true\n };\n }\n\n crmAccountEditorController.$inject = ['$scope', '$log', '$timeout', '$rootScope', '$location',\n 'sessionData', 'entity'];\n\n angular.module('ecap.dashboards').controller('crmAccountEditorController', crmAccountEditorController);\n})();\n","(function () {\n 'use strict';\n\n function directPartnerConnectionEditorController($rootScope, $scope, $timeout, $window,\n directPartnerConnectionsDataService, notifyService, searchConfiguration, sessionData, milestones, milestoneModalService) {\n\n var vm = this;\n vm.config = searchConfiguration;\n vm.sessionData = sessionData;\n vm.results = [];\n vm.showResults = false;\n vm.attributes = {};\n vm.searchConfiguration = {};\n vm.project = {};\n vm.requestedPartners = [];\n vm.pageIndex = 0;\n vm.pageSize = searchConfiguration.DefaultPageSize || 5;\n vm.totalItems = 0;\n vm.searchControlId = 'directPartnerConnectionSearch';\n vm.isPortalAdmin = vm.sessionData.EntityType === 'Portal Administrator';\n\n vm.isSearchHidden = false;\n vm.toggleSearchVisibility = function() {\n vm.isSearchHidden = !vm.isSearchHidden;\n }\n\n vm.referralData = {\n platformId: vm.sessionData.Entity.PlatformId,\n siteConfigurationId: vm.sessionData.Entity.SiteConfigurationId,\n referrerEntityId: vm.sessionData.EntityId,\n objectType: '',\n objectId: '',\n objectReferralPath: '',\n objectReferralMessage: 'You were invited to the platform'\n }\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.togglePartnerConnection = function (entity) {\n if (entity.isSelected) {\n var index = vm.requestedPartners.indexOf(entity);\n vm.requestedPartners.splice(index, 1);\n }\n else {\n vm.requestedPartners.push(entity);\n }\n\n entity.isSelected = !entity.isSelected;\n }\n\n vm.createDirectPartnerConnectionRequests = function () {\n\n var createRequests = [];\n\n for (var i = 0; i < vm.requestedPartners.length; i++) {\n createRequests.push({\n \"EntityId\": vm.sessionData.EntityId,\n \"PartnerId\": vm.requestedPartners[i].Id\n });\n }\n\n directPartnerConnectionsDataService.createBatch(createRequests).then(function () {\n notifyService.notify('You successfully created request(s) to connect with partners and are being redirected to your dashboard.');\n $timeout(function () {\n $window.location = '/dashboard';\n }, 3000);\n });\n\n }\n\n vm.createDirectPartnerRequest = function(partner) {\n directPartnerConnectionsDataService.createBatch([\n {\n \"EntityId\": vm.sessionData.EntityId,\n \"PartnerId\": partner.Id\n }\n ]).then(function(data) {\n notifyService.notify(\n 'The email address you entered is already on your platform and we have created a request to connect with this partner.');\n });\n }\n\n vm.togglePartnerIntroduction = function (partner, partnerConnections) {\n var partnerIds = partnerConnections.map(function (item) {\n return item.Id;\n });\n var indexOfPartnerToAdd = partnerIds.indexOf(partner.Id);\n if (indexOfPartnerToAdd !== -1) {\n partnerIds.splice(indexOfPartnerToAdd, 1);\n partner.isSelected = false;\n } else {\n partnerConnections.push({\n EntityId: partner.Id,\n Status: 'Requested',\n LastActivityDate: new Date(),\n Partner: partner\n });\n partner.isSelected = true;\n }\n }\n\n vm.actions = {\n doAction: {\n label: \"Request Introduction\",\n call: vm.togglePartnerConnection,\n cssClass: \"md-primary\"\n }\n }\n\n vm.changePageIndex = function () {\n $rootScope.$emit('pageIndexChanged', { searchControlId: vm.searchControlId, pageIndex: vm.pageIndex });\n }\n\n vm.changePageSize = function () {\n vm.pageIndex = 0;\n $rootScope.$emit('pageSizeChanged', { searchControlId: vm.searchControlId, pageSize: vm.pageSize, pageIndex: vm.pageIndex });\n }\n\n $rootScope.$on('searchResultsChanged', function (event, args) {\n if (args.searchControlId === vm.searchControlId) {\n vm.results = args.results;\n vm.totalItems = args.totalItems;\n vm.results = vm.results.map(function (item) {\n item.isSelected = vm.requestedPartners.map(function(partner) { return partner.Id;})\n .indexOf(item.Id) !== -1;\n return item;\n });\n }\n });\n }\n\n directPartnerConnectionEditorController.$inject = ['$rootScope','$scope', '$timeout', '$window',\n 'directPartnerConnectionsDataService', 'notifyService', 'searchConfiguration', 'sessionData', 'milestones', 'milestoneModalService'];\n\n angular.module('ecap.dashboards').controller('directPartnerConnectionEditorController', directPartnerConnectionEditorController);\n})();\n","(function () {\n 'use strict';\n\n function editMyProfileController($scope, $log, $timeout, $rootScope, $location, $uibModal, $window,\n sessionData, profile, myProfileDataService, notifyService,\n mailRequestDataService, entityProfilePercentageCompleteCalculatorService,\n STATES_LIST) {\n\n var vm = this;\n vm.mode = 'Display';\n vm.sessionData = sessionData;\n vm.entity = profile;\n vm.entity.Attributes.forEach(function (attr) {\n attr.Mode = vm.mode;\n });\n\n vm.toggleEditMode = function () {\n vm.mode = vm.mode === 'Display' ? 'Editor' : 'Display';\n vm.entity.Attributes.forEach(function (attr) {\n attr.Mode = vm.mode;\n });\n };\n\n vm.entity.open = true;\n vm.statesList = STATES_LIST;\n vm.currentProfilePanelIndex = 0;\n vm.baseProfileCompletedPercentage = 30;\n vm.isProfileEditorVisible = true;\n\n vm.profilePanels = ['companyDetails', 'tellUs', 'attributes', 'card'];\n switch (vm.entity.ViewModelType) {\n case \"AccountManager\":\n vm.profilePanels.splice(vm.profilePanels.indexOf('tellUs'), 1);\n vm.profilePanels.splice(vm.profilePanels.indexOf('card'), 1);\n vm.workflowsUrl = \"[BuildifyApiHost]/api/accountmanagers/workflows\";\n break;\n case \"InsuranceBroker\":\n vm.workflowsUrl = \"[BuildifyApiHost]/api/insurancebrokers/workflows\";\n break;\n case \"ProductProvider\":\n vm.workflowsUrl = \"[BuildifyApiHost]/api/productproviders/workflows\";\n break;\n default:\n vm.workflowsUrl = \"[BuildifyApiHost]/api/workflows\";\n }\n\n if (vm.entity.Attributes.length === 0) {\n vm.profilePanels.splice(vm.profilePanels.indexOf('attributes'), 1);\n }\n\n vm.profilePanelCount = vm.profilePanels.length;\n vm.isProfileEditorVisible = false;\n vm.allowedLogoUploadFileExtensions = ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'svg'];\n vm.updateErrors = null;\n vm.path = [];\n\n vm.goBack = function () {\n $window.history.back();\n }\n\n vm.simplePublish = function () {\n vm.entity.IsPublished = true;\n mailRequestDataService.sendPublishedUpdate({\n EntityId: vm.entityId\n });\n vm.updateEntityProfile();\n vm.updatePublishingState();\n vm.openPublishingAlert();\n }\n\n vm.simpleUnpublish = function () {\n vm.entity.IsPublished = false;\n vm.updateEntityProfile();\n vm.updatePublishingState();\n vm.openPublishingAlert('unpublished');\n }\n\n vm.premiumPublish = function () {\n if (vm.entity.IsPremiumAccount) {\n vm.entity.IsPublished = true;\n mailRequestDataService.sendPublishedUpdate({\n EntityId: vm.entityId\n });\n vm.updateEntityProfile();\n vm.updatePublishingState();\n }\n vm.openPublishingAlert();\n }\n\n vm.publishActions = {\n 'Self': {\n call: vm.simplePublish\n },\n 'SelfAndAdmin': {\n call: vm.simplePublish\n },\n 'Premium': {\n call: vm.premiumPublish\n }\n }\n\n vm.unpublishActions = {\n 'Self': {\n call: vm.simpleUnpublish\n },\n 'SelfAndAdmin': {\n call: vm.simpleUnpublish\n },\n 'Premium': {\n call: vm.simpleUnpublish\n }\n }\n\n vm.updatePublishingState = function () {\n vm.isEntityPublishable = !vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n vm.isEntityUnpublishable = vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n }\n\n vm.updatePublishingState();\n\n vm.openPublishingAlert = function (state) {\n var modalInstance = $uibModal.open({\n templateUrl: 'publishEventModal',\n controller: 'entityPublishingModalController',\n resolve: {\n publishingState: function () {\n if (state === 'unpublished') {\n return 'Unpublished'\n } else if (vm.entity.PublishingType === 'Premium' && !vm.entity.IsPremiumAccount) {\n return 'UpgradeRequired';\n }\n\n return 'Published';\n },\n entityId: function () {\n return vm.entityId;\n }\n }\n });\n\n return modalInstance.result.then(function () {});\n }\n\n vm.calculateProfileCompletedPercentage = function () {\n vm.profileCompletedPercentage = entityProfilePercentageCompleteCalculatorService.calculateProfileCompletedPercentage(vm.entity, vm.baseProfileCompletedPercentage);\n\n if (vm.profileCompletedPercentage === 100) {\n vm.profilePanelCount = 4;\n }\n\n return vm.profileCompletedPercentage;\n }\n\n vm.calculateProfileCompletedPercentage();\n\n vm.modelOptions = {\n updateOn: 'default blur',\n debounce: {\n \"default\": 300,\n \"blur\": 0\n }\n };\n\n // $timeout(function () {\n // vm.myProfileForm = $scope.myProfileForm;\n // $scope.$watch(\n // function () {\n // return {\n // dirty: vm.myProfileForm.$dirty,\n // valid: vm.myProfileForm.$valid\n // }\n // },\n // function (newVal) {\n // if (newVal.valid && newVal.dirty) {\n // // TODO: Hack to hangle checkbox-list not working with ng-modeloptions\n // $timeout(function () {\n // vm.updateEntityProfile();\n // }, 0);\n // }\n // },\n // true);\n\n // vm.adminEditsForm = $scope.adminEditsForm;\n // $scope.$watch(\n // function () {\n // return {\n // dirty: vm.adminEditsForm.$dirty,\n // valid: vm.adminEditsForm.$valid\n // }\n // },\n // function (newVal) {\n // if (newVal.valid && newVal.dirty) {\n // // TODO: Hack to hangle checkbox-list not working with ng-modeloptions\n // $timeout(function () {\n // vm.updateAdminEdits();\n // }, 0);\n // }\n // },\n // true);\n // }, 0);\n\n vm.change = function () {\n $log.debug('checklist changed');\n }\n\n $rootScope.$on('fileUploaded', function (event, args) {\n vm.entity.Logo = args.blobs[0];\n vm.updateEntityProfile(true);\n notifyService.notify('You updated your profile picture');\n });\n\n vm.updateEntityProfile = function (stayInEditMode) {\n if ($scope.myProfileForm.$valid) {\n vm.updateErrors = null;\n\n return myProfileDataService.updateMyProfile(angular.toJson(vm.entity)).then(\n function (response) {\n //notifyService.notify('Updated profile');\n var newPct = vm.calculateProfileCompletedPercentage();\n $rootScope.$emit('profilePercentageChanged', {\n percentageComplete: newPct\n });\n $scope.myProfileForm.$setPristine();\n if (!stayInEditMode) {\n notifyService.notify('You updated your profile');\n vm.toggleEditMode();\n }\n },\n function (errorResponse) {\n self.updateErrors = errorResponse.data;\n });\n } else {\n self.errors = 'Form errors';\n notifyService.notify('There was an error saving your profile', true);\n return false;\n }\n };\n\n vm.tinymceOptions = {\n height: \"300\",\n menubar: false,\n statusbar: false,\n resize: false,\n plugins: [\n \"advlist autolink link paste\"\n ],\n advlist_bullet_styles: \"disc\",\n toolbar: \"undo redo | bold italic | bullist | link\",\n valid_elements: '*[*]',\n debounce: true\n };\n\n vm.setProfilePanel = function (index) {\n vm.currentProfilePanelIndex = index;\n vm.isProfileEditorVisible = true;\n }\n\n $rootScope.$on('toggleProfileEditor', function () {\n vm.isProfileEditorVisible = !vm.isProfileEditorVisible;\n });\n\n vm.toggleProfileEditor = function () {\n $rootScope.$broadcast('toggleProfileEditor');\n }\n\n vm.permissionMappingExists = function (item, list) {\n return list.find(function (listItem)\n {\n return listItem.Value === item && listItem.Selected;\n });\n };\n\n vm.permissionMappingToggle = function (item, list) {\n var matchingItem = list.find(function (listItem)\n {\n return listItem.Value === item ;\n });\n if (matchingItem)\n {\n matchingItem.Selected = !matchingItem.Selected;\n }\n\n vm.updateAdminEdits();\n };\n\n vm.updateAdminEdits = function () {\n if ($scope.adminEditsForm.$valid) {\n console.log(vm.entityAdminEdits);\n vm.updateAdminEditsErrors = null;\n\n return entityAdminEditsDataService.updateAdminEntityEdits(vm.entityId,\n angular.toJson(vm.entityAdminEdits)).then(\n function (response) {\n $scope.adminEditsForm.$setPristine();\n },\n function (errorResponse) {\n self.updateAdminEditsErrors = errorResponse.data;\n });\n } else {\n self.errors = 'Form errors';\n return false;\n }\n };\n }\n\n editMyProfileController.$inject = [\n '$scope', '$log', '$timeout', '$rootScope', '$location', '$uibModal', '$window',\n 'sessionData', 'profile', 'myProfileDataService', 'notifyService',\n 'mailRequestDataService', 'entityProfilePercentageCompleteCalculatorService',\n 'STATES_LIST'\n ];\n\n angular.module('ecap.dashboards').controller('editMyProfileController', editMyProfileController);\n})();","(function () {\n 'use strict';\n\n function entityActivitiesController(milestonesAndProfile, myProfileDataService, milestoneModalService,\n entityProfilePercentageCompleteCalculatorService) {\n\n var vm = this;\n vm.entity = milestonesAndProfile.profile;\n vm.milestones = milestonesAndProfile.milestones;\n vm.baseProfileCompletedPercentage = 30;\n\n\n vm.showIncompleteProfileMessage = entityProfilePercentageCompleteCalculatorService.calculateProfileCompletedPercentage(vm.entity,\n vm.baseProfileCompletedPercentage) !== 100;\n\n milestoneModalService.getMilestonesAndTemplates(vm.milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n }\n\n entityActivitiesController.$inject = ['milestonesAndProfile', 'myProfileDataService', 'milestoneModalService',\n 'entityProfilePercentageCompleteCalculatorService'];\n\n angular.module('ecap.dashboards').controller('entityActivitiesController', entityActivitiesController);\n})();\n","(function () {\n 'use strict';\n\n function entityDashboardController($scope, $log, $timeout, $rootScope, $location, $uibModal,\n sessionData, myProfile, dashboardFeatures, dashboardActivities, mostRecentItems,\n mostRecentItemsThumbnails, milestones, myProfileDataService,\n notifyService, milestoneModalService,\n scrollingService, mailRequestDataService, entityProfilePercentageCompleteCalculatorService,\n $pbService, STATES_LIST) {\n\n var vm = this;\n vm.sessionData = sessionData;\n vm.entity = myProfile;\n vm.entity.open = true;\n vm.statesList = STATES_LIST;\n vm.currentProfilePanelIndex = 0;\n vm.baseProfileCompletedPercentage = 30;\n vm.showOpportunities = true;\n vm.showSharing = true;\n vm.showSiteNameInLists = (sessionData.SiteMappings && sessionData.SiteMappings.length > 1) ||\n sessionData.IsAdminEntity;\n vm.dashboardFeatures = dashboardFeatures;\n vm.dashboardActivities = dashboardActivities.filter(function (x) {\n return x.DashboardActivityOptionType === \"Workflow\" || x.DashboardActivityOptionType === \"Link\";\n });\n vm.mostRecentItems = mostRecentItems;\n vm.mostRecentItems.forEach(function (item) {\n var matchingThumbnailObj = mostRecentItemsThumbnails[item.WorkflowId];\n if (matchingThumbnailObj && matchingThumbnailObj.Thumbnails && matchingThumbnailObj.Thumbnails.length > 0) {\n var prefix = matchingThumbnailObj.IsTemplate ? 'gettemplate' : 'getupload';\n item.ThumbnailUrl = '/files/' + prefix + '?blobreference=' + matchingThumbnailObj.Thumbnails[0] + '&fileName='+ matchingThumbnailObj.Thumbnails[0];\n }\n });\n vm.toggleCreateNewMenu = function () {\n vm.showCreateNewMenu = !vm.showCreateNewMenu;\n }\n\n vm.createNewPopoverUrl = 'dashboards/templates/createNew.html';\n\n vm.profilePanels = ['companyDetails', 'tellUs', 'attributes', 'card'];\n switch (vm.entity.ViewModelType) {\n case \"AccountManager\":\n vm.profilePanels.splice(vm.profilePanels.indexOf('tellUs'), 1);\n vm.profilePanels.splice(vm.profilePanels.indexOf('card'), 1);\n vm.workflowsUrl = \"[BuildifyApiHost]/api/accountmanagers/workflows\";\n break;\n case \"InsuranceBroker\":\n vm.workflowsUrl = \"[BuildifyApiHost]/api/insurancebrokers/workflows\";\n break;\n case \"ProductProvider\":\n vm.workflowsUrl = \"[BuildifyApiHost]/api/productproviders/workflows\";\n break;\n default:\n vm.workflowsUrl = \"[BuildifyApiHost]/api/workflows\";\n }\n\n // if (vm.entity.Attributes.length === 0) {\n // vm.profilePanels.splice(vm.profilePanels.indexOf('attributes'), 1);\n // }\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.progressCircleOptions = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '20px',\n }\n }\n };\n\n function updateProgressBars(prefix, results) {\n for (var i = 0; i < results.length; i++) {\n $pbService.set('progressCircle-' + prefix + '-' + i, (results[i].PercentageComplete || 0) / 100);\n }\n }\n\n $rootScope.$on('simpleSearchResultsUpdated', function (event, args) {\n if (args.results && args.results.length > 0) {\n if (!args.results[0].PartnerId) {\n // updateProgressBars('Workflow', args.results);\n }\n else if (args.results[0].PartnerId) {\n // updateProgressBars('SharedWorkflow', args.results);\n }\n }\n });\n\n // vm.profilePanelCount = vm.profilePanels.length;\n // vm.isProfileEditorVisible = false;\n // vm.allowedLogoUploadFileExtensions = ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'svg'];\n // vm.updateErrors = null;\n // vm.path = [];\n\n // vm.simplePublish = function () {\n // vm.entity.IsPublished = true;\n // mailRequestDataService.sendPublishedUpdate({ EntityId: vm.sessionData.EntityId });\n // vm.updateMyProfile();\n // vm.updatePublishingState();\n // vm.openPublishingAlert();\n // }\n\n // vm.simpleUnpublish = function () {\n // vm.entity.IsPublished = false;\n // vm.updateMyProfile();\n // vm.updatePublishingState();\n // vm.openPublishingAlert('unpublished');\n // }\n\n // vm.premiumPublish = function () {\n // if (vm.entity.IsPremiumAccount) {\n // vm.entity.IsPublished = true;\n // mailRequestDataService.sendPublishedUpdate({ EntityId: vm.sessionData.EntityId });\n // vm.updateMyProfile();\n // vm.updatePublishingState();\n // }\n // vm.openPublishingAlert();\n // }\n\n // vm.publishActions = {\n // 'Self': {\n // call: vm.simplePublish\n // },\n // 'SelfAndAdmin': {\n // call: vm.simplePublish\n // },\n // 'Premium': {\n // call: vm.premiumPublish\n // }\n // }\n\n // vm.unpublishActions = {\n // 'Self': {\n // call: vm.simpleUnpublish\n // },\n // 'SelfAndAdmin': {\n // call: vm.simpleUnpublish\n // },\n // 'Premium': {\n // call: vm.simpleUnpublish\n // }\n // }\n\n // vm.updatePublishingState = function () {\n // vm.isEntityPublishable = !vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n // vm.isEntityUnpublishable = vm.entity.IsPublished && vm.publishActions.hasOwnProperty(vm.entity.PublishingType);\n // }\n\n // vm.updatePublishingState();\n\n // vm.openPublishingAlert = function (state) {\n // var modalInstance = $uibModal.open({\n // templateUrl: 'publishEventModal',\n // controller: 'entityPublishingModalController',\n // resolve: {\n // publishingState: function () {\n // if (state === 'unpublished') {\n // return 'Unpublished'\n // } else if (vm.entity.PublishingType === 'Premium' && !vm.entity.IsPremiumAccount) {\n // return 'UpgradeRequired';\n // }\n\n // return 'Published';\n // },\n // entityId: function () {\n // return sessionData.EntityId;\n // }\n // }\n // });\n\n // return modalInstance.result.then(function () { });\n // }\n\n // $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n // vm.path = toParams.path;\n // switch (toState.name) {\n // case (\"dashboard\"):\n // vm.isProfileEditorVisible = false;\n // break;\n // case (\"dashboard.myprofile\"):\n // vm.isProfileEditorVisible = true;\n // $timeout(function () {\n // scrollingService.scrollTo('profileEditorForm', 0, 0, 0);\n // });\n // break;\n // }\n // });\n\n // vm.calculateProfileCompletedPercentage = function () {\n // vm.profileCompletedPercentage = entityProfilePercentageCompleteCalculatorService.calculateProfileCompletedPercentage(vm.entity, vm.baseProfileCompletedPercentage);\n\n // if (vm.profileCompletedPercentage === 100) {\n // vm.profilePanelCount = 4;\n // }\n // }\n\n // vm.calculateProfileCompletedPercentage();\n\n // vm.modelOptions = {\n // updateOn: 'default blur',\n // debounce: {\n // \"default\": 300,\n // \"blur\": 0\n // }\n // };\n\n // if (vm.sessionData.SiteFeatures.HasProfile) {\n // $timeout(function() {\n // vm.myProfileForm = $scope.myProfileForm;\n // $scope.$watch(\n // function() {\n // return {\n // dirty: vm.myProfileForm.$dirty,\n // valid: vm.myProfileForm.$valid\n // }\n // },\n // function(newVal) {\n // if (newVal.valid && newVal.dirty) {\n // // TODO: Hack to hangle checkbox-list not working with ng-modeloptions\n // $timeout(function() {\n // vm.updateMyProfile();\n // }, 0);\n // }\n // },\n // true);\n // }, 0);\n // }\n\n // vm.change = function () {\n // $log.debug('checklist changed');\n // }\n\n // $rootScope.$on('fileUploaded', function (event, args) {\n // vm.entity.Logo = args.blobs[0];\n // vm.updateMyProfile();\n // });\n\n // vm.updateMyProfile = function () {\n // if ($scope.myProfileForm.$valid) {\n // vm.updateErrors = null;\n\n // return myProfileDataService.updateMyProfile(angular.toJson(vm.entity)).then(\n // function (response) {\n // //notifyService.notify('Updated profile');\n // vm.calculateProfileCompletedPercentage();\n // $scope.myProfileForm.$setPristine();\n // },\n // function (errorResponse) {\n // self.updateErrors = errorResponse.data;\n // });\n // }\n // else {\n // self.errors = 'Form errors';\n // return false;\n // }\n // };\n\n // vm.tinymceOptions = {\n // height: \"300\",\n // menubar: false,\n // statusbar: false,\n // resize: false,\n // plugins: [\n // \"advlist autolink link paste\"\n // ],\n // advlist_bullet_styles: \"disc\",\n // toolbar: \"undo redo | bold italic | bullist | link\",\n // valid_elements: '*[*]',\n // debounce: true\n // };\n\n // vm.setProfilePanel = function (index) {\n // vm.currentProfilePanelIndex = index;\n // vm.isProfileEditorVisible = true;\n // }\n\n // $rootScope.$on('toggleProfileEditor', function () {\n // vm.isProfileEditorVisible = !vm.isProfileEditorVisible;\n // });\n\n // vm.toggleProfileEditor = function () {\n // $rootScope.$broadcast('toggleProfileEditor');\n // }\n }\n\n entityDashboardController.$inject = ['$scope', '$log', '$timeout', '$rootScope', '$location', '$uibModal',\n 'sessionData', 'myProfile', 'dashboardFeatures', 'dashboardActivities', 'mostRecentItems',\n 'mostRecentItemsThumbnails', 'milestones', 'myProfileDataService',\n 'notifyService', 'milestoneModalService',\n 'scrollingService', 'mailRequestDataService', 'entityProfilePercentageCompleteCalculatorService',\n '$pbService', 'STATES_LIST'];\n\n angular.module('ecap.dashboards').controller('entityDashboardController', entityDashboardController);\n})();\n","(function () {\n 'use strict';\n\n function entityPublishingModalController($scope, $uibModalInstance, mailRequestDataService, notifyService,\n publishingState, entityId) {\n $scope.publishingState = publishingState;\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.sendPremiumUpgradeRequest = function () {\n mailRequestDataService.sendPremiumUpgradeRequest({\n EntityId: entityId\n }).then(function(data) {\n notifyService.notify('Your request to upgrade to a Premium account has been sent');\n });\n }\n }\n\n entityPublishingModalController.$inject = ['$scope', '$uibModalInstance', 'mailRequestDataService', 'notifyService',\n 'publishingState', 'entityId'];\n\n angular.module('ecap.dashboards').controller('entityPublishingModalController', entityPublishingModalController);\n})();\n","(function () {\n 'use strict';\n\n function milestoneModalController($scope, $uibModalInstance, milestonesAndTemplates) {\n $scope.milestonesAndTemplates = milestonesAndTemplates;\n $scope.close = function () {\n var completedMilestoneNames = $scope.milestonesAndTemplates.filter(function(milestoneAndTemplate) {\n return milestoneAndTemplate.isMarkedComplete;\n }).map(function(milestoneAndTemplate) {\n return milestoneAndTemplate.milestoneName;\n });\n $uibModalInstance.close(completedMilestoneNames);\n };\n \n var updatePosition = function () {\n $scope.canGoForward = $scope.currentMilestoneIndex < $scope.milestonesAndTemplates.length - 1;\n $scope.canGoBackwards = $scope.currentMilestoneIndex > 0;\n }\n\n $scope.currentMilestoneIndex = 0;\n updatePosition();\n\n $scope.goForward = function() {\n $scope.currentMilestoneIndex += 1;\n updatePosition();\n }\n\n $scope.goBackwards = function() {\n $scope.currentMilestoneIndex -= 1;\n updatePosition();\n }\n }\n\n milestoneModalController.$inject = ['$scope', '$uibModalInstance', 'milestonesAndTemplates'];\n\n angular.module('ecap.dashboards').controller('milestoneModalController', milestoneModalController);\n})();\n","(function () {\n 'use strict';\n\n function searchController($scope, $log, searchConfiguration, sessionData) {\n var vm = this;\n vm.config = searchConfiguration;\n vm.sessionData = sessionData;\n vm.results = [];\n vm.showResults = false;\n vm.attributes = {};\n\n vm.pageSizes = [5, 10, 15, 20, 25];\n\n vm.doAction = function(entity) {\n entity.isSelected = !entity.isSelected;\n }\n }\n\n searchController.$inject = ['$scope', '$log', 'searchConfiguration', 'sessionData'];\n\n angular.module('ecap.dashboards').controller('searchController', searchController);\n})();\n","(function() {\n \"use strict\";\n\n function globalCommentsMenu() {\n return {\n restrict: \"E\",\n templateUrl: \"dashboards/directives/templates/globalCommentsMenu.html\",\n scope: {\n comments: \"=\"\n },\n link: function(scope, element, attrs) {\n }\n };\n }\n\n globalCommentsMenu.$inject = [];\n\n angular\n .module(\"ecap.dashboards\")\n .directive(\"globalCommentsMenu\", globalCommentsMenu);\n})();\n","(function () {\n 'use strict';\n\n function dashboardActivityOptionsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/dashboardactivityoptions';\n\n function getDashboardActivityOptions() {\n return $http.get(baseUrl).then(\n function (response) {\n return response.data;\n });\n }\n\n function getDashboardActivityOptionsForEntity(entityId) {\n return $http.get(baseUrl + '/' + entityId).then(\n function (response) {\n return response.data;\n });\n }\n\n return {\n getDashboardActivityOptions: getDashboardActivityOptions,\n getDashboardActivityOptionsForEntity: getDashboardActivityOptionsForEntity\n }\n }\n\n dashboardActivityOptionsDataService.$inject = ['$http'];\n\n angular.module('ecap.dashboards').service('dashboardActivityOptionsDataService', dashboardActivityOptionsDataService);\n})();\n","(function () {\n 'use strict';\n\n function directPartnerConnectionsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/directpartnerconnections/';\n\n function createBatch(data) {\n return $http.post(baseUrl + 'createbatch', data).then(\n function (response) {\n return true;\n });\n }\n\n return {\n createBatch: createBatch\n }\n }\n\n directPartnerConnectionsDataService.$inject = ['$http'];\n\n angular.module('ecap.dashboards').service('directPartnerConnectionsDataService', directPartnerConnectionsDataService);\n})();\n","(function () {\n 'use strict';\n\n function entityProfilePercentageCompleteCalculatorService() {\n function calculateProfileCompletedPercentage(entity) {\n var totalPercentage = 100;\n if (!entity.Contact == null)\n {\n totalPercentage -= 30;\n }\n else\n {\n if (!(entity.Contact.TelephoneNumber || '').trim())\n {\n totalPercentage -= 10;\n }\n }\n\n if (!entity.CompanyDetails)\n {\n totalPercentage -= 60;\n }\n else\n {\n if (!(entity.Contact.TelephoneNumber || '').trim())\n {\n totalPercentage -= 10;\n }\n\n if (!(entity.CompanyDetails.City || '').trim())\n {\n totalPercentage -= 10;\n }\n\n if (!(entity.CompanyDetails.ZipCode || '').trim())\n {\n totalPercentage -= 10;\n }\n\n if (!(entity.CompanyDetails.Address || '').trim())\n {\n totalPercentage -= 10;\n }\n\n if (!(entity.CompanyDetails.Url || '').trim())\n {\n totalPercentage -= 10;\n }\n }\n\n if (entity.ViewModelType === \"PlatformEntity\" || entity.ViewModelType === \"InsuranceBroker\" ||\n entity.ViewModelType === \"ProductProvider\")\n {\n if (!(entity.Narrative || '').trim())\n totalPercentage -= 10;\n }\n\n return totalPercentage;\n }\n\n return {\n calculateProfileCompletedPercentage: calculateProfileCompletedPercentage\n }\n }\n\n entityProfilePercentageCompleteCalculatorService.$inject = [];\n\n angular.module('ecap.dashboards').service('entityProfilePercentageCompleteCalculatorService', entityProfilePercentageCompleteCalculatorService);\n})();\n","(function () {\n 'use strict';\n\n function mostRecentItemsDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/mostrecentitems';\n\n function getMostRecentItems() {\n return $http.get(baseUrl).then(\n function (response) {\n return response.data;\n });\n }\n\n return {\n getMostRecentItems: getMostRecentItems\n }\n }\n\n mostRecentItemsDataService.$inject = ['$http'];\n\n angular.module('ecap.dashboards').service('mostRecentItemsDataService', mostRecentItemsDataService);\n})();\n","(function () {\n 'use strict';\n\n function underwritingNotesDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/underwritingnotes';\n\n function getNewNotes() {\n return $http.get(baseUrl + '/new').then(\n function (response) {\n return response.data;\n });\n }\n\n function getResolvedNotes() {\n return $http.get(baseUrl + '/resolved').then(\n function (response) {\n return response.data;\n });\n }\n\n return {\n getNewNotes: getNewNotes,\n getResolvedNotes: getResolvedNotes\n }\n }\n\n underwritingNotesDataService.$inject = ['$http'];\n\n angular.module('ecap.dashboards').service('underwritingNotesDataService', underwritingNotesDataService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.siteConfiguration', []);\n})();\n","(function () {\n 'use strict';\n\n function siteConfigurationRouteConfig($stateProvider) {\n\n $stateProvider\n .state('siteconfigurationeditor', {\n url: '/admin/siteconfigurations/edit/:siteId',\n template: '',\n controller: 'configurationEditorController',\n controllerAs: 'configuration',\n resolve: {\n createMode: function () {\n return false;\n },\n configurationOptionsData: [\n \"$stateParams\", \"configurationOptionsDataService\", function ($stateParams, configurationOptionsDataService) {\n return configurationOptionsDataService.loadConfigurationOptions($stateParams.siteId).then(function (data) {\n return data;\n });\n }\n ],\n configurationData: [\n \"$stateParams\", \"configurationDataService\", function ($stateParams, configurationDataService) {\n return configurationDataService.loadConfiguration($stateParams.siteId).then(function (data) {\n return data;\n });\n }\n ],\n adminEntityConfigurationsData: [\n \"$stateParams\", \"adminEntityConfigurationDataService\", function ($stateParams, adminEntityConfigurationDataService) {\n return adminEntityConfigurationDataService.loadAll().then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('siteconfigurationcreate', {\n url: '/admin/siteconfigurations/create',\n template: '',\n controller: 'configurationEditorController',\n controllerAs: 'configuration',\n resolve: {\n createMode: function () {\n return true;\n },\n configurationData: function() {\n return {};\n },\n configurationOptionsData: [\n \"configurationOptionsDataService\", function (configurationOptionsDataService) {\n return configurationOptionsDataService.loadConfigurationOptions(\"newsite\").then(function (data) {\n return data;\n });\n }\n ],\n adminEntityConfigurationsData: [\n \"adminEntityConfigurationDataService\", function (adminEntityConfigurationDataService) {\n return adminEntityConfigurationDataService.loadAll().then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('siteconfigurations', {\n url: '/admin/siteconfigurations',\n templateUrl: 'siteConfiguration/templates/siteConfigurations.html',\n controller: 'siteConfigurationsController',\n controllerAs: 'siteConfigurations'\n })\n .state('adminentityconfigurationeditor', {\n url: '/admin/adminentityconfigurations/edit/:adminEntityType',\n template: '',\n controller: 'adminEntityConfigurationEditorController',\n controllerAs: 'configuration',\n resolve: {\n configurationOptionsData: [\n \"configurationOptionsDataService\", function (configurationOptionsDataService) {\n return configurationOptionsDataService.loadMasterConfigurationOptions().then(function (data) {\n return data;\n });\n }\n ],\n adminEntityConfigurationData: [\n \"$stateParams\", \"adminEntityConfigurationDataService\", function ($stateParams, adminEntityConfigurationDataService) {\n return adminEntityConfigurationDataService.load($stateParams.adminEntityType).then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('adminentityconfigurations', {\n url: '/admin/adminentityconfigurations',\n templateUrl: 'siteConfiguration/templates/adminEntityConfigurations.html',\n controller: 'adminEntityConfigurationsController',\n controllerAs: 'adminEntityConfigurations',\n resolve: {\n adminEntityConfigurationsData: [\n \"adminEntityConfigurationDataService\", function (adminEntityConfigurationDataService) {\n return adminEntityConfigurationDataService.loadSummaries().then(function (data) {\n return data;\n });\n }\n ]\n }\n });\n }\n\n siteConfigurationRouteConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.siteConfiguration').config(siteConfigurationRouteConfig);\n})();","(function () {\n 'use strict';\n\n function adminEntityConfigurationEditorController($scope, $log, adminEntityConfigurationData, configurationOptionsData,\n adminEntityConfigurationDataService, notifyService) {\n\n var self = this;\n\n this.current = adminEntityConfigurationData;\n this.current.FriendlyId = adminEntityConfigurationData.Id.split('/')[1];\n this.configurationOptions = configurationOptionsData;\n this.errors = [];\n\n // Remove function\n this.removeItem = function (target, index) {\n target.splice(index, 1);\n };\n\n // Add function\n this.addItem = function (target, property, data) {\n if (target[property] === undefined) {\n target[property] = [];\n }\n\n target[property].push(data || {});\n };\n\n this.logConfiguration = function () {\n $log.debug(self.current);\n };\n\n\n this.saveConfiguration = function () {\n if ($scope.adminEntityConfigurationForm.$valid) {\n self.errors = [];\n return adminEntityConfigurationDataService.save(self.current.FriendlyId, angular.toJson(self.current)).then(\n function (response) {\n notifyService.notify('The configuration was saved successfully');\n },\n function (response) { self.errors = response.data; });\n } else {\n self.errors = ['Form errors'];\n return false;\n }\n };\n }\n\n adminEntityConfigurationEditorController.$inject = ['$scope', '$log', 'adminEntityConfigurationData', 'configurationOptionsData',\n 'adminEntityConfigurationDataService', 'notifyService'];\n\n angular.module('ecap.siteConfiguration').controller('adminEntityConfigurationEditorController', adminEntityConfigurationEditorController);\n})();\n","(function () {\n 'use strict';\n\n function adminEntityConfigurationsController(adminEntityConfigurationsData) {\n var vm = this;\n\n vm.adminEntityConfigurations = adminEntityConfigurationsData;\n }\n\n adminEntityConfigurationsController.$inject = ['adminEntityConfigurationsData'];\n\n angular.module('ecap.siteConfiguration').controller('adminEntityConfigurationsController', adminEntityConfigurationsController);\n})();\n","(function () {\n 'use strict';\n\n function configurationEditorController($scope, $route, $routeParams, $location, $log,\n createMode, configurationData, configurationOptionsData, adminEntityConfigurationsData,\n configurationDataService, configurationOptionsDataService, notifyService,\n STATES_LIST) {\n\n var self = this;\n\n self.current = configurationData;\n self.configurationIsValid = false;\n self.allEntitySearchFields = [];\n self.allProductSearchFields = [];\n self.originalEntityTypes = [];\n self.allEntityTypes = [];\n self.configurationOptions = configurationOptionsData;\n self.adminEntityConfigurations = adminEntityConfigurationsData;\n self.errors = [];\n\n self.pageSizes = [5, 10, 15, 20, 25];\n\n self.$route = $route;\n self.$location = $location;\n self.$routeParams = $routeParams;\n\n self.createMode = createMode || false;\n\n function setUpSearchCriterion(searchCriterion, template) {\n searchCriterion.Type = template.$type;\n searchCriterion.Mode = 'Editor';\n searchCriterion.Prompt = searchCriterion.SearchFieldName;\n switch (template.$type) {\n case (\"Ecap.Api.Models.Configuration.TextSearchFieldConfiguration, Ecap.Api\"):\n searchCriterion.Options = template.Options.map(function(option) {\n return {\n Prompt: option.Prompt || option.Value,\n Value: option.Value\n }\n });\n searchCriterion.TextSearchFieldType = template.TextSearchFieldType;\n break;\n case (\"Ecap.Api.Models.Configuration.IntegerSearchFieldConfiguration, Ecap.Api\"):\n case (\"Ecap.Api.Models.Configuration.DecimalSearchFieldConfiguration, Ecap.Api\"):\n searchCriterion.Options = template.Options.map(function (option) {\n return {\n Prompt: option.Prompt || option.Value,\n Value: option.Value\n }\n });\n break;\n case (\"Ecap.Api.Models.Configuration.StatusSearchFieldConfiguration, Ecap.Api\"):\n searchCriterion.Options = [\n {\n \"Text\": \"Pending\",\n \"Prompt\": \"Pending\"\n },\n {\n \"Text\": \"Approved\",\n \"Prompt\": \"Approved\"\n },\n {\n \"Text\": \"NotApproved\",\n \"Prompt\": \"Not Approved\"\n }\n ];\n break;\n }\n }\n\n self.init = function () {\n var productSearchFieldsMap = {};\n self.configurationOptions.AllProductSearchFields.forEach(function (item) {\n productSearchFieldsMap[item.Prompt] = item;\n });\n self.allProductSearchFields = productSearchFieldsMap;\n\n self.originalEntityTypes = self.configurationOptions.AdditionalEntityTypes;\n\n if (createMode) {\n self.current = {\n Resources: {}\n };\n self.current.FriendlyId = null;\n self.createMode = true;\n }\n else {\n self.current.FriendlyId = self.current.Id.replace(\"SiteConfigurations/\", \"\");\n self.allEntitySearchFields = getAllEntitySearchFields();\n self.allEntityTypes = getAllEntityTypes();\n }\n\n // set up default search criteria\n self.current.EntitySearches.forEach(function(search) {\n search.DefaultSearchCriteria.forEach(function(field) {\n var template = self.allEntitySearchFields[field.SearchFieldName];\n setUpSearchCriterion(field, template);\n });\n });\n };\n\n // Remove function\n self.removeItem = function (target, index) {\n target.splice(index, 1);\n };\n\n // Add function\n self.addItem = function (target, property, data) {\n if (target[property] === undefined) {\n target[property] = [];\n }\n\n target[property].push(data || {});\n };\n\n self.setDefaultSearchCriteriaFromTemplate = function (search, index, template) {\n var defaultSearchCriterion = search.DefaultSearchCriteria[index];\n setUpSearchCriterion(defaultSearchCriterion, template);\n }\n\n self.logConfiguration = function () {\n $log.debug(self.current);\n };\n\n function getAllEntityTypes() {\n self.allEntityTypes = self.originalEntityTypes;\n var configuredEntityTypes = self.current.Entities.map(function(entity) {\n return {\n Text: entity.Type,\n Value: entity.Type\n };\n });\n\n var allEntityTypes = _.uniq(self.originalEntityTypes.concat(configuredEntityTypes),\n function(entityType) {\n return entityType.Text;\n });\n\n return allEntityTypes;\n }\n\n function getAllEntitySearchFields() {\n\n var allEntitySearchFields = self.current.Entities ?\n _.flatten(self.current.Entities.map(function(entity) {\n entity.SearchFields.forEach(function(field) {\n field.FriendlyPrompt = entity.Type + ' - ' + field.Prompt;\n });\n return entity.SearchFields;\n })).concat(\n _.flatten(self.adminEntityConfigurations.map(function (adminEntity) {\n adminEntity.SearchFields.forEach(function (field) {\n field.FriendlyPrompt = adminEntity.Id.split('/')[1] + ' - ' + field.Prompt;\n });\n return adminEntity.SearchFields;\n })))\n : _.flatten(self.adminEntityConfigurations.map(function (adminEntity) {\n adminEntity.SearchFields.forEach(function (field) {\n field.FriendlyPrompt = adminEntity.Id.split('/')[1] + ' - ' + field.Prompt;\n });\n return adminEntity.SearchFields;\n }));\n\n self.configurationOptions.DefaultEntitySearchFields.forEach(function(field) {\n field.FriendlyPrompt = field.Prompt;\n });\n\n allEntitySearchFields = _.uniq(allEntitySearchFields.concat(self.configurationOptions.DefaultEntitySearchFields),\n function (searchField) { return searchField.FriendlyPrompt; });\n\n // TODO use reduce and merge options\n var map = {};\n allEntitySearchFields.forEach(function (item) {\n map[item.Prompt] = item;\n });\n\n map[\"State\"].Options = STATES_LIST.filter(function (state) { return state.name !== \"\" })\n .map(function (state) {\n return {\n Prompt: state.name,\n Value: state.abbrev\n };\n });\n\n var searchableAdminEntities = [\"Product Provider\", \"Insurance Broker\"];\n\n if (self.current.Entities) {\n map[\"EntityType\"] = {\n \"$type\": \"Ecap.Api.Models.Configuration.TextSearchFieldConfiguration, Ecap.Api\",\n \"Title\": \"EntityType\",\n \"Prompt\": \"EntityType\",\n \"FriendlyPrompt\": \"EntityType\",\n \"AdminOnly\": false,\n \"Options\": self.current.Entities ?\n self.current.Entities.map(function(entity) {\n return {\n Value: entity.Type,\n Prompt: entity.Type,\n IsSelectedByDefault: false\n };\n }).concat(searchableAdminEntities.map(function(adminEntity) {\n return {\n Value: adminEntity,\n Prompt: adminEntity,\n IsSelectedByDefault: false\n }\n })) :\n searchableAdminEntities.map(function(adminEntity) {\n return {\n Value: adminEntity,\n Prompt: adminEntity,\n IsSelectedByDefault: false\n }\n }),\n \"TextSearchFieldType\": \"MultiSelect\"\n }\n }\n\n return map;\n }\n\n self.refreshAllEntityTypes = function() {\n self.allEntityTypes = getAllEntityTypes();\n }\n\n self.refreshAllEntitySearchFields = function () {\n self.allEntitySearchFields = getAllEntitySearchFields();\n }\n\n self.saveConfiguration = function () {\n if ($scope.siteConfigurationForm.$valid) {\n self.errors = [];\n\n if (createMode) {\n self.current.Id = 'SiteConfigurations/' + self.current.FriendlyId;\n return configurationDataService.createConfiguration(self.current).then(\n function (response) {\n notifyService.notify('The configuration was saved successfully');\n $location.url('/admin/siteconfigurations/edit/' + self.current.FriendlyId);\n },\n function (response) { self.errors = response.data; });\n }\n else {\n return configurationDataService.saveConfiguration(self.current.FriendlyId, angular.toJson(self.current)).then(\n function (response) {\n notifyService.notify('The configuration was saved successfully');\n },\n function (response) { self.errors = response.data; });\n }\n\n } else {\n self.errors = ['Form errors'];\n return false;\n }\n };\n\n self.logSearchData = function() {\n console.log(self.allEntitySearchFields);\n }\n\n self.logConfiguration = function () {\n console.log(self.current);\n }\n\n self.init();\n }\n\n configurationEditorController.$inject = ['$scope', '$route', '$routeParams', '$location', '$log',\n 'createMode', 'configurationData', 'configurationOptionsData', 'adminEntityConfigurationsData',\n 'configurationDataService', 'configurationOptionsDataService', 'notifyService',\n 'STATES_LIST'];\n\n angular.module('ecap.siteConfiguration').controller('configurationEditorController', configurationEditorController);\n})();\n","(function () {\n 'use strict';\n\n function siteConfigurationMainController() {\n\n }\n\n siteConfigurationMainController.$inject = [];\n\n angular.module('ecap.siteConfiguration').controller('siteConfigurationMainController', siteConfigurationMainController);\n})();\n","(function () {\n 'use strict';\n\n function siteConfigurationsController($scope, $route, $routeParams, $location, configurationDataService) {\n var self = this;\n\n this.siteConfigurations = [];\n\n this.init = function () {\n self.loadAllConfigurations();\n };\n\n\n this.loadAllConfigurations = function () {\n return configurationDataService.loadAllConfigurations().then(function (data) {\n self.siteConfigurations = data;\n });\n };\n\n this.init();\n }\n\n siteConfigurationsController.$inject = ['$scope', '$route', '$routeParams', '$location', 'configurationDataService'];\n\n angular.module('ecap.siteConfiguration').controller('siteConfigurationsController', siteConfigurationsController);\n})();\n","(function () {\n 'use strict';\n\n function activityConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/activityConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n activityConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('activityConfiguration', activityConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function adminEntityConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/adminEntityConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n adminEntityConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('adminEntityConfiguration', adminEntityConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function documentConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/documentConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n documentConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('documentConfiguration', documentConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function documentResourcesGroupConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/documentResourcesGroupConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n documentResourcesGroupConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('documentResourcesGroupConfiguration', documentResourcesGroupConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function documentResourcesGroupConfigurationContent() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/documentResourcesGroupConfigurationContent.html',\n link: function (scope) {\n }\n };\n }\n\n documentResourcesGroupConfigurationContent.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('documentResourcesGroupConfigurationContent', documentResourcesGroupConfigurationContent);\n})();\n\n","(function () {\n 'use strict';\n\n function documentUploadConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/documentUploadConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n documentUploadConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('documentUploadConfiguration', documentUploadConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function documentUploadGroupConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/documentUploadGroupConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n documentUploadGroupConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('documentUploadGroupConfiguration', documentUploadGroupConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function entityConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/entityConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n entityConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('entityConfiguration', entityConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function formSearchConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/formSearchConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n formSearchConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('formSearchConfiguration', formSearchConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function freeFormTextQuestionConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/freeFormTextQuestionConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n freeFormTextQuestionConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('freeFormTextQuestionConfiguration', freeFormTextQuestionConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function informationPartConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/informationPartConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n informationPartConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('informationPartConfiguration', informationPartConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function internalContentConfiguration($http, $compile) {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/internalContentConfiguration.html',\n //scope: {\n // Phase: '=phase',\n // itemOperationsTarget: '='\n //},\n link: function (scope, element, attrs) {\n //$compile(element)(scope);\n }\n };\n }\n\n internalContentConfiguration.$inject = ['$http', '$compile'];\n\n angular.module('ecap.siteConfiguration').directive('internalContentConfiguration', internalContentConfiguration);\n})();","(function () {\n 'use strict';\n\n function internalContentPhaseInformationPartConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/internalContentPhaseInformationPartConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n internalContentPhaseInformationPartConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('internalContentPhaseInformationPartConfiguration', internalContentPhaseInformationPartConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function linkResourcesGroupConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/linkResourcesGroupConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n linkResourcesGroupConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('linkResourcesGroupConfiguration', linkResourcesGroupConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function linkResourcesGroupConfigurationContent() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/linkResourcesGroupConfigurationContent.html',\n link: function (scope) {\n }\n };\n }\n\n linkResourcesGroupConfigurationContent.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('linkResourcesGroupConfigurationContent', linkResourcesGroupConfigurationContent);\n})();\n\n","(function () {\n 'use strict';\n\n function optionConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/optionConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n optionConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('optionConfiguration', optionConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function optionsQuestionConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/optionsQuestionConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n optionsQuestionConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('optionsQuestionConfiguration', optionsQuestionConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function phaseConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/phaseConfiguration.html',\n link: function (scope, element, attrs) {\n }\n };\n }\n\n phaseConfiguration.$inject = ['$http', '$compile'];\n\n angular.module('ecap.siteConfiguration').directive('phaseConfiguration', phaseConfiguration);\n})();","(function () {\n 'use strict';\n\n function phaseInformationPartConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/phaseInformationPartConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n phaseInformationPartConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('phaseInformationPartConfiguration', phaseInformationPartConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function questionConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/questionConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n questionConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('questionConfiguration', questionConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function questionGroupConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/questionGroupConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n questionGroupConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('questionGroupConfiguration', questionGroupConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function questionSetConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/questionSetConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n questionSetConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('questionSetConfiguration', questionSetConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/requestForProposalConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n requestForProposalConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('requestForProposalConfiguration', requestForProposalConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function requiredDownloadConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/requiredDownloadConfiguration.html',\n scope: {\n parent: '=',\n requiredDownloadData: '=',\n linkedTemplatesList: '='\n },\n link: function (scope) {\n\n }\n };\n }\n\n requiredDownloadConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('requiredDownloadConfiguration', requiredDownloadConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function searchConfigurationContent() {\n return {\n restrict: 'E',\n scope: true,\n templateUrl: 'siteConfiguration/directives/templates/searchConfigurationContent.html',\n link: function (scope, element, attrs) {\n scope.searchFieldsProperty = attrs.searchFieldsProperty;\n }\n };\n }\n\n searchConfigurationContent.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('searchConfigurationContent', searchConfigurationContent);\n})();\n\n","(function () {\n 'use strict';\n\n function siteConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/siteConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n siteConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('siteConfiguration', siteConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function wizardSearchConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/wizardSearchConfiguration.html',\n link: function (scope) {\n }\n };\n }\n\n wizardSearchConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('wizardSearchConfiguration', wizardSearchConfiguration);\n})();\n\n","(function () {\n 'use strict';\n\n function workflowConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/workflowConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n workflowConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('workflowConfiguration', workflowConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function workflowPhaseConfiguration($http, $compile) {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/workflowPhaseConfiguration.html',\n //scope: {\n // Phase: '=phase',\n // itemOperationsTarget: '='\n //},\n link: function (scope, element, attrs) {\n //$compile(element)(scope);\n }\n };\n }\n\n workflowPhaseConfiguration.$inject = ['$http', '$compile'];\n\n angular.module('ecap.siteConfiguration').directive('workflowPhaseConfiguration', workflowPhaseConfiguration);\n})();","(function () {\n 'use strict';\n\n function yesNoQuestionConfiguration() {\n return {\n restrict: 'E',\n templateUrl: 'siteConfiguration/directives/templates/yesNoQuestionConfiguration.html',\n link: function (scope) {\n\n }\n };\n }\n\n yesNoQuestionConfiguration.$inject = [];\n\n angular.module('ecap.siteConfiguration').directive('yesNoQuestionConfiguration', yesNoQuestionConfiguration);\n})();\n","(function () {\n 'use strict';\n\n function adminEntityConfigurationDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/adminentityconfigurations';\n\n function loadSummaries() {\n return $http.get('[BuildifyApiHost]/api/adminentityconfigurationsummaries').then(function (response) {\n return response.data;\n });\n };\n\n function loadAll() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n };\n\n function load(id) {\n return $http.get(baseUrl + '/' + id).then(function (response) {\n return response.data;\n });\n };\n\n function save(id, data) {\n return $http.put(baseUrl + '/' + id, data).then(\n function (response) { return true; }\n );\n };\n\n return {\n loadSummaries: loadSummaries,\n loadAll: loadAll,\n load: load,\n save: save\n };\n }\n\n adminEntityConfigurationDataService.$inject = ['$http'];\n\n angular.module('ecap.siteConfiguration').service('adminEntityConfigurationDataService', adminEntityConfigurationDataService);\n})();\n","(function () {\n 'use strict';\n\n function configurationDataService($http) {\n var baseUrl = '[BuildifyApiHost]/api/siteconfigurations';\n\n function loadConfiguration(id) {\n return $http.get(baseUrl + '/' + id).then(function (response) {\n return response.data;\n });\n };\n\n function loadSearchFieldConfigurations(id, entityType) {\n return $http.get(baseUrl + '/' + id + '/entities/' + entityType + '/searchfields').then(function (response) {\n return response.data;\n });\n };\n\n function loadAllConfigurations() {\n return $http.get(baseUrl).then(function (response) {\n return response.data;\n });\n };\n\n function createConfiguration(data) {\n return $http.post(baseUrl, data).then(function (response) {\n return response.data;\n });\n }\n\n function saveConfiguration(id, data) {\n return $http.put(baseUrl + '/' + id, data).then(\n function (response) { return true; }\n );\n };\n\n return {\n loadConfiguration: loadConfiguration,\n loadSearchFieldConfigurations: loadSearchFieldConfigurations,\n loadAllConfigurations: loadAllConfigurations,\n createConfiguration: createConfiguration,\n saveConfiguration: saveConfiguration\n };\n }\n\n configurationDataService.$inject = ['$http'];\n\n angular.module('ecap.siteConfiguration').service('configurationDataService', configurationDataService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.workflow', []);\n})();","(function () {\n 'use strict';\n\n function workflowRouteConfig($stateProvider) {\n\n $stateProvider\n .state('admincontractorprojectupdate', {\n url: '/admin/contractorprojects/update/:contractorProjectId',\n template: '',\n controller: 'contractorProjectController',\n controllerAs: 'editor',\n resolve: {\n adminMode: function () {\n return true;\n }\n }\n })\n .state('admincontractorprojectphaseupdate', {\n url: '/admin/contractorprojects/update/:contractorProjectId/:phaseIndex',\n template: '',\n controller: 'contractorProjectController',\n controllerAs: 'editor',\n resolve: {\n adminMode: function () {\n return true;\n }\n }\n })\n .state('entitycontractorprojectreview', {\n url: '/entities/projects/review/:contractorProjectId',\n template: '',\n controller: 'contractorProjectController',\n controllerAs: 'editor',\n resolve: {\n adminMode: function () {\n return false;\n }\n }\n })\n .state('entitycontractorprojectreviewstate', {\n url: '/entities/projects/review/:contractorProjectId/:phaseIndex',\n template: '',\n controller: 'contractorProjectController',\n controllerAs: 'editor',\n resolve: {\n adminMode: function () {\n return false;\n }\n }\n })\n .state('createWorkflow', {\n url: '/workflows/create?t',\n templateUrl: 'workflow/templates/createWorkflow.html',\n controller: 'createWorkflowController as createWorkflowCtrl',\n resolve: {\n workflowConfigurationData: [\n \"workflowConfigurationDataService\", \"$stateParams\", function (workflowConfigurationDataService, $stateParams) {\n return workflowConfigurationDataService.getWorkflowConfiguration($stateParams.t);\n }\n ],\n entity: function () { return null; },\n sessionData: function () { return null; }\n }\n })\n .state('createWorkflowForEntity', {\n url: '/workflows/:entityType/:entityId/create?t',\n templateUrl: 'workflow/templates/createWorkflow.html',\n controller: 'createWorkflowController as createWorkflowCtrl',\n resolve: {\n sessionData: [\n \"sessionDataService\", \"$state\", \"notifyService\", function (sessionDataService, $state, notifyService) {\n return sessionDataService.loadSession().then(function (data) {\n if (!data.IsAdminEntity) {\n $state.go('dashboard').then(function () {\n notifyService.notify('You do not have permission to create projects for users', true);\n });\n }\n return data;\n });\n }\n ],\n workflowConfigurationData: [\n \"workflowConfigurationDataService\", \"$stateParams\", function (workflowConfigurationDataService, $stateParams) {\n return workflowConfigurationDataService.getWorkflowConfiguration($stateParams.t, $stateParams.entityType, $stateParams.entityId);\n }\n ],\n entity: [\n \"platformEntitiesDataService\", \"$stateParams\", function (platformEntitiesDataService, $stateParams) {\n if ($stateParams.entityId) {\n return platformEntitiesDataService.loadPlatformEntity($stateParams.entityType + '/' + $stateParams.entityId);\n }\n }\n ]\n }\n })\n .state('workflow', {\n url: '/workflows/review/:workflowId',\n templateUrl: 'workflow/templates/workflow.html',\n controller: 'workflowController as workflowContainerCtrl',\n resolve: {\n functionsConfigurationData: [\n \"functionsConfigurationDataService\", function (functionsConfigurationDataService) {\n return functionsConfigurationDataService.loadConfiguration().then(function (data) {\n return data;\n });\n }\n ],\n sessionData: [\n \"sessionDataService\", function (sessionDataService) {\n return sessionDataService.loadSession().then(function (data) {\n return data;\n });\n }\n ],\n workflowData: [\n \"$stateParams\", \"workflowDataService\", \"workflowStateService\",\n function ($stateParams, workflowDataService, workflowStateService) {\n return workflowDataService.loadWorkflow('workflows/' + $stateParams.workflowId).then(function (data) {\n return workflowStateService.update(data, true);\n });\n }\n ],\n thumbnailsData: [\n \"$stateParams\", \"thumbnailsDataService\", \"workflowStateService\",\n function ($stateParams, thumbnailsDataService, workflowStateService) {\n return thumbnailsDataService.loadThumbnails('workflows/' + $stateParams.workflowId).then(function (data) {\n workflowStateService.setThumbnails(data);\n return data;\n });\n }\n ]\n },\n redirectTo: 'workflow.roadmap'\n })\n .state('workflow.path', {\n url: '/path?path',\n templateUrl: 'workflow/templates/path.html',\n controller: 'workflowPathController as workflowPathCtrl'\n })\n .state('workflow.roadmap', {\n url: '/roadmap?path',\n templateUrl: 'workflow/templates/roadmap.html',\n controller: 'workflowRoadmapController as workflowRoadmapCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowRoadmapTab'];\n },\n roadmapThumbnails: [\n \"$stateParams\", \"thumbnailsDataService\", \"workflowData\",\n function ($stateParams, thumbnailsDataService, workflowData) {\n var phasePaths = workflowData.Phases.filter(function (phase) {\n return phase.Access.View && !phase.IsRemoved;\n }).map(function (filteredPhase) {\n return filteredPhase.Path;\n });\n return thumbnailsDataService.loadThumbnailsForObjectPaths('workflows/' + $stateParams.workflowId,\n phasePaths\n ).then(function (data) {\n Object.keys(data).forEach(function (key) {\n var matchingThumbnailObj = data[key];\n var prefix = matchingThumbnailObj.IsTemplate ? 'gettemplate' : 'getupload';\n if (matchingThumbnailObj.Thumbnails && matchingThumbnailObj.Thumbnails.length > 0) {\n matchingThumbnailObj.ThumbnailUrl = '/files/' + prefix + '?blobreference=' + matchingThumbnailObj.Thumbnails[0] + '&fileName='+ matchingThumbnailObj.Thumbnails[0];\n }\n })\n return data;\n });\n }\n ]\n }\n })\n .state('workflow.navigator', {\n url: '/navigator',\n templateUrl: 'workflow/templates/workflowNavigator.html',\n controller: 'workflowNavigatorController as workflowCtrl',\n resolve: {\n entitySearches: [\n '$stateParams', 'sessionData', 'workflowDataService',\n function ($stateParams, sessionData, workflowDataService) {\n if (sessionData.EntityType === 'Portal Administrator') {\n return workflowDataService.getEntitySearches('workflows/' +\n $stateParams.workflowId).then(function (data) {\n return data;\n });\n } else {\n return [];\n }\n }\n ],\n milestones: function () {\n return ['Workflow', 'WorkflowNavigatorTab'];\n },\n phaseThumbnails: [\n \"$stateParams\", \"workflowThumbnailsService\", \"workflowData\",\n function ($stateParams, workflowThumbnailsService, workflowData) {\n return workflowThumbnailsService.getThumbnails($stateParams.workflowId, workflowData).then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('workflow.navigator.phase', {\n url: '/phase/:phaseIndex?path'\n })\n .state('workflow.summary', {\n url: '/summary',\n templateUrl: 'workflow/templates/workflowSummary.html',\n controller: 'workflowSummaryController as workflowSummaryCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSummaryTab'];\n }\n }\n })\n .state('workflow.internalfiles', {\n url: '/internalfiles?path',\n templateUrl: 'workflow/templates/internalFiles.html',\n controller: 'workflowInternalFilesController as workflowInternalFilesCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowInternalFilesTab'];\n },\n thumbnails: [\n \"$stateParams\", \"workflowThumbnailsService\", \"workflowData\",\n function ($stateParams, workflowThumbnailsService, workflowData) {\n return workflowThumbnailsService.getThumbnails($stateParams.workflowId, workflowData).then(function (data) {\n return data;\n });\n }\n ]\n }\n })\n .state('workflow.sharing',\n {\n url: '/share',\n templateUrl: 'workflow/templates/sharing.html',\n controller: 'workflowSharingController as workflowSharingCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSharingTab'];\n }\n }\n })\n .state('workflow.sharingsearch', {\n url: '/sharingsearch/:entitySearchIndex/path/:path',\n templateUrl: 'workflow/templates/sharingsearch.html',\n controller: 'workflowSharingSearchController as workflowSharingSearchCtrl',\n resolve: {\n entitySearchConfiguration: [\n '$stateParams', 'searchConfigurationDataService', function ($stateParams, searchConfigurationDataService) {\n return searchConfigurationDataService.loadEntitiesSearch($stateParams.entitySearchIndex, $stateParams.workflowId)\n .then(function (data) {\n return data;\n });\n }\n ],\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.sharingsearchWithAdminSearch', {\n url: '/search/:entitySearchIndex/:adminEntitySearchIndex/path/:path',\n templateUrl: 'workflow/templates/sharingsearch.html',\n controller: 'workflowSharingSearchController as workflowSharingSearchCtrl',\n resolve: {\n entitySearchConfiguration: [\n '$stateParams', 'searchConfigurationDataService', function ($stateParams, searchConfigurationDataService) {\n return searchConfigurationDataService.loadEntitiesSearch($stateParams.entitySearchIndex, $stateParams.workflowId)\n .then(function (data) {\n return data;\n });\n }\n ],\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.sharingsearch.internalfiles', {\n url: '/internalfiles',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.sharingsearch.phase', {\n url: '/phase/:phaseIndex',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.sharingsearchWithAdminSearch.internalfiles', {\n url: '/internalfiles',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.sharingsearchWithAdminSearch.phase', {\n url: '/phase/:phaseIndex',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowSharingSearch', 'PartnerSearchWizard'];\n }\n }\n })\n .state('workflow.documents',\n {\n url: '/documents',\n templateUrl: 'workflow/templates/documents.html',\n controller: 'workflowDocumentsController as workflowDocumentsCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowDocumentsTab'];\n }\n }\n })\n .state('workflow.notes',\n {\n url: '/notes',\n templateUrl: 'workflow/templates/notes.html',\n controller: 'workflowNotesController as workflowNotesCtrl',\n resolve: {\n milestones: function () {\n return ['Workflow', 'WorkflowNotesTab'];\n }\n }\n });\n }\n\n workflowRouteConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.workflow').config(workflowRouteConfig);\n})();","(function () {\n 'use strict';\n\n function contractorProjectController($scope, $route, $routeParams, $location, $window, $interval, $log, $timeout,\n contractorProjectDataService, workflowConfigurationDataService, workflowProcessingService, sessionDataService,\n mailRequestDataService, notifyService, fileUploadsService, adminMode, STATES_LIST) {\n\n var self = this;\n\n this.adminMode = false;\n this.sharedMode = 'NoSharing';\n this.mode = '';\n this.selectedFiles = [];\n this.productQualifications = [];\n this.statesList = STATES_LIST;\n\n this.convertToInt = function (id) {\n return parseInt(id, 10);\n };\n\n this.convertToDecimal = function (id) {\n return parseFloat(id);\n };\n\n $scope.$watch(function () {\n return workflowProcessingService.mode;\n }, function (newValue) {\n if (newValue) {\n self.mode = newValue;\n if (newValue == 'Submit' || newValue == 'Skip') {\n self.nextPhaseSummary = workflowProcessingService.getNextPhaseSummary(self.Project.Phases, self.CurrentPhaseIndex);\n }\n }\n });\n\n $scope.$watch(function () { return fileUploadsService.selectedFiles; }, function (newValue) {\n self.selectedFiles = newValue;\n }, true);\n\n this.getEditorUrl = function (phaseIndex) {\n var baseUrl = (self.adminMode ? '/admin/contractorprojects/update/' : '/entities/projects/review/') + self.Project.FriendlyId;\n\n return baseUrl + '/' + phaseIndex;\n };\n\n this.switchPhase = function (phaseIndex) {\n $window.location = self.getEditorUrl(phaseIndex + 1);\n }\n\n this.getReviewUrl = function () {\n return self.adminMode ? '/admin/contractorprojects/review/' + self.Project.FriendlyId : '/entities/projects/review/' + self.Project.FriendlyId;\n };\n\n this.phaseHasMarketingMaterials = function(element, index, array) {\n return element.$type === 'Ecap.Api.ViewModels.MarketingMaterialsProjectPhaseExtension, Ecap.Api';\n }\n\n this.sendProjectReminder = function() {\n mailRequestDataService.sendProjectReminder(this.Project.Id).then(function(data) {\n notifyService.notify('Your project reminder email has been sent');\n });\n }\n\n this.Project = {};\n this.CurrentPhaseIndex = 1;\n this.nextPhaseSummary = {};\n this.user = {};\n self.accessingEntityId = '';\n this.CurrentProjectExtensionIndex = null;\n this.CurrentProjectExtension = {};\n this.CurrentProjectPhaseExtensionIndex = null;\n this.CurrentProjectPhaseExtension = {};\n this.CurrentPhaseForExtensionIndex = null;\n this.projectOwnerMode = function() {\n return self.accessingEntityId === self.Project.EntityId;\n }\n\n this.isInternalDetailsExtensionAvailable = function (extension) {\n return self.projectOwnerMode() || (adminMode && extension.AllowAdminAccess);\n }\n\n this.init = function () {\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n sessionDataService.loadSession().then(function (data) {\n self.user = data.UserName;\n self.accessingEntityId = data.EntityId;\n var phaseIndex = toParams.phaseIndex;\n if (phaseIndex) {\n self.CurrentPhaseIndex = parseInt(phaseIndex);\n }\n workflowProcessingService.adminMode = adminMode;\n self.adminMode = adminMode;\n self.loadContractorProject(toParams.contractorProjectId);\n });\n });\n };\n\n this.delete = function () {\n $window.location = (self.adminMode ? '/admin/contractorprojects/delete/' : '/entities/projects/delete/') + self.Project.FriendlyId;\n };\n\n this.removeProjectSharingConnection = function (entityId) {\n self.Project.ProjectExtensions.forEach(function(extension) {\n if (extension.$type === 'Ecap.Api.ViewModels.ShareWithPartnersProjectExtensionViewModel, Ecap.Api') {\n var matchingIndex = extension.ProjectSharingConnections.map(function(connection) {\n return connection.EntityId;\n }).indexOf(entityId);\n\n if (matchingIndex !== -1) {\n extension.ProjectSharingConnections.splice(matchingIndex, 1);\n }\n }\n });\n }\n\n this.deleteProductQualification = function (container, index) {\n container.splice(index, 1);\n }\n\n this.hasProductQualifications = function() {\n if (self.Project.Phases) {\n if (_.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.ProductSelectionProjectExtensionViewModel, Ecap.Api'\n })) {\n // OLD CODE to check for specific qualifications\n //var productSelectionExtension = _.find(self.Project.ProjectExtensions, { '$type': 'Ecap.Api.ViewModels.ProductSelectionProjectExtensionViewModel, Ecap.Api' });\n\n //if (productSelectionExtension.ProductQualifications.length >= 0) {\n // return true;\n //}\n\n // Just check if the extension is present\n return true;\n }\n\n for (var k = 0; k < self.Project.Phases.length; k++) {\n for (var l = 0; l < self.Project.Phases[k].ProjectPhaseExtensions.length; l++) {\n if (self.Project.Phases[k].ProjectPhaseExtensions[l].ProductQualifications) {\n // OLD CODE to check for specific qualifications\n //if (self.Project.Phases[k].ProjectPhaseExtensions[l].ProductQualifications.length > 0) {\n // return true;\n //}\n\n // Just check if the extension is present\n return true;\n }\n }\n }\n\n }\n return false;\n };\n\n this.loadContractorProject = function (id) {\n return contractorProjectDataService.loadContractorProject(id).then(function (data) {\n self.Project = data;\n\n // TODO: This should be mapped on the server side\n var allProjectPhaseExtensions = _.chain(self.Project.Phases).pluck('ProjectPhaseExtensions').flatten().value();\n self.Project.HasPartners = allProjectPhaseExtensions.some(function (element, array, index) {\n if (element.$type === 'Ecap.Api.ViewModels.FindAPartnerProjectPhaseExtensionViewModel, Ecap.Api') {\n if (element.PartnerConnections.length > 0) {\n return true;\n }\n }\n return false;\n });\n self.Project.HasTasks = _.some(self.Project.ProjectExtensions, {\n 'EditorMode': 'ExtensionEditorAndSummaryDisplay'\n });\n self.Project.IsProjectApplication = _.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.ApplyForAProjectExtensionViewModel, Ecap.Api'\n });\n self.Project.IsUploadProject = _.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.PartnerCriteriaProjectExtensionViewModel, Ecap.Api'\n });\n self.Project.CanShareWithPartners = _.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.ShareWithPartnersProjectExtensionViewModel, Ecap.Api'\n });\n self.Project.HasMyTeam = _.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.MyTeamProjectExtensionViewModel, Ecap.Api'\n });\n\n if (self.Project.IsUploadProject) {\n self.CurrentProjectExtensionIndex = 0;\n self.CurrentProjectExtension = self.Project.ProjectExtensions[0];\n }\n\n self.Project.FriendlyId = data.Id.replace('ContractorProjects/', '');\n if (!self.CurrentPhaseIndex) {\n self.CurrentPhaseIndex = self.Project.CurrentPhaseIndex + 1;\n }\n\n if (_.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.ProductSelectionProjectExtensionViewModel, Ecap.Api'\n })) {\n var productSelectionExtension = _.find(self.Project.ProjectExtensions, { '$type': 'Ecap.Api.ViewModels.ProductSelectionProjectExtensionViewModel, Ecap.Api' });\n\n if (productSelectionExtension.ProductQualifications.length === 0) {\n var extensionIndex = self.Project.ProjectExtensions.indexOf(productSelectionExtension);\n self.CurrentProjectExtension = self.Project.ProjectExtensions[extensionIndex];\n self.mode = \"Extension\";\n }\n }\n\n\n if (_.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.ShareWithPartnersProjectExtensionViewModel, Ecap.Api'\n })) {\n var shareWithPartnersExtension = _.find(self.Project.ProjectExtensions, { '$type': 'Ecap.Api.ViewModels.ShareWithPartnersProjectExtensionViewModel, Ecap.Api' });\n\n self.sharedMode = shareWithPartnersExtension.ProjectSharingConnections.some(function(item) {\n return item.EntityId === self.accessingEntityId && item.Status === \"Active\";\n }) ? \"SharingWith\" : \"NotSharingWith\";\n }\n\n if (!self.adminMode) {\n if (self.accessingEntityId === self.Project.EntityId) {\n if (self.Project.LockedForProjectOwner) {\n workflowProcessingService.mode = \"Locked\";\n }\n else {\n workflowProcessingService.mode = \"Edit\";\n self.Project.Attributes.forEach(function (attribute) {\n attribute.Mode = 'Editor';\n });\n self.Project.AdminAttributes.forEach(function (attribute) {\n attribute.Mode = 'Display';\n });\n }\n }\n else {\n if (self.sharedMode === \"NotSharingWith\") {\n workflowProcessingService.mode = \"Locked\";\n }\n else {\n workflowProcessingService.mode = \"Edit\";\n self.Project.Attributes.forEach(function (attribute) {\n attribute.Mode = 'Display';\n });\n self.Project.AdminAttributes.forEach(function (attribute) {\n attribute.Mode = 'Disblay';\n });\n }\n }\n }\n else {\n workflowProcessingService.mode = \"Edit\";\n self.Project.Attributes.forEach(function (attribute) {\n attribute.Mode = 'Editor';\n });\n self.Project.AdminAttributes.forEach(function (attribute) {\n attribute.Mode = 'Editor';\n });\n }\n\n self.Project.HasInternalDetails = _.some(self.Project.ProjectExtensions, {\n '$type': 'Ecap.Api.ViewModels.InternalDetailsProjectExtensionViewModel, Ecap.Api'\n });\n });\n };\n\n this.NextPhaseSummary = undefined;\n\n this.phaseHasDocuments = function (phase) {\n for (var i = 0; i < phase.InformationParts.length; i++) {\n if (phase.InformationParts[i].DocumentUploads) {\n return true;\n }\n }\n return false;\n };\n\n this.isLastPhase = function () {\n if (!self.Project.Phases) {\n return false;\n }\n return self.Project.Phases.length === self.CurrentPhaseIndex;\n };\n\n this.projectId = function () {\n return self.Project.Id.replace(\"ContractorProjects/\", \"\");\n };\n\n this.deleteFile = function (blob, documentUpload) {\n\n contractorProjectDataService.deleteUploadBlob(blob.BlobReference).then(function (blobDeleteData) {\n documentUpload.BlobSummaries.splice(documentUpload.BlobSummaries.indexOf(blob), 1);\n\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (saveData) {\n notifyService.notify('The file \\\"' + blobDeleteData.deletedFileName + '\\\" was successfully removed');\n });\n });\n }\n\n this.toggleLockProjectForOwner = function () {\n self.Project.LockedForProjectOwner = !self.Project.LockedForProjectOwner;\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (saveData) {\n notifyService.notify('The project was successfully ' + (self.Project.LockedForProjectOwner ? 'locked' : 'unlocked') + ' for the project owner');\n });\n }\n\n //var getNextPhaseSummary = function() {\n // return (self.Project.CurrentPhaseIndex + 1 < self.Project.Phases.length)\n // ? {\n // NextPhaseIndex: self.Project.CurrentPhaseIndex + 1,\n // NextPhaseTitle: self.Project.Phases[self.Project.CurrentPhaseIndex + 1].Title\n // }\n // : undefined;\n //};\n\n this.unskipPhase = function () {\n var onUnskipComplete = function () {\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n });\n };\n\n workflowProcessingService.unskipPhase(self.Project, self.Project.Phases, self.CurrentPhaseIndex, onUnskipComplete);\n };\n\n this.submitPhase = function () {\n if ($scope.contractorProjectForm.$valid) {\n\n if (self.Project.IsUploadProject) {\n self.Project.ProjectExtensions[self.CurrentProjectExtensionIndex] = self.CurrentProjectExtension;\n }\n\n var onUploadsComplete = function () {\n workflowProcessingService.advancePhase(self.Project, self.Project.Phases, self.CurrentPhaseIndex, function () {\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n $('#myModal').modal('hide');\n\n if (self.CurrentPhaseIndex < self.Project.Phases.length) {\n $window.location = self.getEditorUrl(parseInt(self.CurrentPhaseIndex) + 1);\n }\n else {\n $window.location = self.getEditorUrl(self.CurrentPhaseIndex);\n }\n });\n });\n };\n\n workflowProcessingService.submitPhase(self.Project.Phases, self.CurrentPhaseIndex, onUploadsComplete);\n\n $('#myModal').modal('show');\n\n }\n else {\n alert('invalid form');\n }\n };\n\n this.skipPhase = function () {\n workflowProcessingService.skipPhase(self.Project, self.Project.Phases, self.CurrentPhaseIndex);\n\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n if (self.CurrentPhaseIndex < self.Project.Phases.length) {\n $window.location = self.getEditorUrl(parseInt(self.CurrentPhaseIndex) + 1);\n } else {\n $window.location = self.getEditorUrl(self.CurrentPhaseIndex);\n }\n });\n\n };\n\n this.updatePhase = function () {\n if ($scope.contractorProjectForm.$valid) {\n if (self.Project.IsUploadProject) {\n self.Project.ProjectExtensions[self.CurrentProjectExtensionIndex] = self.CurrentProjectExtension;\n }\n\n self.Project.CurrentPhaseIndex = self.CurrentPhaseIndex - 1;\n\n $('#myModal').modal('show');\n var onUploadsComplete = function () {\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n $('#myModal').modal('hide');\n });\n };\n\n workflowProcessingService.updatePhase(onUploadsComplete);\n }\n else {\n alert('invalid form');\n }\n };\n\n this.editExtension = function (index) {\n self.CurrentProjectExtensionIndex = index;\n self.CurrentProjectExtension = self.Project.ProjectExtensions[index];\n self.mode = \"Extension\";\n }\n\n\n this.saveExtension = function (form) {\n if (form.$valid) {\n self.Project.ProjectExtensions[self.CurrentProjectExtensionIndex] = self.CurrentProjectExtension;\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n notifyService.notify('Your changes have been saved');\n self.mode = \"Edit\";\n self.CurrentProjectExtension = {};\n self.CurrentProjectExtensionIndex = null;\n });\n }\n }\n\n this.cancelSaveExtension = function () {\n self.mode = \"Edit\";\n self.CurrentProjectExtension = {};\n self.CurrentProjectExtensionIndex = null;\n }\n\n this.clearProjectExtensionForm = function (form, defaultValues) {\n form.$setPristine();\n self.CurrentProjectExtension = {\n $type: self.CurrentProjectExtension.$type,\n Title: self.CurrentProjectExtension.Title,\n Prompt: self.CurrentProjectExtension.Prompt\n };\n\n for (var attrname in defaultValues) { self.CurrentProjectExtension[attrname] = defaultValues[attrname]; }\n }\n\n this.editMyTeam = function() {\n var myTeamExtension = self.Project.ProjectExtensions.find(function(item) {\n return item['$type'] === 'Ecap.Api.ViewModels.MyTeamProjectExtensionViewModel, Ecap.Api';\n });\n\n if (myTeamExtension) {\n var index = self.Project.ProjectExtensions.indexOf(myTeamExtension);\n self.editExtension(index);\n }\n else {\n $log.error('There is no configured my team extension');\n }\n }\n\n this.logToConsole = function () {\n $log.debug(self.Project);\n }\n\n\n this.editPhaseExtension = function (phaseIndex, extensionIndex, phaseType, phaseData) {\n $log.debug('Phase Index:', phaseIndex, 'Extension Index:', extensionIndex);\n self.CurrentProjectPhaseExtensionIndex = extensionIndex;\n self.CurrentPhaseForExtensionIndex = phaseIndex;\n self.CurrentProjectPhaseExtension = self.Project.Phases[self.CurrentPhaseForExtensionIndex].ProjectPhaseExtensions[self.CurrentProjectPhaseExtensionIndex];\n $log.debug(self.CurrentProjectPhaseExtension);\n self.mode = \"PhaseExtension\";\n }\n\n this.savePhaseExtension = function (form) {\n if (form.$valid) {\n self.Project.Phases[self.CurrentPhaseForExtensionIndex].ProjectPhaseExtensions[self.CurrentProjectPhaseExtensionIndex] = self.CurrentProjectPhaseExtension;\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n notifyService.notify('Your changes have been saved');\n self.mode = \"Edit\";\n self.CurrentProjectPhaseExtension = {};\n self.CurrentProjectPhaseExtensionIndex = null;\n self.CurrentPhaseForExtensionIndex = null;\n });\n }\n }\n\n this.cancelSavePhaseExtension = function () {\n self.mode = \"Edit\";\n self.CurrentProjectPhaseExtension = {};\n self.CurrentProjectPhaseExtensionIndex = null;\n }\n\n this.setProductQualifications = function () {\n if (self.mode === \"Extension\") {\n\n for (var i = 0; i < self.CurrentProjectExtension.ProductGroups.length; i++) {\n for (var j = 0; j < self.CurrentProjectExtension.ProductGroups[i].ProductDefinitions.length; j++) {\n if (self.CurrentProjectExtension.ProductGroups[i].ProductDefinitions[j].isSelected) {\n if (!self.CurrentProjectExtension.ProductQualifications.some(function(element) {\n return element.ProductId === self.CurrentProjectExtension.ProductGroups[i].ProductDefinitions[j].Id;\n })) {\n self.CurrentProjectExtension.ProductQualifications.push({\n ProductId: self.CurrentProjectExtension.ProductGroups[i].ProductDefinitions[j].Id,\n Product: self.CurrentProjectExtension.ProductGroups[i].ProductDefinitions[j],\n Status: 'CompletingApplication'\n });\n }\n }\n }\n }\n self.Project.ProjectExtensions[self.CurrentProjectExtensionIndex] = self.CurrentProjectExtension;\n\n }\n else if (self.mode === \"PhaseExtension\") {\n for (var i = 0; i < self.CurrentProjectPhaseExtension.ProductGroups.length; i++) {\n for (var j = 0; j < self.CurrentProjectPhaseExtension.ProductGroups[i].ProductDefinitions.length; j++) {\n if (self.CurrentProjectPhaseExtension.ProductGroups[i].ProductDefinitions[j].isSelected) {\n if (!self.CurrentProjectPhaseExtension.ProductQualifications.some(function(element) {\n return element.ProductId === self.CurrentProjectPhaseExtension.ProductGroups[i].ProductDefinitions[j].Id;\n })) {\n self.CurrentProjectPhaseExtension.ProductQualifications.push({\n ProductId: self.CurrentProjectPhaseExtension.ProductGroups[i].ProductDefinitions[j].Id,\n Product: self.CurrentProjectPhaseExtension.ProductGroups[i].ProductDefinitions[j],\n Status: 'CompletingApplication'\n });\n }\n }\n }\n }\n self.Project.Phases[self.CurrentPhaseForExtensionIndex].ProjectPhaseExtensions[self.CurrentProjectPhaseExtensionIndex] = self.CurrentProjectPhaseExtension;\n }\n\n contractorProjectDataService.saveContractorProject(self.Project.Id, angular.toJson(self.Project)).then(function (data) {\n notifyService.notify('Your changes have been saved');\n self.mode = \"Edit\";\n self.CurrentProjectPhaseExtension = {};\n self.CurrentProjectPhaseExtensionIndex = null;\n });\n }\n\n\n this.init();\n }\n\n contractorProjectController.$inject = ['$scope', '$route', '$routeParams', '$location', '$window', '$interval', '$log', '$timeout',\n 'contractorProjectDataService', 'workflowConfigurationDataService', 'workflowProcessingService', 'sessionDataService',\n 'mailRequestDataService', 'notifyService', 'fileUploadsService', 'adminMode', 'STATES_LIST'];\n\n angular.module('ecap.workflow').controller('contractorProjectController', contractorProjectController);\n})();\n","(function () {\n 'use strict';\n\n function createWorkflowController($state,\n workflowConfigurationData, entity, workflowDataService) {\n var vm = this;\n vm.entity = entity;\n vm.configuration = workflowConfigurationData;\n vm.viewModel = {};\n vm.errors = [];\n vm.workflowIconStyle = vm.configuration.IconFileName ?\n \"background:url('/images/icons/\" + vm.configuration.IconFileName +\n \"');background-repeat: no-repeat;background-position: center\" :\n \"\";\n\n console.log($state.params);\n vm.submit = function submit() {\n vm.hideButtons = true;\n if (vm.entity) {\n workflowDataService.createWorkflowForEntity(vm.entity.Id, vm.viewModel,\n $state.params.t)\n .then(function (response) {\n if (response.isError) {\n vm.errors = response.Errors;\n vm.hideButtons = false;\n }\n else {\n $state.go('workflow', { workflowId: response.WorkflowId.split('/')[1] });\n }\n });\n }\n else {\n workflowDataService.createWorkflow(vm.viewModel, $state.params.t)\n .then(function (response) {\n if (response.isError) {\n vm.errors = response.Errors;\n vm.hideButtons = false;\n }\n else {\n $state.go('workflow', { workflowId: response.WorkflowId.split('/')[1] });\n }\n });\n }\n };\n\n vm.goBack = function () {\n $state.go('dashboard');\n }\n }\n\n createWorkflowController.$inject = ['$state', 'workflowConfigurationData', 'entity', 'workflowDataService'\n ];\n\n angular.module('ecap.workflow').controller('createWorkflowController', createWorkflowController);\n})();","(function () {\n 'use strict';\n\n function deletePhaseModalController($scope, $uibModalInstance) {\n $scope.ok = function () {\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.close();\n }\n }\n\n deletePhaseModalController.$inject = ['$scope', '$uibModalInstance'];\n\n angular.module('ecap.workflow').controller('deletePhaseModalController', deletePhaseModalController);\n})();\n","(function () {\n 'use strict';\n\n function deleteWorkflowModalController($scope, $uibModalInstance, notifyService, workflowDataService,\n workflowId, workflowTypeIdentifier) {\n $scope.deleteMessage = \"Are you sure you want to delete this \" +\n workflowTypeIdentifier.toLowerCase() + \"?\";\n\n $scope.ok = function () {\n workflowDataService.deleteWorkflow(workflowId).then(\n function() {\n notifyService.notify('This workflow has been deleted');\n });\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.close();\n }\n }\n\n deleteWorkflowModalController.$inject = ['$scope', '$uibModalInstance', 'notifyService',\n 'workflowDataService', 'workflowId', 'workflowTypeIdentifier'];\n\n angular.module('ecap.workflow').controller('deleteWorkflowModalController', deleteWorkflowModalController);\n})();\n","(function () {\n 'use strict';\n\n function findAPartnerController($scope, $log, searchConfigurationDataService,\n sessionDataService) {\n var vm = this;\n vm.config = {};\n vm.sessionData = {};\n vm.results = [];\n vm.showResults = false;\n vm.attributes = {};\n vm.searchConfiguration = {};\n vm.project = {};\n\n vm.initialPartnerIds = [];\n\n vm.pageSizes = [5, 10, 15, 20, 25];\n\n $scope.init = function (project, extension) {\n vm.project = project;\n vm.extension = extension;\n\n vm.config = searchConfigurationDataService.loadEntitiesSearch(extension.EntitySearchIndex,\n project.Id)\n .then(function (data) {\n vm.config = data;\n });\n\n vm.sessionData = sessionDataService.loadSession().then(function (data) {\n vm.sessionData = data;\n });\n\n vm.initialPartnerConnectionIds = extension.PartnerConnections.map(function (item) {\n return item.EntityId;\n });\n }\n\n vm.togglePartnerIntroduction = function (partner, partnerConnections) {\n var partnerIds = partnerConnections.map(function (item) {\n return item.EntityId;\n });\n var indexOfPartnerToAdd = partnerIds.indexOf(partner.Id);\n if (indexOfPartnerToAdd !== -1) {\n partnerIds.splice(indexOfPartnerToAdd, 1);\n partner.isSelected = false;\n } else {\n partnerConnections.push({\n EntityId: partner.Id,\n Status: 'Requested',\n LastActivityDate: new Date(),\n Partner: partner\n });\n partner.isSelected = true;\n }\n }\n }\n\n findAPartnerController.$inject = ['$scope', '$log', 'searchConfigurationDataService',\n 'sessionDataService'];\n\n angular.module('ecap.workflow').controller('findAPartnerController', findAPartnerController);\n})();\n","(function () {\n 'use strict';\n\n function productSelectionController($scope, searchConfigurationDataService,\n sessionDataService) {\n var vm = this;\n vm.config = {};\n vm.sessionData = {};\n vm.results = [];\n vm.showResults = false;\n vm.attributes = {};\n vm.searchConfiguration = {};\n vm.project = {};\n\n vm.initialProductIds = [];\n\n vm.pageSizes = [5, 10, 15, 20, 25];\n\n $scope.init = function(project, extension) {\n vm.project = project;\n vm.extension = extension;\n\n //vm.config = searchConfigurationDataService.loadProductDefinitionsSearch(extension.ProductDefinitionSearchIndex,\n // project.Id)\n // .then(function(data) {\n // vm.config = data;\n // });\n\n vm.config = searchConfigurationDataService.loadProductDefinitionsSearch(extension.ProductDefinitionSearchIndex)\n .then(function (data) {\n vm.config = data;\n });\n\n vm.sessionData = sessionDataService.loadSession().then(function(data) {\n vm.sessionData = data;\n });\n\n vm.initialProductIds = extension.ProductQualifications.map(function(item) {\n return {\n ProductId: item.ProductId\n };\n });\n\n vm.toggleProductApplication = function (product, productQualifications) {\n var productIds = productQualifications.map(function (item) {\n return item.ProductId;\n });\n var indexOfProductToAdd = productIds.indexOf(product.Id);\n if (indexOfProductToAdd !== -1) {\n productIds.splice(indexOfProductToAdd, 1);\n product.isSelected = false;\n }\n else {\n productQualifications.push({\n ProductId: product.Id,\n Product: product,\n Status: 'CompletingApplication'\n });\n product.isSelected = true;\n }\n }\n\n };\n\n vm.results = [];\n\n vm.extensionData = {};\n\n }\n\n productSelectionController.$inject = ['$scope', 'searchConfigurationDataService',\n 'sessionDataService'];\n\n angular.module('ecap.workflow').controller('productSelectionController', productSelectionController);\n})();\n","(function () {\n 'use strict';\n\n function removePhaseModalController($scope, $uibModalInstance, phaseIndex, phaseTitle) {\n $scope.ok = function () {\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.close();\n }\n\n $scope.phaseIndex = phaseIndex;\n $scope.phaseTitle = phaseTitle;\n }\n\n removePhaseModalController.$inject = ['$scope', '$uibModalInstance', 'phaseIndex', 'phaseTitle'];\n\n angular.module('ecap.workflow').controller('removePhaseModalController', removePhaseModalController);\n})();\n","(function () {\n 'use strict';\n\n function shareWithPartnersController($log, $q, $scope, $timeout, searchDataService) {\n\n var vm = this;\n vm.searchFormTitle = '';\n vm.selectedSharingPartners = [];\n vm.projectEntityId = null;\n $scope.init = function(extension, projectEntityId, projectId) {\n vm.queryModel.predicates[\"EntityType\"].value = extension.EntityTypes.join(',');\n vm.searchFormTitle = extension.prompt;\n vm.selectedSharingPartners = extension.ProjectSharingConnections;\n vm.projectEntityId = projectEntityId;\n vm.projectId = projectId;\n $log.debug('init');\n }\n vm.partners = [];\n vm.totalItems = 0;\n vm.orderBy = function orderBy(field) {\n if (vm.queryModel.orderBy === field) {\n if (vm.queryModel.orderByDirection == 'asc') {\n vm.queryModel.orderByDirection = 'desc';\n } else {\n vm.queryModel.orderByDirection = 'asc';\n }\n } else {\n vm.queryModel.orderBy = field;\n vm.queryModel.orderByDirection = 'asc';\n }\n };\n\n vm.queryModel = {\n uri: '[BuildifyApiHost]/api/platformentities',\n pageSize: 5,\n pageNum: 0,\n numPages: 0,\n orderBy: \"Name\",\n orderByDirection: \"asc\",\n predicates:\n {\n \"EntityType\": {\n condition: \"In\",\n dynamicField: true,\n watch: function () { return true; }\n },\n \"Name\": {\n condition: \"StartsWith\",\n value: '',\n dynamicField: true,\n watch: function () {\n $log.debug(vm.queryModel.predicates['Name'].value);\n return true;\n }\n }\n },\n injectedPredicates: []\n };\n\n vm.togglePartnerSelection = function (entity, projectSharingConnections) {\n var existingEntityIds = projectSharingConnections.map(function (item) {\n return item.EntityId;\n });\n var indexOfEntityToAdd = existingEntityIds.indexOf(entity.EntityId);\n if (indexOfEntityToAdd !== -1) {\n projectSharingConnections.splice(indexOfEntityToAdd, 1);\n entity.isSelected = false;\n } else {\n projectSharingConnections.push({\n EntityId: entity.EntityId,\n Status: 'Active',\n LastActivityDate: new Date(),\n Entity: entity\n });\n entity.isSelected = true;\n }\n }\n\n $scope.$watch(function () { return vm.queryModel; },\n function () {\n if (vm.queryModel.predicates[\"EntityType\"].value) {\n getPartners(vm.queryModel);\n }\n }, true);\n\n function getPartners() {\n var extraParameters = [{ name: 'projectId', value: vm.projectId }];\n searchDataService.getResults(vm.queryModel, extraParameters).then(querySucceeded);\n }\n\n function querySucceeded(data) {\n vm.totalItems = data.TotalResults;\n vm.partners = data.Results.filter(function(partner) {\n if (vm.selectedSharingPartners.some(function(selectedPartner) {\n return partner.EntityId === selectedPartner.EntityId;\n })) {\n vm.totalItems--;\n return false;\n }\n else if (partner.EntityId === vm.projectEntityId) {\n vm.totalItems--;\n return false;\n }\n\n return true;\n });\n }\n }\n\n shareWithPartnersController.$inject = ['$log', '$q', '$scope', '$timeout', 'searchDataService'];\n\n angular.module('ecap.workflow').controller('shareWithPartnersController', shareWithPartnersController);\n})();","(function () {\n 'use strict';\n\n function workflowController($scope, $rootScope, $timeout, $state, $uibModal,\n notifyService, workflowData, functionsConfigurationData, sessionData,\n workflowStateService, mailRequestDataService, signalrService, toastr, $pbService) {\n var vm = this;\n vm.sessionData = sessionData;\n vm.workflowId = workflowData.Id.split('/')[1];\n vm.workflowData = workflowData;\n vm.canSeeWholeWorkflow = !workflowData.Phases\n .filter(function (phase) {\n return !phase.IsRemoved;\n }).some(function (phase) {\n return !phase.Access.View;\n });\n vm.workflowTypeIdentifier = vm.workflowData.WorkflowTypeIdentifier || 'Project';\n vm.stateParams = {};\n vm.tabs = {\n 'workflow.roadmap': {\n header: 'Roadmap',\n active: false,\n additionalStates: []\n },\n 'workflow.navigator': {\n header: vm.workflowTypeIdentifier + ' Workflow',\n active: true,\n additionalStates: ['workflow.navigator.phase', 'workflow.sharingsearch', 'workflow.sharingsearch.phase']\n },\n 'workflow.documents': {\n header: 'Documents',\n active: false,\n additionalStates: []\n },\n 'workflow.internalfiles': {\n header: vm.workflowData.InternalContent.Title,\n active: false,\n additionalStates: ['workflow.sharingsearch.internalfiles']\n },\n 'workflow.notes': {\n header: 'Notes',\n active: false,\n additionalStates: []\n },\n 'workflow.sharing': {\n header: 'Partners',\n active: false,\n additionalStates: []\n },\n 'workflow.summary': {\n header: vm.workflowTypeIdentifier + ' Summary',\n active: false,\n additionalStates: []\n }\n };\n\n var workflowHeaderPopoverClass = 'workflow-header-popover';\n vm.popoverConfig = {\n id: 'workflowHeaderPopover',\n class: 'comments-menu-popover ' + workflowHeaderPopoverClass,\n placement: 'bottom',\n template: 'workflow/templates/commentsMenuPopover.html',\n outsideSelector: 'div.' + workflowHeaderPopoverClass,\n outsideIgnoreSelector: 'button.' + workflowHeaderPopoverClass\n }\n\n vm.progressCircleOptions = {\n color: '#fff',\n trailColor: 'rgba(255, 255, 255, .2)',\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: '#fff',\n position: 'absolute',\n left: '50%',\n top: '39px',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '1.1em',\n }\n }\n };\n\n vm.progressPercentageComplete = 0;\n vm.saveLocalTitle = function () {};\n vm.titleContext = '';\n vm.editTitleData = {\n Title: '',\n OriginalTitle: ''\n };\n vm.currentStateName = 'workflow.roadmap';\n // vm.showProgress = true;\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.stateParams = toParams;\n vm.currentStateName = toState.name;\n vm.titleBarButtons = [];\n\n if (vm.stateParams.phaseIndex) {\n vm.phaseIndex = parseInt(vm.stateParams.phaseIndex, 10);\n }\n vm.changeTab(toState.name);\n $('html,body').scrollTop(0);\n\n if ($rootScope.workflowReorderMode && $rootScope.workflowReorderModeToast) {\n toastr.clear($rootScope.workflowReorderModeToast);\n }\n\n $rootScope.workflowReorderMode = false;\n\n switch (toState.name) {\n case ('workflow.roadmap'):\n vm.isCommentsPopoverVisible = false;\n vm.popoverContext = {\n Path: \"\",\n ProjectUnderwritingNotes: vm.workflowData.ProjectUnderwritingNotes\n };\n vm.workflowTitleMode = vm.workflowData.Access.Edit ? 'display': 'readonly';\n vm.progressPercentageComplete = vm.workflowData.PercentageComplete / 100;\n vm.editTitleData.Title = vm.workflowData.Name;\n vm.editTitleData.OriginalTitle = vm.workflowData.Name;\n vm.titleContext = vm.workflowData.WorkflowTypeIdentifier || 'project';\n vm.saveLocalTitle = function () {\n vm.workflowData.Name = vm.editTitleData.Title;\n }\n vm.siblingNames = [];\n vm.workflowViewMode = 'roadmap';\n vm.showTitleBarButton = vm.workflowData.Access.Edit;\n var deleteProjectButton = {\n text: 'Delete ' + vm.workflowTypeIdentifier,\n click: function () {\n var modalInstance = $uibModal.open({\n templateUrl: 'workflow/templates/deleteWorkflowModal.html',\n controller: 'deleteWorkflowModalController',\n windowClass: 'workflow-delete-modal',\n resolve: {\n workflowId: function() {\n return vm.workflowData.Id;\n },\n workflowTypeIdentifier: function () {\n return vm.workflowTypeIdentifier;\n }\n }\n });\n\n return modalInstance.result.then(function(wasDeleted) {\n if (wasDeleted) {\n $state.go('dashboard');\n }\n });\n }\n };\n var addPhaseButton = {\n text: 'Add Phase',\n click: function () {\n var titleAndPrompt = 'New Phase';\n var newPhaseCount = vm.workflowData.Phases.filter(function (phase) {\n return phase.Title.startsWith('New Phase');\n }).length;\n if (newPhaseCount > 0) {\n titleAndPrompt = titleAndPrompt + ' (' + newPhaseCount + ')';\n }\n workflowStateService.addPhase(titleAndPrompt);\n }\n }\n vm.titleBarButtons = [];\n if ((vm.sessionData.EntityId == vm.workflowData.EntityId) ||\n vm.sessionData.IsAdminEntity) {\n vm.titleBarButtons.push(deleteProjectButton);\n }\n\n if (vm.workflowData.Access.Edit)\n {\n vm.titleBarButtons.push(addPhaseButton);\n }\n break;\n case ('workflow.navigator.phase'):\n vm.isCommentsPopoverVisible = vm.workflowData.Phases[vm.phaseIndex -1].Access.Notes;\n //vm.showProgress = vm.workflowData.Phases[vm.phaseIndex -1].Status !== 'Skipped';\n vm.popoverContext = {\n Path: vm.workflowData.Phases[vm.phaseIndex -1].Path,\n ProjectUnderwritingNotes: vm.workflowData.Phases[vm.phaseIndex -1].ProjectUnderwritingNotes\n };\n vm.workflowTitleMode = vm.workflowData.Phases[vm.phaseIndex -1].Access.Edit ? 'display': 'readonly';\n vm.progressPercentageComplete = vm.workflowData.Phases[vm.phaseIndex - 1].PercentageComplete / 100;\n vm.editTitleData.Title = vm.workflowData.Phases[vm.phaseIndex - 1].Prompt;\n vm.editTitleData.OriginalTitle = vm.workflowData.Phases[vm.phaseIndex - 1].Prompt;\n vm.titleContext = 'phase';\n vm.saveLocalTitle = function () {\n vm.workflowData.Phases[vm.phaseIndex - 1].Prompt = vm.editTitleData.Title;\n }\n vm.siblingNames = vm.workflowData.Phases.filter(function (phase) {\n return !phase.IsRemoved;\n }).map(function (p) { return p.Title; });\n vm.workflowViewMode = 'phase';\n vm.showTitleBarButton = vm.workflowData.Phases[vm.phaseIndex -1].Access.Edit;\n vm.titleBarButtons = [\n {\n text: 'Delete Phase',\n click: function () {\n var modalInstance = $uibModal.open({\n templateUrl: 'workflow/templates/deletePhaseModal.html',\n controller: 'deletePhaseModalController',\n windowClass: 'workflow-delete-modal'\n });\n\n return modalInstance.result.then(function(wasDeleted) {\n if (wasDeleted) {\n vm.workflowData.Phases[vm.phaseIndex -1].IsRemoved = true;\n workflowStateService.resolveNotesForPath(vm.workflowData.Phases[vm.phaseIndex -1].Path);\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You have removed this phase');\n $state.go('workflow.roadmap', { workflowId: vm.workflowData.Id.split('/')[1] });\n }\n });\n }\n },\n {\n text: vm.workflowData.Phases[vm.phaseIndex -1].Status === 'Skipped' ? 'Unskip Phase' : 'Skip Phase',\n click: function () { vm.togglePhaseSkip(); }\n }\n ];\n break;\n case ('workflow.internalfiles'):\n vm.workflowTitleMode = 'readonly';\n // vm.showProgress = false;\n vm.editTitleData.Title = vm.workflowData.InternalContent.Title;\n vm.titleContext = 'internalfiles';\n vm.saveLocalTitle = function () {\n // noop\n }\n vm.siblingNames = [];\n vm.workflowViewMode = 'internalFiles';\n break;\n }\n\n updateProgressBar(true);\n $rootScope.$emit('updateWorkflowTitleBar');\n });\n\n vm.togglePhaseSkip = function () {\n vm.workflowData.Phases[vm.phaseIndex -1].Status = vm.workflowData.Phases[vm.phaseIndex -1].Status === 'Skipped'\n ? 'Pending'\n : 'Skipped';\n\n workflowStateService.update(vm.workflowData);\n\n vm.titleBarButtons[1].text = vm.workflowData.Phases[vm.phaseIndex -1].Status === 'Skipped' ? 'Unskip Phase' : 'Skip Phase';\n\n // vm.showProgress = vm.workflowData.Phases[vm.phaseIndex -1].Status !== 'Skipped';\n\n if (vm.showProgress) {\n updateProgressBar(true);\n }\n\n vm.phaseIndexToAdvanceTo = null;\n if (vm.workflowData.Phases[vm.phaseIndex -1].Status === 'Skipped')\n {\n if (vm.workflowData.Phases.length > vm.phaseIndex) {\n for (var i = vm.phaseIndex; i < vm.workflowData.Phases.length; i++) {\n if (vm.workflowData.Phases[i].Access.View && vm.workflowData.Phases[i].Status !== 'Skipped') {\n vm.phaseIndexToAdvanceTo = i;\n break;\n }\n }\n }\n\n var message = vm.phaseIndexToAdvanceTo\n ? 'You have unmarked this phase as skipped and are being taken to the next phase.'\n : 'You have unmarked this phase as skipped and are being taken back to the roadmap.';\n notifyService.notify(message);\n\n $timeout(function () {\n if (!vm.phaseIndexToAdvanceTo) {\n $state.go('workflow.roadmap', { workflowId: vm.workflowData.Id.split('/')[1] });\n } else {\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowData.Id.split('/')[1], phaseIndex: vm.phaseIndexToAdvanceTo + 1 });\n }\n }, 2000);\n } else {\n notifyService.notify('You have unmarked this phase as skipped');\n }\n \n }\n\n function updateProgressBar(startAtZero) {\n $timeout(function () {\n if (startAtZero) {\n $pbService.set('titleBarProgressCircle',0);\n }\n $pbService.animate('titleBarProgressCircle', vm.progressPercentageComplete);\n // $pbService.set('titleBarProgressCircle', vm.progressPercentageComplete);\n });\n }\n\n vm.editWorkflowTitle = function () {\n vm.workflowTitleMode = 'edit';\n vm.editTitleData.OriginalTitle = vm.editTitleData.Title;\n }\n\n vm.saveWorkflowTitle = function () {\n if (vm.editTitleData.OriginalTitle !== vm.editTitleData.Title) {\n vm.saveLocalTitle();\n workflowStateService.update(vm.workflowData);\n notifyService.notify(\n 'The ' + vm.titleContext + ' title has been updated');\n }\n vm.editTitleData.OriginalTitle = vm.editTitleData.Title;\n vm.workflowTitleMode = 'display';\n }\n\n vm.cancelSaveWorkflowTitle = function () {\n vm.workflowTitleMode = 'display';\n vm.editTitleData.Title = vm.editTitleData.OriginalTitle;\n }\n\n vm.toggleWorkflowReorderMode = function () {\n if (!$rootScope.workflowReorderMode) {\n $rootScope.workflowReorderModeToast = toastr.info('You are currently reordering the workflow phases',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.workflowReorderMode = false;\n }\n });\n } else {\n if ($rootScope.workflowReorderModeToast) {\n toastr.clear($rootScope.workflowReorderModeToast);\n delete $rootScope.workflowReorderModeToast;\n }\n }\n\n $rootScope.workflowReorderMode = !$rootScope.workflowReorderMode;\n }\n\n $scope.$on('workflowUpdated', function () {\n vm.workflowData = workflowStateService.get();\n var newProgressPercentageComplete = 0;\n switch (vm.currentStateName) {\n case 'workflow.roadmap':\n newProgressPercentageComplete = vm.workflowData.PercentageComplete / 100;\n break;\n case 'workflow.navigator.phase':\n newProgressPercentageComplete = vm.workflowData.Phases[vm.phaseIndex - 1].PercentageComplete / 100;\n break;\n }\n\n if (newProgressPercentageComplete !== vm.progressPercentageComplete) {\n vm.progressPercentageComplete = newProgressPercentageComplete;\n updateProgressBar();\n }\n });\n\n $scope.$on('fileUploaded', function (event, args) {\n if (args.parent.isRequiredDownloadCollection) {\n return;\n } else {\n var workflowObject = workflowStateService.getObjectFromPath(vm.workflowData, args.parent.Path);\n\n if (!workflowObject.BlobSummaries) {\n workflowObject.BlobSummaries = [];\n }\n\n workflowObject.BlobSummaries = workflowObject.BlobSummaries.concat(args.blobs);\n\n mailRequestDataService.sendWorkflowUpdate({\n EntityId: vm.sessionData.EntityId,\n WorkflowId: vm.workflowId,\n Path: args.parent.Path,\n Context: 'InformationPart',\n RecordedActivity:\n {\n // TODO: Use fields other than description or add this\n // to the actual workflow activities\n Description: 'Document' +\n (args.blobs.length > 1 ? 's' : '') +\n ' ' +\n args.blobs.map(function (b) { return b.FileName; }).join(', ')\n + ' ' +\n (args.blobs.length > 1 ? 'wer' : 'was') +\n ' uploaded',\n UserName: vm.sessionData.UserName,\n Date: (new Date()).toISOString(),\n UsersToNotify: workflowObject.Partners.filter(function (partner) {\n return partner.Access.Notes;\n }).map(function (filteredPartner) { \n return filteredPartner.UserName;\n })\n }\n });\n }\n workflowStateService.update(vm.workflowData);\n var fileNames = args.blobs.map(function (upload) {\n return upload.FileName;\n }).join(', ');\n notifyService.notify('You uploaded ' + fileNames);\n });\n\n vm.changeTab = function (tabName) {\n for (var property in vm.tabs) {\n if (vm.tabs.hasOwnProperty(property)) {\n vm.tabs[property].active = property === tabName || (\n vm.tabs[property].additionalStates &&\n vm.tabs[property].additionalStates.indexOf(tabName) !== -1);\n }\n }\n }\n\n vm.updateName = function () {\n // This trick makes sure the model is updated before we actually send the update\n $timeout(function () {\n workflowStateService.update(vm.workflowData);\n }, 0);\n }\n\n signalrService.getConnectionInfo(functionsConfigurationData.negotiate.Url + '?code=' +\n functionsConfigurationData.negotiate.Code).then(function (data) {\n var connection = new signalR.HubConnectionBuilder()\n .withUrl('https://buildify.service.signalr.net/client?hub=activity', {\n accessTokenFactory: function () { return data.accessToken; }\n })\n .build();\n\n connection.on('activity', messageCallback);\n connection.onclose(function () { console.log('disconnected') });\n console.log('connecting...');\n connection.start()\n .then(function () { onConnected(connection); })\n .catch(function (error) { console.error(error.message); });\n\n function messageCallback(message) {\n console.dir(message, { depth: null });\n var blobReference = Object.keys(message)[0];\n var existingThumbnails = workflowStateService.getThumbnails();\n if (Object.keys(existingThumbnails).every(function (thumbnailBlobReference) {\n return thumbnailBlobReference !== blobReference;\n })) {\n // add the thumbnail\n existingThumbnails[blobReference] = message[blobReference].BlobReferences;\n workflowStateService.setThumbnails(existingThumbnails);\n }\n }\n\n function onConnected(connection) {\n console.log('connection started');\n }\n })\n }\n\n workflowController.$inject = ['$scope', '$rootScope', '$timeout', '$state', '$uibModal',\n 'notifyService', 'workflowData', 'functionsConfigurationData', 'sessionData',\n 'workflowStateService', 'mailRequestDataService', 'signalrService', 'toastr', '$pbService'\n ];\n\n angular.module('ecap.workflow').controller('workflowController', workflowController);\n})();","(function() {\n 'use strict';\n\n function workflowDocumentsController($scope, $state, milestones,\n workflowStateService, milestoneModalService, zipbuilderDataService, notifyService) {\n var vm = this;\n\n vm.workflowData = workflowStateService.get();\n vm.workflowId = vm.workflowData.Id.split('/')[1];\n vm.phaseDocuments = [];\n vm.zipDownloadBlobReference = null;\n vm.showZipDownload = false;\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n function buildPhaseDocs() {\n var phaseDocs = vm.workflowData.Phases.reduce(function (current, phase) {\n var parts = phase.InformationParts.filter(function(prefilteredPart) {\n return prefilteredPart.$type === 'Ecap.Api.ViewModels.DocumentViewModel, Ecap.Api' &&\n !prefilteredPart.IsRemoved &&\n prefilteredPart.BlobSummaries.some(function(blob) { return !blob.IsRemoved; });\n });\n\n parts.forEach(function(part) {\n var blobs = part.BlobSummaries.filter(function(allBlob) { return !allBlob.IsRemoved; });\n\n blobs.forEach(function(blob) {\n current.push({\n Access: blob.Access,\n Phase: phase.Title,\n Title: part.Title,\n Path: part.Path,\n FileName: blob.FileName,\n BlobReference: blob.BlobReference,\n DateUploaded: blob.DateUploaded,\n UploadedByUserName: blob.UploadedByUserName\n });\n });\n });\n\n return current;\n },[]);\n\n vm.documents = phaseDocs.filter(function(doc) {\n return doc.Access.View;\n }).sort(function(doc) {\n return doc.DateUploaded;\n }).reverse();\n }\n\n buildPhaseDocs();\n\n function updateZipDownloadButton(data) {\n vm.showZipDownload = vm.documents.filter(function (blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).length > 1;\n\n if (data) {\n vm.zipDownloadBlobReference = data;\n notifyService.notify('A zip file was created for all of the project documents' +\n ' - Download Zip File');\n }\n else {\n vm.zipDownloadBlobReference = null;\n }\n }\n\n vm.buildZipFile = function() {\n var data = {\n Blobs: vm.documents.filter(function (blob) {\n return blob.Access.View && !blob.IsRemoved;\n }).map(function (filteredBlob) {\n return {\n FileName: filteredBlob.FileName,\n BlobReference: filteredBlob.BlobReference\n };\n })\n };\n vm.buildingZipFile = true;\n zipbuilderDataService.build(data).then(function (data) {\n vm.buildingZipFile = false;\n updateZipDownloadButton(data);\n }).catch(function (err) {\n vm.buildingZipFile = false;\n });\n }\n\n updateZipDownloadButton();\n\n $scope.$on('workflowUpdated', function () {\n vm.workflowData = workflowStateService.get();\n buildPhaseDocs();\n });\n }\n\n workflowDocumentsController.$inject = ['$scope', '$state', 'milestones',\n 'workflowStateService', 'milestoneModalService', 'zipbuilderDataService', 'notifyService'];\n\n angular.module('ecap.workflow').controller('workflowDocumentsController', workflowDocumentsController);\n})();\n","(function () {\n 'use strict';\n\n function workflowInternalFilesController($rootScope, $scope, $state, $timeout, milestones, thumbnails,\n sessionData, workflowStateService, milestoneModalService, notifyService, toastr, scrollingService, workflowThumbnailsService) {\n var vm = this;\n vm.thumbnails = thumbnails;\n vm.sessionEntity = sessionData.Entity;\n vm.workflowData = workflowStateService.get();\n vm.workflowId = vm.workflowData.Id.split('/')[1];\n vm.hasNoContents = !vm.workflowData.InternalContent.InformationParts.some(function(informationPart) {\n return !informationPart.IsRemoved;\n });\n vm.isAddingInformationPart = false;\n vm.mode = 'Editor';\n\n vm.toggleAddMenuDropdown = function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n vm.isAddMenuOpen = !vm.isAddMenuOpen;\n };\n\n vm.addToPhaseMenuItems = [\n {\n label: 'Document',\n action: function () {\n vm.activateAddDocument();\n },\n iconClass: 'fa fa-file-o'\n },\n {\n label: 'Question Set',\n action: function() {\n vm.activateAddQuestionSet();\n },\n iconClass: 'fa fa-check-square-o'\n }\n ];\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n if (!toState.name.startsWith('workflow.internalfiles')) {\n return;\n }\n $state.go('workflow.internalfiles', { workflowId: vm.workflowData.Id.split('/')[1] });\n });\n\n $rootScope.$on('thumbnailsChanged', function (event, args) {\n try {\n workflowThumbnailsService.getThumbnails(vm.workflowId, vm.workflowData).then(function (data) {\n Object.keys(data).forEach(function (key) {\n if (!vm.thumbnails[key]) {\n vm.thumbnails[key] = data[key];\n }\n });\n });\n $scope.$apply();\n } catch (error) {\n $log.warn('failed to replace thumbnails');\n $log.warn(error);\n }\n });\n\n if (!vm.workflowData.InternalContent.Access.View) {\n notifyService.notify('You do not have access to this part of the workflow', true);\n $state.go('workflow.navigator', { workflowId: vm.workflowData.Id.split('/')[1] });\n }\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.activateAddQuestionSet = function () {\n vm.isAddingQuestionSet = !vm.isAddingQuestionSet;\n if (vm.isAddingQuestionSet) {\n $timeout(function () {\n scrollingService.scrollTo('addWorkflowInformationPartQuestionSet', 260, 0, 0);\n }, 0);\n }\n }\n\n vm.activateAddDocument = function () {\n vm.isAddingDocument = !vm.isAddingDocument;\n if (vm.isAddingDocument) {\n $timeout(function () {\n scrollingService.scrollTo('addWorkflowInformationPartDocument', 260, 0, 0);\n }, 0);\n }\n }\n\n vm.removeInformationPart = function (partIndex) {\n workflowStateService.removeInformationPartFromInternalContent(partIndex);\n }\n\n vm.updateDocumentPrompt = function (partIndex) {\n workflowStateService.updateDocumentPrompt(vm.workflowData.InternalContent, vm.workflowData.InternalContent.InformationParts[partIndex]);\n }\n\n vm.deleteUpload = function (documentData, blobIndex) {\n workflowStateService.deleteUpload(vm.workflowData.InternalContent, documentData, blobIndex);\n }\n\n vm.syncQuestionSet = function (questionSetData) {\n workflowStateService.syncQuestionSet(vm.workflowData.InternalContent, questionSetData);\n }\n\n vm.addingInformationPartType = '';\n vm.activateAddInformationPart = function (type) {\n vm.addingInformationPartType = type;\n vm.isAddingInformationPart = !vm.isAddingInformationPart;\n }\n\n vm.addInformationPart = function (informationPart) {\n workflowStateService.addInformationPartToInternalContent(informationPart);\n }\n\n vm.toggleWorkflowReorderMode = function () {\n if (!$rootScope.workflowReorderMode) {\n $rootScope.workflowReorderModeToast = toastr.info('You are currently reordering this content',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.workflowReorderMode = false;\n }\n });\n } else {\n if ($rootScope.workflowReorderModeToast) {\n toastr.clear($rootScope.workflowReorderModeToast);\n delete $rootScope.workflowReorderModeToast;\n }\n }\n\n $rootScope.workflowReorderMode = !$rootScope.workflowReorderMode;\n }\n\n vm.reorderInformationParts = function (informationPartIndex) {\n vm.workflowData.InternalContent.InformationParts.splice(informationPartIndex, 1);\n workflowStateService.update(vm.workflowData);\n }\n\n $scope.$on('workflowUpdated', function () {\n vm.workflowData = workflowStateService.get();\n vm.hasNoContents = !vm.workflowData.InternalContent.InformationParts.some(function(informationPart) {\n return !informationPart.IsRemoved;\n });\n });\n }\n\n workflowInternalFilesController.$inject = ['$rootScope', '$scope', '$state', '$timeout', 'milestones', 'thumbnails',\n 'sessionData', 'workflowStateService', 'milestoneModalService', 'notifyService', 'toastr', 'scrollingService','workflowThumbnailsService'];\n\n angular.module('ecap.workflow').controller('workflowInternalFilesController', workflowInternalFilesController);\n})();\n","(function () {\n 'use strict';\n\n function workflowMainController() {\n\n }\n\n workflowMainController.$inject = [];\n\n angular.module('ecap.workflow').controller('workflowMainController', workflowMainController);\n})();\n","(function () {\n 'use strict';\n\n function workflowNavigatorController($scope, $rootScope, $timeout, $state, $window, $log,\n sessionData, entitySearches, milestones, phaseThumbnails,\n scrollingService, workflowStateService, milestoneModalService, workflowThumbnailsService,\n workflowConfigurationDataService, notifyService, toastr, hlStickyStack, $pbService) {\n var vm = this;\n vm.mode = 'Editor';\n vm.items = [\n { name: '1' },\n { name: '2' }\n ];\n\n vm.phaseThumbnails = phaseThumbnails;\n vm.sessionEntity = sessionData.Entity;\n vm.workflowData = workflowStateService.get();\n vm.filteredPhases = [];\n setFilteredPhases();\n vm.workflowId = vm.workflowData.Id.split('/')[1];\n vm.currentPhaseIndex = $rootScope.$state.params.phaseIndex || 1;\n updateNavigationStates();\n updateProgressCircles();\n vm.routePhaseIndex = 1;\n vm.isAddingInformationPart = false;\n vm.isAddingRequiredDownload = false;\n\n vm.allowSearchEditing = sessionData.EntityType === 'Portal Administrator';\n vm.currentPhaseHasRequiredDownloads = currentPhaseHasRequiredDownloads();\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n\n vm.tinymceOptions = {\n height: \"144px\",\n menubar: false,\n statusbar: false,\n resize: false,\n plugins: [\n \"advlist autolink link paste\"\n ],\n advlist_bullet_styles: \"disc\",\n toolbar: \"undo redo | bold italic | bullist | link\",\n valid_elements: '*[*]',\n debounce: true\n };\n\n vm.toggleEditPhaseHeaderCopy = function () {\n vm.isEditingHeaderCopy = !vm.isEditingHeaderCopy;\n\n if (vm.isEditingHeaderCopy) {\n vm.activateEditPhaseHeaderCopy();\n }\n }\n\n vm.activateEditPhaseHeaderCopy = function () {\n var index = vm.routePhaseIndex - 1;\n if (!vm.workflowData.Phases[index].HeaderCopyHtmlOverride &&\n !vm.workflowData.Phases[index].HeaderCopyHtmlTemplateId) {\n vm.workflowData.Phases[index].HeaderCopyHtmlOverride = 'Please complete the information below';\n vm.workflowData.Phases[index].OriginalHeaderCopyHtmlOverride = null;\n vm.workflowData.Phases[index].isEditingHeaderCopy = true;\n }\n else if (vm.workflowData.Phases[index].HeaderCopyHtmlOverride) {\n vm.workflowData.Phases[index].OriginalHeaderCopyHtmlOverride =\n vm.workflowData.Phases[index].HeaderCopyHtmlOverride;\n vm.workflowData.Phases[index].isEditingHeaderCopy = true;\n }\n else {\n workflowConfigurationDataService.loadHtmlTemplate(\n vm.workflowData.Phases[index].HeaderCopyHtmlTemplateId).then(function (data) {\n vm.workflowData.Phases[index].HeaderCopyHtmlOverride = data.Html;\n vm.workflowData.Phases[index].OriginalHeaderCopyHtmlOverride = data.Html;\n vm.workflowData.Phases[index].isEditingHeaderCopy = true;\n });\n }\n }\n\n vm.closeEditPhaseHeaderCopy = function (save) {\n vm.isEditingHeaderCopy = false;\n var index = vm.routePhaseIndex - 1;\n if (!save) {\n vm.workflowData.Phases[index].HeaderCopyHtmlOverride =\n vm.workflowData.Phases[index].OriginalHeaderCopyHtmlOverride;\n }\n else {\n workflowStateService.update(vm.workflowData);\n }\n\n $rootScope.$emit('roadmapHtmlTemplateLoaded',\n {\n triggerMatchData: vm.workflowData.Phases[index]\n .HeaderCopyHtmlTemplateId\n });\n }\n\n var partnerPopoverClass = 'partner-selector-popover';\n vm.navigatorPartnersPopoverConfig = {\n id: 'navigatorPhasePartners',\n class: partnerPopoverClass,\n placement: 'left',\n template: 'workflow/templates/partnerSelectorPopover.html',\n outsideSelector: 'div.' + partnerPopoverClass,\n outsideIgnoreSelector: 'button.' + partnerPopoverClass\n }\n\n vm.setInformationPartPopovers = function () {\n vm.workflowData.Phases[vm.currentPhaseIndex - 1].RequiredDownloads.forEach(function (requiredDownload, index) {\n var requiredDownloadCommentPopoverClass = 'required-download-comments-menu-popover-' + index;\n requiredDownload.popoverConfig = {\n id: 'requiredDownloadComments' + index,\n class: 'comments-menu-popover ' + requiredDownloadCommentPopoverClass,\n placement: 'bottom',\n template: 'workflow/templates/commentsMenuPopover.html',\n outsideSelector: 'div.' + requiredDownloadCommentPopoverClass,\n outsideIgnoreSelector: 'button.' + requiredDownloadCommentPopoverClass\n }\n });\n\n vm.workflowData.Phases[vm.currentPhaseIndex - 1].InformationParts.forEach(function (informationPart, index) {\n var partnerPopoverClass = 'information-part-partner-selector-popover' + index;\n informationPart.popoverConfig = {\n id: 'informationPartPartners' + index,\n class: 'partner-selector-popover ' + partnerPopoverClass,\n placement: 'left',\n template: 'workflow/templates/partnerSelectorPopover.html',\n outsideSelector: 'div.' + partnerPopoverClass,\n outsideIgnoreSelector: 'button.' + partnerPopoverClass\n }\n\n if (informationPart.BlobSummaries)\n {\n informationPart.BlobSummaries.forEach(function (blobSummary, blobIndex) {\n var blobSummaryCommentPopoverClass = 'blob-summary-comments-menu-popover-' + index + '-' + blobIndex;\n blobSummary.popoverConfig = {\n id: 'blobComments' + index + '_' + blobIndex,\n class: 'comments-menu-popover ' + blobSummaryCommentPopoverClass,\n placement: 'bottom',\n template: 'workflow/templates/commentsMenuPopover.html',\n outsideSelector: 'div.' + blobSummaryCommentPopoverClass,\n outsideIgnoreSelector: 'button.' + blobSummaryCommentPopoverClass\n }\n }); \n }\n });\n }\n\n vm.setInformationPartPopovers();\n\n $rootScope.$on('thumbnailsChanged', function (event, args) {\n try {\n workflowThumbnailsService.getThumbnails(vm.workflowId, vm.workflowData).then(function (data) {\n Object.keys(data).forEach(function (key) {\n if (!vm.phaseThumbnails[key]) {\n vm.phaseThumbnails[key] = data[key];\n }\n });\n });\n $scope.$apply();\n } catch (error) {\n $log.warn('failed to replace thumbnails');\n $log.warn(error);\n }\n });\n\n $scope.$on('fileUploaded', function (event, args) {\n var newWorkflowData = workflowStateService.get();\n newWorkflowData.Phases[vm.currentPhaseIndex - 1].InformationParts.forEach(function (informationPart, index) {\n if (informationPart.BlobSummaries)\n {\n informationPart.BlobSummaries.forEach(function (blobSummary, blobIndex) {\n var blobSummaryCommentPopoverClass = 'blob-summary-comments-menu-popover-' + index + '-' + blobIndex;\n blobSummary.popoverConfig = {\n id: 'blobComments' + index + '_' + blobIndex,\n class: 'comments-menu-popover ' + blobSummaryCommentPopoverClass,\n placement: 'bottom',\n template: 'workflow/templates/commentsMenuPopover.html',\n outsideSelector: 'div.' + blobSummaryCommentPopoverClass,\n outsideIgnoreSelector: 'button.' + blobSummaryCommentPopoverClass\n }\n });\n }\n });\n });\n\n // get the default stack instance\n var stack = hlStickyStack();\n var clientY;\n angular.forEach(['mousemove', 'scroll'], function(eventName) {\n angular.element($window).bind(eventName, function updateStackVariables(event) {\n if (angular.isDefined(event.clientY)) {\n clientY = event.clientY;\n }\n var mousePosition = clientY + window.pageYOffset;\n\n // get the current total height of the stack\n $scope.stackHeightCurrent = stack.heightCurrent('top');\n\n // get the total height of the stack at the position of the mouse\n $scope.stackHeightAtPosition = stack.heightAt('top', mousePosition);\n\n // trigger a scope digest because the event wasn't from Angular\n $scope.$apply();\n });\n });\n\n if (vm.allowSearchEditing) {\n vm.entitySearches = entitySearches;\n }\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n function setFilteredPhases() {\n vm.filteredPhases = [];\n vm.workflowData.Phases.forEach(function (phase, index) {\n if (phase.Access.View) {\n vm.filteredPhases.push({\n Title: phase.Title,\n Index: index,\n PercentageComplete: phase.PercentageComplete\n });\n }\n });\n }\n\n function currentPhaseHasRequiredDownloads() {\n return vm.workflowData.Phases[vm.currentPhaseIndex - 1].RequiredDownloads &&\n vm.workflowData.Phases[vm.currentPhaseIndex - 1].RequiredDownloads.filter(\n function (download) {\n return !download.IsRemoved &&\n download.BlobSummary &&\n download.BlobSummary.BlobReference\n }).length > 0;\n }\n\n function currentPhaseHasNotes() {\n return (vm.workflowData.Phases[vm.currentPhaseIndex - 1].ProjectUnderwritingNotes.some(function (note) {\n return !note.IsRemoved\n }) && vm.workflowData.Phases[vm.currentPhaseIndex - 1].Access.Notes) || vm.isAddingNote;\n }\n\n function updateNavigationStates() {\n vm.canNavigateForward = vm.workflowData.Phases.length > vm.currentPhaseIndex &&\n vm.workflowData.Phases.slice(vm.currentPhaseIndex).find(function (phase) {\n return phase.Access.View && !phase.IsRemoved;\n });\n\n vm.canNavigateBackward = vm.currentPhaseIndex > 1 &&\n vm.workflowData.Phases.slice(0, vm.currentPhaseIndex - 1).find(function (phase) {\n return phase.Access.View && !phase.IsRemoved;\n });\n }\n\n function updateProgressCircles() {\n $timeout(function () {\n var phasePercentageComplete = vm.workflowData.Phases[vm.currentPhaseIndex - 1].PercentageComplete / 100;\n $pbService.animate('topProgressCircle', phasePercentageComplete);\n $pbService.animate('navProgressCircle', phasePercentageComplete);\n $pbService.animate('topProgressCircleSkipped', phasePercentageComplete);\n $pbService.animate('navProgressCircleSkipped', phasePercentageComplete);\n })\n };\n\n vm.toggleAddNote = function () {\n vm.isAddingNote = !vm.isAddingNote;\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n }\n\n $rootScope.$on('cancelledAddComment', function (event, args) {\n if (args.path === vm.workflowData.Phases[vm.currentPhaseIndex - 1].Path) {\n vm.isAddingNote = false;\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n }\n });\n\n vm.navigateToPhase = function (phaseIndex) {\n var navigate = false;\n if (vm.currentPhaseIndex !== phaseIndex) {\n navigate = true;\n }\n vm.currentPhaseIndex = phaseIndex;\n updateProgressCircles();\n //scrollingService.scrollTo('phase' + phaseIndex, 240, 0, 0);\n vm.currentPhaseHasRequiredDownloads = currentPhaseHasRequiredDownloads();\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n updateNavigationStates();\n if (navigate) {\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowId, phaseIndex: phaseIndex }).then(function () {\n $timeout(function () {\n scrollingService.scrollTo('phaseSectionsContainer', 320, 0, 0);\n }, 0);\n });\n }\n };\n\n vm.navigateToNextInProgressPhase = function () {\n var unfinishedPhaseIndices = vm.workflowData.Phases.map(function (phase, index) {\n return (phase.Access.View && !phase.IsRemoved && !(phase.PercentageComplete === 100)) ?\n index : null;\n }).filter(function (phase) {\n return phase !== null;\n });\n\n // if (unfinishedPhaseIndices.length === 0) {\n // notifyService.notify('You have completed this phase and the entire ' +\n // (vm.workflowData.WorkflowTypeIdentifier || 'project'));\n // }\n\n var indexToNavigateTo;\n var indexToNavigateTo = unfinishedPhaseIndices.find(function (index) {\n return index >= vm.currentPhaseIndex;\n });\n\n if (!indexToNavigateTo) {\n indexToNavigateTo = unfinishedPhaseIndices[unfinishedPhaseIndices.length - 1];\n }\n\n if (indexToNavigateTo) {\n // notifyService.notify('You have completed this phase.');\n\n $timeout(function () {\n scrollingService.scrollTo('advanceContainer', 150, 0, 0);\n });\n // $timeout(function () {\n // vm.navigateToPhaseFromUserAction(indexToNavigateTo + 1);\n // }, 3000);\n }\n }\n\n vm.navigateForward = function () {\n var phaseIndex = vm.workflowData.Phases.slice(vm.currentPhaseIndex).findIndex(function (phase) {\n return phase.Access.View && !phase.IsRemoved;\n });\n vm.navigateToPhaseFromUserAction(parseInt(vm.currentPhaseIndex, 10) + phaseIndex + 1);\n }\n\n vm.navigateBackward = function () {\n var phaseIndex = 0;\n var previousPhases = vm.workflowData.Phases.slice(0, vm.currentPhaseIndex - 1);\n for (var i = previousPhases.length - 1; i >= 0; i--) {\n if (previousPhases[i].Access.View && !previousPhases[i].IsRemoved) {\n phaseIndex = i;\n break;\n }\n }\n\n vm.navigateToPhaseFromUserAction(phaseIndex + 1);\n }\n\n vm.removeRequiredDownload = function (downloadIndex) {\n workflowStateService.removeRequiredDownloadFromPhase(vm.routePhaseIndex - 1, downloadIndex);\n vm.currentPhaseHasRequiredDownloads = currentPhaseHasRequiredDownloads();\n }\n\n vm.removeInformationPart = function (phase, partIndex) {\n workflowStateService.removeInformationPartFromPhase(phase, partIndex);\n }\n\n vm.updateDocumentPrompt = function(phase, partIndex) {\n workflowStateService.updateDocumentPrompt(phase, phase.InformationParts[partIndex]);\n }\n\n vm.deleteUpload = function(phase, documentData, blobIndex) {\n workflowStateService.deleteUpload(phase, documentData, blobIndex);\n }\n\n vm.syncQuestionSet = function(phase, questionSetData) {\n workflowStateService.syncQuestionSet(phase, questionSetData);\n }\n\n vm.navigateToPhaseFromUserAction = function (phaseIndex) {\n if (phaseIndex === parseInt(vm.routePhaseIndex, 10)) {\n vm.navigateToPhase(phaseIndex);\n }\n else {\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowId, phaseIndex: phaseIndex });\n }\n }\n\n vm.topProgressCircleOptions = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '2em',\n }\n }\n };\n\n vm.progressCircleOptions = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '2em',\n }\n }\n };\n\n vm.smallProgressCircleOptions = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '1.4em',\n }\n }\n };\n\n vm.progressCircleOptionsSkipped = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '1.4em',\n }\n }\n };\n\n vm.smallProgressCircleOptionsSkipped = {\n color: $rootScope.$themes[$rootScope.$currentTheme].accentColor,\n duration: 1400,\n strokeWidth: 3,\n trailWidth: 3,\n easing: 'easeInOut',\n text: {\n autoStyleContainer: false,\n style: {\n // Text color.\n // Default: same as stroke color (options.color)\n color: $rootScope.$themes[$rootScope.$currentTheme].primaryColor,\n position: 'absolute',\n left: '50%',\n top: '50%',\n padding: 0,\n margin: 0,\n // You can specify styles which will be browser prefixed\n transform: {\n prefix: true,\n value: 'translate(-50%, -50%)'\n },\n fontSize: '.98em',\n }\n }\n };\n\n $rootScope.$on('phasePercentageCompleteChange',\n function (event, args) {\n if ((args.phaseIndex === vm.routePhaseIndex - 1) && args.percentChanged) {\n $pbService.animate('topProgressCircle', args.percentageComplete);\n $pbService.animate('navProgressCircle', args.percentageComplete);\n $pbService.animate('topProgressCircleSkipped', args.phasePercentageComplete);\n $pbService.animate('navProgressCircleSkipped', args.phasePercentageComplete);\n\n if (args.percentageComplete === 1) {\n notifyService.notify('You have completed this phase.');\n vm.navigateToNextInProgressPhase();\n }\n }\n });\n\n vm.activateAddQuestionSet = function () {\n vm.isAddingQuestionSet = !vm.isAddingQuestionSet;\n if (vm.isAddingQuestionSet) {\n $timeout(function () {\n scrollingService.scrollTo('addWorkflowInformationPartQuestionSet', 260, 0, 0);\n $('#addQuestionSetInput').focus();\n }, 0);\n }\n }\n\n vm.activateAddDocument = function () {\n vm.isAddingDocument = !vm.isAddingDocument;\n if (vm.isAddingDocument) {\n $timeout(function () {\n scrollingService.scrollTo('addWorkflowInformationPartDocument', 260, 0, 0);\n $('#addDocumentInput').focus();\n }, 0);\n }\n }\n\n vm.activateAddRequiredDownload = function () {\n vm.isAddingRequiredDownload = !vm.isAddingRequiredDownload;\n $timeout(function () {\n scrollingService.scrollTo('addRequiredDownloadForm', 260, 0, 0);\n $('#addRequiredDownloadInput').focus();\n }, 0);\n }\n\n vm.addInformationPart = function (informationPart) {\n var phase = vm.workflowData.Phases[vm.currentPhaseIndex - 1];\n workflowStateService.addInformationPartToPhase(phase, informationPart);\n vm.setInformationPartPopovers();\n }\n\n vm.updatePhaseIndex = function () {\n vm.navigateToPhase(vm.routePhaseIndex);\n }\n\n vm.addToPhaseMenuItems = [\n {\n label: 'Template',\n action: function () {\n vm.activateAddRequiredDownload();\n },\n iconClass: 'fa fa-file-o'\n },\n {\n label: 'Document',\n action: function () {\n vm.activateAddDocument();\n },\n iconClass: 'fa fa-file-o'\n },\n {\n label: 'Question Set',\n action: function() {\n vm.activateAddQuestionSet();\n },\n iconClass: 'fa fa-check-square-o'\n }\n ];\n\n vm.toggleAddMenuDropdown = function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n vm.isAddMenuOpen = !vm.isAddMenuOpen;\n };\n\n // $rootScope.$on('duScrollspy:becameActive', function($event, $element, $target) {\n // var floatingButtonMode = floatingButtonOptions[$element.prop('hash').replace('#', '')];\n // if (floatingButtonMode) {\n // vm.floatingButtonData = {\n // label: floatingButtonMode.label,\n // show: true,\n // clickAction: floatingButtonMode.action\n // }\n // }\n // else {\n // vm.floatingButtonData = {\n // label: '',\n // show: false,\n // clickAction: null\n // };\n // }\n // });\n\n $rootScope.$on('requiredDownloadAdded',\n function () {\n vm.currentPhaseHasRequiredDownloads = true;\n });\n\n vm.toggleSkipPhase = function skipPhase(phaseIndex) {\n vm.workflowData.Phases[phaseIndex].Status =\n vm.workflowData.Phases[phaseIndex].Status === 'Skipped' ? 'Pending' : 'Skipped';\n workflowStateService.update(vm.workflowData);\n\n $pbService.animate('topProgressCircle', 0);\n $pbService.animate('navProgressCircle', 0);\n $pbService.animate('topProgressCircleSkipped', 0);\n $pbService.animate('navProgressCircleSkipped', 0);\n\n if (vm.workflowData.Phases[phaseIndex].Status === 'Skipped' &&\n vm.canNavigateForward) {\n vm.navigateForward();\n }\n\n notifyService.notify('You have ' +\n (vm.workflowData.Phases[phaseIndex].Status !== 'Skipped' ? 'un' : '') +\n 'skipped the phase ' + vm.workflowData.Phases[phaseIndex].Title);\n }\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n // if (vm.stickyElement) {\n // vm.stickyElement.destroy();\n // }\n if (!toState.name.startsWith('workflow.navigator')) {\n return;\n }\n\n var arrayPhaseIndex = parseInt(toParams.phaseIndex || 1, 10) - 1;\n if (!vm.workflowData.Phases[arrayPhaseIndex].Access.View) {\n var indexToNavigateTo = vm.workflowData.Phases.indexOf(vm.workflowData.Phases.find(function (phase) {\n return phase.Access.View;\n }));\n\n // if (toParams.phaseIndex !== (indexToNavigateTo + 1).toString()) {\n // notifyService.notify('You do not have access to this phase of the workflow and are being redirected', true);\n // }\n\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowData.Id.split('/')[1], phaseIndex: indexToNavigateTo + 1 });\n }\n\n vm.advanceMode = 'roadmap';\n if (vm.workflowData.Phases.length > arrayPhaseIndex + 1) {\n for (var i = arrayPhaseIndex + 1; i < vm.workflowData.Phases.length; i++) {\n if (vm.workflowData.Phases[i].Access.View && vm.workflowData.Phases[i].Status !== 'Skipped') {\n vm.advanceMode = 'phase';\n vm.phaseIndexToAdvanceTo = i;\n break;\n }\n }\n }\n\n vm.routePhaseIndex = arrayPhaseIndex + 1;\n\n // This trick allows us to take action after the DOM has been rendered\n $timeout(function () {\n $rootScope.$emit('jumpToComment', { path: toParams.path });\n vm.navigateToPhase(vm.routePhaseIndex);\n vm.setInformationPartPopovers();\n });\n\n\n });\n\n\n\n vm.advanceToNextPhase = function () {\n if (vm.advanceMode === 'roadmap') {\n $state.go('workflow.roadmap', { workflowId: vm.workflowData.Id.split('/')[1] });\n } else {\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowData.Id.split('/')[1], phaseIndex: vm.phaseIndexToAdvanceTo + 1 });\n }\n }\n\n vm.toggleWorkflowReorderMode = function () {\n if (!$rootScope.workflowReorderMode) {\n $rootScope.workflowReorderModeToast = toastr.info('You are currently reordering this workflow phase',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.workflowReorderMode = false;\n }\n });\n } else {\n if ($rootScope.workflowReorderModeToast) {\n toastr.clear($rootScope.workflowReorderModeToast);\n delete $rootScope.workflowReorderModeToast;\n }\n }\n\n $rootScope.workflowReorderMode = !$rootScope.workflowReorderMode;\n }\n\n vm.reorderRequiredDownloads = function (requiredDownloadIndex) {\n vm.workflowData.Phases[vm.currentPhaseIndex - 1].RequiredDownloads.splice(requiredDownloadIndex, 1);\n workflowStateService.update(vm.workflowData);\n }\n\n vm.reorderPhaseInformationParts = function (informationPartIndex) {\n vm.workflowData.Phases[vm.currentPhaseIndex - 1].InformationParts.splice(informationPartIndex, 1);\n workflowStateService.update(vm.workflowData);\n }\n\n vm.saveSearchChanges = function () {\n workflowStateService.update(vm.workflowData);\n }\n\n vm.updatePrompt = function () {\n // This trick makes sure the model is updated before we actually send the update\n $timeout(function () {\n workflowStateService.update(vm.workflowData);\n }, 0);\n }\n\n vm.onPhaseNoteAdded = function (phaseIndex) {\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n }\n\n vm.onPhaseNoteRemoved = function (phaseIndex, noteId) {\n var phase = vm.workflowData.Phases[phaseIndex];\n var noteToRemoveIndex = phase.ProjectUnderwritingNotes.map(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n phase.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n\n vm.currentPhaseHasNotes = currentPhaseHasNotes();\n }\n\n $scope.$on('workflowUpdated', function () {\n vm.workflowData = workflowStateService.get();\n setFilteredPhases();\n });\n }\n\n workflowNavigatorController.$inject = ['$scope', '$rootScope', '$timeout', '$state', '$window', '$log',\n 'sessionData', 'entitySearches', 'milestones', 'phaseThumbnails',\n 'scrollingService', 'workflowStateService', 'milestoneModalService', 'workflowThumbnailsService',\n 'workflowConfigurationDataService', 'notifyService', 'toastr', 'hlStickyStack', '$pbService'];\n\n angular.module('ecap.workflow').controller('workflowNavigatorController', workflowNavigatorController);\n})();\n","(function() {\n 'use strict';\n\n function workflowNotesController($scope, $state, milestones, sessionData,\n workflowStateService, milestoneModalService, notifyService) {\n var vm = this;\n\n vm.sessionEntity = sessionData.Entity;\n vm.workflowData = workflowStateService.get();\n\n if (!vm.workflowData.Access.Notes) {\n notifyService.notify('You do not have access to this part of the workflow', true);\n $state.go('workflow.navigator', { workflowId: vm.workflowData.Id.split('/')[1] });\n }\n\n vm.UnderwritingNotes = [];\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n function buildNotes() {\n var underwritingNotesMap = vm.workflowData.UnderwritingNotes.reduce(function(prev, current) {\n if (current.IsDeleted) {\n return prev;\n }\n\n var objectFromPath = workflowStateService.getObjectFromPath(vm.workflowData, current.Path);\n if (!objectFromPath || !objectFromPath.Access || !objectFromPath.Access.Notes) {\n return prev;\n }\n\n if (!prev[current.Path]) {\n prev[current.Path] = {\n notes: [current],\n cleanPath: workflowStateService.getCleanPath(current.Path)\n };\n } else {\n prev[current.Path].notes.push(current);\n }\n\n return prev;\n }, {});\n\n for (var path in underwritingNotesMap) {\n if (underwritingNotesMap.hasOwnProperty(path)) {\n underwritingNotesMap[path].notes = underwritingNotesMap[path].notes.sort(function (a, b) {\n return a.UpdatedDate - b.UpdatedDate;\n });\n };\n };\n\n if (!underwritingNotesMap[''] &&\n workflowStateService.getObjectFromPath(vm.workflowData, '').Access.Notes) {\n underwritingNotesMap[''] = { notes: [], cleanPath: 'Project' };\n }\n\n vm.UnderwritingNotes = [];\n for (var key in underwritingNotesMap) {\n if (underwritingNotesMap.hasOwnProperty(key)) {\n vm.UnderwritingNotes.push({\n path: key,\n cleanPath: underwritingNotesMap[key].cleanPath,\n notes: underwritingNotesMap[key].notes\n });\n }\n }\n }\n\n buildNotes();\n\n vm.onNoteAdded = function() {\n\n }\n\n vm.onNoteRemoved = function() {\n\n }\n\n //vm.isAddingInformationPart = false;\n\n //if (!vm.workflowData.InternalContent.Access.View) {\n // notifyService.notify('You do not have access to this part of the workflow', true);\n // $state.go('workflow.navigator', { workflowId: vm.workflowData.Id.split('/')[1] });\n //}\n\n //vm.removeInformationPart = function (partIndex) {\n // workflowStateService.removeInformationPartFromInternalContent(partIndex);\n //}\n\n //vm.activateAddInformationPart = function () {\n // vm.isAddingInformationPart = !vm.isAddingInformationPart;\n //}\n\n $scope.$on('workflowUpdated', function () {\n vm.workflowData = workflowStateService.get();\n buildNotes();\n });\n }\n\n workflowNotesController.$inject = ['$scope', '$state','milestones', 'sessionData',\n 'workflowStateService', 'milestoneModalService', 'notifyService'];\n\n angular.module('ecap.workflow').controller('workflowNotesController', workflowNotesController);\n})();\n","(function () {\n 'use strict';\n\n function workflowPathController($scope, $state, $timeout, workflowData, workflowStateService) {\n var vm = this;\n\n vm.workflowData = workflowData;\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.stateParams = toParams;\n var object = workflowStateService.getRouteDataFromPath(vm.workflowData, toParams.path);\n\n switch (object.route) {\n case ('workflow.roadmap'):\n $state.go('workflow.roadmap', { workflowId: vm.workflowData.Id.split('/')[1], path: toParams.path });\n break;\n case ('workflow.navigator.phase'):\n $state.go('workflow.navigator.phase', { workflowId: vm.workflowData.Id.split('/')[1], phaseIndex: object.phaseIndex, path: toParams.path });\n break;\n case ('workflow.internalfiles'):\n $state.go('workflow.internalfiles', { workflowId: vm.workflowData.Id.split('/')[1], path: toParams.path });\n break;\n }\n });\n }\n\n workflowPathController.$inject = ['$scope', '$state', '$timeout', 'workflowData', 'workflowStateService'];\n\n angular.module('ecap.workflow').controller('workflowPathController', workflowPathController);\n})();\n","(function () {\n 'use strict';\n\n function workflowRoadmapController($scope, $rootScope, $document,\n $uibModal, $timeout, milestones, sessionData, roadmapThumbnails,\n workflowStateService, workflowConfigurationDataService, toastr, notifyService, milestoneModalService, $pbService) {\n\n var vm = this;\n vm.workflowData = workflowStateService.get();\n vm.workflowId = vm.workflowData.Id.split('/')[1];\n vm.copyTogglesEnabled = true;\n vm.roadmapThumbnails = roadmapThumbnails;\n\n vm.workflowData.Phases.forEach(function (phase, index) {\n var commentPopoverClass = 'comments-menu-popover-' + index;\n phase.popoverConfig = {\n id: 'roadmapPhaseComments' + index,\n class: 'comments-menu-popover ' + commentPopoverClass,\n placement: 'bottom',\n template: 'workflow/templates/commentsMenuPopover.html',\n outsideSelector: 'div.' + commentPopoverClass,\n outsideIgnoreSelector: 'button.' + commentPopoverClass\n }\n });\n\n var partnerPopoverClass = 'phase-partner-selector-popover';\n vm.projectPartnersPopoverConfig = {\n id: 'roadmapPhasePartners',\n class: 'partner-selector-popover ' + partnerPopoverClass,\n placement: 'left',\n template: 'workflow/templates/partnerSelectorPopover.html',\n outsideSelector: 'div.' + partnerPopoverClass,\n outsideIgnoreSelector: 'button.' + partnerPopoverClass\n }\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n //$scope.$on('workflowUpdated', function () {\n // vm.workflowData = workflowStateService.get();\n //});\n\n vm.tinymceOptions = {\n height: \"300\",\n menubar: false,\n statusbar: false,\n resize: false,\n plugins: [\n \"advlist autolink link paste\"\n ],\n advlist_bullet_styles: \"disc\",\n toolbar: \"undo redo | bold italic | bullist | link\",\n valid_elements: '*[*]',\n debounce: true\n };\n\n vm.showRemovePhasePrompt = function showRemovePhasePrompt(phaseIndex) {\n var modalInstance = $uibModal.open({\n templateUrl: 'removePhaseModal',\n controller: 'removePhaseModalController',\n resolve: {\n phaseIndex: function () {\n return phaseIndex;\n },\n phaseTitle: function () {\n return vm.workflowData.Phases[phaseIndex].Title;\n }\n }\n });\n\n return modalInstance.result.then(function (removePhase) {\n if (removePhase) {\n vm.workflowData.Phases[phaseIndex].IsRemoved = true;\n workflowStateService.update(vm.workflowData);\n notifyService.notify(\n 'You have removed the phase ' + vm.workflowData.Phases[phaseIndex].Title);\n }\n });\n }\n\n vm.toggleWorkflowReorderMode = function () {\n if (!$rootScope.workflowReorderMode) {\n $rootScope.workflowReorderModeToast = toastr.info('You are currently reordering the workflow phases',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.workflowReorderMode = false;\n }\n });\n } else {\n if ($rootScope.workflowReorderModeToast) {\n toastr.clear($rootScope.workflowReorderModeToast);\n delete $rootScope.workflowReorderModeToast;\n }\n }\n\n $rootScope.workflowReorderMode = !$rootScope.workflowReorderMode;\n }\n\n vm.activateEditPhaseHeaderCopy = function (phaseIndex) {\n if (!vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride &&\n !vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlTemplateId) {\n vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride = 'Please complete the information below';\n vm.workflowData.Phases[phaseIndex].OriginalHeaderCopyHtmlOverride = null;\n vm.workflowData.Phases[phaseIndex].isEditingHeaderCopy = true;\n }\n else if (vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride) {\n vm.workflowData.Phases[phaseIndex].OriginalHeaderCopyHtmlOverride =\n vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride;\n vm.workflowData.Phases[phaseIndex].isEditingHeaderCopy = true;\n }\n else {\n workflowConfigurationDataService.loadHtmlTemplate(\n vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlTemplateId).then(function (data) {\n vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride = data.Html;\n vm.workflowData.Phases[phaseIndex].OriginalHeaderCopyHtmlOverride = data.Html;\n vm.workflowData.Phases[phaseIndex].isEditingHeaderCopy = true;\n });\n }\n }\n\n vm.closeEditPhaseHeaderCopy = function (phaseIndex, save) {\n vm.workflowData.Phases[phaseIndex].isEditingHeaderCopy = false;\n if (!save) {\n vm.workflowData.Phases[phaseIndex].HeaderCopyHtmlOverride =\n vm.workflowData.Phases[phaseIndex].OriginalHeaderCopyHtmlOverride;\n }\n else {\n workflowStateService.update(vm.workflowData);\n }\n\n $rootScope.$emit('roadmapHtmlTemplateLoaded',\n {\n triggerMatchData: vm.workflowData.Phases[phaseIndex]\n .HeaderCopyHtmlTemplateId\n });\n }\n\n vm.reorderPhases = function (phaseIndex) {\n vm.workflowData.Phases.splice(phaseIndex, 1);\n workflowStateService.update(vm.workflowData);\n }\n\n vm.activateAddPhase = function () {\n vm.isAddingPhase = true;\n }\n\n vm.addPhaseData = {\n PhaseTitle: ''\n };\n\n vm.resetAddPhase = function() {\n vm.isAddingPhase = false;\n vm.addPhaseData.PhaseTitle = ''\n }\n\n vm.addPhase = function () {\n workflowStateService.addPhase(vm.addPhaseData.PhaseTitle);\n vm.workflowData.Phases.push({\n Title: vm.addPhaseData.PhaseTitle,\n Prompt: vm.addPhaseData.PhaseTitle,\n Status: 'Pending',\n RequiredDownloads: [],\n InformationParts: [],\n PercentageComplete: 0,\n EntitySearchIndex: vm.workflowData.EntitySearchIndex,\n AdminEntitySearchIndex: vm.workflowData.AdminEntitySearchIndex\n });\n vm.resetAddPhase();\n }\n\n vm.removePhase = function (index) {\n workflowStateService.removePhase(index);\n }\n\n vm.updatePrompt = function () {\n // This trick makes sure the model is updated before we actually send the update\n $timeout(function () {\n workflowStateService.update(vm.workflowData);\n }, 0);\n }\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n $timeout(function () {\n $rootScope.$emit('jumpToComment', { path: toParams.path });\n });\n });\n }\n\n workflowRoadmapController.$inject = ['$scope', '$rootScope', '$document',\n '$uibModal', '$timeout', 'milestones', 'sessionData', 'roadmapThumbnails',\n 'workflowStateService', 'workflowConfigurationDataService', 'toastr', 'notifyService', 'milestoneModalService', '$pbService'];\n\n angular.module('ecap.workflow').controller('workflowRoadmapController', workflowRoadmapController);\n})();\n","(function () {\n 'use strict';\n\n function workflowSharingController($scope, $state, $timeout, sessionData, milestones,\n workflowStateService, milestoneModalService, notifyService, mailRequestDataService) {\n var vm = this;\n\n vm.workflowData = {};\n vm.sessionData = sessionData;\n updateWorkflowData();\n\n vm.flippedOwnerPermissions = {\n AdminConfigModifyingOnly: !vm.workflowData.AdminConfigModifyingOnly,\n AdminSharingOnly: !vm.workflowData.AdminSharingOnly,\n AdminUnderwritingNotesOnly: !vm.workflowData.AdminUnderwritingNotesOnly\n }\n\n vm.canEditOwnerPermissions = vm.workflowData.AccessLevel === 'ProjectAdmin';\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n function updateSharingConnectionsStatus() {\n vm.hasSharingConnections = vm.workflowData.SharingConnections.some(function (connection) {\n return connection.IsVisible;\n });\n }\n\n function updateWorkflowData() {\n vm.workflowData = workflowStateService.get();\n updateSharingConnectionsStatus();\n vm.workflowData.SharingConnections.forEach(function(connection) {\n connection.IsSharedAtProjectLevel = connection.PathAndPermissionMappings.some(function(mapping) {\n return mapping.path === '';\n });\n });\n\n vm.canShareAtProjectLevel = vm.workflowData.AccessLevel !== 'SharingPartner';\n vm.canRemoveSharingLevel = vm.workflowData.AccessLevel !== 'SharingPartner';\n vm.canTogglePrivatePartnerConnection = sessionData.EntityType === \"Site Administrator\" ||\n sessionData.EntityType === \"Portal Administrator\";\n }\n\n $scope.$on('workflowUpdated', function () {\n updateWorkflowData();\n });\n\n vm.canEditPermission = function(permission) {\n if (!vm.workflowData) {\n return false;\n }\n\n if (vm.workflowData.AccessLevel === 'SharingPartner') {\n return false;\n }\n\n if (permission === 'View' || permission === 'ShowPartners') {\n return false;\n }\n\n if (vm.workflowData.AccessLevel === 'ProjectAdmin') {\n return true;\n }\n\n if (vm.workflowData.AccessLevel === 'ProjectOwner') {\n switch (permission) {\n case \"Edit\":\n return !vm.workflowData.AdminConfigModifyingOnly;\n case \"Share\":\n return !vm.workflowData.AdminSharingOnly;\n case \"Notes\":\n return !vm.workflowData.AdminUnderwritingNotesOnly;\n }\n }\n\n return false;\n }\n\n vm.removeSharingConnection = function(entityId, path) {\n var entityConnection = vm.workflowData.SharingConnections.find(function(connection) {\n return connection.EntityId === entityId;\n });\n\n var index = entityConnection.PathsAndPermissions.map(function (pathAndPermission) { return pathAndPermission.Path; }).indexOf(path);\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n entityConnection.PathsAndPermissions.splice(index, 1);\n\n if (entityConnection.PathAndPermissionMappings.length === 0) {\n vm.workflowData.SharingConnections.splice(\n vm.workflowData.SharingConnections.indexOf(entityConnection), 1);\n }\n\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You unshared ' + cleanPath + ' with ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName);\n\n updateSharingConnectionsStatus();\n }\n\n vm.toggleSharingPermission = function (entityId, path, permission) {\n $timeout(function() {\n var entityConnection = vm.workflowData.SharingConnections.find(function(connection) {\n return connection.EntityId === entityId;\n });\n\n if (!entityConnection) {\n throw new Error('Could not find entity to toggle permission');\n }\n\n var index = entityConnection.PathsAndPermissions\n .map(function(pathAndPermission) { return pathAndPermission.Path; }).indexOf(path);\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n\n entityConnection.PathsAndPermissions[index].Permissions[permission] =\n !entityConnection.PathsAndPermissions[index].Permissions[permission];\n\n var projectLevelChanges = false;\n if (path === \"\") {\n projectLevelChanges = entityConnection.PathsAndPermissions.some(function(pathAndPermission) {\n return pathAndPermission.Path !== \"\";\n });\n\n entityConnection.PathsAndPermissions.forEach(function(pathAndPermission) {\n pathAndPermission.Permissions[permission] =\n entityConnection.PathsAndPermissions[index].Permissions[permission];\n });\n }\n\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You changed sharing permissions for ' +\n cleanPath +\n ' for ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName + \n (projectLevelChanges\n ? '. Please note, that other permissions have been changed since you made a change at the project level.'\n : ''));\n }, 0);\n }\n\n vm.shareAtProjectLevel = function(entityId) {\n var entityConnection = vm.workflowData.SharingConnections.find(function (connection) {\n return connection.EntityId === entityId;\n });\n\n var permissions = {\n View: true,\n Edit: false,\n Share: false,\n Notes: false\n };\n\n entityConnection.PathsAndPermissions.push({\n Path: \"\",\n Permissions: angular.copy(permissions)\n });\n\n entityConnection.PathsAndPermissions.forEach(function (pathAndPermission) {\n pathAndPermission.Permissions = angular.copy(permissions);\n });\n\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You shared the project with ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName + \n '. Please note, that other permissions have been changed since shared at the project level.');\n\n mailRequestDataService.sendWorkflowSharingUpdate({\n EntityId: vm.workflowData.EntityId,\n SharedWithEntityId: entityId,\n WorkflowId: vm.workflowData.Id\n });\n }\n\n vm.toggleOwnerPermission = function (permission) {\n $timeout(function() {\n vm.workflowData[permission] = !vm.flippedOwnerPermissions[flippedOwnerPermissions];\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You modified a project owner permission');\n }, 0);\n }\n\n vm.togglePrivatePartnerConnection = function (entityId, path) {\n var entityConnection = vm.workflowData.SharingConnections.find(function (connection) {\n return connection.EntityId === entityId;\n });\n\n var connectionPathAndPermissions = entityConnection.PathsAndPermissions.find(function(pathAndPermissions) {\n return path === pathAndPermissions.Path;\n });\n\n var index = entityConnection.PathsAndPermissions.map(function (pathAndPermission) { return pathAndPermission.Path; }).indexOf(path);\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n\n connectionPathAndPermissions.IsPrivate = !connectionPathAndPermissions.IsPrivate;\n\n var projectLevelChanges = false;\n if (path === \"\") {\n projectLevelChanges = entityConnection.PathsAndPermissions.some(function (pathAndPermission) {\n return pathAndPermission.Path !== \"\";\n });\n\n entityConnection.PathsAndPermissions.forEach(function (pathAndPermission) {\n pathAndPermission.IsPrivate = entityConnection.PathsAndPermissions[index].IsPrivate;\n });\n }\n\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You changed the sharing visibility for ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName +\n ' to ' + (entityConnection.IsPrivate ? ' hidden' : 'visible') + ' for ' + cleanPath + '.' +\n (projectLevelChanges ? 'Please note, that other sharing visibilities have been changed since you made a change at the project level.' : ''));\n\n updateSharingConnectionsStatus();\n }\n }\n\n workflowSharingController.$inject = ['$scope', '$state', '$timeout', 'sessionData', 'milestones',\n 'workflowStateService', 'milestoneModalService', 'notifyService', 'mailRequestDataService'];\n\n angular.module('ecap.workflow').controller('workflowSharingController', workflowSharingController);\n})();\n","(function () {\n 'use strict';\n\n function workflowSharingSearchController($scope, $rootScope, $timeout, $filter, $state, sessionData, milestones,\n workflowStateService, milestoneModalService, notifyService, entitySearchConfiguration, mailRequestDataService) {\n var vm = this;\n vm.path = $rootScope.$state.params.path;\n vm.workflowId = $rootScope.$state.params.workflowId;\n vm.returnToPhaseIndex = parseInt($rootScope.$state.params.phaseIndex, 10);\n vm.returnToState = $rootScope.$state.params.phaseIndex ? 'workflow.phase'\n : vm.path.indexOf('InternalContent') !== -1 ? 'workflow.internalfiles' : 'workflow';\n vm.config = entitySearchConfiguration;\n vm.results = [];\n vm.showResults = false;\n vm.attributes = {};\n vm.workflow = workflowStateService.get();\n vm.isAdmin = sessionData.IsAdminEntity;\n vm.sessionData = sessionData;\n vm.pageIndex = 0;\n vm.pageSize = 5;\n if (entitySearchConfiguration && entitySearchConfiguration.DefaultPageSize) {\n vm.pageSize = entitySearchConfiguration.DefaultPageSize;\n };\n\n vm.totalItems = 0;\n vm.currentPartners = workflowStateService.getPartners(vm.path);\n vm.selectedEntityIds = [];\n vm.searchControlId = 'workflowSharingSearch';\n vm.sessionData = sessionData;\n vm.isPortalAdmin = vm.sessionData.EntityType === 'Portal Administrator';\n\n vm.isSearchHidden = false;\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n if (!entitySearchConfiguration) {\n milestonesAndTemplates = milestonesAndTemplates.filter(function(milestoneAndTemplate) {\n return milestoneAndTemplate.milestoneName !== 'PartnerSearchWizard';\n });\n }\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.toggleSearchVisibility = function (referralSent) {\n vm.isSearchHidden = !vm.isSearchHidden;\n var stateName;\n var stateObject;\n if (referralSent) {\n switch (vm.returnToState) {\n case ('workflow'):\n stateName = 'workflow.navigator';\n stateObject = { workflowId: vm.workflowId }\n break;\n case ('workflow.phase'):\n stateName = 'workflow.navigator.phase';\n stateObject = {\n workflowId: vm.workflowId,\n phaseIndex: vm.returnToPhaseIndex\n };\n break;\n case ('workflow.internalfiles'):\n stateName = 'workflow.internalfiles';\n stateObject = { workflowId: vm.workflowId };\n break;\n }\n }\n\n if (stateName && stateObject) {\n $state.go(stateName, stateObject);\n }\n }\n\n vm.referralData = {\n platformId: vm.workflow.Entity.PlatformId,\n siteConfigurationId: vm.workflow.Entity.SiteConfigurationId,\n referrerEntityId: vm.sessionData.EntityId,\n objectType: 'Workflow',\n objectId: vm.workflow.Id,\n objectReferralPath: vm.path,\n objectReferralMessage: 'You were invited to share ' +\n (vm.path === ''\n ? ('the project ' + vm.workflow.Name)\n : (workflowStateService.getCleanPath(vm.path) + ' of the project ' + vm.workflow.Name))\n }\n\n vm.hasAdminEntitySearch = sessionData.IsAdminEntity && $rootScope.$state.params.adminEntitySearchIndex;\n vm.adminEntitySearchIndex = $rootScope.$state.params.adminEntitySearchIndex;\n vm.entitySearchIndex = $rootScope.$state.params.entitySearchIndex;\n vm.hideReferralButton = true;\n\n vm.mode = 'workflow-sharing-search-mode-invite';\n if (vm.config) {\n vm.mode += '-sharing';\n }\n if (vm.hasAdminEntitySearch) {\n vm.mode += '-adminsharing';\n }\n\n vm.additionalQueryString = \"workflowId=\" + vm.workflow.Id.split('/')[1];\n if (vm.currentPartners.length !== 0) {\n vm.additionalQueryString += \"&excludeEntityIds=\" + vm.currentPartners.map(function(partner) { return encodeURIComponent(partner.Id); }).join(',');\n }\n\n vm.toggleSharingConnection = function (partner) {\n var matchingPartner = vm.workflow.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n\n var addedConnection = false;\n if (matchingPartner) {\n if (matchingPartner.PathsAndPermissions.find(function(pathAndPermissions) {\n return pathAndPermissions.Path === vm.path;\n })) {\n matchingPartner.PathsAndPermissions = matchingPartner.PathsAndPermissions.filter(function (pathAndPermissions) {\n return pathAndPermissions.Path !== vm.path;\n });\n partner.isSelected = false;\n notifyService.notify('You unshared ' + workflowStateService.getCleanPath(vm.path) + ' with ' + matchingPartner.Entity.CompanyDetails.Name);\n }\n else {\n matchingPartner.PathsAndPermissions.push({\n Path: vm.path,\n Permissions: {\n View: true,\n Edit: false,\n Share: false,\n Notes: false\n }\n });\n partner.isSelected = true;\n notifyService.notify('You shared ' + workflowStateService.getCleanPath(vm.path) + ' with ' + matchingPartner.Entity.CompanyDetails.Name);\n addedConnection = true;\n }\n } else {\n vm.workflow.SharingConnections.push({\n EntityId: partner.Id,\n PathsAndPermissions: [\n {\n Path: vm.path,\n Permissions: {\n View: true,\n Edit: false,\n Share: false,\n Notes: false\n }\n }],\n Entity: partner\n });\n partner.isSelected = true;\n notifyService.notify('You shared ' + workflowStateService.getCleanPath(vm.path) + ' with ' + partner.CompanyDetails.Name);\n addedConnection = true;\n }\n\n // update sharing partners for path\n updatePartners(vm.workflow, vm.path, partner);\n workflowStateService.update(vm.workflow);\n\n if (addedConnection) {\n mailRequestDataService.sendWorkflowSharingUpdate({\n EntityId: vm.workflow.Entity.Id,\n SharedWithEntityId: partner.Id,\n WorkflowId: vm.workflow.Id\n });\n }\n\n var toggledEntityIdIndex = vm.selectedEntityIds.indexOf(partner.Id);\n if (toggledEntityIdIndex === -1) {\n vm.selectedEntityIds.push(partner.Id);\n }\n else {\n vm.selectedEntityIds.splice(toggledEntityIdIndex,1);\n }\n }\n\n vm.requestIntroduction = function (partner) {\n mailRequestDataService.sendConnectionRequest({\n RequesterEntityId: vm.workflow.Entity.Id,\n RequesteeEntityId: partner.Id\n });\n notifyService.notify('You requested an introduction with ' + partner.CompanyDetails.Name);\n }\n\n vm.actions = {\n togglePartnerIntroduction: {\n label: \"Connect\",\n call: vm.requestIntroduction\n },\n toggleSharingConnection: {\n label: \"Share\",\n call: vm.toggleSharingConnection,\n cssClass: \"md-primary\"\n }\n }\n\n vm.pageSizes = [5, 10, 15, 20, 25];\n\n vm.changePageIndex = function () {\n $rootScope.$emit('pageIndexChanged', { searchControlId: vm.searchControlId, pageIndex: vm.pageIndex });\n }\n\n vm.changePageSize = function () {\n vm.pageIndex = 0;\n $rootScope.$emit('pageSizeChanged', { searchControlId: vm.searchControlId, pageSize: vm.pageSize, pageIndex: vm.pageIndex });\n }\n\n function updatePartners(obj, path, partner) {\n var k;\n var has = Object.prototype.hasOwnProperty.bind(obj);\n for (k in obj) if (has(k)) {\n switch (typeof obj[k]) {\n case \"object\":\n if (obj[k] != null && obj[k][\"Path\"]) {\n if (obj[k][\"Path\"] === path) {\n if (!obj[k][\"Partners\"]) {\n obj[k][\"Partners\"] = [];\n }\n obj[k][\"Partners\"].push(partner);\n }\n }\n else {\n updatePartners(obj[k], path, partner);\n }\n break;\n }\n }\n };\n\n vm.activateReferral = function() {\n $rootScope.$emit('platformEntityReferralGeneratorActivated');\n };\n\n $rootScope.$on('searchResultsChanged', function(event, args) {\n if (args.searchControlId === vm.searchControlId) {\n vm.results = args.results;\n vm.totalItems = args.totalItems;\n vm.results = vm.results.map(function (item) {\n item.isSelected = vm.selectedEntityIds.indexOf(item.Id) !== -1;\n return item;\n });\n }\n });\n }\n\n workflowSharingSearchController.$inject = ['$scope', '$rootScope', '$timeout', '$filter', '$state', 'sessionData', 'milestones',\n 'workflowStateService', 'milestoneModalService', 'notifyService', 'entitySearchConfiguration', 'mailRequestDataService'];\n\n angular.module('ecap.workflow').controller('workflowSharingSearchController', workflowSharingSearchController);\n})();\n","(function () {\n 'use strict';\n\n function workflowSummaryController($scope, $rootScope, $window, $uibModal, $timeout,\n notifyService, workflowStateService, sessionData, milestones, milestoneModalService) {\n\n var vm = this;\n vm.workflowData = workflowStateService.get();\n vm.workflowId = vm.workflowData.Id.split('/')[1];\n vm.accessingEntityId = sessionData.EntityId;\n vm.adminMode = sessionData.IsAdminEntity;\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.hasAdminStatuses = vm.workflowData.AdminAttributes.some(function (attribute) {\n return attribute.$type === 'Ecap.Api.ViewModels.StatusSearchFieldViewModel, Ecap.Api';\n });\n\n vm.attributeOptions = {\n hasStatuses : vm.workflowData.Attributes.some(function(attribute) {\n return attribute.$type === 'Ecap.Api.ViewModels.StatusSearchFieldViewModel, Ecap.Api';\n }),\n hasAttributes : vm.workflowData.Attributes.some(function(attribute) {\n return attribute.$type !== 'Ecap.Api.ViewModels.StatusSearchFieldViewModel, Ecap.Api';\n }),\n hasAdminStatuses : vm.workflowData.AdminAttributes.some(function(attribute) {\n return attribute.$type === 'Ecap.Api.ViewModels.StatusSearchFieldViewModel, Ecap.Api';\n }),\n hasAdminAttributes : vm.workflowData.AdminAttributes.some(function(attribute) {\n return attribute.$type !== 'Ecap.Api.ViewModels.StatusSearchFieldViewModel, Ecap.Api';\n })\n }\n\n vm.workflowData.Attributes.forEach(function (attribute) {\n attribute.Mode = 'Editor';\n });\n\n vm.workflowData.AdminAttributes.forEach(function (attribute) {\n attribute.Mode = vm.adminMode ? 'Editor' : 'Display';\n });\n\n vm.updateField = function (fieldName) {\n workflowStateService.update(vm.workflowData);\n notifyService.notify('You updated ' + fieldName + ' for the project');\n };\n\n vm.redirectToEntityViewer = function () {\n $timeout(function() {\n $window.location = '/crm/accounts/details/' + vm.workflowData.Entity.Id.toLowerCase();\n }, 2000);\n }\n\n vm.entityActions = sessionData.IsAdminEntity ?\n {\n view: {\n label: \"View Profile\",\n call: vm.redirectToEntityViewer\n }\n }\n : null;\n\n vm.openDeleteAlert = function (state) {\n var modalInstance = $uibModal.open({\n templateUrl: 'deleteWorkflowModal',\n controller: 'deleteWorkflowModalController',\n resolve: {\n workflowId: function() {\n return vm.workflowData.Id;\n }\n }\n });\n\n return modalInstance.result.then(function(wasDeleted) {\n if (wasDeleted) {\n $window.location = '/dashboard';\n }\n });\n }\n }\n\n workflowSummaryController.$inject = ['$scope', '$rootScope', '$window', '$uibModal', '$timeout',\n 'notifyService', 'workflowStateService', 'sessionData', 'milestones', 'milestoneModalService'];\n\nangular.module('ecap.workflow').controller('workflowSummaryController', workflowSummaryController);\n})();\n","(function () {\n 'use strict';\n\n function addPhase(workflowStateService, notifyService) {\n return {\n require: '^form',\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/addPhase.html',\n scope: {\n isActive: '='\n },\n link: function (scope, element, attrs, formController) {\n scope.formData = formController;\n scope.titleAndPromptModel = {\n Value: ''\n };\n scope.siblingNames = workflowStateService.get().Phases\n .filter(function(phase) { return !phase.IsRemoved; })\n .map(function(phase) { return phase.Title; });\n\n scope.addPhase = function () {\n // TODO: find out why ng-model isnt working in this case\n var titleAndPrompt = scope.titleAndPromptModel.Value;\n workflowStateService.addPhase(titleAndPrompt);\n notifyService.notify('You added the phase ' + titleAndPrompt); \n scope.close();\n }\n\n scope.close = function() {\n scope.titleAndPromptModel.Value = '';\n scope.addPhaseForm.$setPristine();\n scope.addPhaseForm.$setUntouched();\n }\n }\n };\n }\n\n addPhase.$inject = ['workflowStateService', 'notifyService'];\n\n angular.module('ecap.workflow').directive('addPhase', addPhase);\n})();\n\n","(function () {\n 'use strict';\n\n function addRequiredDownload(workflowStateService, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/addRequiredDownload.html',\n scope: {\n phaseIndex: '=',\n isActive: '='\n },\n link: function (scope, element, attrs) {\n scope.model = {\n titleAndPrompt: ''\n }\n scope.allowMultipleFiles = false;\n scope.uploadContext = {\n isRequiredDownloadCollection: true\n };\n\n scope.siblingNames = workflowStateService.get().Phases[scope.phaseIndex].RequiredDownloads\n .filter(function (download) { return !download.IsRemoved; })\n .map(function (download) { return download.Title; });\n\n scope.$on('fileUploaded', function(event, args) {\n if (args.parent.isRequiredDownloadCollection) {\n scope.stagedUpload = args.blobs[0];\n }\n\n scope.addRequiredDownload();\n });\n\n scope.removeStagedUpload = function() {\n scope.stagedUpload = undefined;\n }\n\n scope.addRequiredDownload = function () {\n var titleAndPrompt = scope.model.titleAndPrompt;\n\n workflowStateService.addRequiredDownloadToPhase(scope.phaseIndex, {\n Title: titleAndPrompt,\n Prompt: titleAndPrompt,\n BlobSummary: scope.stagedUpload\n });\n scope.close();\n $rootScope.$emit('requiredDownloadAdded');\n }\n\n scope.close = function() {\n scope.isActive = !scope.isActive;\n scope.model.titleAndPrompt = '';\n scope.stagedUpload = undefined;\n }\n }\n };\n }\n\n addRequiredDownload.$inject = ['workflowStateService', '$rootScope'];\n\n angular.module('ecap.workflow').directive('addRequiredDownload', addRequiredDownload);\n})();\n\n","(function () {\n 'use strict';\n\n function addUnderwritingNote(workflowStateService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/addUnderwritingNote.html',\n scope: {\n path: '=',\n onAdd: '&',\n sessionEntity: '=?',\n parentCollection: '='\n },\n link: function (scope, element, attrs) {\n scope.newNote = {};\n\n scope.addNote = function (form) {\n var newNote = {\n NoteId: uuid.v4(),\n Note: scope.newNote.text,\n Path: scope.path,\n UpdatedDate: (new Date()).toISOString()\n };\n workflowStateService.saveUnderwritingNote(newNote);\n scope.parentCollection.push(newNote);\n form.$setPristine();\n scope.newNote = {};\n };\n }\n };\n }\n\n addUnderwritingNote.$inject = ['workflowStateService'];\n\n angular.module('ecap.workflow').directive('addUnderwritingNote', addUnderwritingNote);\n})();\n\n","(function () {\n 'use strict';\n\n function addWorkflowInformationPart() {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/addWorkflowInformationPart.html',\n scope: {\n informationParts: '=',\n informationPartType: '@',\n isActive: '=',\n addInformationPart: '&',\n stateUpdatedEventName: '@'\n },\n link: function (scope, element, attrs) {\n scope.model = {\n titleAndPrompt: ''\n };\n\n function updateSiblingNames() {\n scope.siblingNames = scope.informationParts.filter(function (part) { return !part.IsRemoved; })\n .map(function (part) { return part.Title; });\n }\n\n updateSiblingNames();\n\n $(element).find('input').on('blur', function () {\n scope.addPhaseInformationPartForm.$setUntouched();\n });\n\n scope.placeholder = scope.informationPartType == 'Document' ? 'Add Document' : 'Add Question Set';\n scope.addDocument = function () {\n var titleAndPrompt = scope.model.titleAndPrompt;\n\n scope.addInformationPart({\n informationPart: {\n $type:\n \"Ecap.Api.ViewModels.DocumentViewModel, Ecap.Api\",\n Title: titleAndPrompt,\n Prompt: titleAndPrompt,\n BlobSummaries: []\n }\n });\n scope.close();\n }\n\n scope.addQuestionSet = function () {\n var titleAndPrompt = scope.model.titleAndPrompt;\n scope.addInformationPart({\n informationPart: {\n $type:\n \"Ecap.Api.ViewModels.QuestionSetViewModel, Ecap.Api\",\n Title: titleAndPrompt,\n Prompt: titleAndPrompt,\n Questions: []\n }\n });\n scope.close();\n }\n\n scope.close = function () {\n scope.isActive = !scope.isActive;\n scope.model.titleAndPrompt = '';\n }\n\n scope.modelChange = function () {\n if (scope.model.titleAndPrompt.length === 0) {\n scope.addPhaseInformationPartForm.$setUntouched();\n }\n }\n\n scope.$on(scope.stateUpdatedEventName, function () {\n updateSiblingNames();\n });\n }\n };\n }\n\n addWorkflowInformationPart.$inject = ['workflowStateService'];\n\n angular.module('ecap.workflow').directive('addWorkflowInformationPart', addWorkflowInformationPart);\n})();\n\n","(function () {\n 'use strict';\n\n function commentEditor(workflowStateService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/commentEditor.html',\n scope: {\n placeholder: '@',\n path: '@',\n savePrompt: '@',\n editCommentModel: '=',\n editComment: '&',\n cancelEditComment: '&',\n partners: '='\n },\n link: function (scope, element, attrs) {\n scope.originalPartners = scope.partners || workflowStateService.getPartnersForPath(scope.path).filter(function (p) {\n return p.Access.View && !p.IsPrivate;\n });\n scope.filteredPartners = scope.originalPartners;\n scope.partnerSearchText = \"\";\n\n scope.saveAction = function () {\n scope.editCommentModel.targetUsers = getTargetUsers(scope.editCommentModel.saveCommentText);\n scope.editComment();\n }\n\n function getTargetUsers(text) {\n var targetUsers = {};\n var regex = /\\b\\+?\\w+[\\.-]?\\w+@\\w+[\\.-]?\\w+\\.\\w{2,3}/mg;\n var str = text;\n var m;\n while ((m = regex.exec(str)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match) {\n if (match) {\n var matchPartner = scope.originalPartners.find(function (p) { return p.UserName === match; });\n if (matchPartner) {\n targetUsers[match] = matchPartner.Id;\n }\n }\n });\n }\n\n return targetUsers;\n }\n\n scope.cancelAction = function () {\n scope.cancelEditComment();\n }\n\n scope.keyUp = function(event) {\n if (scope.path.indexOf('InternalContent') > -1) {\n return;\n }\n\n var eventElem = $(event.target)[0];\n // if (Math.ceil(eventElem.value.length / 40) > $(eventElem).attr('rows')) {\n // $(eventElem).attr('rows', Math.ceil(eventElem.value.length / 40));\n // }\n\n var caret = getCaretPosition(eventElem);\n var result = /\\S+$/.exec(eventElem.value.slice(0, caret.end));\n var lastWord = result ? result[0] : null;\n\n if (lastWord && lastWord[0] === '@') {\n scope.showDropdown = true;\n } else {\n scope.showDropdown = false;\n }\n\n if (scope.showDropdown) {\n //scope.partnerSearchText += mapKeyPressToActualCharacter(event.shiftKey, event.keyCode) || '';\n scope.partnerSearchText = lastWord;\n } else {\n scope.partnerSearchText = \"\";\n }\n\n if (lastWord) {\n scope.filteredPartners = scope.originalPartners.filter(function (p) {\n var comparisonValue = lastWord.slice(1, lastWord.length - 1);\n var name = p.Contact.FirstName + p.Contact.LastName;\n return name.indexOf(comparisonValue) > -1 || p.UserName.indexOf(comparisonValue) > -1;\n })\n }\n };\n\n function getCaretPosition(ctrl) {\n var start, end;\n if (ctrl.setSelectionRange) {\n start = ctrl.selectionStart;\n end = ctrl.selectionEnd;\n } else if (document.selection && document.selection.createRange) {\n var range = document.selection.createRange();\n start = 0 - range.duplicate().moveStart('character', -100000);\n end = start + range.text.length;\n }\n return {\n start: start,\n end: end\n }\n }\n\n scope.selectPartner = function (partner) {\n console.log(partner);\n console.log(scope.partnerSearchText);\n scope.editCommentModel.saveCommentText = scope.editCommentModel.saveCommentText.replace(scope.partnerSearchText, '+' + partner.UserName);\n scope.showDropdown = false;\n $(element).find('textarea').focus();\n scope.filteredPartners = scope.originalPartners;\n }\n\n function mapKeyPressToActualCharacter(isShiftKey, characterCode) {\n if ( characterCode === 27 || characterCode === 8 || characterCode === 9 || characterCode === 20 || characterCode === 16 || characterCode === 17 || characterCode === 91 || characterCode === 13 || characterCode === 92 || characterCode === 18 ) {\n return false;\n }\n if (typeof isShiftKey != \"boolean\" || typeof characterCode != \"number\") {\n return false;\n }\n var characterMap = [];\n characterMap[192] = \"~\";\n characterMap[49] = \"!\";\n characterMap[50] = \"@\";\n characterMap[51] = \"#\";\n characterMap[52] = \"$\";\n characterMap[53] = \"%\";\n characterMap[54] = \"^\";\n characterMap[55] = \"&\";\n characterMap[56] = \"*\";\n characterMap[57] = \"(\";\n characterMap[48] = \")\";\n characterMap[109] = \"_\";\n characterMap[107] = \"+\";\n characterMap[219] = \"{\";\n characterMap[221] = \"}\";\n characterMap[220] = \"|\";\n characterMap[59] = \":\";\n characterMap[222] = \"\\\"\";\n characterMap[188] = \"<\";\n characterMap[190] = \">\";\n characterMap[191] = \"?\";\n characterMap[32] = \" \";\n var character = \"\";\n if (isShiftKey) {\n if ( characterCode >= 65 && characterCode <= 90 ) {\n character = String.fromCharCode(characterCode);\n } else {\n character = characterMap[characterCode];\n }\n } else {\n if ( characterCode >= 65 && characterCode <= 90 ) {\n character = String.fromCharCode(characterCode).toLowerCase();\n } else {\n character = String.fromCharCode(characterCode);\n }\n }\n return character;\n }\n }\n };\n }\n\n commentEditor.$inject = ['workflowStateService'];\n\n angular.module('ecap.workflow').directive('commentEditor', commentEditor);\n})();\n\n","(function () {\n 'use strict';\n\n function commentsMenu(workflowStateService, sessionDataService, notifyService, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/commentsMenu.html',\n scope: {\n path: '=',\n comments: '='\n },\n link: function (scope, element, attrs) {\n sessionDataService.loadSession().then(function (session) {\n scope.sessionData = session;\n\n scope.comments.forEach(function (comment) {\n if (!comment.IsDeleted && !comment.IsResolved && (scope.sessionData.EntityId === comment.CreatedByEntityId) &&\n !scope.comments.some(function (outerComments) { return outerComments.CanResolve && !outerComments.IsDeleted; })) {\n comment.CanResolve = true;\n }\n });\n })\n\n\n scope.comments.forEach(function (comment) {\n comment.mode = 'display';\n });\n\n scope.deleteComment = function (comment) {\n workflowStateService.removeUnderwritingNote(comment.NoteId);\n var matchingComment = scope.comments.find(function (matchingComment) {\n return matchingComment.NoteId === comment.NoteId;\n });\n if (matchingComment) {\n matchingComment.IsDeleted = true;\n }\n comment.IsDeleted = true;\n $rootScope.$broadcast(\"noteRemoved\", comment.Path);\n }\n\n scope.editComment = function (comment) {\n comment.mode = 'edit';\n comment.originalNoteText = comment.Note;\n scope.saveCommentObject.saveCommentText = comment.Note;\n scope.saveCommentObject.originalComment = comment;\n }\n\n function getTargetUsers(text, originalPartners) {\n var targetUsers = {};\n var regex = /\\b\\+?\\w+[\\.-]?\\w+@\\w+[\\.-]?\\w+\\.\\w{2,3}/mg;\n var str = text;\n var m;\n while ((m = regex.exec(str)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n // The result can be accessed through the `m`-variable.\n m.forEach(function (match) {\n if (match) {\n targetUsers[match] = originalPartners.find(function (p) { return p.UserName === match; }).Id;\n }\n });\n }\n\n return targetUsers;\n }\n\n // Add Comment\n scope.addCommentObject = {\n saveCommentText: ''\n }\n\n function resetAddCommentState() {\n scope.addCommentObject.saveCommentText = '';\n }\n\n scope.addComment = function () {\n var addCommentObjCopy = Object.assign({}, scope.addCommentObject);\n var targetUsers = {};\n\n var targetUsers = getTargetUsers(addCommentObjCopy.saveCommentText, scope.originalPartners);\n\n var comment = {\n Note: addCommentObjCopy.saveCommentText,\n CreatedByEntityId: scope.sessionData.EntityId,\n CreatedByUserName: scope.sessionData.UserName,\n CreatedByEntity: scope.sessionData.Entity,\n NoteId: uuid.v4(),\n Path: scope.path,\n mode: 'display',\n TargetUsers: targetUsers,\n CanResolve: !scope.comments.some(function (outerComments) {\n return outerComments.CanResolve && !outerComments.IsDeleted \n })\n }\n\n try {\n workflowStateService.saveUnderwritingNote(comment);\n comment.UpdatedDate = (new Date()).toISOString();\n scope.comments.push(comment);\n $rootScope.$broadcast(\"noteSaved\", comment.Path);\n resetAddCommentState()\n } catch(error) {\n notifyService.notify('There was an error saving your comment', true);\n }\n }\n\n scope.cancelAddComment = function () {\n resetAddCommentState();\n $rootScope.$emit('cancelledAddComment', {\n path: scope.path\n });\n }\n\n // Save comment\n scope.saveCommentObject = {\n saveCommentText: '',\n originalComment: null\n }\n\n function resetSaveCommentState(comment) {\n comment.mode = 'display';\n scope.saveCommentObject.saveCommentText = '';\n scope.saveCommentObject.originalComment = null;\n }\n\n scope.saveComment = function (comment) {\n comment.Note = scope.saveCommentObject.saveCommentText;\n\n try {\n workflowStateService.saveUnderwritingNote(comment);\n comment.UpdatedDate = (new Date()).toISOString();\n $rootScope.$broadcast(\"noteSaved\", comment.Path);\n resetSaveCommentState(comment);\n } catch(error) {\n notifyService.notify('There was an error saving your comment', true);\n }\n }\n\n scope.cancelSaveComment = function (comment) {\n if (!comment.UpdatedByUserName) {\n comment.IsDeleted = true;\n }\n else {\n comment.Note = comment.originalNoteText;\n }\n resetSaveCommentState(comment);\n }\n\n scope.resolveComment = function (comment) {\n try {\n comment.IsResolved = true;\n comment.UpdatedDate = (new Date()).toISOString();\n workflowStateService.resolveUnderwritingNote(comment);\n comment.CanResolve = false;\n $rootScope.$broadcast(\"noteResolved\", comment.Path);\n } catch(error) {\n console.log(error);\n comment.IsResolved = false;\n comment.CanResolve = true;\n notifyService.notify('There was an error resolving your comment', true);\n }\n }\n\n scope.originalPartners = workflowStateService.getPartnersForPath(scope.path).filter(function (p) {\n return p.Access.View && !p.IsPrivate;\n });\n }\n };\n }\n\n commentsMenu.$inject = ['workflowStateService', 'sessionDataService', 'notifyService', '$rootScope'];\n\n angular.module('ecap.workflow').directive('commentsMenu', commentsMenu);\n})();\n\n","(function () {\n 'use strict';\n\n function contractorProject() {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/contractorProject.html',\n link: function (scope) {\n\n }\n };\n }\n\n contractorProject.$inject = [];\n\n angular.module('ecap.workflow').directive('contractorProject', contractorProject);\n})();\n","(function () {\n 'use strict';\n\n function documentUploadGroup($compile, $http, workflowProcessingService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/documentUploadGroup.html',\n scope: {\n InformationPart: '=informationPart',\n user: '='\n },\n link: function (scope, element) {\n\n scope.adminMode = false;\n scope.$watch(function () {\n return workflowProcessingService.adminMode;\n }, function (newValue) {\n scope.adminMode = newValue;\n });\n }\n };\n }\n\n documentUploadGroup.$inject = ['$compile', '$http', 'workflowProcessingService'];\n\n angular.module('ecap.workflow').directive('documentUploadGroup', documentUploadGroup);\n})();\n","(function () {\n 'use strict';\n\n function htmlTemplate($compile, $http, $rootScope, workflowConfigurationDataService) {\n return {\n restrict: 'E',\n template: '
',\n replace: true,\n scope: {\n referenceId: '='\n },\n link: function (scope, element) {\n if (!scope.referenceId) {\n element.addClass('hide');\n }\n else {\n workflowConfigurationDataService.loadHtmlTemplate(scope.referenceId)\n .then(function (response) {\n if (response.Html == null) {\n element.addClass('hide');\n }\n else {\n element.html(response.Html);\n $rootScope.$emit('htmlTemplateLoaded', { htmlTemplateId: scope.referenceId });\n }\n });\n }\n\n }\n };\n }\n\n htmlTemplate.$inject = ['$compile', '$http', '$rootScope', 'workflowConfigurationDataService'];\n\n angular.module('ecap.workflow').directive('htmlTemplate', htmlTemplate);\n})();\n","(function () {\n 'use strict';\n\n function linkedTemplateReference(workflowConfigurationDataService) {\n var baseUrl = '/files/';\n\n return {\n restrict: 'E',\n template: '',\n scope: {\n linkedTemplateId: '='\n },\n replace: true,\n link: function (scope, element) {\n element.attr('href', baseUrl + scope.linkedTemplateId);\n workflowConfigurationDataService.loadLinkedTemplate(scope.linkedTemplateId).then(function (response) {\n element.html(response.Title);\n });\n }\n };\n }\n\n linkedTemplateReference.$inject = ['workflowConfigurationDataService'];\n\n angular.module('ecap.workflow').directive('linkedTemplateReference', linkedTemplateReference);\n})();\n","(function () {\n 'use strict';\n\n function partnerFanOut($state, $mdDialog, $timeout) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/partnerFanOut.html',\n scope: {\n phaseIndex: '@',\n entitySearchIndex: '@',\n adminEntitySearchIndex: '@',\n path: '@',\n partners: '=',\n message: '@',\n canAddPartners: '=',\n maxPartnersToShow: '@?',\n showAddPartnersPrompt: '=?'\n },\n link: function (scope, element, attrs) {\n scope.maxPartnersToShow = parseInt(scope.maxPartnersToShow || 4, 10);\n\n $timeout(function () {\n scope.isLoaded = true;\n });\n\n scope.sharingState = '';\n scope.expandedPartners = scope.partners.slice(0, \n Math.min(scope.partners.length, scope.maxPartnersToShow));\n \n scope.additionalPartnerCount = scope.partners.length - \n scope.expandedPartners.length;\n\n scope.goToEntitySearch = function() {\n switch (scope.sharingState) {\n case ('workflow.sharingsearch.phase'):\n $state.go('workflow.sharingsearch.phase', {\n entitySearchIndex: scope.entitySearchIndex,\n path: scope.path,\n phaseIndex: scope.phaseIndex\n });\n break;\n case ('workflow.sharingsearch'):\n $state.go('workflow.sharingsearch', {\n entitySearchIndex: scope.entitySearchIndex,\n path: scope.path\n });\n break;\n case ('workflow.sharingsearch.internalfiles'):\n $state.go('workflow.sharingsearch.internalfiles', {\n entitySearchIndex: scope.entitySearchIndex,\n path: scope.path\n });\n break;\n }\n }\n\n if (Number.isNaN(parseInt(scope.phaseIndex))) {\n scope.sharingState = scope.path.indexOf('InternalContent') !== -1\n ? 'workflow.sharingsearch.internalfiles'\n : 'workflow.sharingsearch';\n }\n else if (parseInt(scope.phaseIndex) == -1) {\n scope.sharingState = 'workflow.sharingsearch';\n }\n else {\n scope.sharingState = 'workflow.sharingsearch.phase';\n }\n\n var originatorEv;\n scope.openPartnersMenu = function($mdOpenMenu, ev) {\n originatorEv = ev;\n $mdOpenMenu(ev);\n };\n }\n };\n }\n\n partnerFanOut.$inject = ['$state', '$mdDialog', '$timeout'];\n\n angular.module('ecap.workflow').directive('partnerFanOut', partnerFanOut);\n})();\n\n","(function () {\n 'use strict';\n\n function partnerSelector($state, $mdDialog, $timeout, $rootScope,\n searchDataService, workflowStateService, notifyService,\n mailRequestDataService, sessionDataService, platformEntityReferralDataService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/partnerSelector.html',\n scope: {\n phaseIndex: '@',\n path: '@',\n partners: '=',\n referrals: '=',\n canAddPartners: '=',\n maxPartnersToShow: '@?',\n showAddPartnersPrompt: '=?',\n popoverConfig: '='\n },\n link: function (scope, element, attrs) {\n // data initialization\n scope.workflowData = workflowStateService.get();\n scope.expandedPartners = scope.partners.filter(function () { return true; });\n scope.expandedPartners.forEach(function (p) {\n p.IconText = p.Contact.FirstName.substring(0,1) + p.Contact.LastName.substring(0,1);\n });\n\n scope.pathObject = workflowStateService.getObjectFromPath(scope.workflowData, scope.path);\n scope.pathAccess = scope.pathObject.Access;\n\n scope.expandedReferrals = scope.referrals.filter(function (referral) {\n return scope.expandedPartners.every(function (partner) {\n return partner.UserName !== referral.EmailAddress;\n });\n });\n\n scope.expandedReferrals.forEach(function (r) {\n if (!r.Data || !r.Data.Permissions) {\n r.Data = {\n Permissions: {\n View: true,\n Edit: true,\n Share: true,\n Notes: true\n }\n }\n }\n });\n\n scope.isSharingButtonActive = true;\n scope.totalPartnersCount = scope.expandedPartners.length + scope.expandedReferrals.length;\n\n if (scope.path === \"\") {\n scope.pathMarker = \"Project \";\n }\n\n scope.owner = scope.workflowData.Entity;\n scope.owner.IconText = scope.owner.Contact.FirstName.substring(0,1) + scope.owner.Contact.LastName.substring(0,1);\n scope.canEditOwnerPermissions = (scope.path == '') &&\n ((scope.workflowData.AccessLevel === 'ProjectAdmin') ||\n (scope.workflowData.AccessLevel === 'ProjectOwner'));\n scope.owner.Edit = !scope.workflowData.AdminConfigModifyingOnly;\n scope.owner.Share = !scope.workflowData.AdminSharingOnly;\n scope.owner.Notes = !scope.workflowData.AdminUnderwritingNotesOnly;\n sessionDataService.loadSession().then(function (sessionData) {\n scope.sessionData = sessionData;\n });\n\n scope.canManagePartnerPermissions = (scope.workflowData.AccessLevel === \"ProjectOwner\" && scope.owner.Share) ||\n scope.workflowData.AccessLevel === \"ProjectAdmin\";\n\n // visibility\n scope.showPartnersMenu = false;\n scope.togglePartnersMenu = function($event) {\n if (!scope.showPartnersMenu) {\n $event.preventDefault();\n $event.stopPropagation();\n scope.showPartnersMenu = true;\n }\n }\n\n $rootScope.$on('popoverOpened', function (event, args) {\n if (args.type === 'popoverOpened') {\n\n }\n });\n\n // manage owner\n scope.toggleManageOwner = function () {\n scope.owner.IsExpanded = !scope.owner.IsExpanded;\n }\n\n scope.toggleOwnerPermission = function (permission) {\n $timeout(function() {\n var permissionValue = false;\n switch (permission) {\n case ('Edit'):\n permission = 'AdminConfigModifyingOnly';\n permissionValue = !scope.owner.Edit;\n break;\n case ('Share'):\n permission = 'AdminSharingOnly';\n permissionValue = !scope.owner.Share;\n break;\n case ('Notes'):\n permission = 'AdminUnderwritingNotesOnly';\n permissionValue = !scope.owner.Notes;\n break;\n }\n scope.workflowData[permission] = permissionValue;\n workflowStateService.update(scope.workflowData);\n notifyService.notify('You modified a project owner permission');\n }, 0);\n }\n\n // manage partner\n scope.toggleManagePartner = function (partner) {\n partner.IsExpanded = !partner.IsExpanded;\n }\n\n scope.toggleSharingPermission = function (partner, permission, value) {\n $timeout(function() {\n var entityConnection = scope.workflowData.SharingConnections.find(function(connection) {\n return connection.EntityId === partner.Id;\n });\n\n if (!entityConnection) {\n notifyService.notify('There was an error toggling this permission', true)\n }\n\n var index = entityConnection.PathsAndPermissions\n .map(function(pathAndPermission) { return pathAndPermission.Path; }).indexOf(scope.path);\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n\n entityConnection.PathsAndPermissions[index].Permissions[permission] =\n value;\n\n var projectLevelChanges = false;\n if (scope.path === \"\") {\n projectLevelChanges = entityConnection.PathsAndPermissions.some(function(pathAndPermission) {\n return pathAndPermission.Path !== \"\";\n });\n\n entityConnection.PathsAndPermissions.forEach(function(pathAndPermission) {\n pathAndPermission.Permissions[permission] =\n entityConnection.PathsAndPermissions[index].Permissions[permission];\n });\n }\n\n workflowStateService.update(scope.workflowData);\n notifyService.notify('You changed sharing permissions for ' +\n cleanPath +\n ' for ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName\n (projectLevelChanges\n ? '. Please note: project level changes can affect other sharing permissions.'\n : ''));\n }, 0);\n }\n\n scope.togglePartnerVisibility = function (partner) {\n var entityConnection = scope.workflowData.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n\n var connectionPathAndPermissions = entityConnection.PathsAndPermissions.find(function(pathAndPermissions) {\n return scope.path === pathAndPermissions.Path;\n });\n\n var index = entityConnection.PathsAndPermissions.findIndex(function (pathAndPermission) { \n return pathAndPermission.Path === scope.path;\n });\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n\n connectionPathAndPermissions.IsPrivate = !connectionPathAndPermissions.IsPrivate;\n\n var projectLevelChanges = (scope.path === \"\");\n if (scope.path === \"\") {\n entityConnection.PathsAndPermissions.forEach(function (pathAndPermission) {\n pathAndPermission.IsPrivate = entityConnection.PathsAndPermissions[index].IsPrivate;\n });\n }\n\n workflowStateService.update(scope.workflowData);\n notifyService.notify('You changed the sharing visibility for ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName +\n ' to ' + (entityConnection.IsPrivate ? ' hidden' : 'visible') + ' for ' + cleanPath + '.' +\n (projectLevelChanges ? 'Please note, that other sharing visibilities have been changed since you made a change at the project level.' : ''));\n }\n\n scope.removeSharingConnection = function(partner) {\n var entityConnection = scope.workflowData.SharingConnections.find(function(connection) {\n return connection.EntityId === partner.Id;\n });\n \n var index = entityConnection.PathsAndPermissions.findIndex(function (pathAndPermission) {\n return pathAndPermission.Path === scope.path; });\n var cleanPath = entityConnection.PathAndPermissionMappings[index].cleanPath;\n entityConnection.PathsAndPermissions.splice(index, 1);\n \n if (entityConnection.PathAndPermissionMappings.length === 0) {\n scope.workflowData.SharingConnections.splice(\n scope.workflowData.SharingConnections.indexOf(entityConnection), 1);\n }\n\n workflowStateService.update(scope.workflowData);\n var index = scope.expandedPartners.findIndex(function (p) { return p.Id === partner.Id });\n scope.expandedPartners[index].IsRemoved = true;\n scope.totalPartnersCount--;\n\n notifyService.notify('You unshared ' + cleanPath + ' with ' +\n entityConnection.Entity.Contact.FirstName + ' ' + entityConnection.Entity.Contact.LastName);\n }\n\n // manage referral\n scope.toggleManageReferral = function (referral) {\n referral.IsExpanded = !referral.IsExpanded;\n }\n\n scope.toggleReferralPermission = function (referral) {\n platformEntityReferralDataService.updatePlatformEntityReferral(\n referral.Id.split('/')[1], {\n ObjectId: scope.workflowData.Id,\n ObjectPath: scope.path,\n ObjectData: referral.Data\n }\n ).then(function () {\n notifyService.notify('You changed sharing permissions for ' +\n referral.cleanPath +\n ' for ' +\n referral.EmailAddress +\n (scope.path === \"\"\n ? '. Please note: project level changes can affect other sharing permissions.'\n : ''));\n });\n }\n\n scope.toggleReferralVisibility = function (partner) {\n platformEntityReferralDataService.updatePlatformEntityReferral(\n referral.Id.split('/')[1], {\n ObjectId: scope.workflowData.Id,\n ObjectPath: scope.path,\n ObjectData: referral.Data\n }\n ).then(function () {\n notifyService.notify('You changed the sharing visibility for ' +\n referral.EmailAddress +\n ' to ' + (referral.Data.IsPrivate ? ' hidden' : 'visible') + ' for ' + referral.cleanPath + '.' +\n (scope.path === \"\" ? 'Please note, that other sharing visibilities have been changed since you made a change at the project level.' : ''));\n });\n }\n\n scope.removeReferral = function(referral) {\n platformEntityReferralDataService.removePlatformEntityReferral(\n referral.Id.split('/')[1], scope.workflowData.Id, scope.path\n ).then(function () {\n referral.IsRemoved = true;\n scope.totalPartnersCount--;\n notifyService.notify('You unshared ' + referral.cleanPath + ' with ' +\n referral.EmailAddress);\n });\n }\n\n // search\n scope.partnerSearch = {\n addPartnerSearchValue: ''\n };\n scope.partnerSearchResults = [];\n scope.showInviteMessage = false;\n\n function clearSearch() {\n scope.partnerSearchResults = [];\n scope.partnerSearchResultsTotalItems = null;\n scope.showInviteMessage = false;\n scope.partnerSearch.addPartnerSearchValue = '';\n scope.showInvalidEmailMessage = false;\n }\n\n scope.getPartnerSearchResults = function () {\n if (!scope.partnerSearch.addPartnerSearchValue || scope.partnerSearch.addPartnerSearchValue.trim().length == 0) {\n clearSearch();\n return;\n }\n\n if (scope.partnerSearch.addPartnerSearchValue !== '') {\n var predicates = {};\n predicates.ContactName = {\n value: scope.partnerSearch.addPartnerSearchValue,\n condition: \"StartsWith\",\n watch: function () { return true; }\n };\n\n var queryModel = {\n uri: '[BuildifyApiHost]/api/search/entities',\n pageSize: 10,\n pageNum: 0,\n numPages: 0,\n orderBy: 'ContactName',\n orderByDirection: 'ascending',\n predicates: predicates,\n injectedPredicates: [],\n defaultPredicates: []\n };\n\n searchDataService.getResults(queryModel).then(function (data) {\n var existingShares = scope.expandedPartners.filter(function (p) { return !p.IsRemoved; })\n .map(function (partner) { return partner.Id; })\n existingShares.push(scope.owner.Id);\n\n var filteredResults = data.Results.filter(function (result) {\n return existingShares.indexOf(result.Id) == -1;\n });\n if (filteredResults.length > 0) {\n scope.showInviteMessage = false;\n filteredResults.forEach(function (p) {\n p.IconText = p.Contact.FirstName.substring(0,1) + p.Contact.LastName.substring(0,1);\n });\n scope.partnerSearchResults = filteredResults;\n } else {\n scope.partnerSearchResults = [];\n if (scope.partnerSearch.addPartnerSearchValue.trim().length > 0) {\n scope.showInviteMessage = true;\n }\n }\n });\n }\n }\n\n scope.addSharingConnection = function (partner) {\n scope.isSharingButtonActive = false;\n var permissions = {\n View: true,\n Edit: true,\n Share: true,\n Notes: true\n };\n var matchingPartner = scope.workflowData.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n \n if (matchingPartner) {\n matchingPartner.PathsAndPermissions.push({\n Path: scope.path,\n Permissions: {\n View: true,\n Edit: true,\n Share: true,\n Notes: true\n }\n });\n // scroll and notify\n notifyService.notify('You shared ' + workflowStateService.getCleanPath(scope.path) + ' with ' + matchingPartner.Entity.CompanyDetails.Name);\n } else {\n scope.workflowData.SharingConnections.push({\n EntityId: partner.Id,\n PathsAndPermissions: [\n {\n Path: scope.path,\n Permissions: permissions\n }],\n Entity: partner\n });\n notifyService.notify('You shared ' + workflowStateService.getCleanPath(scope.path) + ' with ' + partner.CompanyDetails.Name);\n }\n\n // update sharing partners for path\n workflowStateService.update(scope.workflowData);\n\n mailRequestDataService.sendWorkflowSharingUpdate({\n EntityId: scope.workflowData.Entity.Id,\n SharedWithEntityId: partner.Id,\n WorkflowId: scope.workflowData.Id\n });\n\n // remove from search results and add to expanded partners\n partner.Permissions = permissions;\n partner.IsPrivate = false;\n partner.IconText = partner.Contact.FirstName.substring(0,1) + partner.Contact.LastName.substring(0,1);\n\n scope.expandedPartners.push(Object.assign({}, partner));\n scope.totalPartnersCount++;\n partner.IsRemoved = true;\n scope.getPartnerSearchResults();\n scope.showInvalidEmailMessage = false;\n scope.isSharingButtonActive = true;\n }\n\n scope.addReferral = function () {\n scope.isSharingButtonActive = false;\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!re.test(String(scope.partnerSearch.addPartnerSearchValue).toLowerCase())) {\n scope.showInvalidEmailMessage = true;\n return;\n }\n scope.showInvalidEmailMessage = false;\n\n var referralData = {\n platformId: scope.workflowData.Entity.PlatformId,\n siteConfigurationId: scope.workflowData.Entity.SiteConfigurationId,\n referrerEntityId: scope.sessionData.EntityId,\n objectType: 'Workflow',\n objectId: scope.workflowData.Id,\n objectReferralPath: scope.path,\n objectReferralMessage: 'You were invited to share the project ' + scope.workflowData.Name\n };\n\n var basicPermissions = {\n Permissions: {\n View: true,\n Edit: true,\n Share: true,\n Notes: true\n }\n };\n\n platformEntityReferralDataService.createPlatformEntityReferral({\n PlatformId: referralData.platformId,\n SiteConfigurationId: referralData.siteConfigurationId,\n EmailAddress: scope.partnerSearch.addPartnerSearchValue,\n ReferralObject:\n {\n ReferrerEntityId: referralData.referrerEntityId,\n ObjectType: referralData.objectType,\n ObjectId: referralData.objectId,\n ObjectReferralPath: referralData.objectReferralPath,\n ObjectReferralMessage: referralData.objectReferralMessage,\n ObjectReferralData: basicPermissions\n }\n }).then(function(data) {\n if (data.ResponseType === 'Entity') {\n // Add the direct connection\n scope.addSharingConnection(data.Value);\n scope.addPartnerForm.$setUntouched();\n clearSearch();\n return;\n }\n\n scope.expandedReferrals.push({\n EmailAddress: scope.partnerSearch.addPartnerSearchValue,\n Path: scope.path,\n Data: basicPermissions\n });\n scope.totalPartnersCount++;\n notifyService.notify('Your referral has been sent');\n scope.addPartnerForm.$setUntouched();\n clearSearch();\n scope.isSharingButtonActive = true;\n }).catch(function(error) {\n console.error(error);\n notifyService.notify('There was an error sending your referral', true);\n });\n }\n }\n };\n }\n\n partnerSelector.$inject = ['$state', '$mdDialog', '$timeout', '$rootScope',\n 'searchDataService', 'workflowStateService', 'notifyService',\n 'mailRequestDataService', 'sessionDataService', 'platformEntityReferralDataService'];\n\n angular.module('ecap.workflow').directive('partnerSelector', partnerSelector);\n})();\n\n","(function () {\n 'use strict';\n\n function phaseDrawSchedule(workflowStateService, scrollingService, $rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/phaseDrawSchedule.html',\n scope: {\n drawScheduleData: '=',\n parentData: '=',\n removeDocument: '&',\n canDelete: '='\n },\n link: function (scope, element, attrs) {\n scope.workflowData = workflowStateService.get();\n\n scope.drawScheduleData.Items.forEach(function (item) {\n item.DatePickerIsOpen = false;\n item.DrawDate = new Date(item.DrawDate);\n });\n\n scope.updateDrawSchedule = function () {\n if (scope.DrawScheduleForm.$valid) {\n workflowStateService.syncDrawSchedule(scope.parentData, scope.drawScheduleData);\n }\n }\n\n scope.addDrawScheduleItem = function () {\n scope.drawScheduleData.Items.push({ DatePickerIsOpen: false });\n }\n\n scope.removeDrawScheduleItem = function (index) {\n scope.drawScheduleData.Items[index].IsRemoved = true;\n // push to end\n scope.drawScheduleData.Items.push(scope.drawScheduleData.Items.splice(index, 1)[0]);\n workflowStateService.syncDrawSchedule(scope.parentData, scope.drawScheduleData);\n }\n\n scope.openDatepicker = function (event, index) {\n event.preventDefault();\n event.stopPropagation();\n scope.drawScheduleData.Items[index].DatePickerIsOpen = true;\n };\n\n scope.phaseIndex = (scope.parentData.Index || scope.parentData.Index === 0)\n ? scope.parentData.Index + 1 : undefined;\n\n scope.toggleItem = function (item) {\n if (item.Access.ShowPartners || item.Access.Notes) {\n item.open = !item.open;\n }\n\n scrollingService.scrollTo(attrs.scrollToElementId + (item.open ? \"_expanded\" : \"\"),\n item.open ? 0 : 250, 0, 0);\n\n $rootScope.$emit('containerVisibilityChange',\n {\n containerName: scope.documentData.Path,\n isVisible: item.open\n });\n }\n\n scope.onNoteAdded = function () {\n scope.noteCount += 1;\n }\n\n scope.onNoteRemoved = function (noteId) {\n var noteToRemoveIndex = scope.drawScheduleData.ProjectUnderwritingNotes.findIndex(function (note) {\n return note.NoteId === noteId;\n });\n\n if (noteToRemoveIndex !== -1) {\n scope.drawScheduleData.ProjectUnderwritingNotes.splice(noteToRemoveIndex, 1);\n }\n scope.noteCount -= 1;\n }\n }\n };\n }\n\n phaseDrawSchedule.$inject = ['workflowStateService', 'scrollingService', '$rootScope'];\n\n angular.module('ecap.workflow').directive('phaseDrawSchedule', phaseDrawSchedule);\n})();\n","(function () {\n 'use strict';\n\n function projectDrawScheduleItemsCollection($compile, $http, workflowProcessingService) {\n var templateUrl = 'workflow/directives/templates/projectDrawScheduleItemsCollection.html';\n\n return {\n restrict: 'E',\n scope: {\n InformationPart: '=informationPart',\n Datepickers: '=datepickers'\n },\n require: '^workflowPhase',\n link: function (scope, element, attrs, parentCtrl) {\n scope.adminMode = false;\n scope.$watch(function () {\n return workflowProcessingService.adminMode;\n }, function (newValue) {\n scope.adminMode = newValue;\n });\n\n //scope.datePickerIsOpened = false;\n //scope.openDatePicker = function ($event) {\n // $event.preventDefault();\n // $event.stopPropagation();\n\n // scope.datePickerIsOpened = true;\n //};\n\n scope.$watch(function () {\n return workflowProcessingService.adminMode;\n }, function (newValue) {\n scope.adminMode = newValue;\n });\n\n scope.openDatepicker = function ($event, index) {\n parentCtrl.openDatepicker($event, index);\n }\n\n scope.addItem = function () {\n scope.InformationPart.ProjectDrawScheduleItems.push({});\n parentCtrl.addDatepicker();\n };\n\n scope.removeItem = function (index) {\n scope.InformationPart.ProjectDrawScheduleItems.splice(index, 1);\n parentCtrl.removeDatepicker(index);\n };\n\n $http.get(templateUrl)\n .then(function (response) {\n element.html($compile(response.data)(scope));\n });\n }\n };\n }\n\n projectDrawScheduleItemsCollection.$inject = ['$compile', '$http', 'workflowProcessingService'];\n\n angular.module('ecap.workflow').directive('projectDrawScheduleItemsCollection', projectDrawScheduleItemsCollection);\n})();\n","(function () {\n 'use strict';\n\n function questionGroup($compile, $http, workflowProcessingService) {\n var templateUrl = 'workflow/directives/templates/questionGroup.html';\n\n return {\n restrict: 'E',\n scope: {\n InformationPart: '=informationPart'\n },\n link: function (scope, element) {\n scope.adminMode = false;\n scope.$watch(function () {\n return workflowProcessingService.adminMode;\n }, function (newValue) {\n scope.adminMode = newValue;\n });\n\n $http.get(templateUrl)\n .then(function (response) {\n element.html($compile(response.data)(scope));\n });\n }\n };\n }\n\n questionGroup.$inject = ['$compile', '$http', 'workflowProcessingService'];\n\n angular.module('ecap.workflow').directive('questionGroup', questionGroup);\n})();\n\n","(function () {\n 'use strict';\n\n function saveProgress($compile, $http, fileUploadsService) {\n return {\n restrict: 'E',\n replace: true,\n link: function (scope, element) {\n var templateUrl = 'workflow/directives/templates/saveProgress.html';\n\n scope.fileUploads = [];\n scope.fileUploadsService = fileUploadsService;\n scope.$watch(function () { return fileUploadsService.fileUploads; }, function (newValue) {\n //if (newValue) {\n // var width = (fileUploadsService.uploadedBytes /\n // fileUploadsService.totalBytes) * 100;\n // $('#progressBar').css('width', Math.floor(width) + '%');\n //}\n\n scope.fileUploads = fileUploadsService.fileUploads;\n\n }, true);\n\n scope.uploaders = fileUploadsService.uploaders;\n $http.get(templateUrl)\n .then(function (response) {\n element.html($compile(response.data)(scope));\n });\n }\n };\n }\n\n saveProgress.$inject = ['$compile', '$http', 'fileUploadsService'];\n\n angular.module('ecap.workflow').directive('saveProgress', saveProgress);\n})();\n","(function () {\n 'use strict';\n\n function searchField() {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/searchField.html',\n link: function (scope) {\n }\n };\n }\n\n searchField.$inject = [];\n\n angular.module('ecap.workflow').directive('searchField', searchField);\n})();\n","(function () {\n 'use strict';\n\n function sharingDetails() {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/sharingDetails.html',\n scope: {\n phaseIndex: '@',\n entitySearchIndex: '@',\n adminEntitySearchIndex: '@',\n path: '@',\n partners: '=',\n message: '@',\n canAddPartners: '='\n },\n link: function (scope, element, attrs) {\n if ('fullWidth' in attrs) {\n element.children(':first').addClass('sharing-details-full-width');\n }\n\n scope.sharingState = '';\n\n if (Number.isNaN(parseInt(scope.phaseIndex))) {\n scope.sharingState = scope.path.indexOf('InternalContent') !== -1\n ? 'workflow.sharingsearch.internalfiles'\n : 'workflow.sharingsearch';\n }\n else {\n scope.sharingState = 'workflow.sharingsearch.phase';\n }\n }\n };\n }\n\n sharingDetails.$inject = [];\n\n angular.module('ecap.workflow').directive('sharingDetails', sharingDetails);\n})();\n\n","(function () {\n 'use strict';\n\n function underwritingNote(workflowStateService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/underwritingNote.html',\n scope: {\n path: '=',\n noteData: '=',\n noteIndex: '=',\n onRemove: '&',\n notes: '='\n },\n link: function (scope, element, attrs) {\n scope.mode = 'display';\n scope.canSave = false;\n\n if (!scope.noteData.UpdatedByUserName) {\n scope.mode = 'edit';\n }\n\n function resetState() {\n scope.mode = 'display';\n }\n\n scope.removeNote = function () {\n workflowStateService.removeUnderwritingNote(scope.noteData.NoteId);\n scope.onRemove({ noteId: scope.noteData.NoteId });\n }\n\n scope.editNote = function () {\n scope.mode = 'edit';\n scope.originalNoteText = scope.noteData.Note;\n }\n\n scope.saveNote = function () {\n scope.noteData.IsNew = false;\n workflowStateService.saveUnderwritingNote(scope.noteData);\n if (!scope.noteData.UpdatedByUserName) {\n scope.onAdd();\n }\n resetState();\n }\n\n scope.cancelEditNote = function () {\n if (!scope.noteData.UpdatedByUserName) {\n scope.noteData.IsDeleted = true;\n }\n else {\n scope.noteData.Note = scope.originalNoteText;\n }\n resetState();\n }\n }\n };\n }\n\n underwritingNote.$inject = ['workflowStateService'];\n\n angular.module('ecap.workflow').directive('underwritingNote', underwritingNote);\n})();\n\n","(function () {\n 'use strict';\n\n function workflow($rootScope) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/workflow.html',\n scope: {\n workflowData: '=',\n currentPhaseIndex: '='\n },\n link: function (scope) {\n }\n };\n }\n\n workflow.$inject = ['$rootScope'];\n\n angular.module('ecap.workflow').directive('workflow', workflow);\n})();\n","(function () {\n 'use strict';\n\n function workflowPhase($compile, $http, $log, workflowProcessingService, workflowConfigurationDataService, fileUploadsService) {\n return {\n restrict: 'E',\n templateUrl: 'workflow/directives/templates/workflowPhase.html',\n transclude: true,\n scope: {\n phaseContainer: '=',\n phaseData: '=',\n phaseIndex: '=',\n unskipPhase: '&',\n user: '=',\n updatePhase: '&',\n deleteUpload: '&',\n adminMode: '=',\n editPhaseExtension: '&',\n savePhaseExtension: '&',\n cancelSavePhaseExtension: '&'\n },\n controller: ['$scope', function ($scope) {\n $scope.nextPhaseSummary = {};\n $scope.selectedFiles = [];\n $scope.hasDownloads = false;\n $scope.hasUploads = false;\n $scope.hasQuestions = false;\n\n $scope.mode = 'Editor';\n\n $scope.datepickers = [];\n\n for (var i = 0; i < $scope.phaseData.InformationParts.length; i++) {\n if ($scope.phaseData.InformationParts[i].ProjectDrawScheduleItems) {\n for (var j = 0; j < $scope.phaseData.InformationParts[i].ProjectDrawScheduleItems.length; j++) {\n $scope.datepickers.push(false);\n }\n }\n }\n\n this.datepickerIsOpened = function (index) {\n return $scope.datepickers[index];\n }\n\n this.addDatepicker = function () {\n $scope.datepickers.push(false);\n }\n\n this.removeDatepicker = function (index) {\n $scope.datepickers.slice(index, 1);\n }\n\n this.openDatepicker = function ($event, which) {\n $event.preventDefault();\n $event.stopPropagation();\n\n $scope.datepickers[which] = true;\n };\n\n // TODO Move to viewmodel\n var uploaderIndex = 0;\n for (var i = 0; i < $scope.phaseData.InformationParts.length; i++) {\n if ($scope.phaseData.InformationParts[i].DocumentUploads) {\n for (var j = 0; j < $scope.phaseData.InformationParts[i].DocumentUploads.length; j++) {\n if ($scope.phaseData.InformationParts[i].DocumentUploads[j].LinkedTemplateIds.length > 0) {\n $scope.hasDownloads = true;\n }\n\n $scope.hasUploads = true;\n $scope.phaseData.InformationParts[i].DocumentUploads[j].uploaderIndex = uploaderIndex;\n uploaderIndex++;\n }\n }\n\n if ($scope.phaseData.InformationParts[i].Questions) {\n $scope.hasQuestions = true;\n }\n }\n\n $scope.removeFile = function (index, selectedFile) {\n fileUploadsService.removeFile(index, selectedFile);\n }\n\n $scope.$watch(function () { return fileUploadsService.fileUploads }, function (newValue) {\n $scope.selectedFiles = newValue;\n }, true);\n\n $scope.adminMode = false;\n $scope.$watch(function () {\n return workflowProcessingService.adminMode;\n }, function (newValue) {\n $scope.adminMode = newValue;\n });\n\n $scope.$watch(function () {\n return workflowProcessingService.mode;\n }, function (newValue) {\n if (newValue == \"Submit\" || newValue == \"Skip\") {\n $scope.nextPhaseSummary = workflowProcessingService.getNextPhaseSummary($scope.phaseContainer, $scope.phaseIndex);\n }\n });\n\n $scope.showContainerData = function () {\n $log.debug($scope.phaseContainer);\n }\n }]\n };\n }\n\n workflowPhase.$inject = ['$compile', '$http', '$log', 'workflowProcessingService',\n 'workflowConfigurationDataService', 'fileUploadsService'];\n\n angular.module('ecap.workflow').directive('workflowPhase', workflowPhase);\n})();\n","(function () {\n 'use strict';\n\n function workflowPhaseIcon() {\n return {\n restrict: 'E',\n scope: {\n percentageComplete: '=',\n phaseIndex: '=',\n skipped: '='\n },\n templateUrl: 'workflow/directives/templates/workflowPhaseIcon.html',\n link: function (scope) {\n\n }\n };\n }\n\n workflowPhaseIcon.$inject = [];\n\n angular.module('ecap.workflow').directive('workflowPhaseIcon', workflowPhaseIcon);\n})();\n","(function () {\n 'use strict';\n\n function excludeSelectedProducts() {\n return function (items, productQualifications) {\n var allProductIds = _.map(productQualifications, (function (productQualification) {\n return productQualification.Product.Id;\n }));\n\n var filteredData = [];\n angular.forEach(items, function (item) {\n if (!(_.include(allProductIds, item.Id))) {\n filteredData.push(item);\n }\n });\n return filteredData;\n };\n }\n\n angular.module('ecap.workflow').filter('excludeSelectedProducts', excludeSelectedProducts);\n})();\n","(function () {\n 'use strict';\n\n function excludeSelectedResourcePartners() {\n return function (items, resourcePartnerConnections) {\n var allResourcePartnerIds = _.map(resourcePartnerConnections, (function (resourcePartnerConnection) {\n return resourcePartnerConnection.ResourcePartnerId;\n }));\n\n var filteredData = [];\n angular.forEach(items, function (item) {\n if (!(_.include(allResourcePartnerIds, item.Id))) {\n filteredData.push(item);\n }\n });\n return filteredData;\n };\n }\n\n angular.module('ecap.workflow').filter('excludeSelectedResourcePartners', excludeSelectedResourcePartners);\n})();\n","(function () {\n 'use strict';\n\n function hasActiveProducts() {\n return function (items) {\n for (var i = 0; i < items.length; i++) {\n for (var j = 0; j < items[i].ProductDefinitions.length; j++) {\n if (items[i].ProductDefinitions[j].isSelected) {\n return true;\n }\n }\n }\n return false;\n };\n }\n\n angular.module('ecap.workflow').filter('hasActiveProducts', hasActiveProducts);\n})();\n","(function () {\n 'use strict';\n\n function fileUploadsService($rootScope) {\n var fileUploaders = [];\n var fileUploads = [];\n\n function markFileAsComplete(fileUpload) {\n var fileUploadIndex = _.findIndex(fileUploads, { Guid: fileUpload.Guid });\n fileUploads[fileUploadIndex].Status = 'completed';\n\n $rootScope.$apply();\n }\n\n function addUploader(uploader) {\n fileUploaders.push(uploader);\n }\n\n function markFileAsUploading(guid) {\n fileUploads[_.findIndex(fileUploads, { Guid: guid })].Status = 'uploading';\n }\n\n function removeFile(index, selectedFile) {\n fileUploaders[index].cancel(selectedFile.UploaderId);\n fileUploads.splice(_.findIndex(fileUploads,\n { Guid: selectedFile.Guid }, 1));\n }\n\n return {\n markFileAsComplete: markFileAsComplete,\n fileUploads: fileUploads,\n addUploader: addUploader,\n markFileAsUploading: markFileAsUploading,\n uploaders: fileUploaders,\n removeFile: removeFile\n };\n }\n\n fileUploadsService.$inject = ['$rootScope'];\n\n angular.module('ecap.workflow').service('fileUploadsService', fileUploadsService);\n})();\n","(function () {\n 'use strict';\n\n function workflowProcessingService($interval, $window, $log, fileUploadsService, notifyService) {\n var adminMode = false;\n var mode = \"\";\n\n function uploadFiles() {\n for (var i = 0; i < fileUploadsService.uploaders.length; i++) {\n fileUploadsService.uploaders[i].uploadStoredFiles();\n }\n };\n\n function getNextPhaseSummary(phases, currentPhaseIndex) {\n return (currentPhaseIndex < phases.length)\n ? {\n NextPhaseIndex: parseInt(currentPhaseIndex) + 1,\n NextPhaseTitle: phases[currentPhaseIndex].Title\n }\n : undefined;\n };\n\n function submitPhase(phases, currentPhaseIndex, onUploadsComplete) {\n uploadFiles();\n\n var submit = $interval(function () {\n if (fileUploadsService.fileUploads.filter(function (item) { return item.Status !== 'completed'}).length > 0) {\n }\n else {\n phases[currentPhaseIndex - 1].Status = 'Submitted';\n onUploadsComplete();\n $interval.cancel(submit);\n }\n }, 250);\n };\n\n function updatePhase(onUploadsComplete) {\n uploadFiles();\n\n var update = $interval(function () {\n if (fileUploadsService.fileUploads.filter(function (item) { return item.Status !== 'completed'}).length > 0) {\n } else {\n onUploadsComplete();\n notifyService.notify(\"Your changes have been saved\", false);\n $interval.cancel(update);\n }\n }, 250);\n };\n\n function skipPhase(phasesContainer, phases, currentPhaseIndex) {\n phases[currentPhaseIndex - 1].Status = 'Skipped';\n phasesContainer.CurrentPhaseIndex = Math.min(currentPhaseIndex, phases.length - 1);\n };\n\n function advancePhase(phasesContainer, phases, currentPhaseIndex, onAdvanceComplete) {\n phasesContainer.CurrentPhaseIndex = Math.min(currentPhaseIndex, phases.length - 1);\n onAdvanceComplete();\n };\n\n function unskipPhase(phasesContainer, phases, currentPhaseIndex, onUnskipComplete) {\n phases[currentPhaseIndex - 1].Status = 'Pending';\n phasesContainer.CurrentPhaseIndex = Math.max(currentPhaseIndex - 1, 0);\n onUnskipComplete();\n notifyService.notify(\"The phase has been marked as pending\");\n };\n\n return {\n getNextPhaseSummary: getNextPhaseSummary,\n submitPhase: submitPhase,\n updatePhase: updatePhase,\n skipPhase: skipPhase,\n advancePhase: advancePhase,\n unskipPhase: unskipPhase,\n mode: mode\n };\n }\n\n workflowProcessingService.$inject = ['$interval', '$window', '$log', 'fileUploadsService', 'notifyService'];\n\n angular.module('ecap.workflow').factory('workflowProcessingService', workflowProcessingService);\n})();\n","(function () {\n 'use strict';\n\n function workflowStateService($rootScope, $log, $filter, $timeout,\n workflowDataService, notifyService, sessionDataService, mailRequestDataService,\n workflowConfigurationDataService) {\n var state = this;\n state.workflow = {};\n sessionDataService.loadSession().then(function (sessionData) {\n state.sessionData = sessionData;\n });\n\n function getCleanPath(path) {\n if (path === \"\") {\n return \"Entire Project\";\n }\n\n var pathParts = path.split(\"_\");\n var pathPartsLeftCount = pathParts.length;\n var pathString = \"\";\n\n while (pathParts.length > 1) {\n if (pathParts[0] === \"Phase\") {\n pathString += \"Phase - \" + pathParts[1] + \" \";\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === \"InformationPart\") {\n pathString += \"- \" + pathParts[1] + \" \";\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === \"BlobSummary\") {\n var pathObject = getObjectFromPath(state.workflow, path);\n pathString += \"- \" + pathObject.FileName + \" \";\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === \"InternalContent\") {\n pathString += \"Internal Files \";\n pathParts.splice(0, 1);\n }\n\n if (pathPartsLeftCount === pathParts.length) {\n throw new Error('Could not parse path ' + path);\n }\n\n pathPartsLeftCount = pathParts.length;\n }\n\n return pathString;\n }\n\n function getAccessToPath(path, sharingPathsAndPermissions, workflowAccessLevel) {\n // Default permissions for internal content\n if (path.indexOf(\"InternalContent\") !== -1) {\n return {\n View: true,\n Edit: true,\n Share: false,\n Notes: false,\n ShowPartners: false\n }\n }\n\n var object = getObjectFromPath(state.workflow, path);\n var defaultSharingAndShowPartnersPermissionForOwnersAndAdmins = (path.indexOf(\"InternalContent\") !== -1) ? false : true;\n\n if (!object || object.IsRemoved) {\n return {\n View: false,\n Edit: false,\n Share: false,\n Notes: false,\n ShowPartners: false\n }\n }\n\n if (workflowAccessLevel === 'ProjectAdmin') {\n return {\n View: true,\n Edit: true,\n Share: defaultSharingAndShowPartnersPermissionForOwnersAndAdmins,\n Notes: true,\n ShowPartners: defaultSharingAndShowPartnersPermissionForOwnersAndAdmins\n };\n }\n\n if (workflowAccessLevel === 'ProjectOwner') {\n return {\n View: true,\n Edit: !state.workflow.AdminConfigModifyingOnly,\n Share: defaultSharingAndShowPartnersPermissionForOwnersAndAdmins ? !state.workflow.AdminSharingOnly : false,\n Notes: !state.workflow.AdminUnderwritingNotesOnly,\n ShowPartners: defaultSharingAndShowPartnersPermissionForOwnersAndAdmins\n };\n }\n\n var access = {\n View: false,\n Edit: false,\n Share: false,\n Notes: false,\n ShowPartners: false\n };\n\n var sortedPathsAndPermissions = sharingPathsAndPermissions.sort(function (a, b) {\n if (a.Path < b.Path) {\n return -1;\n }\n if (b.Path < a.Path) {\n return 1;\n }\n return 0;\n });\n\n for (var i = 0; i < sortedPathsAndPermissions.length; i++) {\n // Set the permissions if it is a match, a child or the project is shared\n // do not break, so the permission can be set\n if (path === sortedPathsAndPermissions[i].Path ||\n path.indexOf(sortedPathsAndPermissions[i].Path) !== -1 ||\n // We want to exclude internal files from this hiearchy since it must be directly shared\n (sortedPathsAndPermissions[i].Path === \"\" && !object.isInternalFiles)) {\n access.View = sortedPathsAndPermissions[i].Permissions[\"View\"] || false;\n access.Edit = sortedPathsAndPermissions[i].Permissions[\"Edit\"] || false;\n access.Share = sortedPathsAndPermissions[i].Permissions[\"Share\"] || false;\n access.Notes = sortedPathsAndPermissions[i].Permissions[\"Notes\"] || false;\n access.ShowPartners = true;\n }\n // if the path is not the entire project and the item in the collection's path is not a child\n // then we need to supply view only permissions\n else if (path !== \"\" && sortedPathsAndPermissions[i].Path.indexOf(path) !== -1) {\n access.View = true;\n access.Edit = false;\n access.Share = false;\n access.Notes = false;\n access.ShowPartners = false;\n }\n }\n return access;\n }\n\n function getUnderwritingNotesForPath(path, originalCollection) {\n if (!originalCollection) {\n var notes = state.workflow.UnderwritingNotes.filter(function (note) {\n return note.Path === path;\n });\n\n return angular.copy($filter('orderBy')(notes, 'UpdatedDate', true));\n }\n\n return originalCollection;\n }\n\n function updateInformationPart(informationPart, parent, sharingPathsAndPermissions, skipPartnersAndNotes) {\n informationPart.Path = parent.Path + \"_InformationPart_\" + informationPart.Title;\n informationPart.Access = getAccessToPath(informationPart.Path, sharingPathsAndPermissions,\n state.workflow.AccessLevel);\n\n if (!skipPartnersAndNotes) {\n informationPart.Partners = getPartners(informationPart.Path);\n informationPart.Referrals = getReferrals(informationPart.Path);\n informationPart.Partners.forEach(function(partner) {\n var sharingPartner = state.workflow.SharingConnections.find(function(connection) {\n return connection.EntityId === partner.Id;\n });\n var sharingConnection = sharingPartner.PathsAndPermissions.find(function(pathAndPermissions) {\n return pathAndPermissions.Path === informationPart.Path;\n });\n\n partner.Access = getAccessToPath(informationPart.Path,\n sharingPartner.PathsAndPermissions,\n 'SharingPartner');\n partner.IsVisible = sharingConnection && !sharingConnection.IsPrivate;\n });\n\n informationPart.ProjectUnderwritingNotes = getUnderwritingNotesForPath(informationPart.Path,\n informationPart.ProjectUnderwritingNotes);\n\n var notesCount = informationPart.ProjectUnderwritingNotes.filter(function (note) { return !note.IsDeleted; })\n .length;\n var notesText = !informationPart.Access.Notes ? \"\" : (notesCount === 0 ? \"notes\" : notesCount.toString() + \" note\" + (notesCount > 1 ? \"s\" : \"\"));\n\n if (informationPart.BlobSummaries) {\n var blobCount = informationPart.BlobSummaries\n .filter(function (blob) {\n return !blob.IsRemoved;\n }).length;\n\n informationPart.ExpandText = blobCount + ' ' +\n (length == 1 ? 'document' : 'documents');\n\n informationPart.BlobSummaries.forEach(function (blob) {\n var extension = blob.FileName.split('.').pop();\n blob.Extension = extension === blob.FileName ? null : '.' + extension;\n blob.FileNameWithoutExtension = blob.FileName.substring(0, blob.FileName.length - blob.Extension.length);\n blob.OriginalFileNameWithoutExtension = blob.FileNameWithoutExtension;\n });\n }\n\n if (informationPart.Questions) {\n var questionCount = informationPart.Questions\n .filter(function (question) {\n return !question.IsRemoved;\n }).length;\n\n informationPart.ExpandText = questionCount + ' ' +\n (length == 1 ? 'question' : 'questions');\n\n informationPart.originalQuestionSetData = backupQuestionSet(informationPart);\n\n parent.hasQuestionContent = informationPart.Questions.some(function (question) {\n return !question.IsRemoved;\n });\n }\n\n if (notesText) {\n informationPart.ExpandText += \", \" + notesText;\n }\n\n informationPart.ExpandText += \" \" + \"attached\";\n }\n\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Path = informationPart.Path + \"_BlobSummary_\" + blob.BlobReference;\n blob.Access = getAccessToPath(blob.Path, sharingPathsAndPermissions,\n state.workflow.AccessLevel);\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n\n if (!skipPartnersAndNotes) {\n blob.Partners = getPartners(blob.Path);\n blob.Referrals = getReferrals(blob.Path);\n blob.Partners.forEach(function (partner) {\n var sharingPartner = state.workflow.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n partner.Access = getAccessToPath(blob.Path, sharingPartner.PathsAndPermissions, 'SharingPartner');\n });\n blob.ProjectUnderwritingNotes = getUnderwritingNotesForPath(blob.Path,\n blob.ProjectUnderwritingNotes);\n }\n });\n }\n }\n\n function updateRequiredDownload(requiredDownload, phase, sharingPathsAndPermissions) {\n requiredDownload.Path = phase.Path + \"_RequiredDownload_\" + requiredDownload.Title;\n requiredDownload.Access = getAccessToPath(requiredDownload.Path, sharingPathsAndPermissions,\n state.workflow.AccessLevel);\n\n if (requiredDownload.BlobSummary) {\n requiredDownload.BlobSummary.Path = requiredDownload.Path + \"_BlobSummary_\" +\n requiredDownload.BlobSummary.BlobReference;\n requiredDownload.BlobSummary.Access = getAccessToPath(requiredDownload.BlobSummary.Path,\n sharingPathsAndPermissions,\n state.workflow.AccessLevel);\n requiredDownload.BlobSummary.UploadedByCleanName = requiredDownload.BlobSummary.UploadedByEntity\n ? requiredDownload.BlobSummary.UploadedByEntity.Contact.FirstName + ' ' +\n requiredDownload.BlobSummary.UploadedByEntity.Contact.LastName\n : 'N/A';\n\n requiredDownload.Partners = getPartners(requiredDownload.BlobSummary.Path);\n requiredDownload.Referrals = getReferrals(requiredDownload.BlobSummary.Path);\n requiredDownload.Partners.forEach(function (partner) {\n var sharingPartner = state.workflow.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n partner.Access = getAccessToPath(requiredDownload.BlobSummary.Path,\n sharingPartner.PathsAndPermissions, 'SharingPartner');\n });\n requiredDownload.ProjectUnderwritingNotes = getUnderwritingNotesForPath(requiredDownload.Path,\n requiredDownload.ProjectUnderwritingNotes);\n requiredDownload.OriginalPrompt = requiredDownload.Prompt;\n }\n }\n\n // Wrapping it in the session call for now\n function update(workflow, silent) {\n return sessionDataService.loadSession().then(function (sessionData) {\n return updateWithSessionData(workflow, silent, sessionData);\n });\n }\n\n function updateWithSessionData(workflow, silent, sessionData) {\n state.workflow = workflow;\n\n // clean up ophaned sharing connections\n state.workflow.SharingConnections = state.workflow.SharingConnections.filter(function (sharingConnection) {\n return sharingConnection.PathsAndPermissions.length > 0;\n });\n\n var ownerEntityId = workflow.EntityId;\n var accessingEntityId = sessionData.EntityId;\n var sharingPathsAndPermissions = [];\n if (ownerEntityId !== accessingEntityId) {\n if (sessionData.IsAdminEntity) {\n state.workflow.AccessLevel = \"ProjectAdmin\";\n }\n else if (sessionData.EntityType === 'Insurance Broker' &&\n sessionData.SiteMappings.some(function (mapping) {\n return mapping.SiteConfigurationId.toLowerCase() === state.workflow.Entity.SiteConfigurationId.toLowerCase() &&\n mapping.Role === \"Broker Administrator\";\n })) {\n state.workflow.AccessLevel = \"ProjectAdmin\";\n }\n else {\n var sharingPartner = state.workflow.SharingConnections.find(function (connection) {\n return connection.EntityId === accessingEntityId;\n });\n if (sharingPartner) {\n state.workflow.AccessLevel = \"SharingPartner\";\n if (sharingPartner.PathsAndPermissions.length === 0) {\n $rootScope.$broadcast('response_error');\n $log.error(\"You cannot access this workflow\");\n }\n sharingPathsAndPermissions = sharingPartner.PathsAndPermissions;\n }\n else {\n $rootScope.$broadcast('response_error');\n $log.error(\"You cannot access this workflow\");\n }\n }\n }\n else {\n state.workflow.AccessLevel = \"ProjectOwner\";\n }\n\n if (sessionData.EntityType === \"Site Administrator\" ||\n sessionData.EntityType === \"Portal Administrator\") {\n state.workflow.SharingConnections.forEach(function (connection) {\n connection.PathsAndPermissions.forEach(function (pathAndPermissions) {\n pathAndPermissions.IsVisible = true;\n });\n\n connection.IsVisible = true;\n });\n }\n else {\n state.workflow.SharingConnections.forEach(function (connection) {\n connection.PathsAndPermissions.forEach(function (pathAndPermissions) {\n pathAndPermissions.IsVisible = !pathAndPermissions.IsPrivate;\n });\n\n connection.IsVisible = connection.PathsAndPermissions.some(function (pathAndPermissions) {\n return pathAndPermissions.IsVisible;\n });\n });\n }\n\n state.workflow.UnderwritingNotes.forEach(function (note) {\n note.UpdatedByCleanName = note.UpdatedByEntity\n ? note.UpdatedByEntity.Contact.FirstName + ' ' + note.UpdatedByEntity.Contact.LastName\n : 'N/A';\n });\n\n state.workflow.Path = \"\";\n state.workflow.Access = getAccessToPath(state.workflow.Path, sharingPathsAndPermissions, state.workflow.AccessLevel);\n state.workflow.ProjectUnderwritingNotes = getUnderwritingNotesForPath(\"\",\n state.workflow.ProjectUnderwritingNotes);\n state.workflow.Partners = getPartners(\"\");\n state.workflow.Referrals = getReferrals(\"\");\n\n state.workflow.InternalContent.isInternalFiles = true;\n state.workflow.InternalContent.Path = \"InternalContent\";\n state.workflow.InternalContent.Access = getAccessToPath(state.workflow.InternalContent.Path,\n sharingPathsAndPermissions, state.workflow.AccessLevel);\n var skipPartnersAndNotesForInternalContent = true;\n state.workflow.InternalContent.InformationParts.forEach(function (informationPart) {\n updateInformationPart(informationPart, state.workflow.InternalContent, sharingPathsAndPermissions, skipPartnersAndNotesForInternalContent);\n });\n \n \n state.workflow.InternalContent.hasNoDocuments = !state.workflow.InternalContent.InformationParts.some(function (informationPart) {\n return !informationPart.IsRemoved && informationPart.Access.View && informationPart.$type === 'Ecap.Api.ViewModels.DocumentViewModel, Ecap.Api';\n });\n\n state.workflow.InternalContent.hasNoQuestionSets = !state.workflow.InternalContent.InformationParts.some(function (informationPart) {\n return !informationPart.IsRemoved && informationPart.Access.View && informationPart.$type === 'Ecap.Api.ViewModels.QuestionSetViewModel, Ecap.Api';\n });\n\n function createPhaseDescription(descriptionStripped, phase, index) {\n var cutDescription = $filter('cut')(descriptionStripped, false, 80);\n phase.Description = cutDescription;\n if (cutDescription.length < descriptionStripped.length) {\n phase.Description = '' + phase.Description + 'SEE MORE';\n }\n }\n\n var forceSave = false;\n state.workflow.Phases.forEach(function (phase, index) {\n phase.OriginalPercentageComplete = angular.copy(phase.PercentageComplete),\n phase.PercentageComplete = getPhasePercentageComplete(phase);\n var percentChanged = false;\n if (phase.OriginalPercentageComplete !== phase.PercentageComplete) {\n forceSave = true;\n percentChanged = true;\n }\n\n if (phase.HeaderCopyHtmlOverride) {\n createPhaseDescription(phase.HeaderCopyHtmlOverride.replace(/(<([^>]+)>)/ig,\"\"), phase, index);\n } else if (phase.HeaderCopyHtmlTemplateId) {\n workflowConfigurationDataService.loadHtmlTemplate(phase.HeaderCopyHtmlTemplateId).then(function (response) {\n if (response && response.Html) {\n createPhaseDescription(response.Html.replace(/(<([^>]+)>)/ig,\"\"), phase, index);\n }\n });\n }\n\n $timeout(function () {\n $rootScope.$emit(\"phasePercentageCompleteChange\", {\n phaseIndex: index,\n percentageComplete: phase.PercentageComplete / 100,\n percentChanged: percentChanged\n });\n });\n\n phase.Path = \"Phase_\" + phase.Title;\n phase.Access = getAccessToPath(phase.Path, sharingPathsAndPermissions, state.workflow.AccessLevel);\n phase.Partners = getPartners(phase.Path);\n phase.Referrals = getReferrals(phase.Path);\n phase.Partners.forEach(function (partner) {\n var sharingPartner = state.workflow.SharingConnections.find(function (connection) {\n return connection.EntityId === partner.Id;\n });\n partner.Access = getAccessToPath(phase.Path, sharingPartner.PathsAndPermissions, 'SharingPartner');\n });\n phase.ProjectUnderwritingNotes = getUnderwritingNotesForPath(phase.Path,\n phase.ProjectUnderwritingNotes);\n\n phase.Index = state.workflow.Phases.indexOf(phase);\n phase.InformationParts.forEach(function (informationPart) {\n updateInformationPart(informationPart, phase, sharingPathsAndPermissions);\n });\n\n phase.RequiredDownloads.forEach(function (requiredDownload) {\n updateRequiredDownload(requiredDownload, phase, sharingPathsAndPermissions);\n })\n\n phase.hasNoContents = !phase.InformationParts.some(function (informationPart) {\n return !informationPart.IsRemoved && informationPart.Access.View;\n }) && phase.Access.Edit;\n\n phase.hasNoDocuments = !phase.InformationParts.some(function (informationPart) {\n return !informationPart.IsRemoved && informationPart.Access.View && informationPart.$type === 'Ecap.Api.ViewModels.DocumentViewModel, Ecap.Api';\n }) && phase.Access.Edit;\n\n phase.hasNoQuestionSets = !phase.InformationParts.some(function (informationPart) {\n return !informationPart.IsRemoved && informationPart.Access.View && informationPart.$type === 'Ecap.Api.ViewModels.QuestionSetViewModel, Ecap.Api';\n }) && phase.Access.Edit;\n });\n\n // update current phse index to the last phase with progress\n state.workflow.originalPhaseIndex = state.workflow.CurrentPhaseIndex;\n for (var phaseIndex = state.workflow.Phases.length - 1; phaseIndex >= 0; phaseIndex--) {\n if (state.workflow.Phases[phaseIndex].PercentageComplete > 0 &&\n state.workflow.Phases[phaseIndex].Status !== 'Skipped') {\n state.workflow.CurrentPhaseIndex = phaseIndex;\n break;\n }\n }\n\n if (state.workflow.originalPhaseIndex !== state.workflow.CurrentPhaseIndex) {\n forceSave = true;\n }\n\n state.workflow.SharingConnections.forEach(function (connection) {\n connection.PathsAndPermissions = connection.PathsAndPermissions.sort(function (a, b) {\n if (a.Path < b.Path) {\n return -1;\n }\n if (b.Path < a.Path) {\n return 1;\n }\n return 0;\n });\n connection.PathAndPermissionMappings = connection.PathsAndPermissions.map(function (pathAndPermissions) {\n return {\n path: pathAndPermissions.Path,\n cleanPath: getCleanPath(pathAndPermissions.Path),\n permissions: pathAndPermissions.Permissions,\n isPrivate: pathAndPermissions.IsPrivate\n }\n });\n });\n\n state.workflow.UnderwritingNotes.forEach(function (note) {\n var pathName = state.workflow.Title;\n var pathObject = getObjectFromPath(state.workflow, note.Path);\n if (pathObject) {\n if (pathObject.FileName) {\n pathName = pathObject.FileName;\n } else {\n pathName = pathObject.Prompt;\n }\n }\n note.PathName = pathName;\n });\n\n if (!silent || forceSave) {\n workflowDataService.saveWorkflow(state.workflow).then(function (data) {\n // TODO: Do we need anything here?\n }, function (error) {\n // TODO: Handle potential concurrency issues\n notifyService.notify('We could not save the changes to your workflow.', true);\n });\n }\n\n $rootScope.$broadcast('workflowUpdated');\n return state.workflow;\n }\n\n function get() {\n return state.workflow;\n }\n\n function getPartners(path) {\n var allPartners = state.workflow.SharingConnections.filter(function (connection) {\n var matchingConnections = connection.PathsAndPermissions.filter(function (pathAndPermissions) {\n if (path === \"\") {\n return pathAndPermissions.Path === \"\";\n } else {\n return ((path === pathAndPermissions.Path) && pathAndPermissions.IsVisible) ||\n ((pathAndPermissions.Path === \"\" && path.indexOf('InternalContent') === -1) && pathAndPermissions.IsVisible) ||\n ((pathAndPermissions.Path.length > 0 && path.indexOf(pathAndPermissions.Path) !== -1) && pathAndPermissions.IsVisible);\n }\n });\n\n return matchingConnections.length > 0;\n }).map(function (item) {\n var entity = item.Entity;\n var matchingPermission = item.PathsAndPermissions.find(function (pp) {\n return pp.Path === path;\n });\n if (matchingPermission) {\n entity.Permissions = matchingPermission.Permissions;\n entity.IsPrivate = matchingPermission.IsPrivate;\n }\n return entity;\n });\n\n return _.uniq(allPartners, function (partner) {\n return partner.Id;\n });\n };\n\n function getReferrals(path) {\n var allReferrals = state.workflow.Referrals.filter(function (referral) {\n if (path === \"\") {\n return referral.Path === \"\";\n } else {\n return ((path === referral.Path)) ||\n ((referral.Path === \"\")) ||\n ((referral.Path.length > 0 && path.indexOf(referral.Path) !== -1));\n }\n }).map(function (item) {\n var entity = {\n Id: item.Id,\n EmailAddress: item.EmailAddress,\n Path: item.Path,\n cleanPath: getCleanPath(item.Path),\n Data: item.Data || {\n Permissions: {\n View: true,\n Edit: false,\n Share: false,\n Notes: true\n },\n IsPrivate: false\n }\n };\n return entity;\n });\n return allReferrals;\n };\n\n function resolveNotesForPath(path) {\n state.workflow.UnderwritingNotes.forEach(function (note) {\n // Resolve notes for removed phases\n if (note.Path.startsWith(path)) {\n note.IsResolved = true;\n }\n });\n }\n\n function isQuestionSetComplete(questionSet) {\n var unansweredQuestion = questionSet.Questions.filter(function (question) {\n return !question.IsRemoved;\n }).find(function (question) {\n if (question.Options) {\n return question.Options.every(function (option) { return !option.IsSelected; });\n }\n return question.Value === undefined ||\n question.Value === null ||\n question.Value === '' ||\n question.Value.length === 0;\n });\n\n if (!unansweredQuestion) {\n return true;\n }\n\n return false;\n }\n\n function getPhasePercentageComplete(phase) {\n var numberOfCompletedItems = 0;\n var numberOfItems = phase.InformationParts.filter(function (informationPart) { return !informationPart.IsRemoved; }).length;\n\n phase.InformationParts.filter(function (informationPart) { return !informationPart.IsRemoved; })\n .forEach(function (informationPart) {\n if (informationPart.Questions) {\n if (isQuestionSetComplete(informationPart)) {\n numberOfCompletedItems += 1;\n }\n }\n else if (informationPart.BlobSummaries) {\n numberOfCompletedItems += informationPart.BlobSummaries.filter(\n function (blob) { return !blob.IsRemoved; }).length > 0 ? 1 : 0;\n }\n else if (informationPart.$type ===\n 'Ecap.Api.ViewModels.DrawScheduleViewModel, Ecap.Api') {\n if (informationPart.Items && informationPart.Items.filter(function (item) { return !item.IsRemoved; }).length > 0) {\n numberOfCompletedItems += 1;\n }\n }\n else {\n numberOfCompletedItems += 1;\n }\n });\n\n return numberOfCompletedItems === numberOfItems ? 100 : Math.floor(100 * (numberOfCompletedItems / numberOfItems));\n }\n\n function removeSharingConnectionsForPath(path) {\n state.workflow.SharingConnections.forEach(function (connection) {\n var matchingIndex = connection.PathsAndPermissions.map(function (pathAndPermissions) {\n return pathAndPermissions.Path;\n }).indexOf(path);\n if (matchingIndex !== -1) {\n connection.PathsAndPermissions.splice(matchingIndex, 1);\n }\n });\n }\n\n function addRequiredDownloadToPhase(phaseIndex, requiredDownload) {\n state.workflow.Phases[phaseIndex].RequiredDownloads.push(requiredDownload);\n update(state.workflow);\n notifyService.notify('You added ' + requiredDownload.Prompt);\n }\n\n function removeRequiredDownloadFromPhase(phaseIndex, requiredDownloadIndex) {\n var requiredDownloadToRemove = state.workflow.Phases[phaseIndex].RequiredDownloads[requiredDownloadIndex];\n requiredDownloadToRemove.IsRemoved = true;\n resolveNotesForPath(requiredDownloadToRemove.Path);\n update(state.workflow);\n notifyService.notify('You removed ' + requiredDownloadToRemove.Prompt);\n }\n\n function addInformationPartToPhase(phase, informationPart) {\n var matchingPhase = state.workflow.Phases.find(function(workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n if (!matchingPhase) {\n throw new Error('Could not find phase ' + phase.Title);\n }\n\n matchingPhase.InformationParts.push(informationPart);\n update(state.workflow);\n notifyService.notify('You added ' + informationPart.Prompt);\n }\n\n function removeInformationPartFromPhase(phase, partIndex) {\n var matchingPhase = state.workflow.Phases.find(function(workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n if (!matchingPhase) {\n throw new Error('Could not find phase ' + phase.Title);\n }\n\n var phaseIndex = state.workflow.Phases.indexOf(phase);\n var informationPartToRemove = state.workflow.Phases[phaseIndex].InformationParts[partIndex];\n informationPartToRemove.IsRemoved = true;\n removeSharingConnectionsForPath(informationPartToRemove.Path);\n informationPartToRemove.Title += \"-removed\";\n update(state.workflow);\n notifyService.notify('You removed ' + informationPartToRemove.Prompt);\n }\n\n function addInformationPartToInternalContent(informationPart) {\n state.workflow.InternalContent.InformationParts.push(informationPart);\n update(state.workflow);\n notifyService.notify('You added ' + informationPart.Prompt);\n }\n\n function removeInformationPartFromInternalContent(partIndex) {\n var informationPartToRemove = state.workflow.InternalContent.InformationParts[partIndex];\n informationPartToRemove.IsRemoved = true;\n removeSharingConnectionsForPath(informationPartToRemove.Path);\n informationPartToRemove.Title += \"-removed\";\n update(state.workflow);\n notifyService.notify('You removed ' + informationPartToRemove.Prompt);\n }\n\n function addPhase(titleAndPrompt) {\n state.workflow.Phases.push({\n Title: titleAndPrompt,\n Prompt: titleAndPrompt,\n Status: 'Pending',\n RequiredDownloads: [],\n InformationParts: [\n {\n $type: \"Ecap.Api.ViewModels.DocumentViewModel, Ecap.Api\",\n Title: 'Documents',\n Prompt: 'Documents',\n BlobSummaries: []\n },\n {\n $type: \"Ecap.Api.ViewModels.QuestionSetViewModel, Ecap.Api\",\n Title: 'Questions',\n Prompt: 'Questions',\n Questions: []\n }\n ],\n PercentageComplete: 0,\n EntitySearchIndex: state.workflow.EntitySearchIndex,\n AdminEntitySearchIndex: state.workflow.AdminEntitySearchIndex\n });\n update(state.workflow);\n notifyService.notify('You added a phase to the project');\n }\n\n function removePhase(phaseIndex) {\n var phaseToRemovePrompt = Object.assign({}, state.workflow.Phases[phaseIndex]).Prompt;\n state.workflow.Phases[phaseIndex].IsRemoved = true;\n\n var phasePath = state.workflow.Phases[phaseIndex].Path;\n removeSharingConnectionsForPath(phasePath);\n resolveNotesForPath(phasePath);\n\n state.workflow.Phases[phaseIndex].Title += \"-removed\";\n notifyService.notify('You removed ' + phaseToRemovePrompt);\n // push phase to back\n state.workflow.Phases.push(state.workflow.Phases.splice(phaseIndex, 1)[0]);\n\n // if the phase was the last one, we need to check the current index and move it back\n if (phaseIndex === state.workflow.CurrentPhaseIndex - 1) {\n state.workflow.CurrentPhaseIndex = state.workflow.CurrentPhaseIndex - 1;\n }\n\n update(state.workflow);\n }\n\n function saveUnderwritingNote(note) {\n var existingNote = state.workflow.UnderwritingNotes.find(function (noteItem) {\n return noteItem.NoteId === note.NoteId;\n });\n\n var description = '';\n if (existingNote) {\n var originalNote = angular.copy(existingNote.Note);\n existingNote.Note = note.Note;\n existingNote.UpdatedByUserName = state.sessionData.UserName;\n existingNote.UpdatedByEntityId = state.sessionData.EntityId;\n existingNote.UpdatedByEntity = state.sessionData.Entity;\n notifyService.notify('You updated a note');\n description = 'The note: \"' + originalNote + '\" was changed to \"' + note.Note + '\"';\n }\n else {\n var noteDate = (new Date()).toISOString();\n state.workflow.UnderwritingNotes.push({\n NoteId: note.NoteId,\n Note: note.Note,\n Path: note.Path,\n UpdatedDate: noteDate,\n UpdatedByUserName: state.sessionData.UserName,\n UpdatedByEntityId: state.sessionData.EntityId,\n UpdatedByEntity: state.sessionData.Entity,\n CreatedByUserName: note.CreatedByUserName,\n CreatedByEntityId: note.CreatedByEntityId,\n CreatedByEntity: note.CreatedByEntity,\n TargetUsers: note.TargetUsers || {}\n });\n note.UpdatedDate = noteDate;\n notifyService.notify('You added a note');\n description = 'The note \"' + note.Note + '\" was added';\n }\n\n note.UpdatedByUserName = state.sessionData.UserName;\n note.UpdatedByEntityId = state.sessionData.EntityId;\n note.UpdatedByEntity = state.sessionData.Entity;\n note.UpdatedByCleanName = state.sessionData.Entity\n ? state.sessionData.Entity.Contact.FirstName + ' ' + state.sessionData.Entity.Contact.LastName\n : 'N/A';\n update(state.workflow);\n\n var pathObject = getObjectFromPath(state.workflow, note.Path);\n\n mailRequestDataService.sendWorkflowUpdate({\n EntityId: state.sessionData.EntityId,\n WorkflowId: state.workflow.Id.split('/')[1],\n Path: note.Path,\n Context: 'Note',\n RecordedActivity:\n {\n // TODO: Use fields other than description or add this\n // to the actual workflow activities\n Description: description,\n UserName: state.sessionData.UserName,\n Date: (new Date()).toISOString(),\n UsersToNotify: pathObject.Partners.filter(function (partner) {\n return partner.Access.Notes;\n }).map(function (filteredPartner) {\n return filteredPartner.UserName;\n })\n }\n });\n }\n\n function resolveUnderwritingNote(note) {\n var description = '';\n for (var i = 0; i < state.workflow.UnderwritingNotes.length; i++) {\n var workflowNote = state.workflow.UnderwritingNotes[i];\n if (note.NoteId === workflowNote.NoteId) {\n workflowNote.IsResolved = true;\n description = 'The note \"' + note.Note + '\" was resolved';\n workflowNote.UpdatedByUserName = state.sessionData.UserName;\n workflowNote.UpdatedByEntityId = state.sessionData.EntityId;\n workflowNote.UpdatedByEntity = state.sessionData.Entity;\n workflowNote.UpdatedByCleanName = state.sessionData.Entity\n ? state.sessionData.Entity.Contact.FirstName + ' ' + state.sessionData.Entity.Contact.LastName\n : 'N/A';\n notifyService.notify('You resolved a note');\n break;\n }\n }\n\n var pathObject = getObjectFromPath(state.workflow, note.Path);\n var notesIdsToBeArchived = pathObject.ProjectUnderwritingNotes.filter(function (note) {\n return !note.IsDeleted;\n }).map(function (note) { return note.NoteId; });\n\n state.workflow.UnderwritingNoteArchives.push(\n {\n UnderwritingNotes: state.workflow.UnderwritingNotes.filter(function (note) {\n return notesIdsToBeArchived.indexOf(note.NoteId) !== -1;\n })\n }\n );\n\n state.workflow.UnderwritingNotes = state.workflow.UnderwritingNotes.filter(function (note) {\n return notesIdsToBeArchived.indexOf(note.NoteId) === -1;\n });\n\n pathObject.ProjectUnderwritingNotes = pathObject.ProjectUnderwritingNotes.filter(function (note) {\n return notesIdsToBeArchived.indexOf(note.NoteId) === -1;\n });\n\n update(state.workflow);\n\n mailRequestDataService.sendWorkflowUpdate({\n EntityId: state.sessionData.EntityId,\n WorkflowId: state.workflow.Id.split('/')[1],\n Path: note.Path,\n Context: 'Note',\n RecordedActivity:\n {\n // TODO: Use fields other than description or add this\n // to the actual workflow activities\n Description: description,\n UserName: state.sessionData.UserName,\n Date: (new Date()).toISOString(),\n UsersToNotify: pathObject.Partners.filter(function (partner) {\n return partner.Access.Notes;\n }).map(function (filteredPartner) {\n return filteredPartner.UserName;\n })\n }\n });\n }\n\n function removeUnderwritingNote(noteId) {\n var existingNote = state.workflow.UnderwritingNotes.find(function (note) {\n return note.NoteId === noteId;\n });\n\n if (!existingNote) {\n notifyService.notify('There was an error deleting the note', true);\n }\n\n existingNote.IsDeleted = true;\n notifyService.notify('You deleted a note');\n update(state.workflow);\n }\n\n function deleteUpload(phase, document, index) {\n var blobPath;\n var fileName;\n if (phase.isInternalFiles) {\n var internalInformationPartIndex = state.workflow.InternalContent.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n state.workflow.InternalContent.InformationParts[internalInformationPartIndex].BlobSummaries[index].IsRemoved = true;\n blobPath = state.workflow.InternalContent.InformationParts[internalInformationPartIndex].BlobSummaries[index].Path;\n fileName = state.workflow.InternalContent.InformationParts[internalInformationPartIndex].BlobSummaries[index].FileName;\n }\n else {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var informationPartIndex = matchingPhase.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n\n matchingPhase.InformationParts[informationPartIndex].BlobSummaries[index].IsRemoved = true;\n blobPath = matchingPhase.InformationParts[informationPartIndex].BlobSummaries[index].Path;\n fileName = matchingPhase.InformationParts[informationPartIndex].BlobSummaries[index].FileName;\n }\n\n // Remove sharing paths and resolve notes\n removeSharingConnectionsForPath(blobPath);\n resolveNotesForPath(blobPath);\n\n update(state.workflow);\n notifyService.notify('You deleted ' + fileName);\n }\n\n function updateDocumentPrompt(phase, document) {\n if (phase.isInternalFiles) {\n var internalInformationPartIndex = state.workflow.InternalContent.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n state.workflow.InternalContent.InformationParts[internalInformationPartIndex].Prompt = document.Prompt;\n }\n else {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var informationPartIndex = matchingPhase.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n\n matchingPhase.InformationParts[informationPartIndex].Prompt = document.Prompt;\n }\n update(state.workflow);\n }\n\n function updateRequiredDownloadPrompt(phase, requiredDownload) {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var requiredDownloadIndex = matchingPhase.RequiredDownloads.map(function (template) {\n return template.Title;\n }).indexOf(requiredDownload.Title);\n\n matchingPhase.RequiredDownloads[requiredDownloadIndex].Prompt = requiredDownload.Prompt;\n update(state.workflow);\n }\n\n function updateBlobSummmaryFileName(phase, document, blobSummary, index) {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var informationPartIndex = matchingPhase.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n\n matchingPhase.InformationParts[informationPartIndex].BlobSummaries[index].FileName = blobSummary.FileNameWithoutExtension + blobSummary.Extension;\n update(state.workflow);\n }\n\n function backupQuestionSet(questionSet) {\n var copy = angular.copy(questionSet);\n if (copy.originalQuestionSetData) {\n delete copy.originalQuestionSetData;\n }\n return copy;\n }\n\n function syncQuestionSet(phase, questionSet) {\n var isAlreadyComplete = false;\n if (phase.isInternalFiles) {\n var internalInformationPartIndex = state.workflow.InternalContent.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(document.Title);\n state.workflow.InternalContent.InformationParts[internalInformationPartIndex] = questionSet;\n }\n else {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var informationPartIndex = matchingPhase.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(questionSet.Title);\n\n isAlreadyComplete = isQuestionSetComplete(matchingPhase.InformationParts[informationPartIndex].originalQuestionSetData);\n\n matchingPhase.InformationParts[informationPartIndex] = questionSet;\n }\n\n // Check if quesrtion set is complete and send update\n if (!isAlreadyComplete)\n {\n if (isQuestionSetComplete(questionSet)) {\n var pathObject = getObjectFromPath(state.workflow, questionSet.Path);\n\n mailRequestDataService.sendWorkflowUpdate({\n EntityId: state.sessionData.EntityId,\n WorkflowId: state.workflow.Id.split('/')[1],\n Path: questionSet.Path,\n Context: 'InformationPart',\n RecordedActivity:\n {\n // TODO: Use fields other than description or add this\n // to the actual workflow activities\n Description: 'Question Set \"' + questionSet.Prompt + '\" was completed',\n UserName: state.sessionData.UserName,\n Date: (new Date()).toISOString(),\n UsersToNotify: pathObject.Partners.filter(function (partner) {\n return partner.Access.Notes;\n }).map(function (filteredPartner) { \n return filteredPartner.UserName;\n })\n }\n });\n }\n }\n\n update(state.workflow);\n }\n\n function syncDrawSchedule(phase, drawSchedule) {\n if (phase.isInternalFiles) {\n var internalInformationPartIndex = state.workflow.InternalContent.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(drawSchedule.Title);\n\n state.workflow.InternalContent[internalInformationPartIndex] = drawSchedule;\n }\n else {\n var matchingPhase = state.workflow.Phases.find(function (workflowPhase) {\n return phase.Title === workflowPhase.Title;\n });\n\n var informationPartIndex = matchingPhase.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(drawSchedule.Title);\n\n matchingPhase.InformationParts[informationPartIndex] = drawSchedule;\n }\n update(state.workflow);\n }\n\n function getObjectFromPath(workflow, path) {\n var pathObject = workflow;\n if (path === \"\" || !path) {\n return pathObject;\n }\n\n var pathParts = path.split(\"_\");\n var pathPartsLeftCount = pathParts.length;\n\n while (pathParts.length > 1) {\n if (pathParts[0] === 'Phase') {\n var phaseIndex = pathObject.Phases.indexOf(pathObject.Phases.find(function (phase) {\n return phase.Title === pathParts[1];\n }));\n\n pathObject = pathObject.Phases[phaseIndex];\n\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === 'RequiredDownload') {\n var requiredDownloadIndex = pathObject.RequiredDownloads.indexOf(\n pathObject.RequiredDownloads.find(function (requiredDownload) {\n return requiredDownload.Title === pathParts[1];\n }));\n\n pathObject = pathObject.RequiredDownloads[requiredDownloadIndex];\n\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === 'InformationPart') {\n var informationPartIndex = pathObject.InformationParts.indexOf(\n pathObject.InformationParts.find(function (informationPart) {\n return informationPart.Title === pathParts[1];\n }));\n\n pathObject = pathObject.InformationParts[informationPartIndex];\n\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === 'BlobSummary') {\n if (Array.isArray(pathObject.BlobSummaries)) {\n var blobIndex = pathObject.BlobSummaries.indexOf(\n pathObject.BlobSummaries.find(function (blob) {\n return blob.BlobReference === pathParts[1];\n }));\n\n pathObject = pathObject.BlobSummaries[blobIndex];\n } else {\n pathObject = pathObject.BlobSummary;\n }\n\n pathParts.splice(0, 2);\n }\n\n if (pathParts[0] === 'InternalContent') {\n pathObject = pathObject.InternalContent;\n pathObject.isInternalFiles = true;\n\n pathParts.splice(0, 1);\n }\n\n if (pathPartsLeftCount === pathParts.length) {\n throw new Error('Could not parse path ' + path);\n }\n\n pathPartsLeftCount = pathParts.length;\n }\n\n return pathObject;\n }\n\n function getRouteDataFromPath(workflow, path) {\n var pathObject = workflow;\n if (path === \"\") {\n return {\n route: 'workflow.roadmap'\n }\n }\n\n var pathParts = path.split(\"_\");\n\n if (pathParts[0] === 'Phase') {\n var phaseIndex = pathObject.Phases.indexOf(pathObject.Phases.find(function (phase) {\n return phase.Title === pathParts[1];\n }));\n\n // handle removed phase\n if (state.workflow.Phases[phaseIndex].IsRemoved) {\n return {\n route: 'workflow.roadmap'\n };\n }\n\n return pathParts.length > 2\n ? {\n route: 'workflow.navigator.phase',\n phaseIndex: phaseIndex + 1\n }\n : {\n route: 'workflow.roadmap'\n }\n } else if (pathParts[0] === 'InternalContent') {\n return {\n route: 'workflow.internalfiles'\n }\n } else {\n return {\n route: 'workflow.roadmap'\n }\n }\n }\n\n function setThumbnails(thumbnails) {\n state.thumbnails = thumbnails;\n $rootScope.$emit('thumbnailsChanged');\n }\n\n function getThumbnails() {\n return state.thumbnails;\n }\n\n function getPartnersForPath(path) {\n var object = getObjectFromPath(state.workflow, path);\n return object.Partners;\n }\n\n return {\n update: update,\n get: get,\n getPartners: getPartners,\n getReferrals: getReferrals,\n getObjectFromPath: getObjectFromPath,\n getRouteDataFromPath: getRouteDataFromPath,\n getCleanPath: getCleanPath,\n getPhasePercentageComplete: getPhasePercentageComplete,\n addRequiredDownloadToPhase: addRequiredDownloadToPhase,\n removeRequiredDownloadFromPhase: removeRequiredDownloadFromPhase,\n addInformationPartToPhase: addInformationPartToPhase,\n removeInformationPartFromPhase: removeInformationPartFromPhase,\n addInformationPartToInternalContent: addInformationPartToInternalContent,\n removeInformationPartFromInternalContent: removeInformationPartFromInternalContent,\n addPhase: addPhase,\n removePhase: removePhase,\n deleteUpload: deleteUpload,\n syncQuestionSet: syncQuestionSet,\n syncDrawSchedule: syncDrawSchedule,\n updateDocumentPrompt: updateDocumentPrompt,\n saveUnderwritingNote: saveUnderwritingNote,\n removeUnderwritingNote: removeUnderwritingNote,\n resolveUnderwritingNote: resolveUnderwritingNote,\n setThumbnails: setThumbnails,\n getThumbnails: getThumbnails,\n getPartnersForPath: getPartnersForPath,\n resolveNotesForPath: resolveNotesForPath,\n backupQuestionSet: backupQuestionSet,\n updateRequiredDownloadPrompt: updateRequiredDownloadPrompt,\n updateBlobSummmaryFileName: updateBlobSummmaryFileName\n };\n }\n\n workflowStateService.$inject = ['$rootScope', '$log', '$filter', '$timeout',\n 'workflowDataService', 'notifyService', 'sessionDataService',\n 'mailRequestDataService', 'workflowConfigurationDataService'];\n\n angular.module('ecap.workflow').factory('workflowStateService', workflowStateService);\n})();\n","(function () {\n 'use strict';\n\n function workflowThumbnailsService(thumbnailsDataService) {\n\n function getThumbnails(workflowId, workflowData) {\n var allPaths = [];\n workflowData.Phases.forEach(function (phase) {\n var informationParts = phase.InformationParts.filter(function (i) {\n return i.Access.View && !i.IsRemoved && i.BlobSummaries;\n });\n\n var blobSummaryPaths = [];\n informationParts.forEach(function (informationPart) {\n var blobSummaries = informationPart.BlobSummaries.filter(function (blobSummary) {\n return !blobSummary.IsRemoved;\n });\n blobSummaryPaths = blobSummaryPaths.concat(blobSummaries.map(function (blob) {\n return blob.Path;\n }));\n });\n\n allPaths = allPaths.concat(blobSummaryPaths);\n var requiredDownloadPaths = phase.RequiredDownloads.map(function (filtered) {\n return filtered.Path;\n });\n allPaths = allPaths.concat(requiredDownloadPaths);\n });\n\n return thumbnailsDataService.loadThumbnailsForObjectPaths('workflows/' + workflowId,\n allPaths\n ).then(function (data) {\n Object.keys(data).forEach(function (key) {\n var matchingThumbnailObj = data[key];\n if (matchingThumbnailObj.Thumbnails && matchingThumbnailObj.Thumbnails.length > 0) {\n var prefix = matchingThumbnailObj.IsTemplate ? 'gettemplate' : 'getupload';\n matchingThumbnailObj.ThumbnailUrl = '/files/' + prefix + '?blobreference=' + matchingThumbnailObj.Thumbnails[0] + '&fileName='+ matchingThumbnailObj.Thumbnails[0];\n }\n })\n return data;\n });\n }\n\n return {\n getThumbnails: getThumbnails\n };\n }\n\n workflowThumbnailsService.$inject = ['thumbnailsDataService'];\n\n angular.module('ecap.workflow').factory('workflowThumbnailsService', workflowThumbnailsService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.requestForProposal', []);\n})();","(function () {\n 'use strict';\n\n function requestForProposalConfig($stateProvider) {\n var offset = 0;\n $stateProvider\n .state('rfp', {\n url: '/rfps/review/:rfpId',\n templateUrl: 'requestForProposal/templates/requestForProposal.html',\n controller: 'requestForProposalController as requestForProposalContainerCtrl',\n resolve: {\n sessionData: [\n \"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }\n ],\n rfpData: [\n \"$stateParams\", \"requestForProposalDataService\", \"requestForProposalStateService\",\n function($stateParams, requestForProposalDataService, requestForProposalStateService) {\n return requestForProposalDataService.loadRequestForProposal('requestforproposals/' + $stateParams.rfpId).then(function(data) {\n return requestForProposalStateService.update(data, true);\n });\n }\n ]\n },\n redirectTo: 'rfp.basicInformation'\n })\n .state('rfp.basicInformation', {\n url: '/summary',\n templateUrl: 'requestForProposal/templates/requestForProposalBasicInformation.html',\n controller: 'requestForProposalBasicInformationController as requestForProposalBasicInformationCtrl',\n resolve: {\n milestones: function () {\n return ['RequestForProposal'];\n }\n }\n })\n .state('rfp.content', {\n url: '/content',\n templateUrl: 'requestForProposal/templates/requestForProposalContent.html',\n controller: 'requestForProposalContentController as requestForProposalContentCtrl',\n resolve: {\n milestones: function () {\n return ['RequestForProposal', 'RequestForProposalContent'];\n }\n }\n })\n .state('rfp.findRespondents', {\n url: '/findrespondents',\n templateUrl: 'requestForProposal/templates/requestForProposalFindRespondents.html',\n controller: 'requestForProposalFindRespondentsController as requestForProposalFindRespondentsCtrl',\n resolve: {\n entitySearchConfiguration: [\n 'rfpData', 'searchConfigurationDataService', function(rfpData, searchConfigurationDataService) {\n // TODO add the workflow id for owkrflow specific searches\n return searchConfigurationDataService.loadEntitiesSearch(rfpData.EntitySearchIndex).then(\n function(data) {\n return data;\n });\n }\n ],\n adminEntitySearchConfiguration: [\n 'rfpData', 'searchConfigurationDataService', function (rfpData, searchConfigurationDataService) {\n // TODO add the rfp id for rfp specific searches\n if (rfpData.AdminEntitySearchIndex !== null) {\n return searchConfigurationDataService.loadEntitiesSearch(rfpData.AdminEntitySearchIndex)\n .then(function (data) {\n return data;\n });\n }\n else {\n return null;\n }\n }\n ],\n rfpResponses: [\n 'rfpData', 'requestForProposalResponseDataService', function(rfpData, requestForProposalResponseDataService) {\n return requestForProposalResponseDataService\n .loadRequestForProposalResponsesForRequestForProposal(rfpData.Id).then(function(data) {\n return data;\n });\n }\n ],\n milestones: function() {\n return ['RequestForProposal', 'RequestForProposalFindRespondents'];\n }\n }\n })\n .state('rfp.responseContent', {\n url: '/responsecontent',\n templateUrl: 'requestForProposal/templates/requestForProposalResponseContent.html',\n controller: 'requestForProposalResponseContentController as requestForProposalResponseContentCtrl',\n resolve: {\n milestones: function () {\n return ['RequestForProposal', 'RequestForProposalResponseContent'];\n }\n }\n })\n .state('rfp.responses', {\n url: '/responses',\n templateUrl: 'requestForProposal/templates/requestForProposalResponses.html',\n controller: 'requestForProposalResponsesController as requestForProposalResponsesCtrl',\n resolve: {\n rfpResponses: [\n 'rfpData', 'requestForProposalResponseDataService', function(rfpData, requestForProposalResponseDataService) {\n return requestForProposalResponseDataService\n .loadRequestForProposalResponsesForRequestForProposal(rfpData.Id).then(function(data) {\n return data;\n });\n }\n ],\n milestones: function () {\n return ['RequestForProposal', 'RequestForProposalResponses'];\n }\n }\n })\n .state('rfp.responses.single',\n {\n url: '/:rfpResponseId'\n })\n .state('rfp.responses.single.details', {\n url: '/details',\n controller: 'requestForProposalResponsesController as requestForProposalResponsesCtrl',\n onEnter: ['requestForProposalResponseDataService', 'scrollingService', '$stateParams', '$state', '$uibModal', '$timeout',\n function (requestForProposalResponseDataService, scrollingService, $stateParams, $state, $uibModal, $timeout) {\n $timeout(function() {\n $uibModal.open({\n templateUrl: \"requestForProposal/templates/requestForProposalSingleResponse.html\",\n size: 'lg',\n resolve: {\n rfpResponseData: function() {\n return requestForProposalResponseDataService.loadRequestForProposalResponse(\n 'requestforproposalresponses/' + $stateParams.rfpResponseId).then(function(data) {\n return data;\n });\n }\n },\n controller: [\n '$scope', 'rfpResponseData', function($scope, rfpResponseData) {\n $scope.rfpResponseData = rfpResponseData;\n\n $scope.dismiss = function() {\n $scope.$dismiss();\n };\n\n $scope.close = function() {\n $scope.$close(true);\n };\n }\n ]\n }).result.finally(function () {\n $state.go('^');\n });\n });\n }]\n })\n .state('rfpResponse', {\n url: '/rfpresponses/review/:rfpResponseId',\n templateUrl: 'requestForProposal/templates/requestForProposalResponse.html',\n controller: 'requestForProposalResponseController as requestForProposalResponseContainerCtrl',\n resolve: {\n sessionData: [\n \"sessionDataService\", function (sessionDataService) {\n return sessionDataService.loadSession().then(function (data) {\n return data;\n });\n }\n ],\n rfpResponseData: [\n \"$stateParams\", \"requestForProposalResponseDataService\", \"requestForProposalResponseStateService\",\n function ($stateParams, requestForProposalResponseDataService, requestForProposalResponseStateService) {\n return requestForProposalResponseDataService.loadRequestForProposalResponse(\n 'requestforproposalresponses/' + $stateParams.rfpResponseId).then(function(data) {\n return requestForProposalResponseStateService.update(data, true);\n });\n }\n ]\n },\n redirectTo: 'rfpResponse.responseEditor'\n })\n .state('rfpResponse.rfpSummary', {\n url: '/rfpsummary',\n templateUrl: 'requestForProposal/templates/requestForProposalResponseRfpSummary.html',\n controller: 'requestForProposalResponseRfpSummaryController as requestForProposalResponseRfpSummaryCtrl',\n resolve: {\n milestones: function () {\n return ['RequestForProposalResponse', 'RequestForProposalResponseRfpSummary'];\n }\n }\n })\n .state('rfpResponse.responseEditor', {\n url: '/editor',\n templateUrl: 'requestForProposal/templates/requestForProposalResponseEditor.html',\n controller: 'requestForProposalResponseEditorController as requestForProposalResponseEditorCtrl',\n resolve: {\n milestones: function () {\n return ['RequestForProposalResponse', 'RequestForProposalResponseEditor'];\n }\n }\n });\n }\n\n requestForProposalConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.requestForProposal').config(requestForProposalConfig);\n})();","(function () {\n 'use strict';\n\n function deleteRequestForProposalModalController($scope, $uibModalInstance, notifyService, requestForProposalDataService,\n rfpId) {\n $scope.ok = function () {\n requestForProposalDataService.deleteRequestForProposal(rfpId).then(\n function() {\n notifyService.notify('This RFP has been deleted');\n });\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.close();\n }\n }\n\n deleteRequestForProposalModalController.$inject = ['$scope', '$uibModalInstance', 'notifyService',\n 'requestForProposalDataService', 'rfpId'];\n\n angular.module('ecap.requestForProposal').controller('deleteRequestForProposalModalController', deleteRequestForProposalModalController);\n})();\n","(function () {\n 'use strict';\n\n function deleteRequestForProposalResponseModalController($scope, $uibModalInstance, notifyService, requestForProposalResponseDataService,\n rfpResponseId, entityName) {\n\n $scope.entityName = entityName;\n $scope.ok = function () {\n requestForProposalResponseDataService.deleteRequestForProposalResponse(rfpResponseId).then(\n function() {\n notifyService.notify(entityName ?\n 'This RFP response for ' + entityName + ' has been deleted' :\n 'The RFP response has been deleted');\n });\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.close();\n }\n }\n\n deleteRequestForProposalResponseModalController.$inject = ['$scope', '$uibModalInstance', 'notifyService',\n 'requestForProposalResponseDataService', 'rfpResponseId', 'entityName'];\n\n angular.module('ecap.requestForProposal').controller('deleteRequestForProposalResponseModalController', deleteRequestForProposalResponseModalController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalBasicInformationController($scope, $timeout, $state, $uibModal, $window,\n milestones, milestoneModalService, notifyService, requestForProposalStateService) {\n var vm = this;\n vm.rfpData = requestForProposalStateService.get();\n vm.rfpId = vm.rfpData.Id.split('/')[1];\n\n vm.modelOptions = {\n updateOn: 'default blur',\n debounce: {\n \"default\": 1000,\n \"blur\": 0\n }\n };\n\n vm.tinymceOptions = {\n height: \"200\",\n menubar: false,\n statusbar: false,\n resize: false,\n plugins: [\n \"advlist autolink link paste\"\n ],\n advlist_bullet_styles: \"disc\",\n toolbar: \"undo redo | bold italic | bullist | link\",\n valid_elements: '*[*]',\n debounce: true\n };\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.updateRfp = function (fieldName) {\n $timeout(function() {\n if (fieldName) {\n notifyService.notify('You updated the ' + fieldName + 'for this RFP');\n }\n\n requestForProposalStateService.update(vm.rfpData);\n }, 0);\n }\n\n var formWatcher = $scope.$watch(function() { return $scope.BasicInformationForm &&\n $scope.BasicInformationForm.$valid },\n function (newVal) {\n vm.canAdvance = newVal;\n });\n\n vm.openDeleteAlert = function (state) {\n var modalInstance = $uibModal.open({\n templateUrl: 'deleteRequestForProposalModal',\n controller: 'deleteRequestForProposalModalController',\n resolve: {\n rfpId: function () {\n return vm.rfpData.Id;\n }\n }\n });\n\n return modalInstance.result.then(function (wasDeleted) {\n if (wasDeleted) {\n $window.location = '/dashboard';\n }\n });\n }\n\n $scope.$on(\"$destroy\", function () {\n formWatcher();\n });\n }\n\n requestForProposalBasicInformationController.$inject = ['$scope', '$timeout', '$state', '$uibModal', '$window',\n 'milestones', 'milestoneModalService', 'notifyService', 'requestForProposalStateService'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalBasicInformationController', requestForProposalBasicInformationController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalContentController($scope, $timeout, $state, $rootScope,\n milestones, milestoneModalService, notifyService, requestForProposalStateService, toastr) {\n var vm = this;\n vm.rfpData = requestForProposalStateService.get();\n vm.rfpId = vm.rfpData.Id.split('/')[1];\n vm.canAdvance = false;\n vm.mode = 'Editor';\n vm.canDeleteInformationPart = true;\n vm.parentData = vm.rfpData;\n vm.modelOptions = {\n updateOn: 'default blur',\n debounce: {\n \"default\": 1000,\n \"blur\": 0\n }\n };\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.updateRfp = function (fieldName) {\n $timeout(function() {\n if (fieldName) {\n notifyService.notify('You updated the ' + fieldName + 'for this RFP');\n }\n\n requestForProposalStateService.update(vm.rfpData);\n }, 0);\n }\n\n vm.toggleRfpContentReorderMode = function () {\n if (!$rootScope.rfpContentReorderMode) {\n $rootScope.rfpContentReorderModeToast = toastr.info('You are currently reordering the rfp content',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.rfpContentReorderMode = false;\n }\n });\n } else {\n if ($rootScope.rfpContentReorderModeToast) {\n toastr.clear($rootScope.rfpContentReorderModeToast);\n delete $rootScope.rfpContentReorderModeToast;\n }\n }\n\n $rootScope.rfpContentReorderMode = !$rootScope.rfpContentReorderMode;\n }\n\n vm.toggleRfpContentPreviewMode = function () {\n if (!$rootScope.rfpContentPreviewMode) {\n $rootScope.rfpContentPreviewModeToast = toastr.info('You are currently previewing the rfp content',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.rfpContentPreviewMode = false;\n vm.mode = 'Editor';\n }\n });\n } else {\n if ($rootScope.rfpContentPreviewModeToast) {\n toastr.clear($rootScope.rfpContentPreviewModeToast);\n delete $rootScope.rfpContentPreviewModeToast;\n }\n }\n\n $rootScope.rfpContentPreviewMode = !$rootScope.rfpContentPreviewMode;\n vm.mode = $rootScope.rfpContentPreviewMode ? 'Display' : 'Editor';\n }\n\n vm.updateDocumentPrompt = function (documentData) {\n requestForProposalStateService.updateDocumentPromptForRfpContent(documentData);\n }\n\n vm.deleteUpload = function (documentData, blobIndex) {\n requestForProposalStateService.deleteUploadForRfpContent(documentData, blobIndex);\n }\n\n vm.removeInformationPart = function (informationPart, partIndex) {\n requestForProposalStateService.removeInformationPartFromRfpContent(informationPart, partIndex);\n }\n\n vm.syncQuestionSet = function (questionSetData) {\n requestForProposalStateService.syncRfpContentQuestionSet(questionSetData);\n }\n\n vm.addingInformationPartType = '';\n vm.activateAddInformationPart = function (type) {\n vm.addingInformationPartType = type;\n vm.isAddingInformationPart = !vm.isAddingInformationPart;\n }\n\n vm.addInformationPart = function (informationPart) {\n requestForProposalStateService.addInformationPartToRfpContent(informationPart);\n }\n }\n\n requestForProposalContentController.$inject = ['$scope', '$timeout', '$state', '$rootScope',\n 'milestones', 'milestoneModalService', 'notifyService', 'requestForProposalStateService', 'toastr'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalContentController', requestForProposalContentController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalController($scope, $rootScope, notifyService, rfpData, requestForProposalStateService, toastr) {\n var vm = this;\n vm.rfpId = rfpData.Id.split('/')[1];\n vm.rfpData = rfpData;\n\n vm.tabs = {\n 'rfp.basicInformation': {\n header: 'Summary',\n active: true,\n additionalStates: ['rfp.search', 'rfp.informationParts']\n },\n 'rfp.content': {\n header: 'Content',\n active: false,\n additionalStates: []\n },\n 'rfp.findRespondents': {\n header: 'Find Respondents',\n active: false,\n additionalStates: []\n },\n 'rfp.responseContent': {\n header: 'Response Content',\n active: false,\n additionalStates: []\n },\n 'rfp.responses': {\n header: 'Responses',\n active: false,\n additionalStates: ['rfp.responses.single']\n }\n };\n\n vm.canEditContent = true;\n vm.canEditResponseContent = true;\n vm.canFindRespondents = true;\n vm.canEditResponseContent = true;\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.changeTab(toState.name);\n $('html,body').scrollTop(0);\n\n if ($rootScope.rfpContentReorderMode && $rootScope.rfpContentReorderModeToast) {\n toastr.clear($rootScope.rfpContentReorderModeToast);\n }\n\n if ($rootScope.rfpContentPreviewMode && $rootScope.rfpContentPreviewModeToast) {\n toastr.clear($rootScope.rfpContentPreviewModeToast);\n }\n\n $rootScope.rfpContentReorderMode = false;\n $rootScope.rfpContentPreviewMode = false;\n });\n\n $scope.$on('rfpUpdated', function () {\n vm.rfpData = requestForProposalStateService.get();\n });\n\n $scope.$on('fileUploaded', function (event, args) {\n var documentObject = vm.rfpData.InformationParts.find(function(informationPart) {\n return args.parent.Title === informationPart.Title;\n });\n\n if (!documentObject.BlobSummaries) {\n documentObject.BlobSummaries = [];\n }\n\n documentObject.BlobSummaries = documentObject.BlobSummaries.concat(args.blobs);\n requestForProposalStateService.update(vm.rfpData);\n notifyService.notify('You uploaded ' + args.blobs[0].FileName);\n });\n\n vm.changeTab = function (tabName) {\n for (var property in vm.tabs) {\n if (vm.tabs.hasOwnProperty(property)) {\n vm.tabs[property].active = property === tabName || (\n vm.tabs[property].additionalStates &&\n vm.tabs[property].additionalStates.indexOf(tabName) !== -1);\n }\n }\n }\n\n\n }\n\n requestForProposalController.$inject = ['$scope', '$rootScope', 'notifyService', 'rfpData', 'requestForProposalStateService', 'toastr'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalController', requestForProposalController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalFindRespondentsController($scope, $timeout, $state, $filter, milestones,\n milestoneModalService, notifyService, requestForProposalStateService, requestForProposalResponseDataService, mailRequestDataService,\n sessionData, entitySearchConfiguration, adminEntitySearchConfiguration, rfpResponses) {\n var vm = this;\n vm.rfpData = requestForProposalStateService.get();\n vm.rfpId = vm.rfpData.Id.split('/')[1];\n vm.canAdvance = false;\n vm.config = entitySearchConfiguration;\n vm.compositeAttributes = [];\n vm.showResults = vm.rfpData.ApplicantAttributes.length > 0;\n vm.canAdvance = vm.rfpData.ApplicantAttributes.length > 0;\n vm.pendingUpdate = false;\n vm.sessionData = sessionData;\n vm.rfpResponses = rfpResponses;\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.activateSearchOptions = function () {\n vm.rfpData.ApplicantAttributes = [];\n vm.showResults = false;\n vm.pendingUpdate = true;\n }\n\n // NEW STUFF\n\n vm.rfpRespondentsToIgnore = [];\n vm.attributes = [];\n vm.showCriteria = false;\n\n // have to map pre-existing attributes for the searchDataService\n vm.rfpData.ApplicantAttributes.forEach(function (attribute) {\n attribute.value = attribute.Value;\n });\n\n vm.results = [];\n vm.showResults = false;\n vm.config = entitySearchConfiguration;\n vm.compositeAttributes = [];\n updateRespondentsToIgnore();\n\n function updateRespondentsToIgnore() {\n // when we are an admin, we can select applicants\n vm.rfpRespondentsToIgnore = vm.rfpResponses.map(function (response) {\n return {\n 'EntityId': response.EntityId\n }\n });\n }\n\n if (vm.sessionData.IsAdminEntity && adminEntitySearchConfiguration) {\n vm.hasAdminSearch = true;\n vm.adminApplicantAttributes = {};\n vm.adminAttributes = {};\n vm.adminResults = [];\n vm.showAdminResults = true;\n vm.adminConfig = adminEntitySearchConfiguration;\n vm.adminPageIndex = 0;\n vm.adminPageSize = 5;\n vm.adminTotalItems = 0;\n if (adminEntitySearchConfiguration.DefaultPageSize) {\n vm.adminPageSize = adminEntitySearchConfiguration.DefaultPageSize;\n };\n }\n\n $scope.$watch(function () { return vm.results; },\n function (newVal) {\n if (newVal) {\n vm.compositeAttributes = _.uniq(vm.rfpData.ApplicantAttributes.concat(vm.attributes),\n function(item) { return item.Name; });\n vm.updateNoResults();\n }\n }\n );\n\n vm.updateNoResults = function () {\n var resultsCopy = vm.results.filter(function () { return true; });\n var filteredResults = $filter('excludeByArrayProperty')(resultsCopy, 'Id', vm.rfpRespondentsToIgnore, 'EntityId');\n vm.noResults = filteredResults.length === 0;\n\n vm.hasCompositeAttributes = (vm.compositeAttributes.length !== 0);\n }\n\n $scope.$watch(function () { return vm.adminResults; },\n function (newVal) {\n if (newVal) {\n vm.updateNoAdminResults();\n }\n }\n );\n\n vm.updateNoAdminResults = function () {\n var adminResultsCopy = vm.adminResults.filter(function () { return true; });\n var filteredResults = $filter('excludeByArrayProperty')(adminResultsCopy, 'Id', vm.rfpRespondentsToIgnore, 'EntityId');\n vm.noAdminResults = filteredResults.length === 0;\n }\n\n vm.contactRespondent = function (entity) {\n mailRequestDataService.sendConnectionRequest({\n RequesterEntityId: sessionData.EntityId,\n RequesteeEntityId: entity.Id\n }).then(function (data) {\n notifyService.notify('We sent a notification to ' + entity.CompanyDetails.Name);\n });\n }\n\n vm.toggleRespondent = function (entity) {\n // create rfp response\n var newRfpResponse = {\n RequestForProposalId: vm.rfpData.Id,\n EntityId: entity.Id\n };\n\n if (!entity.isSelected) {\n requestForProposalResponseDataService.createRequestForProposalResponse(newRfpResponse).then(function (data) {\n vm.rfpResponses.push(data);\n notifyService.notify('You made an rfp response available for ' + data.RequestForProposalResponseEntity.CompanyDetails.Name);\n\n mailRequestDataService.sendRequestForProposalResponseCreated({\n RequestForProposalId: vm.rfpData.Id,\n RequestForProposalResponseId: data.Id,\n EntityId: vm.sessionData.EntityId\n });\n });\n }\n else {\n var matchingResponse = vm.rfpResponses.find(function (response) {\n return response.EntityId === entity.Id;\n });\n\n if (!matchingResponse) {\n throw new Error('Could not find rfp response to delete');\n }\n\n requestForProposalResponseDataService.deleteRequestForProposalResponse(matchingResponse.Id)\n .then(function (data) {\n var removedResponse = vm.rfpResponses.splice(vm.rfpResponses.indexOf(matchingResponse), 1);\n notifyService.notify('You deleted the rfp response for ' + removedResponse[0].RequestForProposalResponseEntity.CompanyDetails.Name);\n })\n .catch(function (error) {\n notifyService.notify('There was an error deleting the rfp response');\n });\n }\n\n entity.isSelected = !entity.isSelected;\n updateRespondentsToIgnore();\n }\n\n vm.selectEntityActions = vm.sessionData.IsAdminEntity\n ? {\n toggleRespondent: {\n label: \"Select\",\n call: vm.toggleRespondent\n }\n }\n : {\n contactRespondent: {\n label: \"Contact\",\n call: vm.contactRespondent\n },\n toggleRespondent: {\n label: \"Select\",\n call: vm.toggleRespondent\n }\n };\n\n vm.adminSelectEntityActions = {\n toggleRespondent: {\n label: \"Select\",\n call: vm.toggleRespondent\n }\n }\n }\n\n requestForProposalFindRespondentsController.$inject = ['$scope', '$timeout', '$state', '$filter', 'milestones',\n 'milestoneModalService', 'notifyService', 'requestForProposalStateService', 'requestForProposalResponseDataService', 'mailRequestDataService',\n 'sessionData', 'entitySearchConfiguration', 'adminEntitySearchConfiguration', 'rfpResponses'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalFindRespondentsController', requestForProposalFindRespondentsController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponseContentController($scope, $timeout, $state, $rootScope,\n milestones, milestoneModalService, notifyService, requestForProposalStateService, toastr) {\n var vm = this;\n vm.rfpData = requestForProposalStateService.get();\n vm.rfpId = vm.rfpData.Id.split('/')[1];\n vm.canAdvance = false;\n vm.mode = 'Configure';\n vm.canDeleteInformationPart = true;\n vm.parentData = vm.rfpData.ResponseContent;\n vm.modelOptions = {\n updateOn: 'default blur',\n debounce: {\n \"default\": 1000,\n \"blur\": 0\n }\n };\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.updateRfp = function (fieldName) {\n $timeout(function() {\n if (fieldName) {\n notifyService.notify('You updated the ' + fieldName + 'for the RFP Response');\n }\n\n requestForProposalStateService.update(vm.rfpData);\n }, 0);\n }\n\n vm.togglerfpResponseContentReorderMode = function () {\n if (!$rootScope.rfpResponseContentReorderMode) {\n $rootScope.rfpResponseContentReorderModeToast = toastr.info('You are currently reordering the rfp response content',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.rfpResponseContentReorderMode = false;\n }\n });\n } else {\n if ($rootScope.rfpResponseContentReorderModeToast) {\n toastr.clear($rootScope.rfpResponseContentReorderModeToast);\n delete $rootScope.rfpResponseContentReorderModeToast;\n }\n }\n\n $rootScope.rfpResponseContentReorderMode = !$rootScope.rfpResponseContentReorderMode;\n }\n\n vm.toggleRfpResponseContentPreviewMode = function () {\n if (!$rootScope.rfpResponseContentPreviewMode) {\n $rootScope.rfpResponseContentPreviewModeToast = toastr.info('You are currently previewing the rfp response content',\n {\n timeOut: 0,\n extendedTimeOut: 0,\n closeButton: true,\n closeHtml: \"\",\n onHidden: function () {\n $rootScope.rfpResponseContentPreviewMode = false;\n vm.mode = 'Configure';\n }\n });\n } else {\n if ($rootScope.rfpResponseContentPreviewModeToast) {\n toastr.clear($rootScope.rfpResponseContentPreviewModeToast);\n delete $rootScope.rfpResponseContentPreviewModeToast;\n }\n }\n\n $rootScope.rfpResponseContentPreviewMode = !$rootScope.rfpResponseContentPreviewMode;\n vm.mode = $rootScope.rfpResponseContentPreviewMode ? 'Display' : 'Configure';\n }\n\n vm.updateDocumentPrompt = function (documentData) {\n requestForProposalStateService.updateDocumentPromptForResponseContent(documentData);\n }\n\n vm.deleteUpload = function (documentData, blobIndex) {\n requestForProposalStateService.deleteUploadForResponseContent(documentData, blobIndex);\n }\n\n vm.removeInformationPart = function (informationPart, partIndex) {\n requestForProposalStateService.removeInformationPartFromResponseContent(informationPart, partIndex);\n }\n\n vm.syncQuestionSet = function (questionSetData) {\n requestForProposalStateService.syncRfpResponseQuestionSet(questionSetData);\n }\n\n vm.addingInformationPartType = '';\n vm.activateAddInformationPart = function (type) {\n vm.addingInformationPartType = type;\n vm.isAddingInformationPart = !vm.isAddingInformationPart;\n }\n\n vm.addInformationPart = function (informationPart) {\n requestForProposalStateService.addInformationPartToResponseContent(informationPart);\n }\n }\n\n requestForProposalResponseContentController.$inject = ['$scope', '$timeout', '$state', '$rootScope',\n 'milestones', 'milestoneModalService', 'notifyService', 'requestForProposalStateService', 'toastr'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalResponseContentController', requestForProposalResponseContentController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponseController($scope, rfpResponseData, requestForProposalResponseStateService) {\n var vm = this;\n vm.rfpResponseId = rfpResponseData.Id.split('/')[1];\n vm.rfpResponseData = rfpResponseData;\n\n vm.tabs = {\n 'rfpResponse.rfpSummary': {\n header: 'RFP Summary',\n active: true,\n additionalStates: []\n },\n 'rfpResponse.responseEditor': {\n header: 'RFP Response',\n active: false,\n additionalStates: []\n }\n };\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n vm.changeTab(toState.name);\n $('html,body').scrollTop(0);\n });\n\n $scope.$on('rfpResponsUpdated', function () {\n vm.rfpResponseData = requestForProposalResponseStateService.get();\n });\n\n vm.changeTab = function (tabName) {\n for (var property in vm.tabs) {\n if (vm.tabs.hasOwnProperty(property)) {\n vm.tabs[property].active = property === tabName || (\n vm.tabs[property].additionalStates &&\n vm.tabs[property].additionalStates.indexOf(tabName) !== -1);\n }\n }\n }\n }\n\n requestForProposalResponseController.$inject = ['$scope', 'rfpResponseData', 'requestForProposalResponseStateService'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalResponseController', requestForProposalResponseController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponseEditorController($scope, $timeout, $state, $uibModal, $window,\n notifyService, requestForProposalResponseStateService, requestForProposalResponseDataService, sessionData, milestones,\n mailRequestDataService, milestoneModalService) {\n\n var vm = this;\n vm.rfpResponseData = requestForProposalResponseStateService.get();\n vm.rfpResponseId = vm.rfpResponseData.Id.split('/')[1];\n vm.sessionData = sessionData;\n\n vm.rfpResponseData.hasPermissionsSet = true;\n vm.rfpResponseData.ResponseContent.InformationParts.forEach(function (informationPart) {\n informationPart.canDelete = false;\n informationPart.reorderMode = false;\n informationPart.Access = {\n View: true,\n Edit: false\n }\n });\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.contactRespondent = function (entity) {\n notifyService.notify('We sent a notification to ' + entity.CompanyDetails.Name);\n }\n\n vm.rfpEntityActions = {\n contactRespondent: {\n label: \"Contact\",\n call: vm.contactRespondent\n }\n }\n\n vm.updateRfpResponse = function (submit) {\n vm.rfpResponseData.ResponseStatus = submit ? 'ApplicationSubmitted' : 'ApplicationInProgress';\n if (!vm.rfpResponseData.HasBeenSubmitted) {\n vm.rfpResponseData.HasBeenSubmitted = true;\n }\n\n requestForProposalResponseStateService.update(vm.rfpResponseData);\n\n if (submit) {\n mailRequestDataService.sendRequestForProposalResponseUpdate({\n RequestForProposalId: vm.rfpResponseData.RequestForProposalId,\n RequestForProposalResponseId: vm.rfpResponseData.Id,\n EntityId: vm.sessionData.EntityId,\n RecordedActivity: {\n Date: (new Date()).toISOString(),\n Description: 'The response status was changed to \\'Application Submitted\\'',\n UsersToNotify: [],\n UserName: vm.sessionData.EntityId\n }\n });\n\n notifyService.notify(\n 'Your response has been submitted. You are being redirected to your activities. Click here to go there now.');\n\n $timeout(function() {\n $window.location = '/entities/home/activities';\n },\n 3000);\n }\n else {\n notifyService.notify('Your response has been updated.');\n }\n }\n\n vm.openDeleteAlert = function () {\n var modalInstance = $uibModal.open({\n templateUrl: 'deleteRequestForProposalResponseModal',\n controller: 'deleteRequestForProposalResponseModalController',\n resolve: {\n rfpResponseId: function () {\n return vm.rfpResponseData.Id;\n },\n entityName: function () { return ''; }\n }\n });\n\n return modalInstance.result.then(function (wasDeleted) {\n if (wasDeleted) {\n $window.location = '/dashboard';\n }\n });\n }\n\n $scope.$on('fileUploaded', function (event, args) {\n var documentObject = vm.rfpResponseData.ResponseContent.InformationParts.find(function (informationPart) {\n return args.parent.Title === informationPart.Title;\n });\n\n if (!documentObject.BlobSummaries) {\n documentObject.BlobSummaries = [];\n }\n\n documentObject.BlobSummaries = documentObject.BlobSummaries.concat(args.blobs);\n requestForProposalResponseStateService.update(vm.rfpResponseData);\n notifyService.notify('You uploaded ' + args.blobs[0].FileName);\n });\n\n $scope.$on('rfpResponseUpdated', function () {\n vm.rfpResponseData = requestForProposalResponseStateService.get();\n });\n }\n\n requestForProposalResponseEditorController.$inject = ['$scope', '$timeout', '$state', '$uibModal', '$window',\n 'notifyService', 'requestForProposalResponseStateService', 'requestForProposalResponseDataService', 'sessionData', 'milestones',\n 'mailRequestDataService', 'milestoneModalService'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalResponseEditorController', requestForProposalResponseEditorController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponseRfpSummaryController(sessionData, rfpResponseData, milestones,\n notifyService, mailRequestDataService, milestoneModalService) {\n\n var vm = this;\n vm.rfpResponseData = rfpResponseData;\n vm.rfpResponseId = vm.rfpResponseData.Id.split('/')[1];\n vm.sessionData = sessionData;\n\n vm.contactRespondent = function (entity) {\n mailRequestDataService.sendConnectionRequest({\n RequesterEntityId: sessionData.EntityId,\n RequesteeEntityId: entity.Id\n }).then(function (data) {\n notifyService.notify('We sent a notification to ' + entity.CompanyDetails.Name);\n });\n }\n\n vm.rfpEntityActions = {\n contactRespondent: {\n label: \"Contact\",\n call: vm.contactRespondent\n }\n }\n\n // process rfp content to set permissions and mode\n vm.rfpSummaryMode = 'Display';\n vm.canDeleteInformationPart = false;\n vm.reorderMode = false;\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n vm.hasRequiredDownloads = vm.rfpResponseData.RequestForProposal.RequiredDownloads &&\n vm.rfpResponseData.RequestForProposal.RequiredDownloads.some(function (requiredDownload) {\n return !requiredDownload.IsRemoved;\n });\n\n vm.noopFunction = function () {\n angular.noop();\n }\n\n vm.rfpResponseData.RequestForProposal.InformationParts.forEach(function (informationPart) {\n informationPart.Access = {\n View: true,\n Edit: false\n };\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Access = {\n View: true,\n Edit: false\n };\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n });\n }\n });\n\n vm.rfpResponseData.RequestForProposal.RequiredDownloads.forEach(function (requiredDownload) {\n // might need something here\n });\n }\n\n requestForProposalResponseRfpSummaryController.$inject = ['sessionData', 'rfpResponseData', 'milestones',\n 'notifyService', 'mailRequestDataService', 'milestoneModalService'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalResponseRfpSummaryController', requestForProposalResponseRfpSummaryController);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalResponsesController($scope, $timeout, $state, $log, $uibModal, $window, $filter,\n notifyService, requestForProposalStateService, requestForProposalResponseDataService, scrollingService,\n sessionData, rfpResponses, milestones, mailRequestDataService, milestoneModalService) {\n\n var vm = this;\n vm.rfpData = requestForProposalStateService.get();\n vm.rfpId = vm.rfpData.Id.split('/')[1];\n vm.rfpResponses = rfpResponses;\n vm.sessionData = sessionData;\n\n vm.responseStatuses = [\n \"ApplicationNotStarted\",\n \"ApplicationInProgress\",\n \"ApplicationSubmitted\"\n ];\n\n vm.awardStatuses = [\n \"InReview\",\n \"Selected\",\n \"NotSelected\"\n ];\n\n milestoneModalService.getMilestonesAndTemplates(milestones).then(function (milestonesAndTemplates) {\n if (milestonesAndTemplates.length > 0) {\n milestoneModalService.openModal(milestonesAndTemplates);\n }\n });\n\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n $timeout(function () {\n if (toState.name === 'rfp.responses.single') {\n scrollingService.scrollTo('requestforproposalresponses-' + toParams.rfpResponseId, 0, 0, 0);\n }\n });\n });\n\n vm.contactRespondent = function (entity) {\n mailRequestDataService.sendConnectionRequest({\n RequesterEntityId: sessionData.EntityId,\n RequesteeEntityId: entity.Id\n }).then(function(data) {\n notifyService.notify('We sent a notification to ' + entity.CompanyDetails.Name);\n });\n }\n\n vm.updateResponseAvailabilityStatus = function(response) {\n notifyService.notify('You marked the application for ' +\n response.RequestForProposalResponseEntity.CompanyDetails.Name + \n ' as ' + (response.IsAvailable ? 'available' : 'not available'));\n\n var recordedActivity = {\n Date: (new Date()).toISOString(),\n Description: 'The response availability was changed to ' + (response.IsAvailable ? 'available' : 'not available'),\n UsersToNotify: [],\n UserName: vm.sessionData.EntityId\n }\n vm.saveAndSendEmailUpdate(response, recordedActivity);\n }\n\n vm.updateResponseAwardStatus = function (response) {\n var awardStatusText = $filter('splitToWords')(response.AwardStatus).toLowerCase();\n notifyService.notify('You marked the application for ' +\n response.RequestForProposalResponseEntity.CompanyDetails.Name +\n ' as ' + awardStatusText);\n\n var recordedActivity = {\n Date: (new Date()).toISOString(),\n Description: 'The response award status was changed to ' + awardStatusText,\n UsersToNotify: [],\n UserName: vm.sessionData.EntityId\n }\n vm.saveAndSendEmailUpdate(response, recordedActivity);\n }\n\n vm.saveAndSendEmailUpdate = function(response, recordedActivity) {\n requestForProposalResponseDataService.saveRequestForProposalResponse(response).then(function (data) {\n // send email to respondent\n mailRequestDataService.sendRequestForProposalRespondentUpdate({\n RequestForProposalId: vm.rfpData.Id,\n RequestForProposalResponseId: response.Id,\n EntityId: vm.sessionData.EntityId,\n RecordedActivity: recordedActivity\n });\n\n // send email to admins\n mailRequestDataService.sendRequestForProposalResponseUpdate({\n RequestForProposalId: vm.rfpData.Id,\n RequestForProposalResponseId: response.Id,\n EntityId: vm.sessionData.EntityId,\n RecordedActivity: recordedActivity\n });\n });\n }\n\n vm.openProposal = function (entity) {\n var response = vm.rfpResponses.find(function (response) {\n return response.RequestForProposalResponseEntity.Id === entity.Id;\n });\n\n if (!response) {\n notifyService.notify('Could not find response', true);\n $log.error('Could not find response for applicant ' + entity.Id);\n }\n else {\n $state.go('rfp.responses.single.details',\n { rfpId: vm.rfpData.Id.split('/')[1], rfpResponseId: response.Id.split('/')[1] });\n }\n }\n\n vm.openDeleteAlert = function (entity) {\n var response = vm.rfpResponses.find(function (response) {\n return response.RequestForProposalResponseEntity.Id === entity.Id;\n });\n\n var modalInstance = $uibModal.open({\n templateUrl: 'deleteRequestForProposalResponseModal',\n controller: 'deleteRequestForProposalResponseModalController',\n resolve: {\n rfpResponseId: function () {\n return response.Id;\n },\n entityName: function() {\n return entity.CompanyDetails.Name\n }\n }\n });\n\n return modalInstance.result.then(function (wasDeleted) {\n if (wasDeleted) {\n var removedResponse = vm.rfpResponses.find(function(rfpResponse) {\n return rfpResponse.Id === response.Id;\n });\n\n vm.rfpResponses.splice(vm.rfpResponses.indexOf(removedResponse), 1);\n }\n });\n }\n\n vm.responseActions = {\n contactRespondent: {\n label: \"Contact\",\n call: vm.contactRespondent\n },\n showProposal: {\n label: \"View\",\n call: vm.openProposal\n },\n deleteProposal: {\n label: \"Delete\",\n call: vm.openDeleteAlert,\n cssClass: \"md-warn\"\n }\n }\n\n }\n\n requestForProposalResponsesController.$inject = ['$scope', '$timeout', '$state', '$log', '$uibModal', '$window', '$filter',\n 'notifyService', 'requestForProposalStateService', 'requestForProposalResponseDataService', 'scrollingService',\n 'sessionData', 'rfpResponses', 'milestones', 'mailRequestDataService', 'milestoneModalService'];\n\n angular.module('ecap.requestForProposal').controller('requestForProposalResponsesController', requestForProposalResponsesController);\n})();\n","(function () {\n 'use strict';\n\n function rfpResponse(requestForProposalResponseStateService) {\n return {\n restrict: 'E',\n templateUrl: 'requestForProposal/directives/templates/rfpResponse.html',\n scope: {\n rfpResponseData: '=',\n mode: '@'\n },\n link: function (scope, element, attrs) {\n if (!attrs.mode) {\n scope.mode = 'Editor';\n }\n\n scope.rfpResponseReorderMode = false;\n\n scope.removeInformationPart = function (informationPart, partIndex) {\n requestForProposalResponseStateService.removeInformationPartFromRfpContent(informationPart, partIndex);\n }\n\n scope.deleteUpload = function (informationPart, blobIndex) {\n requestForProposalResponseStateService.deleteUpload(informationPart, blobIndex);\n }\n\n scope.updateDocumentPrompt = function (document) {\n requestForProposalResponseStateService.updateDocumentPrompt(document);\n }\n\n scope.syncQuestionSet = function (informationPart, partIndex) {\n requestForProposalResponseStateService.syncQuestionSet(informationPart, partIndex);\n }\n\n scope.rfpResponseData.ResponseContent.InformationParts.forEach(function (informationPart) {\n if (!scope.rfpResponseData.hasPermissionsSet) {\n informationPart.canDelete = scope.mode === 'Editor';\n informationPart.reorderMode = false;\n informationPart.Access = {\n View: true,\n Edit: false\n }\n\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Access = {\n View: true,\n Edit: true\n };\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n });\n }\n }\n });\n }\n };\n }\n\n rfpResponse.$inject = ['requestForProposalResponseStateService'];\n\n angular.module('ecap.requestForProposal').directive('rfpResponse', rfpResponse);\n})();\n\n","(function () {\n 'use strict';\n\n function requestForProposalResponseStateService($rootScope, $log, requestForProposalResponseDataService, notifyService, sessionDataService) {\n var state = this;\n state.rfpResponse = {};\n\n // Wrapping it in the session call for now\n function update(rfpResponse, silent) {\n return sessionDataService.loadSession().then(function (sessionData) {\n return updateWithSessionData(rfpResponse, silent, sessionData);\n });\n }\n\n function updateWithSessionData(rfpResponse, silent, sessionData) {\n state.rfpResponse = rfpResponse;\n\n state.rfpResponse.ResponseContent.InformationParts.forEach(function (informationPart) {\n informationPart.Access = {\n View: true,\n Edit: false\n };\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Access = {\n View: true,\n Edit: false\n };\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n });\n }\n });\n\n var ownerEntityId = rfpResponse.EntityId;\n var accessingEntityId = rfpResponse.EntityId;\n\n if (ownerEntityId !== accessingEntityId) {\n if (sessionData.IsAdminEntity) {\n state.rfpResponse.AccessLevel = \"ProjectAdmin\";\n }\n else {\n $rootScope.$broadcast('response_error');\n $log.error(\"You cannot access this rfp response\");\n }\n }\n else {\n state.rfpResponse.AccessLevel = \"ProjectOwner\";\n }\n\n if (!silent) {\n requestForProposalResponseDataService.saveRequestForProposalResponse(state.rfpResponse).then(function (data) {\n // TODO: Do we need anything here?\n }, function (error) {\n // TODO: Handle potential concurrency issues\n notifyService.notify('We could not save the changes to your rfp response.', true);\n });\n }\n\n $rootScope.$broadcast('rfpResponseUpdated');\n return state.rfpResponse;\n }\n\n function get() {\n return state.rfpResponse;\n }\n\n function removeInformationPart(informationPart, informationPartIndex) {\n state.rfpResponse.ResponseContent.InformationParts[informationPartIndex].IsRemoved = true;\n update(state.rfpResponse);\n notifyService.notify('You deleted ' + informationPart.Prompt);\n }\n\n function deleteUpload(informationPart, blobIndex) {\n var matchingInformationPart = state.rfpResponse.ResponseContent.InformationParts.find(function (part) {\n return part.Title === informationPart.Title;\n });\n\n matchingInformationPart.BlobSummaries[blobIndex].IsRemoved = true;\n update(state.rfpResponse);\n notifyService.notify('You deleted ' + matchingInformationPart.BlobSummaries[blobIndex].FileName);\n }\n\n function updateDocumentPrompt(document) {\n var informationPart = state.rfpResponse.ResponseContent.InformationParts.find(function (part) {\n return document.Title = part.Title;\n });\n\n informationPart.Prompt = document.Prompt;\n update(state.rfpResponse);\n }\n\n function syncQuestionSet(informationPartIndex, questionSet) {\n state.rfpResponse.ResponseContent.InformationParts[informationPartIndex] = questionSet;\n update(state.rfpResponse);\n }\n\n return {\n update: update,\n get: get,\n removeInformationPart: removeInformationPart,\n deleteUpload: deleteUpload,\n updateDocumentPrompt: updateDocumentPrompt,\n syncQuestionSet: syncQuestionSet\n };\n }\n\n requestForProposalResponseStateService.$inject = ['$rootScope', '$log', 'requestForProposalResponseDataService', 'notifyService', 'sessionDataService'];\n\n angular.module('ecap.requestForProposal').factory('requestForProposalResponseStateService', requestForProposalResponseStateService);\n})();\n","(function () {\n 'use strict';\n\n function requestForProposalStateService($rootScope, $log, requestForProposalDataService, notifyService, sessionDataService) {\n var state = this;\n state.rfp = {};\n\n // Wrapping it in the session call for now\n function update(rfp, silent) {\n return sessionDataService.loadSession().then(function (sessionData) {\n return updateWithSessionData(rfp, silent, sessionData);\n });\n }\n\n function updateWithSessionData(rfp, silent, sessionData) {\n state.rfp = rfp;\n\n state.rfp.ResponseContent.InformationParts.forEach(function (informationPart) {\n informationPart.Access = {\n View: true,\n Edit: true\n };\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Access = {\n View: true,\n Edit: true\n };\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n });\n }\n });\n\n state.rfp.InformationParts.forEach(function (informationPart) {\n informationPart.Access = {\n View: true,\n Edit: true\n };\n if (informationPart.BlobSummaries) {\n informationPart.BlobSummaries.forEach(function (blob) {\n blob.Access = {\n View: true,\n Edit: true\n };\n blob.UploadedByCleanName = blob.UploadedByEntity\n ? blob.UploadedByEntity.Contact.FirstName + ' ' + blob.UploadedByEntity.Contact.LastName\n : 'N/A';\n });\n }\n });\n\n var ownerEntityId = rfp.EntityId;\n var accessingEntityId = rfp.EntityId;\n\n if (ownerEntityId !== accessingEntityId) {\n if (sessionData.IsAdminEntity) {\n state.rfp.AccessLevel = \"ProjectAdmin\";\n }\n else {\n $rootScope.$broadcast('response_error');\n $log.error(\"You cannot access this rfp\");\n }\n }\n else {\n state.rfp.AccessLevel = \"ProjectOwner\";\n }\n\n if (!silent) {\n requestForProposalDataService.saveRequestForProposal(state.rfp).then(function (data) {\n // TODO: Do we need anything here?\n }, function (error) {\n // TODO: Handle potential concurrency issues\n notifyService.notify('We could not save the changes to your rfp.', true);\n });\n }\n\n $rootScope.$broadcast('rfpUpdated');\n return state.rfp;\n }\n\n function get() {\n return state.rfp;\n }\n\n function addInformationPartToRfpContent(informationPart) {\n state.rfp.InformationParts.push(informationPart);\n update(state.rfp);\n notifyService.notify('You added ' + informationPart.Prompt);\n }\n\n function addInformationPartToResponseContent(informationPart) {\n state.rfp.ResponseContent.InformationParts.push(informationPart);\n update(state.rfp);\n notifyService.notify('You added ' + informationPart.Prompt);\n }\n\n function removeInformationPartFromRfpContent(informationPart, informationPartIndex) {\n state.rfp.InformationParts[informationPartIndex].IsRemoved = true;\n update(state.rfp);\n notifyService.notify('You deleted ' + informationPart.Prompt);\n }\n\n function removeInformationPartFromResponseContent(informationPart, informationPartIndex) {\n state.rfp.ResponseContent.InformationParts[informationPartIndex].IsRemoved = true;\n update(state.rfp);\n notifyService.notify('You deleted ' + informationPart.Prompt);\n }\n\n function deleteUploadForRfpContent(informationPart, blobIndex) {\n var matchingInformationPart = state.rfp.InformationParts.find(function(part) {\n return part.Title === informationPart.Title;\n });\n\n matchingInformationPart.BlobSummaries[blobIndex].IsRemoved = true;\n update(state.rfp);\n notifyService.notify('You deleted ' + matchingInformationPart.BlobSummaries[blobIndex].FileName);\n }\n\n function deleteUploadForResponseContent(informationPart, blobIndex) {\n var matchingInformationPart = state.rfp.ResponseContent.InformationParts.find(function (part) {\n return part.Title === informationPart.Title;\n });\n\n matchingInformationPart.BlobSummaries[blobIndex].IsRemoved = true;\n update(state.rfp);\n notifyService.notify('You deleted ' + matchingInformationPart.BlobSummaries[blobIndex].FileName);\n }\n\n function syncRfpContentQuestionSet(questionSet) {\n var informationPartIndex = state.rfp.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(questionSet.Title);\n state.rfp.InformationParts[informationPartIndex] = questionSet;\n update(state.rfp);\n }\n\n function syncRfpResponseQuestionSet(questionSet) {\n var responseContentInformationPartIndex = state.rfp.ResponseContent.InformationParts.map(function (part) {\n return part.Title;\n }).indexOf(questionSet.Title);\n state.rfp.ResponseContent.InformationParts[responseContentInformationPartIndex] = questionSet;\n update(state.rfp);\n }\n\n function updateDocumentPromptForRfpContent(document) {\n var informationPart = state.rfp.InformationParts.find(function(part) {\n return document.Title = part.Title;\n });\n\n informationPart.Prompt = document.Prompt;\n update(state.rfp);\n }\n\n function updateDocumentPromptForResponseContent(document) {\n var informationPart = state.rfp.ResponseContent.InformationParts.find(function(part) {\n return document.Title = part.Title;\n });\n informationPart.Prompt = document.Prompt;\n }\n\n return {\n update: update,\n get: get,\n addInformationPartToRfpContent: addInformationPartToRfpContent,\n addInformationPartToResponseContent: addInformationPartToResponseContent,\n removeInformationPartFromRfpContent: removeInformationPartFromRfpContent,\n removeInformationPartFromResponseContent: removeInformationPartFromResponseContent,\n deleteUploadForRfpContent: deleteUploadForRfpContent,\n deleteUploadForResponseContent: deleteUploadForResponseContent,\n syncRfpContentQuestionSet: syncRfpContentQuestionSet,\n syncRfpResponseQuestionSet: syncRfpResponseQuestionSet,\n updateDocumentPromptForRfpContent: updateDocumentPromptForRfpContent,\n updateDocumentPromptForResponseContent: updateDocumentPromptForResponseContent\n };\n }\n\n requestForProposalStateService.$inject = ['$rootScope', '$log', 'requestForProposalDataService', 'notifyService', 'sessionDataService'];\n\n angular.module('ecap.requestForProposal').factory('requestForProposalStateService', requestForProposalStateService);\n})();\n","(function () {\n 'use strict';\n\n angular.module('ecap.subscriptions', []);\n})();","(function () {\n 'use strict';\n\n function subscriptionsRouteConfig($stateProvider) {\n $stateProvider\n .state('subscriptions.signup', {\n url: '/entities/subscriptions/signup/plans/*planId',\n templateUrl: 'subscriptions/templates/signup.html',\n controller: 'subscriptionSignupController',\n controllerAs: 'ctrl',\n resolve: {\n plans: [],\n sessionData: [\"sessionDataService\", function(sessionDataService) {\n return sessionDataService.loadSession().then(function(data) {\n return data;\n });\n }]\n }\n });\n }\n\n subscriptionsRouteConfig.$inject = ['$stateProvider'];\n\n angular.module('ecap.subscriptions').config(subscriptionsRouteConfig);\n})();","(function () {\n 'use strict';\n\n function subscriptionSignupController(plans, sessionData, $window, $routeParams, $scope, $location) {\n var vm = this;\n vm.sessionData = sessionData;\n vm.selectedPlanId = '';\n vm.iframeIsReady = false;\n vm.iframeSource = '';\n vm.routeFirstLoaded = false;\n\n $scope.$on(\"$stateChangeSuccess\", function (event, toState, toParams, fromState, fromParams) {\n vm.selectedPlanId = toParams.planId;\n vm.routeFirstLoaded = true;\n\n $location.search({});\n });\n\n $scope.$watch(function () { return vm.selectedPlanId; }, function (newVal, oldVal) {\n if (vm.routeFirstLoaded && newVal !== oldVal) {\n var path = $location.path();\n if (path.indexOf(oldVal) !== -1) {\n $location.path(path.replace(oldVal, newVal));\n }\n else {\n $location.path(path + '/' + newVal);\n }\n }\n });\n\n var maxPlanPrice = Math.max.apply(null, plans.map(function (plan) {\n if (plan.PeriodUnit === 'month') {\n return plan.Price * 12;\n }\n\n return plan.Price;\n }));\n\n plans.forEach(function (plan) {\n var totalCost = plan.Price;\n if (plan.PeriodUnit === 'month') {\n totalCost = totalCost * 12;\n }\n plan.AnnualSavings = Math.max(maxPlanPrice - totalCost, 0);\n });\n\n vm.plans = plans;\n\n vm.loadSignupForm = function () {\n throw new Error('no signup form implementation');\n }\n }\n\n subscriptionSignupController.$inject = ['plans', 'sessionData', '$window', '$routeParams', '$scope', '$location'];\n\n angular.module('ecap.subscriptions').controller('subscriptionSignupController', subscriptionSignupController);\n})();\n"]}