{"version":3,"sources":["tools.js","tools.awenko-start.js","tools.browser-detect.js","tools.client.js","tools.cookies.js","tools.datetime.js","tools.elements.js","tools.escape.js","tools.evaluation.js","tools.files.js","tools.folders.js","tools.http.js","tools.images.js","tools.interactjs.js","tools.issues.js","tools.progressbar.js","tools.properties.js","tools.scheduling.js","tools.session.js","tools.spinner.js","tools.values.js","tools.window-wrappers.js","tools.windows.js","charts/tools.charts.js","charts/tools.charts.annotations.js","charts/tools.charts.series.js","data-manager/_base.js","data-manager/elements.js","data-manager/scheduling.js","misc/enums.js","data-manager/data-manager.js","formula/tools.formula-methods.js","formula/tools.formula.js","misc/center.js","misc/color-picker.js","misc/comments.js","misc/context-menu.js","misc/dropdownlist.js","misc/nav.js"],"names":["global","$window","$overflow","$tabControl","$tabs","configuration","Tools","initTab","options","tabId","form","html","$tabItem","find","$tab","jsonString","text","TabControlCaption","removeClass","Description","addClass","ExampleData","JSON","stringify","highlightedString","toggleClass","hasOwnProperty","ServiceConfiguration","Service","Example","replace","match","cls","test","join","Model","length","createModelTable","model","forEach","attribute","push","format","Attribute","escapeHtml","Type","IsRequired","i18next","t","Remarks","SubType","empty","Mappings","mappings","mapping","type","element","changemode","Elements","ElementOID","elementCell","Enums","elementType","Form","isForm","Title","hierarchy","Parent","unshift","isGroup","isCheckpoint","getTypeName","OID","ResubmissionitemOID","ParentOID","Row","onTabItemClick","$this","$","this","id","data","siblings","scrollTop","onSeparatorClick","isCollapsed","hasClass","node","parents","onCreateButtonClick","exampleData","serviceConfiguration","HttpMethod","http","post","Method","successCallback","errorCallback","put","response","xhr","status","statusText","handleHttpError","HttpActionType","Write","Spinner","hide","off","renderComment","comment","rights","creator","Users","CreatorOID","imagePath","getProfilePicturePath","creationTimestamp","dateTime","getDifferenceString","CreationTimestamp","editor","EditorOID","modificationTimestamp","ModificationTimestamp","User","canEditComment","userCanCreateComments","userCanEditOrDeleteCommentsOfOthers","clickToEditText","Text","getTime","editorTitle","IsCsrfTokenValid","csrfToken","tokenCreationTimestamp","parseInt","split","pop","isNaN","Date","now","Config","CookieConfig","CsrfValidityMinutes","CreateAbortableDeferred","abortCallback","deferred","Deferred","_promise","promise","prom","apply","arguments","abort","state","reject","IsValidGuid","str","GetEmptyGuid","GetDefaultColors","FixSVGMetrics","marksSVG","FixMarksSize","img","$img","$marks","style","display","setTimeout","closest","css","width","clientWidth","height","clientHeight","createUnitTitle","unit","unitTitle","replaceHtmlEntities","val","escRegExp","unescapeHtml","SortByOrder","objA","objB","Order","SortByPosition","Position","SortAssignedFilesFromCatalogue","a","b","dataSourceIsReportMode","posA","posB","fileA","Files","fileB","SortByTitle","SortByRow","SortByLastnameThenFirstname","lastnameA","lastnameB","Lastname","toLowerCase","firstnameA","Firstname","firstnameB","SortByFirstnameThenLastname","SortByFullname","fullnameA","Fullname","fullnameB","titleA","titleB","SortByCategoryName","nameA","name","nameB","SortStringArray","createOverlay","zIndex","fn","$overlay","Function","on","append","getFirstSortedElement","entityMap","propertyName","isChangemode","entities","Object","keys","map","k","sort","propA","propB","i","len","entity","ModificationType","Deleted","partial","slice","Array","prototype","args","call","concat","indexOf","collection","valueOrFunction","key","contains","any","value","getFirst","idx","remove","splice","addUnique","isArray","useKey","valueOrDefault","defaultValue","reduce","acc","all","dict","attr","op","result","obj","invValue","isHit","getAll","compareFunction","item","IsSet","collectionItem","hasProperties","itemKey","clone","excludes","internalCloneWithExcludes","v","isPlainObject","each","internalCloneWithoutExcludes","valA","valB","pushStateToHistory","fragment","history","pushState","navigator","title","window","trigger","GetFileByFilename","filename","oid","file","Filename","isNumber","isBool","IsElementInViewport","ignoreXAxis","ignoreYAxis","rect","jQuery","getBoundingClientRect","top","bottom","innerHeight","document","documentElement","left","right","innerWidth","Throttle","threshold","scope","last","timeout","context","clearTimeout","Debounce","immediate","GetDefaultUIRights","targetIsOffice","menus","CustomMenuItems","GetMenuIds","menuItems","GetByMenuId","children","filter","menuItem","IsAvailableInOffice","IsAvailableInRecordingApp","ID","IsEnabled","Children","compareNaturalStrings","lenA","lenB","j","strA","charA","charB","spaceA","spaceB","locA","locB","strB","createTreeContextMenu","$tree","tree","getTree","allNodes","is","ContextMenu","selector","show","removeClassFromAllNodes","addClassToNode","items","treeNode","allChecked","disabledCheckboxesExist","elementOID","contextmenu","$element","walk","isDisabled","checkbox","disabled","checked","visible","click","changedNodes","isChecked","uncheckNode","checkNode","nodes","instance","CutConsecutivelyWhitespaces","maxWhitespaces","regex","RegExp","repeat","IsValidVersionString","ZeroFillStringArray","bLength","remaining","CompareVersion","versionA","versionB","versionAStringParts","versionBStringParts","versionAParts","s","versionBParts","versionAPartsLength","versionBPartsLength","GetElementHierarchy","withoutSelf","DataManager","OrganizationUnitLoader","Data","DataMap","OnImageNotFound","placeholderSrc","prop","parent","replaceWith","src","action","HttpStatusCode","Unauthorized","responseJSON","UnauthorizedType","Message","Show","ok","onOk","ChangeMode","Catalog","Hide","content","saveQuestion","parameters","active","deactivate","logout","Forbidden","forbiddenResponse","responseText","parse","ErrorCode","ForbiddenResponseErrorCode","FileType","mimeType","MimeType","InsufficientRights","MissingRootElement","MissingLicense","Read","Conflict","Request_Too_Long","MaxFileSize","e","fileSizeInMB","toFixed","Delete","SendMails","ExternalDataCreationExampleWindow","Tabs","Issue","Recorditems","Captions","Window","generateRandomNumber","minimum","maximum","Math","round","random","createActionDropdown","$container","renderItem","hasChildItems","itemHtml","Checked","FileInput","Accept","Multiple","Icon","Caption","iterate","$item","outerHeight","evt","stopPropagation","OnClick","GetBadgeCounterText","count","floor","ResolveUrlPattern","hash","pattern","undefined","ApplicationRoutes","patterns","exec","ComparePrintOptions","optionsA","optionsB","valueA","valueB","PrintOptionsPicker","GetDefaultPrintOptionValue","GetIssueAbbreviation","issue","IsTemplate","issueType","Note","Disturbance","DisturbancesCompleted","Inspection","Investigation","Survey","IsTabEnabledInMenu","menuId","Client","OfficeConfiguration","menuConfiguration","enabledTabs","EnabledTabs","IsPropertyDisabledInMenuTab","propertyId","HiddenProperties","IsPropertyEnabledInMenuTab","GetElementDataForService","Address","Street","StreetNumber","ZipCode","StateNumber","Name","Phone","WebAddress","EmailSignature","Info","PrintAlways","Checkbox","Number","Line","Memo","Time","ListBox","PhoneNumber","EMailAddresses","IsSurvey","FormTemplate","Formula","infoText","DOMPurify","sanitize","InfoText","Actions","AdditionalProperties","AdditionalSettings","AllowOverrideFormulaValue","CodingOID","CodingIdent","Color","CostCenter","Decimals","DisableInAppEditing","Enabled","EvaluatePeriodically","Evaluation","FilenameFormula","ForceParameterOrderWhileRecording","GradingScale","Identcode","IgnoreInEvaluation","ImageOID","InitialStateOID","IsBranchStore","IsInspection","IsInvestigation","IsRecordingLockable","IsRecordingLockedByDefault","IssueTitleFormula","IsWeighted","Items","Language","Layout","MaxSubsampleCount","MinSubsampleCount","ModifiedForms","Properties","PrototypeOID","Prototype","ProvideToExternalApps","QRCode","ReferenceFormOID","RepresentationType","Required","Requirements","Scheduling","ShowAtFirstPosition","ShowInOverallResult","Structure","StructureEval","SuggestedValues","Teams","TemporaryDeviationOffset","UnitOID","UseFormGrading","Processes","UnEscape","Element","BlockSpecialCharactersInput","which","GetAvailableAndVisibleForms","formMap","location","disableSurveys","disableInvestigations","availableForms","visibleForms","Forms","formIdentifier","walkForm","AvailableForms","VisibleForms","GetAvailableAndVisibleSchedulings","schedulingMap","userMustBeAssigned","FormLoader","GetAll","then","formData","addToVisibleSchedulings","iterateScheduling","availableSchedulings","visibleSchedulings","scheduling","schedulingList","sCnt","sLen","containsUser","containsTeams","traverse","elem","Root","Location","Parametergroups","gCnt","gLen","fCnt","fLen","Map","CurrentEntity","AvailableSchedulings","VisibleSchedulings","UpdateOfficeUserSettings","Key","Value","OfficeSettings","GetOfficeSettingValue","GetAvailableAndVisibleStatusses","statusState","additionalFilterFn","StatusState","All","availableStatusses","visibleStatusses","allStatusses","values","propertyType","Status","AvailableStatusses","dictionary","VisibleStatusses","isAvailable","Open","ClosedState","Closed","identifier","visibleStatus","getAllRolesOfUser","userOID","useModifiedData","teamOID","roles","Roles","teams","userRoles","team","user","roleOID","JoinDistinct","collectionA","collectionB","extend","HasIntersection","some","OnUploadError","event","IsContactModuleAvailable","Licenses","Contacts","IsEMailCpEnabled","EnableCpTypeEMailAddresses","IsValidMailAddress","SortSelectControlAlphabetically","$control","selectedOption","textA","textB","GetEmailCheckpointsFromElement","groups","Parameters","el","ForEachDeferredAction","actionCallback","progressbarOptions","resolve","Visible","totalProgress","currentProgress","Progressbar","Start","ScreenBlock","StartProgress","loop","Set","StopProgress","ShowRteContentSize","$area","contentLength","size","returnObjects","ReEncodeImage","srcImage","processImage","image","canvas","createElement","naturalWidth","naturalHeight","getContext","drawImage","returnAsFile","toBlob","compressedBlob","defer","compressedImage","toDataURL","imageUrl","Image","onload","onerror","File","URL","webkitURL","createObjectURL","ReplacePngUrlData","markup","r","processDeferreds","hasChanges","reEncodeDefer","replaceAll","when","always","CheckAvailability","isAvailableCallback","onFail","noop","get","msg","Boolean","GetAssignedUserLicensesCount","ressources","users","hasRight","fullLicensesAssigned","limitedLicensesAssigned","viewRightLicensesAssigned","IsSystemUser","IsLocked","LicenseType","Full","Limited","FullLicensesAssigned","LimitedLicensesAssigned","ViewRightLicensesAssigned","GetSelectableUsers","locationIdentifier","teamUsers","userCanAssignAllTeamsAndUsers","hasRightAtLocation","Rights","IssueRights","AllowAssigningAllUsersToIssues","tools","isTeamAssignedToLocation","GetSelectableTeams","visibleTeams","selectableTeams","addTeamToVisibleTeams","VisibleTeams","SelectableTeams","GetCountOfIssueResponsibilities","issueResponsibilities","ContactGroups","GetTotalWidthOfChildComponents","$children","_","$elem","grandChildrenWidth","outerWidth","CreateMarkdownEditor","container","initialValue","disableModifications","HTMLElement","editorOptions","language","usageStatistics","initialEditType","toolbarItems","viewer","toastui","Editor","factory","RenderMarkdown","GetPropertyKeys","keyBase","props","iCnt","iLen","newKey","GetObjectPropertyByKeyPath","path","splittedPath","pCnt","pLen","IsSetEqual","arrayA","arrayB","every","includes","GetBuildTime","buildTime","ignoreProfilePicture","BaseUri","Comments","renderComments","comments","StartTools","GetUserTeamIdent","userIdentifier","teamIdent","teamUser","GetUserTeam","teamIdentifier","GetTeamLocations","teamLocations","assignedTeam","AwenkoStart","browsers","ua","userAgent","subUa","identity","versionSearch","vendor","browserdetect","init","browser","versionSearchString","browserInfos","version","appVersion","index","lastIndex","parseFloat","substring","client","getLocationData","settings","logo","address","files","hasUIRight","navItemId","enabledNavItems","officeConfiguration","explorer","current","Cookies","domainCookies","cookie","cookies","splitted","trim","cookieArray","unescape","getCSRFToken","csrf","CsrfCookieName","set","invalidateOnWindowClosed","expires","escape","setTime","toGMTString","delete","migrateExistingCookies","deferreds","updateNotifications","dashboard","migrationKeys","updateNotificationsMigrated","explorerDashboardSettingsMigrated","shrinkNavigationMigrated","migrationStatusFlags","flags","localStorage","getItem","startsWith","matches","notificationOID","Action","UpdateNotificationAction","MarkAsRead","NotificationOID","chartName","chartSettingName","Explorer","Dashboard","GetChartSettingName","setItem","DateTime","daysOfWeek","setDate","date","day","month","year","getHours","getMinutes","getSeconds","getDateFromObject","getFullYear","getMonth","getDate","getTimeFromObject","datetime","differenceInMinutes","dateTimeToString","time","timeToString","minutes","dateToString","dayOfWeekName","toString","padleft","getDay","dayOfWeek","weekdayToOnWeekdayText","weekdayText","Weekdays","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","hour","minute","exportDateTimeFormat","withoutTime","isValidDate","isTimeOfDateNull","getWeekNumber","newDate","UTC","dayNum","getUTCDay","yearStart","setUTCDate","getUTCDate","getUTCFullYear","ceil","isDate","getDateString","getAdditionalPropertyValue","property","prepareForPrint","asStringValue","additionalPropertyType","IndividualData","selectedEntities","texts","GetEntityTitle","formatElementCodingIdent","ident","root","ObjectTemplate","CheckpointGroupTemplate","MasterdataTemplate","PropertyTemplate","Sensor","MasterdataGroup","FormHeader","FormFooter","SubsampleFormRow","SingletonFormRow","Parametergroup","Photo","Scancode","LocationCode","MultiListBox","Print","Signature","UsersAndTeams","schemas","GetSchemas","types","Types","schema","NamePlural","prepareAdditionalProperties","properties","propertyList","isDescendant","descendant","ancestor","getElementPath","useModified","typeFilter","dataSource","formatElementCoding","prefix","createElementHierarchy","elements","parentElement","AllGroups","createHierarchyForDownloadedElements","attachToOUs","cache","Escape","getFromAdditionalSettings","settingsKey","escapeBase","getValue","escapeArray","arr","escapeFunction","cnt","escapeDictionary","dic","ActivationDescription","ChangeDescription","withLastRecorditem","gradingScale","Unit","additionalProperty","workflow","recorditem","LastRecorditem","withElement","withIssue","Workflows","WorkflowInformation","CustomID","TemplateID","additionalProp","City","scale","Gradings","grading","grad","CompanyName","Schedule","schedule","Property","Folder","folder","Role","role","Contact","contact","Company","ContactGroup","contactGroup","Username","Team","Recorditem","Comment","Workflow","CustomMenuItem","MailTemplate","mailTemplate","Subject","ElementCoding","elementCoding","Prefix","ExcelImportElementItem","GroupTitle","GroupDescription","ParameterTitle","ParameterDescription","Keywords","PropertyTitle","ExcelImportUserItem","OrganisationUnit","FirstName","LastName","EmailAddress","AdditionalProperty","IndividualDataSchema","NameSingular","IndividualDataEntity","IndividualdataSchemaPropertyType","AnalysisQuery","query","_recorditem","_element","_evaluations","Linking","And","Or","Operators","eq","ne","lt","le","gt","ge","evaluate","recorditemValue","evaluation","CategoryOID","firstValue","secondValue","compareNumbers","operator","FirstValue","SecondValue","FirstOperator","SecondOperator","modificationDate","recorditemDate","valueType","firstOperator","secondOperator","addDays","days","addMonths","months","setMonth","addYears","years","setFullYear","ValueType","recorditemTimestamp","addSeconds","seconds","setSeconds","addMinutes","setMinutes","addHours","hours","setHours","evaluationValue","getSanitizedFilename","getFileExtension","fileNameParts","renderFilesTableBody","renderFileListItem","fileTypeText","IsDerived","Link","YoutubeVideo","VimeoPrivateVideo","VimeoPublicVideo","substr","Metrics","getFileIconForMimeType","folders","getFolderPathForModifiedData","FolderOID","getFileTypeText","IsAvailableOffline","isImage","isAudio","isVideo","isPdf","isText","isSpreadsheet","isPresentation","isArchive","loadUsageInformation","fileIdentifiers","Identifiers","EntityType","deleteFile","filenameRegex","elementIdentifier","menuItemIdentifier","mailTemplateIdentifier","elementAssignments","userAssignments","teamAssignments","customMenuItemsAssignments","mailTemplateAssignments","cannotBeDeleted","onDelete","updatedElements","putElement","updatedUsers","updatedTeams","updatedCustomMenuItems","customMenuItem","IconOID","OfficeIconOID","SaveMenuItem","updatedMailTemplates","AttachmentFiles","MailTemplates","Save","del","Folders","Commit","setChanged","views","createFileTable","setChangeModeTabCounter","propertyContainsImage","MapStructureToImages","assignments","createFilename","fileTitle","fileExtension","endsWith","renderFilesTable","renderFilesTableBodyRow","printGivenFolder","createRequest","method","success","error","csrfRequired","dataType","originAjax","ajax","url","contentType","beforeSend","withCredentials","xhrFields","headers","csrfRequiredOverride","getWithMarks","svgWidth","svgHeight","viewBoxHeight","viewBox","svg","Marks","viewBoxWidth","Local","additionalClasses","customAttributes","marks","innerSVG","InteractJs","IsBeingDraggedOverTreeNode","dragEvt","dropped","dropzone","dropElement","draggable","draggableElement","evtPath","composedPath","domElement","classList","prepareComments","Timestamp","Creator","prepareIssueForWebApp","NaturalizedCustomID","input","RemindingTimestamp","DeadlineTimestamp","TerminationTimestamp","State","StateOID","Priority","PriorityOID","ParameterCount","RequiredParameterCount","CollectedParameterCount","CollectedRequiredParameterCount","OpenParameterCount","Classifications","notificationRecipients","recipients","checkpointPreviewImage","AdditionalData","CheckpointPreviewImages","previewImagesFromCheckpoints","indices","LocationPath","CreateOrganisationUnitPath","AssignedElementOID","Recipients","NotificationRecipients","userRole","contactGroupOID","contactOID","Unsubscribed","prepareCommentsForWebApp","prepareIssueForWebService","changeComment","PrecedingOID","uuid","Revision","ParentID","AssignedFormOID","AssignedMeasureOID","AssignedSchedulingOID","AssignedScheduleOID","AssignedRecorditemOID","LocationMarkers","ChangeComment","IsArchived","IsInvestigationCompleted","d","Resubmissionitems","Disturbances","Investigationitems","EstimatedEffort","ResponsibilityAssignments","getRightToEditIssueType","Incident","Resubmission","getInvestigationStatusText","investigationStatus","Investigations","Finished","Pulled","Unsynced","CancellationRequested","Cancelled","Error","getInvestigationErrorText","errorCode","MissingAdditionalProperty","MissingScheduling","NoRecipients","UploadError","DownloadError","NoMailTemplateConfigured","$progressbar","inProgress","total","fnOnstop","draw","percentage","min","progressCurrent","progressTotal","screenBlock","Stop","getPropertyPath","getSchedulingPath","SchedulingLoader","_hasActiveSession","Sessions","setSessionActive","isActive","hasActiveSession","getActiveUserIdentifier","activeSessionUserOID","SessionUserCookieName","_timeout","_$spinner","delay","focused","renderValue","structure","tmp","recItm","getRawString","isPrint","scaledDown","IsSurveyValue","fixedSVG","lazyLoadImage","AdditionalValueInfo","addFilenameToTag","escapeValue","res","valuesAsList","GetSchema","valueStrings","ex","render","alignLeft","addElementType","suppressCategory","category","Category","categoryInline","suppressInfos","hasWorkflow","HasCorrectiveActions","HasAdditionalFiles","HasComments","AdditionalText","WindowWrappers","ShowFormSelectionForLocation","formInformation","showAssignedFormsOnly","CurrentModeRights","CreateAnyForm","showCheckbox","selectMultiple","selectedForms","onApplySelection","customActionButton","buttons","showAllForms","onClick","currentTarget","TreePicker","Close","fullrow","isSelectable","disableEmptyForms","HasCheckpoints","pickerOptions","windowCaption","onApply","onSelect","checkedEntities","treeOptions","color","opened","selectable","ShowSchedulingSelectionForLocation","showAssignedSchedulingsOnly","ShowAllSchedulings","selectedSchedulings","schedulingInformation","showAllSchedulings","ShowStatusSelection","selectedStatusses","statusInformation","additionalFilter","IssueStates","ShowRolesSelection","selections","selectedRoles","inheritedRoles","treePickerOptions","$document","$inputWindow","onChange","_options","emptyAllowed","$input","$ok","removeAttr","onKeydown","onAbort","$title","$text","$abort","$message","$close","$content","$list","$listHeader","$listContent","$no","$yes","$delete","$lock","$unlock","$logout","_queue","_data","_title","_showTrustServiceUrl","_qrCodeSettings","$qrCodeGenerator","$settings","$lblQRCodeSize","$cbQRCodeSize","$lblShowQRCodeTitle","$showTitle","$download","filters","datasource","locationOID","currentHierarchyType","readOnly","$userPicker","$nav","$navTitle","$navPrev","$search","$items","$selectedItems","$selectAllItemsRow","$unselectAllItemsRow","$currentType","$save","selectedTeams","selectedUsers","selectableUsers","mode","searchText","allowedTypes","selectedUnit","estimatedEffortSettings","$estimatedEffortEditor","$btnStandardEfforts","$effortCreator","$cbConsecutiveNumbers","$btnAbort","$btnApply","$consecutiveNumbers","$customNumbers","$unitPickerBtn","$startInput","$endInput","$clearListBtn","customItem","$footer","maxHeight","contentHeight","$messageText","isVisible","no","onNo","yes","onYes","lock","onLock","unlock","onUnlock","onLogout","renderAssignment","withCheckbox","margin-left","maxWidth","headerHeight","footerHeight","maxBodyHeight","windowHeight","margin-top","shift","assignment","getCheckedValues","close","checkAvailability","qrcode","resizeWindow","screenHeight","_idx","child","$child","childHeight","childMargin","closeFunction","initSelectableItems","filterLocation","prefiltered","getPrefilter","elemTeam","ShowLockedUsers","ShowSystemUsers","IsExternalUser","pickerGenerateUserView","closeSearch","regEx","tmpSelectedUsers","tmpSelectedTeams","selectedTeam","navHeight","icon","iconPath","selectAllItemsRowHeight","unselectAllItemsRowHeight","max-height","pickerGenerateTeamView","onClearListClick","clearInputs","changeConsecutiveNumbersCheckboxValue","onStandardEffortsClick","effortID","range","EstimatedEffortList","addEstimatedEffort","validateInputsOnApply","startValue","endValue","listHasValues","customNumberInputsHasValues","$customNumber","listLength","hasInputs","that","after","next","focus","onInputValueChange","deleteEstimatedEffortItem","onAfterEnterPressed","$nextInput","keyCode","openUnitPicker","propertyOID","selected","resetUnit","Units","onCheckboxChanged","cb","getUnit","InputWindow","maxLength","IsVisible","showTrustServiceUrl","maxSize","moduleCount","sizeModuleTable","3","10","20","30","40","54","60","80","94","115","127","dataLength","logoModuleSize","colorRed","colorBlue","logoWidth","logoHeight","dotScale","quietZone","PO","PI","AO","AI","colorDark","titleFont","titleHeight","querySelector","preventDefault","saveAs","Generate","generate","charCount","callback","qrCode","asciiIndex","String","fromCharCode","GetShowTrustServiceUrl","UsersAndTeamsPicker","maximumSelectionCount","inArray","Settings","ShowGlobalUsersAndTeams","saveFunction","Infinity","allowGlobalFilter","preSelection","selectableUserIdentifiers","teamsToAdd","searchRegEx","usersToAdd","teamMember","selectableUser","selectableTeam","one","EstimatedEffortEditor","saveButtonEnabled","isFunction","EstimatedEffortSettings","Range","rangeLength","ConsecutiveNumbers","CustomItems","$customNumberInputs","customNumberInputsLength","GetUnit","GetCustomEstimatedEffort","$inputs","inputValue","withConsecutiveNumbers","withCustomNumbers","unitOID","iterateInputs","apexChartType","Pie","Bar","StackedBar","getTitleConfiguration","align","margin","floating","offsetY","fontSize","fontFamily","getLegendConfiguration","showLegend","legendPosition","position","horizontalAlign","markers","radius","createCustomTooltip","header","createCustomTooltipHeader","createPieChart","chartOptions","chart","events","dataPointSelection","onDataPointClick","chartTitle","series","labels","dataLabels","enabled","showLabels","legend","colors","xAxis","categories","xAxisCategories","tooltip","custom","chartContext","valueFormatter","sumTotal","sum","pointValue","seriesIndex","w","config","ApexCharts","createLineChart","offsetX","toolbar","download","zoom","autoScaleYaxis","stroke","curve","grid","borderColor","row","opacity","xaxis","datetimeUTC","yaxis","yAxisCaption","intersect","shared","pointData","dataPointIndex","yAxisAnnotations","annotations","createBarChart","isStacked","stacked","plotOptions","bar","horizontal","y","fill","yAxisTicks","tickAmount","formatter","opts","yAxisMaxValue","max","decimalsInFloat","charts","initLanguage","Apex","locales","shortMonths","shortDays","exportToSVG","exportToPNG","exportToCSV","menu","selection","selectionZoom","zoomIn","zoomOut","pan","reset","defaultLocale","createChart","chartType","createYAxisAnnotation","from","to","bgColor","y2","fillColor","line","fromElementEvaluation","cpType","minValue","maxValue","linking","operators","Unequal","Less","LessOrEqual","Greater","GreaterOrEqual","column","fromGradingScale","eCnt","eLen","annotation","From","To","fromRecorditems","createNumberChartSeries","recorditems","sortBy","chartData","regExNotMeasurable","tmpIdx","timestamp","pow","DataLoaderBase","constructor","createResponse","loadedFromServer","LoadedFromServer","LoadAll","me","Prepare","Reset","ElementLoader","WithPrototypes","WithDescendants","prepareValueRange","valueRange","prepareWorkflow","elementActionType","OverdueNotification","create","updateCheckpointRelations","checkpoint","group","updateCheckpointGroupRelations","Collapsed","updateGenericRelations","LicensingModel","awenko360","awenkoSTART","awenkoCHECKIN","ViewRight","CashRegister","AllowedItemsForAdHocParameters","Bool","RichText","Group","Classification","Keyword","ValueCategory","QueryType","SCHEDULING","FORM","ADHOC","ISSUES","TUEVAUDITINVOICE","OUMasterDataAndProperties","PeriodType","MANUALLY","MANUALLYSHIFTS","UNLIMITED","TODAY","YESTERDAY","CURRENTWEEK","CURRENTMONTH","CURRENTYEAR","FormReportType","STANDARD","WEIGHTED","IFS","WEIGHTEDFRANCHISE","SURVEY","QKZ","TUEVAudit","TUEVFoodservice","TUEVSamples","TrendAnalysis","TUEVDirectContactTest","Notification","Measure","ModifyParentIssue","elementActionIndicator","Always","OnCategoryChanged","OnValueChanged","elementRequirementsType","Any","None","recorditemType","Normal","Deviation","Unrecorded","Calculated","CalculatedDeviation","commentType","IssueComment","IssueChangeComment","RecorditemComment","RecorditemChangeComment","disturbanceType","AnalysisMode","QUERYLIST","QUERYSETTINGS","SUMMARY","MATRIX","CHART","WEIGHTEDISSUESELECTION","WEIGHTEDISSUERATING","WEIGHTEDISSUECORRECTIVEACTIONS","WEIGHTEDISSUECOMPARISON","Equal","CorrectiveActionsGrouping","Rating","Responsibility","Accountability","Consultability","Informed","PrintOptionsGroups","CoveringPage","RecordData","Formatting","WeightedForms","CorrectiveActions","DatePickerTypes","Creation","Modification","Deadline","KeyCodes","Backspace","Tab","Enter","Shift","Ctrl","Alt","Pause","CapsLock","Space","PageUp","PageDown","End","Home","Left","Up","Right","Down","LeftWindowKey","RightWindowKey","SelectKey","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NumLock","ScrollLock","Semicolon","Comma","A","C","SearchTypes","Searchfilter","Issues","CreatedBy","ModifiedBy","Ident","CustomIdent","ElementCodings","IssueTypes","Tasks","Resubmissions","Notes","Inspections","Cached","Cached_Title","Cached_Descriptions","Cached_ElementCodings","CachedTypes","Rooms","Analysis","Changemode","Changemode_Rooms","Changemode_Resubmissions","Changemode_Items","Changemode_Groups","Changemode_Forms","Changemode_FormTemplates","Changemode_Files","Changemode_System","Changemode_Schedules","Changemode_Priorities","Changemode_Categories","Changemode_Classifications","Changemode_Keywords","Changemode_Status","ExactIdent","IssueProcessingStatus","OK","Warning","Overdue","FrequencySubdayTypes","OnceADay","RepeatedMinutely","RepeatedHourly","RepeatOnStateChange","FrequencyTypes","Daily","Weekly","Monthly","MonthlyRelative","Yearly","YearlyRelative","Sunday","Months","January","February","March","April","May","June","July","August","September","October","November","December","PeriodTarget","Recording","IssueCreation","IssueModification","IssueDeadline","FontSizeType","Small","Medium","Large","Orientation","Automatic","Potrait","Landscape","CustomMenuItemActionType","ShowCalendar","ShowIssueReport","ShowCheckpoints","OpenSchedulingWindow","OpenFormWindow","ShowInformation","ShowFloorPlan","ShowBluetoothSettings","ShowIndividualData","ShowScaleSettings","ShowDisturbancesFromRecordings","ShowSchedulingOverview","ShowRecordedFiles","ShowNews","ShowDashboardOffice","ShowIssueArchive","CustomMenuItemSystemID","DashboardOffice","Information","IssueReport","DisturbancesFromRecordings","IssueArchive","SchedulingOverview","RecordedFiles","News","ImageSize","TemporaryDeviationOffsetType","Minute","Hour","Day","NotModified","Added","Edited","Moved","EditedAndMoved","Accepted","Bad_Gateway","Bad_Request","Continue","Created","Expectation_Failed","Failed_Dependency","Gateway_Timeout","Gone","Http_Version_Not_Supported","Insufficient_Space_On_Resource","Insufficient_Storage","Internal_Server_Error","Length_Required","Locked","Method_Failure","Method_Not_Allowed","Moved_Permanently","Moved_Temporarily","Multi_Status","Multiple_Choices","Network_Authentication_Required","No_Content","Non_Authoritative_Information","Not_Acceptable","Not_Found","Not_Implemented","Not_Modified","Ok","Partial_Content","Payment_Required","Precondition_Failed","Precondition_Required","Processing","Proxy_Authentication_Required","Request_Header_Fields_Too_Large","Request_Timeout","Request_Uri_Too_Long","Requested_Range_Not_Satisfiable","Reset_Content","See_Other","Service_Unavailable","Switching_Protocols","Temporary_Redirect","Too_Many_Requests","Unprocessable_Entity","Unsupported_Media_Type","Use_Proxy","processType","Custom","processActionType","Email","PDF","Responsibilities","ShareCorrectiveActions","notificationType","IssueCreated","IssueModified","IssueCommented","IssueReminder","IssueArchived","IssueExpired","RecorditemCreated","FormIssueModified","RecorditemOverdue","FormIssueArchived","UserImport","Errors","AlreadyExist","AlreadyExistsInFile","DoesNotExist","IsInvalid","ContainsInvalidLetters","WrongLicenseCombination","IsNotGiven","PasswordPolicyNotApplied","Password","UserLicenseType","ChangeCommentRequiredType","No","OnChange","OnSet","OnChangeOrSet","StatusChangeTiming","Offset","AutomaticStatusChangeOffsetType","Minutes","Hours","Days","Years","RecordingRights","AdhocRecording","ModifyRecordedValues","DeleteAdditionalRecorditemFiles","ModifyMasterdata","UnlockRecordings","DeleteRecorditems","DocumentationRights","CreateAndModifyIssueComments","CreateAndModifyActionIssue","CreateAndModifyAdditionalRecordingFiles","CreateAndModifyRecordingComments","ModifyOrDeleteCommentsOfOtherUsers","DeleteAdditionalRecordingFiles","ReportQueryModifications","ShowSyncOverview","ExportMasterData","ManageSessions","ModificationModeRights","AccessEditMode","ModifyPermissions","ChangeStateOfIncompleteIssues","ShowAllIssues","ShowSelfCreatedOrModifiedIssues","DeleteSubsamples","Issues_CreateOrModifyIssues","Issues_CreateOrModifyTasks","Issues_CreateOrModifyForms","Issues_CreateOrModifyNotes","Issues_CreateOrModifyDisturbances","Issues_CreateOrModifyInspections","Issues_CreateOrModifyInvestigations","Issues_CreateOrModifySchedulings","Issues_ConvertTaskToDisturbance","Issues_ConvertIssueToTask","IssueProperties_ActivateNote","IssueProperties_Classifications","IssueProperties_Contacts","IssueProperties_ContactGroups","IssueProperties_CustomId","IssueProperties_DeactivateNote","IssueProperties_Deadline","IssueProperties_Description","IssueProperties_EstimatedEffort","IssueProperties_Files","IssueProperties_Keywords","IssueProperties_Location","IssueProperties_Priority","IssueProperties_Reminding","IssueProperties_Responsibilities","IssueProperties_State","IssueProperties_Title","MarkAllAsRead","CenterTreeSearchResultsRepresentation","Tree","ResultsOnlyList","ObjectTemplateLoader","CheckpointGroupTemplateLoader","MasterdataTemplateLoader","FormulaFunctions","Context","UpdateContext","ouIdentifier","OuIdentifier","additionalInformation","AdditionalInformation","GetFunction","keyMap","getResubmissionitemForElement","subsamplenumber","resubmissionitem","getCurrentOrganizationUnit","currentIssue","isAdhoc","IssueType","Functions","Resubmissionitem","getRecorditemForResubmissionitem","LastValue","SubsampleValue","Subsamplenumber","MasterdataValue","groupTitle","cpTitle","masterdataLocationIdentifier","masterdataLocation","OusWithMasterdata","cp","ParentOrganizationUnit","currentOU","DayDif","dateA","dateB","MonthDif","dayA","dayB","YearDif","monthA","monthB","DayAdd","MonthAdd","YearAdd","EndOfMonth","Today","Month","Year","toLocaleTimeString","Now","MinuteDif","hourA","hourB","minuteA","HourDif","MinuteAdd","HourAdd","True","False","If","condition","trueValue","falseValue","IsBlank","IfBlank","Abs","abs","number","Sqrt","sqrt","Round","decimals","Rounddown","Roundup","FormTitle","issueForm","IssueTypeAbbreviation","IssueID","IssueRevision","IssueCreationtimestamp","IssueLastModificationtimestamp","IssueTitle","IndividualDataProperty","propertyDefinition","foreignValue","schemaName","selectedDataRecord","dataRecord","GetEntity","ReplaceCharacter","char","replacement","replaceRegex","dateString","metaCharRegex","isTimeNull","EntityProperty","OuPropertyValue","propertyTitle","currentLocation","additionalProperties","entityTitles","individualdataResult","rawValue","selectedIndividualdataEntities","emailAddresses","mail","OuIdentCode","OuInternalIdentifier","Contains","Length","Substring","startIndex","Split","separator","rxText","ch","ItemFromArray","StructureValue","valueIdentifier","RandomNumber","WeekDay","returnType","weekDay","ParseToNumber","Stack","_values","OperatorToken","symbol","isUnary","_symbol","_isUnary","_rightAssociative","_precedence","FunctionToken","arity","_name","_arity","FunctionLeftParenthesisToken","FunctionRightParenthesisToken","LeftParenthesisToken","RightParenthesisToken","CommaToken","NumberToken","_value","StringToken","PartialStringToken","ReferenceToken","_type","_id","WhitespaceToken","UnknownToken","isEmpty","peek","getSymbol","isLeftAssociative","isRightAssociative","isBinary","comparePrecedence","other","getName","setName","getArity","setArity","getType","getId","_numberRegex","_alphaRegex","_alphanumericRegex","_referenceRegex","dot","filterRedundantDots","pointCounter","newValue","tokenize","expression","otherToken","tokens","parenthesesStack","lastIdx","remember","fixDecimals","floatTokens","numberValue","hasDecimals","decimalPart","isNumberOrStringOrDate","_functions","functions","__proto__","rpnTokens","token","parameterArray","firstParameter","secondParameter","output","tokenStack","arityStack","resultStack","fnName","reverse","containsFormulaFunctions","_tree","_search","_maxDepth","_currentDepth","Center","$center","$centerTop","$focusCurrentEntity","$actionDropdownButton","$depthChooser","treeNodeChangedByCenterNavigation","select","openAncestorNodes","selectNode","scrollToNode","add","resetSearch","resetDepthChooser","addTo","parentEntity","addBefore","addAfter","search","initSearch","initDepthChooser","Mode","placeholder","getMaxDepth","onDetailedElementSearch","searchRegExp","keywordsMatch","IsSearchable","searchableValue","onSelectNode","_event","locationHash","currentTab","GetCurrentMode","GetCurrentTab","onMoveTreeNode","pos","oldLayout","oldAncestor","newAncestor","isDescendantOf","oldParentEntity","newParentEntity","parentNode","previousEntity","previousNode","nextEntity","nextNode","updateList","FloorPlan","DeleteLocationFromLayout","putProperty","putFolder","moveListNode","newParentEntityChildren","newMenuitemPosition","menuItemOID","onDropTreeNode","previous","selectedOID","Schedules","AddPrototype","done","createScheduleList","AddItem","AddFormTemplate","AddExternalDataSource","Remove","AddPropertyFromCatalog","AddPropertyTemplate","Init","$domTree","AddGroupTemplate","createList","AddMasterdataTemplate","InfoTab","masterdata","AddGroupParameterTemplate","AddMasterdataParameterTemplate","onSearch","resultCount","getSearchResultCount","setResultCount","onSelectPreviousSearchResult","selectPreviousSearchResult","onSelectNextSearchResult","selectNextSearchResult","onSelectDepth","openDepth","onFocusCurrentEntity","onActionDropdownButtonClick","usersMode","getGenericTreeDropdownItems","showExportButtons","onExportMasterdataOfCompleteHierarchyClick","onExportMasterdataOfCurrentLocationClick","GetCurrentSchema","IsReadonly","urlHash","schemaLength","onExportClick","onUserExampleExportClick","ShowTUEVAuditAnalysis","IsStoreRegion","onTUEVStoreExportClick","params","ImportType","$upload","upload","onUserExcelImportUploaded","onElementExcelImportUploaded","centerTreeSearchResultsRepresentation","representationType","setSearchResultsRepresentation","refresh","AllowExcelExport","onlyActive","exportType","exportElements","ExportType","OnlyActive","onExportSuccess","fail","exportMasterdata","LocationOID","WithChildLocations","GetWithDeactivatedElements","InvalidRows","friendlyDownloadName","newUsers","modifiedElements","modifiedRoles","modifiedTeams","usernames","invalidRows","validRows","teamParent","invalidRowsArray","hasEnoughLimitedLicenses","hasEnoughViewRightLicenses","assignedLicenses","userLicenses","UserLicenses","FullLicenses","LimitedLicenses","ViewRightLicenses","RootTeam","rowData","trimmedUsername","elementIndex","existingRole","existingTeam","existingOU","licenseAndRoleCombinationIsInvalid","newTeam","licenseType","newUser","EnforcePasswordPolicy","ChangePassword","usernameIsInvalid","usernameExistsInClient","getMaxPosition","Item","newFullLicensesCount","newUsersList","newLimitedLicensesCount","newViewRightLicensesCount","hasEnoughFullLicenses","licenses","newUsersArray","availabilityDeferred","doNotImport","username","checkEmailAddressAvailability","emailAddressCheckDeferred","removeFromImport","email","importItem","validRowsList","showUserImportIsEmptyMessage","userRow","userImportDeferred","showUserImportErrors","errorRows","NewUsers","Buttons","CustomAction","downloadErrorRowsExcel","Popups","UserImportErrors","progressbarText","newElements","createElements","newElement","AddTo","rsp","isTree","showButton","RootScheduling","GetPrototypeSchedules","GetCurrentEntities","FormTemplates","Templates","Masterdata","PropertyTemplates","Categories","Priorities","RootFolder","MailTemplatesRoot","searchResultsRepresentation","classes","onDetailedSearch","moveable","moveBefore","moveAfter","targetNode","depth","droppable","dropBefore","dropAfter","accept","targetEntity","sourceEntity","isList","moveTo","dropTo","Select","Add","AddBefore","AddAfter","MoveTo","removeNode","ResetSearch","ResetDepthChooser","AddClassToEntityNode","cssClass","RemoveClassFromEntityNode","removeClassFromNode","ColorPicker","IsStatic","$staticContainer","IsRenderTo","RenderTo","initialColor","InitialColor","IsOptional","picker","CP","$picker","$column","$box","defaultColors","DefaultColors","defaultColor","prependTo","$textinput","ShowTextbox","HSV2HEX","prepend","minLength","required","$btn","caption","fit","unbindEvents","updateTimeout","$defaultColors","toUpperCase","background-color","getContrastTextColor","SetBackgroundColor","backgroundColor","onDefaultColorClick","updatePicker","enter","exit","SetColor","hexCode","skipRows","errorHandler","typeParam","skip","AssignmentOID","AssignmentID","$scrollableContainer","scrollableContainerSelector","clipboard","self","$contextmenu","pageY","pageX","anyItemVisible","styles","useSelectorAsContainer","target","detach","$contextMenu","setClipboardData","clipboardid","getClipboardData","wipeClipboardData","clipboardId","$dropdownButton","isMultiselect","allowNoSelection","unselectOnSecondClick","updateButtonTitle","defaultButtonTitle","onChangeEvent","$dropdownPanel","availableOptions","selectedOptions","DropdownList","addOptions","Options","Multiselect","AllowNoSelection","ToggleAllOptionsButton","UpdateButtonTitle","DefaultButtonTitle","UnselectOnSecondClick","OnChangeEvent","OnShowEvent","OnHideEvent","onToggleDropdownListClick","onStopPropagationClick","onElementClick","onCloseClick","onBodyClick","updateButton","tmpOption","$parent","targetOffset","offset","containerOffset","targetWidth","targetHeight","containerWidth","containerHeight","popoverWidth","popoverHeight","targetPosition","targetCenter","vertical","min-width","option","IsSelected","selectOption","optionValue","unselectOption","resetOptions","$selectedOptions","SetOptions","AddOptions","RemoveOptions","GetSelectedOptions","ResetOptions","$navMain","Nav","availableNavigationItems","navigationIsResized","getNav","withoutChangemode","clientNavigation","UI","defaultNav","IconClass","IconPath","Hash","RequiredLicense","RequiredRight","defaultNavigation","defaultNavigationMap","navItem","childNavItem","Path","defaultNavItem","NoColl","Modifications","navigation","filterNavigationItems","OfficeUIRights","navItemConfig","renderNav","nav","renderNavItem","level","href","onToggleMenu","scrollbarInstance","OverlayScrollbarsGlobal","OverlayScrollbars","animationDuration","update","onCommit","send","changed","ReloadAccount","onNavigationMouseEnter","$tooltip","onNavigationMouseLeave","GetHeader","pathSegment","titles","GetTitle","destroy","scrollbars","theme","autoHide","UpdateCurrentAreaLinks","navigationMarkup","GetNavItem","SetResized","resize"],"mappings":"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","file":"tools.min.js","sourcesContent":["(function (global) {\r\n var Tools = {};\r\n\r\n /**\r\n * Prüft, ob der übergebene CSRF-Token noch gültig ist\r\n * @param csrfToken - Der Token der geprüft werden soll\r\n * @returns {boolean} - Ist der Token noch gültig\r\n */\r\n Tools.IsCsrfTokenValid = function(csrfToken) {\r\n var tokenCreationTimestamp = parseInt(csrfToken.split('.').pop() || '0', 10);\r\n\r\n if (isNaN(tokenCreationTimestamp)) {\r\n return false;\r\n }\r\n\r\n // Erstellzeitpunkt des Tokens + Gültigkeit des Tokens (1/4 wird als Puffer abgezogen)\r\n return Date.now() < (tokenCreationTimestamp + (Config.CookieConfig.CsrfValidityMinutes * 45)) * 1000;\r\n };\r\n\r\n /**\r\n * Erstellt ein Deferred bei dem das Rückgabe-Objekt der promise Funktion um eine abort Funktion erweitert wird\r\n * @param abortCallback - Der Callback, welcher nach dem Aufruf von abort aufgerufen werden soll\r\n * @returns {JQuery.Deferred}\r\n */\r\n Tools.CreateAbortableDeferred = function (abortCallback) {\r\n var deferred = $.Deferred();\r\n var _promise = deferred.promise;\r\n\r\n deferred.promise = function() {\r\n var prom = _promise.apply(this, arguments);\r\n\r\n prom.abort = function() {\r\n if (deferred.state() === 'pending') {\r\n abortCallback();\r\n deferred.reject();\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return prom;\r\n };\r\n\r\n return deferred;\r\n };\r\n\r\n Tools.IsValidGuid = function (str) {\r\n return (/[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}/ig).test(str);\r\n };\r\n\r\n Tools.GetEmptyGuid = function () {\r\n return '00000000-0000-0000-0000-000000000000';\r\n };\r\n\r\n Tools.GetDefaultColors = function () {\r\n return ['#7E1210', '#DB843D', '#F7EF38', '#B5CA92', '#89A54E', '#80805C', '#92A8CD', '#3D96AE', '#385B6B', '#80699B', '#FFFFFF', '#000000'];\r\n };\r\n\r\n Tools.FixSVGMetrics = function (marksSVG) {\r\n if (!marksSVG) {\r\n return null;\r\n }\r\n\r\n var reg = /]*width=\"(\\d+)\"[^>]*height=\"(\\d+)\"[^>]*>/ig;\r\n\r\n return marksSVG.replace(reg, '');\r\n };\r\n\r\n Tools.FixMarksSize = function (img) {\r\n if (img.style.display === 'none') {\r\n setTimeout(function() {\r\n Tools.FixMarksSize(img);\r\n }, 300);\r\n\r\n return;\r\n }\r\n\r\n var $img = $(img);\r\n var $marks = $img.siblings('svg.marks');\r\n\r\n if (!$marks.length) {\r\n $marks = $img.closest('.image-container').find('svg.marks');\r\n }\r\n\r\n if ($marks.length) {\r\n $marks.css({\r\n 'width': img.clientWidth,\r\n 'height': img.clientHeight\r\n });\r\n }\r\n };\r\n\r\n Tools.createUnitTitle = function (unit) {\r\n if (!unit) {\r\n return '';\r\n }\r\n\r\n var unitTitle = unit.Title;\r\n\r\n if (!!unit.Description) {\r\n unitTitle += ' (' + unit.Description + ')';\r\n }\r\n\r\n return unitTitle;\r\n };\r\n\r\n Tools.replaceHtmlEntities = function (val) {\r\n if (typeof val !== 'string') {\r\n return val;\r\n }\r\n\r\n return val\r\n .replace(//gim, '\\n')\r\n .replace(/ /gim, ' ');\r\n };\r\n\r\n Tools.escRegExp = function (str) {\r\n return (str || '').replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n };\r\n\r\n Tools.escapeHtml = function (str) {\r\n if (typeof str !== 'string') {\r\n return str;\r\n }\r\n\r\n str = str\r\n .replace(//gm, '>')\r\n .replace(/\"/gm, '"')\r\n .replace(/'/gm, ''');\r\n\r\n return str.replace(/\\r?\\n|\\r/g, '
');\r\n };\r\n\r\n Tools.unescapeHtml = function (str) {\r\n if (typeof str !== 'string') {\r\n return str;\r\n }\r\n\r\n return (str || '')\r\n .replace(/</gm, '<')\r\n .replace(/>/gm, '>')\r\n .replace(/"/gm, '\"')\r\n .replace(/'/gm, '\\'')\r\n .replace(//gm, '\\n')\r\n };\r\n\r\n Tools.SortByOrder = function (objA, objB) {\r\n return (objA.Order || 0) - (objB.Order || 0);\r\n };\r\n\r\n Tools.SortByPosition = function (objA, objB) {\r\n return (objA.Position || 0) - (objB.Position || 0);\r\n };\r\n\r\n Tools.SortAssignedFilesFromCatalogue = function (a, b, dataSourceIsReportMode) {\r\n dataSourceIsReportMode = dataSourceIsReportMode || false;\r\n\r\n var posA = a.Position || 0;\r\n var posB = b.Position || 0;\r\n\r\n if (posA === posB) {\r\n var fileA = dataSourceIsReportMode ? Files[a.OID] : changemode.Files[a.OID];\r\n var fileB = dataSourceIsReportMode ? Files[b.OID] : changemode.Files[b.OID];\r\n\r\n if (!(fileA && fileB)) {\r\n return 0;\r\n }\r\n\r\n return Tools.SortByTitle(fileA, fileB);\r\n }\r\n\r\n return posA - posB;\r\n };\r\n\r\n Tools.SortByRow = function (objA, objB) {\r\n if (!objA) {\r\n return -1;\r\n }\r\n\r\n if (!objB) {\r\n return 1;\r\n }\r\n\r\n return (objA.Row || 0) - (objB.Row || 0);\r\n };\r\n\r\n Tools.SortByLastnameThenFirstname = function (objA, objB) {\r\n if (!objA) {\r\n return -1;\r\n }\r\n\r\n if (!objB) {\r\n return 1;\r\n }\r\n\r\n var lastnameA = (objA.Lastname || '').toLowerCase();\r\n var lastnameB = (objB.Lastname || '').toLowerCase();\r\n\r\n if (lastnameA === lastnameB) {\r\n var firstnameA = (objA.Firstname || '').toLowerCase();\r\n var firstnameB = (objB.Firstname || '').toLowerCase();\r\n\r\n return firstnameA === firstnameB ? 0 : (firstnameA < firstnameB ? -1 : 1);\r\n }\r\n return lastnameA < lastnameB ? -1 : 1;\r\n };\r\n\r\n Tools.SortByFirstnameThenLastname = function (objA, objB) {\r\n if (!objA) {\r\n return -1;\r\n }\r\n\r\n if (!objB) {\r\n return 1;\r\n }\r\n\r\n var firstnameA = (objA.Firstname || '').toLowerCase();\r\n var firstnameB = (objB.Firstname || '').toLowerCase();\r\n\r\n if (firstnameA === firstnameB ) {\r\n var lastnameA = (objA.Lastname || '').toLowerCase();\r\n var lastnameB = (objB.Lastname || '').toLowerCase();\r\n\r\n return lastnameA === lastnameB ? 0 : (lastnameA < lastnameB ? -1 : 1);\r\n }\r\n return firstnameA < firstnameB ? -1 : 1;\r\n };\r\n\r\n Tools.SortByFullname = function (a, b) {\r\n if (!a) {\r\n return -1;\r\n }\r\n\r\n if (!b) {\r\n return 1;\r\n }\r\n\r\n var fullnameA = (a.Fullname || '').toLowerCase();\r\n var fullnameB = (b.Fullname || '').toLowerCase();\r\n\r\n if (fullnameA === fullnameB) {\r\n return 0;\r\n }\r\n\r\n return fullnameA > fullnameB ? 1 : -1;\r\n };\r\n\r\n Tools.SortByTitle = function (a, b) {\r\n if (!a) {\r\n return -1;\r\n }\r\n\r\n if (!b) {\r\n return 1;\r\n }\r\n\r\n var titleA = (a.Title || '').toLowerCase();\r\n var titleB = (b.Title || '').toLowerCase();\r\n\r\n if (titleA === titleB) {\r\n return 0;\r\n }\r\n\r\n return titleA > titleB ? 1 : -1;\r\n };\r\n\r\n Tools.SortByCategoryName = function(a, b) {\r\n if (!a) {\r\n return -1;\r\n }\r\n\r\n if (!b) {\r\n return 1;\r\n }\r\n\r\n var nameA = a.name.toLowerCase();\r\n var nameB = b.name.toLowerCase();\r\n\r\n if (nameA === nameB) {\r\n return 0;\r\n }\r\n\r\n return nameA > nameB ? -1 : 1;\r\n };\r\n\r\n Tools.SortStringArray = function (a, b) {\r\n a = (a || '').toLowerCase();\r\n b = (b || '').toLowerCase();\r\n\r\n return a === b ? 0 : (a < b ? -1 : 1);\r\n };\r\n\r\n Tools.createOverlay = function (id, zIndex, fn) {\r\n var $overlay = $('
'.format(id));\r\n\r\n if (+zIndex) {\r\n $overlay.css('z-index', zIndex);\r\n }\r\n\r\n if (fn && fn instanceof Function) {\r\n $overlay.on('click', fn);\r\n }\r\n\r\n $('body').append($overlay);\r\n\r\n return $overlay;\r\n };\r\n\r\n Tools.getFirstSortedElement = function (entityMap, propertyName, isChangemode) {\r\n var entities = Object\r\n .keys(entityMap)\r\n .map(function (k) { return entityMap[k]; })\r\n .sort(function (a, b) {\r\n var propA = (a[propertyName] || '');\r\n var propB = (b[propertyName] || '');\r\n\r\n if (typeof propA === 'string') {\r\n propA = propA.toLowerCase();\r\n }\r\n\r\n if (typeof propB === 'string') {\r\n propB = propB.toLowerCase();\r\n }\r\n\r\n if (propA === propB) {\r\n return 0;\r\n }\r\n\r\n return propA < propB ? -1 : 1;\r\n });\r\n\r\n for (var i = 0, len = entities.length; i < len; i++) {\r\n var entity = entities[i];\r\n\r\n if (!isChangemode || entity.ModificationType !== Enums.ModificationType.Deleted) {\r\n return entity;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n Tools.partial = function (fn) {\r\n var slice = Array.prototype.slice;\r\n var args = slice.call(arguments, 1);\r\n\r\n return function () {\r\n return fn.apply(this, args.concat(slice.call(arguments)));\r\n };\r\n };\r\n\r\n Tools.indexOf = function (collection, valueOrFunction, key) {\r\n if (typeof valueOrFunction === 'function') {\r\n for (var i = 0, len = (collection || []).length; i < len; i++) {\r\n if (valueOrFunction(collection[i]) === true) {\r\n return i;\r\n }\r\n }\r\n } else if (typeof key === 'string') {\r\n for (var i = 0, len = (collection || []).length; i < len; i++) {\r\n if (collection[i].hasOwnProperty(key) &&\r\n collection[i][key] === valueOrFunction) {\r\n return i;\r\n }\r\n }\r\n } else {\r\n for (var i = 0, len = (collection || []).length; i < len; i++) {\r\n if (collection[i] === valueOrFunction) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n Tools.contains = function (collection, valueOrFunction, key) {\r\n return !!~Tools.indexOf(collection, valueOrFunction, key);\r\n };\r\n\r\n Tools.any = function (collection, value, key) {\r\n for (var i = 0, len = (value || []).length; i < len; i++) {\r\n if (Tools.contains(collection, value[i], key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n Tools.getFirst = function (collection, valueOrFunction, key) {\r\n var idx = Tools.indexOf(collection, valueOrFunction, key);\r\n\r\n if (!!~idx) {\r\n return collection[idx];\r\n }\r\n\r\n return null;\r\n };\r\n\r\n Tools.remove = function (collection, valueOrFunction, key) {\r\n collection = collection || [];\r\n\r\n var idx = Tools.indexOf(collection, valueOrFunction, key);\r\n\r\n if (!!~idx) {\r\n collection.splice(idx, 1);\r\n }\r\n\r\n return collection;\r\n };\r\n\r\n Tools.addUnique = function (collection, value, key) {\r\n collection = collection || [];\r\n\r\n if (typeof value === 'undefined' || value === null) {\r\n return collection;\r\n }\r\n\r\n if (!$.isArray(value)) {\r\n value = [value];\r\n }\r\n\r\n var useKey = typeof key === 'string';\r\n\r\n for (var idx = 0; idx < value.length; idx++) {\r\n var val = value[idx];\r\n\r\n if (useKey) {\r\n if (val.hasOwnProperty(key) &&\r\n !Tools.contains(collection, val[key], key)) {\r\n collection.push(val);\r\n }\r\n } else if (!Tools.contains(collection, val)) {\r\n collection.push(val);\r\n }\r\n }\r\n\r\n return collection;\r\n };\r\n\r\n Tools.valueOrDefault = function (value, defaultValue) {\r\n if (typeof value === 'undefined' || value === null) {\r\n return defaultValue;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n Tools.reduce = function (collection, fn, acc) {\r\n var len = (collection || []).length;\r\n var i = 0;\r\n\r\n if (len && (typeof acc === 'undefined' || acc === null)) {\r\n acc = collection[0];\r\n i = 1;\r\n }\r\n\r\n while (i < len) {\r\n acc = fn(collection[i], acc);\r\n i++;\r\n }\r\n\r\n return acc;\r\n };\r\n\r\n Tools.all = function (dict, attr, op, value) {\r\n var propCount = Object.keys(dict || {}).length;\r\n var result = [];\r\n\r\n if (propCount) {\r\n for (var key in dict) {\r\n var obj = dict[key];\r\n var invValue = obj[attr];\r\n var isHit = false;\r\n\r\n switch (op) {\r\n case '!==':\r\n isHit = invValue !== value;\r\n break;\r\n case '===':\r\n isHit = invValue === value;\r\n break;\r\n case '<':\r\n isHit = invValue < value;\r\n break;\r\n case '<=':\r\n isHit = invValue <= value;\r\n break;\r\n case '>':\r\n isHit = invValue > value;\r\n break;\r\n case '>=':\r\n isHit = invValue >= value;\r\n break;\r\n }\r\n\r\n if (isHit) {\r\n result.push(obj);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n Tools.getAll = function (collection, valueOrFunction, key) {\r\n var result = [];\r\n var compareFunction;\r\n\r\n if (typeof valueOrFunction === 'function') {\r\n compareFunction = function(item) {\r\n return valueOrFunction(item) === true;\r\n };\r\n } else if (typeof key === 'string') {\r\n compareFunction = function(item) {\r\n return Tools.IsSet(item) && item.hasOwnProperty(key) && item[key] === valueOrFunction;\r\n };\r\n } else {\r\n compareFunction = function(item) {\r\n return item === valueOrFunction;\r\n }\r\n }\r\n\r\n if (collection instanceof Array) {\r\n for (var i = 0, len = (collection || []).length; i < len; i++) {\r\n var collectionItem = collection[i];\r\n\r\n if (compareFunction(collectionItem)) {\r\n result.push(collectionItem);\r\n }\r\n }\r\n } else if (Tools.hasProperties(collection)) {\r\n for (var itemKey in collection) {\r\n if (!collection.hasOwnProperty(itemKey)) {\r\n continue;\r\n }\r\n\r\n var collectionItem = collection[itemKey];\r\n\r\n if (compareFunction(collectionItem)) {\r\n result.push(collectionItem);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n Tools.clone = function (value, excludes) {\r\n function internalCloneWithExcludes(value, excludes) {\r\n if ($.isArray(value)) {\r\n return $.map(value, function (v) {\r\n return internalCloneWithExcludes(v, excludes);\r\n });\r\n }\r\n\r\n if ($.isPlainObject(value)) {\r\n var result = {};\r\n\r\n $.each(value, function (k, v) {\r\n if (!Tools.contains(excludes, k)) {\r\n result[k] = internalCloneWithExcludes(v, excludes);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return new Date(value.getTime());\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function internalCloneWithoutExcludes(value) {\r\n if ($.isArray(value)) {\r\n return $.map(value, function (v) {\r\n return internalCloneWithoutExcludes(v);\r\n });\r\n }\r\n\r\n if ($.isPlainObject(value)) {\r\n var result = {};\r\n\r\n $.each(value, function (k, v) {\r\n result[k] = internalCloneWithoutExcludes(v);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return new Date(value.getTime());\r\n }\r\n\r\n return value;\r\n }\r\n\r\n return (excludes || []).length ?\r\n internalCloneWithExcludes(value, excludes) :\r\n internalCloneWithoutExcludes(value);\r\n };\r\n\r\n Tools.sort = function (collection, key) {\r\n return collection.sort(function (a, b) {\r\n var valA = a[key];\r\n var valB = b[key];\r\n\r\n if (valA === valB) {\r\n return 0;\r\n }\r\n\r\n return valA > valB ? 1 : -1;\r\n });\r\n };\r\n\r\n Tools.pushStateToHistory = function (fragment) {\r\n history.pushState(null, navigator.title, fragment);\r\n $(window).trigger('hashchange');\r\n };\r\n\r\n Tools.GetFileByFilename = function (filename) {\r\n if (Object.keys(Files || {}).length) {\r\n for (var oid in Files) {\r\n var file = Files[oid];\r\n\r\n if (file.Filename === filename) {\r\n return file;\r\n }\r\n }\r\n }\r\n };\r\n\r\n Tools.isNumber = function (value) {\r\n return typeof value === 'number' && !isNaN(value);\r\n };\r\n\r\n Tools.isBool = function (value) {\r\n return typeof value === 'boolean';\r\n };\r\n\r\n Tools.IsElementInViewport = function (element, ignoreXAxis, ignoreYAxis) {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n if (typeof jQuery === \"function\" && element instanceof jQuery) {\r\n element = element[0];\r\n }\r\n\r\n var rect = element.getBoundingClientRect();\r\n\r\n return (ignoreYAxis || (rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight))) &&\r\n (ignoreXAxis || (rect.left >= 0 && rect.right <= (window.innerWidth || document.documentElement.clientWidth)));\r\n };\r\n\r\n Tools.Throttle = function (fn, threshold, scope) {\r\n var last;\r\n var timeout;\r\n\r\n threshold = threshold || 250;\r\n\r\n return function () {\r\n var context = scope || this;\r\n var now = +new Date();\r\n var args = arguments;\r\n\r\n if (last && now < last + threshold) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () {\r\n last = now;\r\n fn.apply(context, args);\r\n }, threshold);\r\n } else {\r\n last = now;\r\n fn.apply(context, args);\r\n }\r\n };\r\n };\r\n\r\n Tools.Debounce = function (fn, threshold, immediate, scope) {\r\n var timeout;\r\n\r\n threshold = threshold || 250;\r\n\r\n return function() {\r\n var context = scope || this;\r\n var args = arguments;\r\n\r\n if (immediate && !timeout) {\r\n fn.apply(context, args);\r\n }\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function() {\r\n timeout = null;\r\n\r\n if (!immediate) {\r\n fn.apply(context, args);\r\n }\r\n }, threshold);\r\n };\r\n };\r\n\r\n Tools.GetDefaultUIRights = function (targetIsOffice) {\r\n targetIsOffice = targetIsOffice || false;\r\n\r\n var menus = [];\r\n\r\n CustomMenuItems.GetMenuIds().forEach(function (id) {\r\n var menuItems = CustomMenuItems.GetByMenuId(id);\r\n var children = [];\r\n\r\n menuItems\r\n .filter(function (menuItem) {\r\n return !menuItem.Deleted && targetIsOffice ?\r\n menuItem.IsAvailableInOffice :\r\n menuItem.IsAvailableInRecordingApp;\r\n })\r\n .forEach(function (menuItem) {\r\n children.push({\r\n ID: menuItem.ID,\r\n IsEnabled: true,\r\n Position: menuItem.Position\r\n });\r\n });\r\n\r\n children.sort(function(a, b) {\r\n return a.Position - b.Position;\r\n });\r\n\r\n if (!children.length) {\r\n return;\r\n }\r\n\r\n menus.push({\r\n ID: id,\r\n Children: children\r\n });\r\n });\r\n\r\n return menus;\r\n };\r\n\r\n Tools.compareNaturalStrings = function (a, b) {\r\n var lenA, lenB, i, j, strA, strB, chunkA, chunkB, result;\r\n\r\n if (!a && !b) {\r\n return 0;\r\n }\r\n\r\n a = a || '';\r\n b = b || '';\r\n\r\n lenA = a.length;\r\n lenB = b.length;\r\n i = 0;\r\n j = 0;\r\n\r\n while (i < lenA && j < lenB) {\r\n var charA = a[i];\r\n var charB = b[j];\r\n var spaceA = new Array(lenA);\r\n var spaceB = new Array(lenB);\r\n var locA = 0;\r\n var locB = 0;\r\n\r\n do {\r\n spaceA[locA++] = charA;\r\n i++;\r\n\r\n if (i < lenA) {\r\n charA = a[i];\r\n } else {\r\n break;\r\n }\r\n } while (/\\d/.test(charA) === /\\d/.test(spaceA[0]));\r\n\r\n do {\r\n spaceB[locB++] = charB;\r\n j++;\r\n\r\n if (j < lenB) {\r\n charB = b[j];\r\n } else {\r\n break;\r\n }\r\n } while (/\\d/.test(charB) === /\\d/.test(spaceB[0]));\r\n\r\n strA = spaceA.join('');\r\n strB = spaceB.join('');\r\n\r\n if (/\\d/.test(spaceA[0]) && /\\d/.test(spaceB[0])) {\r\n chunkA = parseInt(strA, 10);\r\n chunkB = parseInt(strB, 10);\r\n\r\n result = chunkA - chunkB;\r\n } else if (strA === strB) {\r\n result = 0;\r\n } else if (strA > strB) {\r\n result = 1;\r\n } else {\r\n result = -1;\r\n }\r\n\r\n if (result !== 0) {\r\n return result;\r\n }\r\n }\r\n\r\n return lenA - lenB;\r\n };\r\n\r\n Tools.hasProperties = function(obj) {\r\n if (!obj) {\r\n return false;\r\n }\r\n\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n Tools.createTreeContextMenu = function ($tree) {\r\n if (!$tree || !($tree instanceof $) || !$tree.is(':tree')) {\r\n return;\r\n }\r\n\r\n var tree = $tree.tree(true);\r\n\r\n function getTree() {\r\n if (tree.allNodes == null) {\r\n return $tree.tree(true);\r\n }\r\n\r\n return tree;\r\n }\r\n\r\n $tree.ContextMenu({\r\n selector: '.jquery-tree-node',\r\n zIndex: $tree.css('z-index'),\r\n show: function (node) {\r\n tree = getTree();\r\n\r\n if (!tree || !tree.allNodes) {\r\n return false;\r\n }\r\n\r\n tree.removeClassFromAllNodes('jquery-tree-node-context-menu-selected');\r\n tree.addClassToNode(node, 'jquery-tree-node-context-menu-selected');\r\n },\r\n hide: function () {\r\n tree = getTree();\r\n\r\n if (!tree || !tree.allNodes) {\r\n return false;\r\n }\r\n\r\n tree.removeClassFromAllNodes('jquery-tree-node-context-menu-selected');\r\n },\r\n items: [\r\n {\r\n type: 1,\r\n title: function() {\r\n tree = getTree();\r\n\r\n if (!tree || !tree.allNodes) {\r\n return;\r\n }\r\n\r\n var elementOID = contextmenu.$element.data('id');\r\n var treeNode = tree.allNodes[elementOID];\r\n var allChecked = true;\r\n var disabledCheckboxesExist = false;\r\n\r\n tree.walk(treeNode, function (node) {\r\n var isDisabled = node.checkbox &&\r\n (\r\n node.checkbox.disabled === true ||\r\n node.checkbox.disabled instanceof Function &&\r\n node.checkbox.disabled(node)\r\n );\r\n\r\n if (isDisabled) {\r\n disabledCheckboxesExist = true;\r\n }\r\n\r\n if (node.checkbox && !node.checkbox.checked && !isDisabled) {\r\n allChecked = false;\r\n return false;\r\n }\r\n });\r\n\r\n if (allChecked) {\r\n return disabledCheckboxesExist ?\r\n i18next.t('treePicker.contextMenu.unselectAllEnabled') :\r\n i18next.t('treePicker.contextMenu.unselectAll');\r\n }\r\n\r\n return disabledCheckboxesExist ?\r\n i18next.t('treePicker.contextMenu.selectAllEnabled') :\r\n i18next.t('treePicker.contextMenu.selectAll');\r\n },\r\n visible: function() {\r\n tree = getTree();\r\n\r\n if (!tree || !tree.allNodes) {\r\n return false;\r\n }\r\n\r\n var elementOID = contextmenu.$element.data('id');\r\n var treeNode = tree.allNodes[elementOID];\r\n\r\n return (treeNode.children || []).length;\r\n },\r\n click: function() {\r\n tree = getTree();\r\n\r\n if (!tree || !tree.allNodes) {\r\n return;\r\n }\r\n\r\n var elementOID = contextmenu.$element.data('id');\r\n var treeNode = tree.allNodes[elementOID];\r\n var changedNodes = [];\r\n var allChecked = true;\r\n\r\n tree.walk(treeNode, function (node) {\r\n var isDisabled = node.checkbox &&\r\n (\r\n node.checkbox.disabled === true ||\r\n node.checkbox.disabled instanceof Function &&\r\n node.checkbox.disabled(node)\r\n );\r\n\r\n if (node.checkbox && !node.checkbox.checked && !isDisabled) {\r\n allChecked = false;\r\n return false;\r\n }\r\n });\r\n\r\n tree.walk(treeNode, function(node) {\r\n if (!node || !node.checkbox) {\r\n return;\r\n }\r\n\r\n var isDisabled = node.checkbox &&\r\n (\r\n node.checkbox.disabled === true ||\r\n node.checkbox.disabled instanceof Function &&\r\n node.checkbox.disabled(node)\r\n );\r\n\r\n if (isDisabled) {\r\n return;\r\n }\r\n\r\n var isChecked = node.checkbox.checked;\r\n\r\n if (allChecked && isChecked) {\r\n tree.uncheckNode(node);\r\n changedNodes.push(node);\r\n } else if (!isDisabled && !allChecked && !isChecked) {\r\n tree.checkNode(node);\r\n changedNodes.push(node);\r\n }\r\n });\r\n\r\n var data = {\r\n node: treeNode,\r\n nodes: changedNodes,\r\n instance: tree\r\n };\r\n\r\n if (allChecked) {\r\n $tree.trigger('uncheck-nodes.tree', data);\r\n } else {\r\n $tree.trigger('check-nodes.tree', data);\r\n }\r\n }\r\n }\r\n ]\r\n });\r\n };\r\n\r\n Tools.CutConsecutivelyWhitespaces = function(str, maxWhitespaces) {\r\n if (!str) {\r\n return str;\r\n }\r\n\r\n var regex = new RegExp(' {' + (maxWhitespaces + 1) + ',}', 'gm');\r\n\r\n return str.replace(regex, ' '.repeat(maxWhitespaces));\r\n };\r\n\r\n Tools.IsValidVersionString = function(str) {\r\n return /\\d+\\.\\d+\\.\\d+(\\.\\d+)?/.test(str);\r\n };\r\n\r\n Tools.ZeroFillStringArray = function(a, bLength) {\r\n var remaining = bLength - a.length;\r\n\r\n while (remaining > 0) {\r\n a.push(\"0\");\r\n remaining--;\r\n }\r\n\r\n return a;\r\n };\r\n\r\n Tools.CompareVersion = function(versionA, versionB) {\r\n if (!versionA && !versionB) {\r\n return 0;\r\n }\r\n\r\n if (!versionA) {\r\n return -1;\r\n }\r\n\r\n if (!versionB) {\r\n return 1;\r\n }\r\n\r\n if (!Tools.IsValidVersionString(versionA) || !Tools.IsValidVersionString(versionB)) {\r\n return 0;\r\n }\r\n\r\n var versionAStringParts = versionA.split('.');\r\n var versionBStringParts = versionB.split('.');\r\n var versionAParts = Tools.ZeroFillStringArray(versionAStringParts, versionBStringParts.length)\r\n .map(function (s) { return parseInt(s, 10); });\r\n var versionBParts = Tools.ZeroFillStringArray(versionBStringParts, versionAStringParts.length)\r\n .map(function (s) { return parseInt(s, 10); });\r\n var versionAPartsLength = versionAParts.length;\r\n var versionBPartsLength = versionBParts.length;\r\n\r\n for (var i = 0; i < versionAPartsLength; i++) {\r\n if (versionBPartsLength == i) {\r\n return 1;\r\n }\r\n\r\n if (versionAParts[i] == versionBParts[i]) {\r\n continue;\r\n }\r\n\r\n return versionAParts[i] > versionBParts[i] ? 1 : -1;\r\n }\r\n\r\n if (versionAPartsLength != versionBPartsLength) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n Tools.IsSet = function(obj) {\r\n return typeof obj !== 'undefined' && obj !== null;\r\n };\r\n\r\n Tools.GetElementHierarchy = function (elementOID, withoutSelf) {\r\n var element = DataManager.OrganizationUnitLoader.Data.DataMap[elementOID];\r\n var hierarchy = [];\r\n\r\n if (!element) {\r\n return i18next.t('misc.unknown');\r\n }\r\n\r\n if (withoutSelf) {\r\n element = element.Parent;\r\n }\r\n\r\n while (element && hierarchy.length <= 2) {\r\n hierarchy.unshift(element.Title);\r\n\r\n element = element.Parent;\r\n }\r\n\r\n return hierarchy.join(' › ');\r\n };\r\n\r\n Tools.OnImageNotFound = function () {\r\n var $this = $(this);\r\n var isSvgImage = $this.prop('tagName').toLowerCase() === 'image';\r\n var placeholderSrc = './img/file_not_found.svg';\r\n\r\n if (isSvgImage) {\r\n $this.parent().replaceWith(''.format(placeholderSrc));\r\n return;\r\n }\r\n\r\n $this.attr({\r\n src: placeholderSrc,\r\n width: 75\r\n });\r\n };\r\n\r\n Tools.handleHttpError = function (action, xhr) {\r\n if (!xhr) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n if (xhr.statusText === 'abort') {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n if (xhr.status !== 0) {\r\n if (xhr.status < 400) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n if (xhr.status === Enums.HttpStatusCode.Unauthorized) {\r\n var title;\r\n\r\n switch ((xhr.responseJSON || {}).UnauthorizedType) {\r\n case 0:\r\n title = i18next.t('messages.unauthorized.LoginInvalid');\r\n break;\r\n case 1:\r\n title = i18next.t('messages.unauthorized.CsrfTokenInvalid');\r\n break;\r\n case 2:\r\n title = i18next.t('messages.unauthorized.SessionUnknown');\r\n break;\r\n case 3:\r\n title = i18next.t('messages.unauthorized.DeserializeError');\r\n break;\r\n case 4:\r\n title = i18next.t('messages.unauthorized.CookieFormatError');\r\n break;\r\n case 5:\r\n title = i18next.t('messages.unauthorized.ValidationError');\r\n break;\r\n default:\r\n title = i18next.t('messages.unauthorized.titleDefault');\r\n break\r\n }\r\n\r\n Tools.Message.Show({\r\n title: title,\r\n text: i18next.t('messages.unauthorized.text'),\r\n ok: true,\r\n onOk: function () {\r\n ChangeMode.Catalog.Hide();\r\n\r\n content.saveQuestion(function () {\r\n content.parameters.window.saveQuestion(function () {\r\n $('#user-menu-dropdown').addClass('hide');\r\n $('#topbar .user-field').removeClass('user-field-active');\r\n\r\n if (changemode.active) {\r\n changemode.deactivate(function () {\r\n logout();\r\n }, true);\r\n } else {\r\n logout();\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n return $.Deferred().reject().promise();\r\n } else if (xhr.status === Enums.HttpStatusCode.Forbidden) {\r\n /**\r\n * @property {Enums.ForbiddenResponseErrorCode} ErrorCode\r\n * @property {string} Message Stellt eine allgemeine Fehlermeldung bereit.\r\n * @property {string} MimeType Gibt den unerlaubten MimeType an.\r\n */\r\n var forbiddenResponse = !!xhr.responseText ? JSON.parse(xhr.responseText) : null;\r\n\r\n if (forbiddenResponse) {\r\n if (forbiddenResponse.ErrorCode === Enums.ForbiddenResponseErrorCode.FileType) {\r\n Tools.Message.Show({\r\n title: i18next.t('messages.fileUpload_typeForbidden.title'),\r\n text: i18next.t('messages.fileUpload_typeForbidden.text', { mimeType: forbiddenResponse.MimeType }),\r\n ok: true\r\n });\r\n } else if (forbiddenResponse.ErrorCode === Enums.ForbiddenResponseErrorCode.InsufficientRights ||\r\n forbiddenResponse.ErrorCode === Enums.ForbiddenResponseErrorCode.MissingRootElement ||\r\n forbiddenResponse.ErrorCode === Enums.ForbiddenResponseErrorCode.MissingLicense) {\r\n Tools.Message.Show({\r\n title: action === Enums.HttpActionType.Read ?\r\n i18next.t('messages.accessForbidden_read.title') :\r\n i18next.t('messages.accessForbidden_write.title'),\r\n text: action === Enums.HttpActionType.Read ?\r\n i18next.t('messages.accessForbidden_read.text') :\r\n i18next.t('messages.accessForbidden_write.text'),\r\n ok: true\r\n });\r\n }\r\n\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n Tools.Message.Show({\r\n title: action === Enums.HttpActionType.Read ?\r\n i18next.t('messages.accessForbidden_read.title') :\r\n i18next.t('messages.accessForbidden_write.title'),\r\n text: action === Enums.HttpActionType.Read ?\r\n i18next.t('messages.accessForbidden_read.text') :\r\n i18next.t('messages.accessForbidden_write.text'),\r\n ok: true\r\n });\r\n\r\n return $.Deferred().reject().promise();\r\n } else if (xhr.status === Enums.HttpStatusCode.Conflict &&\r\n xhr.responseText === 'No licenses available') {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.noLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.noLicensesAvailable.text'),\r\n ok: true\r\n });\r\n\r\n return $.Deferred().reject().promise();\r\n } else if (xhr.status === Enums.HttpStatusCode.Request_Too_Long) {\r\n var response;\r\n\r\n try {\r\n response = !!xhr.response ? JSON.parse(xhr.response) : {MaxFileSize: 0}\r\n } catch (e) {\r\n response = null;\r\n }\r\n\r\n var fileSizeInMB = response ? (response.MaxFileSize / 1024).toFixed(2) : null;\r\n var text = fileSizeInMB ?\r\n i18next.t('messages.entityTooLarge.textWithFileSize', {fileSizeInMB: fileSizeInMB}) :\r\n i18next.t('messages.entityTooLarge.text', {fileSizeInMB: fileSizeInMB});\r\n\r\n Tools.Message.Show({\r\n title: i18next.t('messages.entityTooLarge.title'),\r\n text: text,\r\n ok: true\r\n });\r\n\r\n return $.Deferred().reject().promise();\r\n }\r\n }\r\n\r\n if (action === Enums.HttpActionType.Read) {\r\n Tools.Message.Show({\r\n title: i18next.t('messages.couldNotLoadData.title'),\r\n text: i18next.t('messages.couldNotLoadData.text'),\r\n ok: true\r\n });\r\n } else if (action === Enums.HttpActionType.Write) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.couldNotSaveData.title'),\r\n text: i18next.t('changeMode.messages.couldNotSaveData.text'),\r\n ok: true\r\n });\r\n } else if (action === Enums.HttpActionType.Delete) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.couldNotDeleteData.title'),\r\n text: i18next.t('changeMode.messages.couldNotDeleteData.text'),\r\n ok: true\r\n });\r\n } else if (action === Enums.HttpActionType.SendMails) {\r\n Tools.Message.Show({\r\n title: i18next.t('messages.couldNotSendMails.title'),\r\n text: i18next.t('messages.couldNotSendMails.text'),\r\n ok: true\r\n });\r\n }\r\n\r\n return $.Deferred().reject().promise();\r\n };\r\n\r\n Tools.ExternalDataCreationExampleWindow = (function () {\r\n var $window = $('#external-data-creation-example-window');\r\n var $overflow = $('#overflow');\r\n var $tabControl = $window.find('.top-menu');\r\n var $tabs = $window.find('.content');\r\n\r\n var configuration = {};\r\n\r\n function highlightSyntax(jsonString) {\r\n if (!jsonString) {\r\n return '';\r\n }\r\n\r\n jsonString = jsonString\r\n .replace(/&/g, '&')\r\n .replace(//g, '>');\r\n\r\n var replacerRegexp = /(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g;\r\n\r\n return jsonString.replace(replacerRegexp, function (match) {\r\n var cls = 'number';\r\n\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n cls = 'key';\r\n } else {\r\n cls = 'string';\r\n }\r\n } else if (/true|false/.test(match)) {\r\n cls = 'boolean';\r\n } else if (/null/.test(match)) {\r\n cls = 'null';\r\n }\r\n\r\n return [\r\n '',\r\n match,\r\n ''\r\n ].join('');\r\n });\r\n }\r\n\r\n function show(options) {\r\n if (!options || !options.Tabs) {\r\n return;\r\n }\r\n\r\n if (options.Tabs.Issue) {\r\n initTab(options.Tabs.Issue, 'issue');\r\n }\r\n\r\n if (options.Tabs.Recorditems) {\r\n initTab(options.Tabs.Recorditems, 'recorditems');\r\n }\r\n\r\n if (options.Tabs.Mappings) {\r\n initTab(options.Tabs.Mappings, 'mappings');\r\n }\r\n\r\n initLanguage(options);\r\n unbindEvents();\r\n bindEvents();\r\n\r\n $tabControl.find('.tab-item:not(.hide):first').click();\r\n\r\n $overflow.removeClass('hide');\r\n $window.removeClass('hide');\r\n $window.find('.content').scrollTop(0);\r\n }\r\n\r\n function initLanguage(options) {\r\n $window.find('.title').text(options.Captions.Window);\r\n $tabs.find('.separator[data-node=\"description\"] .caption').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.description'));\r\n $tabs.find('.separator[data-node=\"code-example\"] .caption').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.example'));\r\n $tabs.find('.separator[data-node=\"model\"] .caption').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.model'));\r\n $tabs.find('.separator[data-node=\"mappings\"] .caption').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.mappings'));\r\n\r\n $tabs.find('.tab[data-tab=\"issue\"] .btn-create').text(i18next.t('changeMode.panels.info.developerInformation.createIssue.exampleWindow.createIssue'));\r\n $tabs.find('.tab[data-tab=\"recorditems\"] .btn-create').text(i18next.t('changeMode.panels.info.developerInformation.createRecorditems.exampleWindow.createRecorditems'));\r\n\r\n $tabs.find('.table[data-node=\"model\"] thead tr').each(function () {\r\n $(this).find('th:eq(0)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.attribute'));\r\n $(this).find('th:eq(1)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.type'));\r\n $(this).find('th:eq(2)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.isRequired'));\r\n $(this).find('th:eq(3)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.remarks'));\r\n });\r\n\r\n $tabs.find('.table[data-node=\"mappings\"] thead tr').each(function () {\r\n $(this).find('th:eq(0)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.elementTitle'));\r\n $(this).find('th:eq(1)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.elementType'));\r\n $(this).find('th:eq(2)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.elementIdentifier'));\r\n $(this).find('th:eq(3)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.resubitemIdentifier'));\r\n $(this).find('th:eq(4)').text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.row'));\r\n });\r\n }\r\n\r\n function initTab(options, tabId) {\r\n var $tabItem = $tabControl.find('[data-tab=\"'+tabId+'\"]');\r\n var $tab = $tabs.find('[data-tab=\"'+tabId+'\"]');\r\n\r\n $tabItem\r\n .text(options.TabControlCaption)\r\n .removeClass('hide');\r\n\r\n if (!!options.Description) {\r\n $tab.find('[data-node=\"description\"]').removeClass('hide');\r\n $tab.find('.description').html(options.Description);\r\n } else {\r\n $tab.find('[data-node=\"description\"]').addClass('hide');\r\n }\r\n\r\n var jsonString = typeof options.ExampleData === 'string' ?\r\n options.ExampleData :\r\n JSON.stringify(options.ExampleData, null, 4);\r\n\r\n $tab.find('.btn-create').toggleClass('hide', !jsonString || jsonString === '[]');\r\n\r\n if (!configuration.hasOwnProperty(tabId)) {\r\n configuration[tabId] = {};\r\n }\r\n\r\n configuration[tabId].ServiceConfiguration = options.Service;\r\n configuration[tabId].Example = jsonString;\r\n\r\n $tab.find('.separator[data-node=\"code-example\"]').addClass('collapsed');\r\n $tab.find('pre.code').addClass('hide');\r\n\r\n var highlightedString = highlightSyntax(jsonString);\r\n\r\n $tab.find('.code').html(highlightedString);\r\n\r\n if ((options.Model || []).length) {\r\n $tab.find('[data-node=\"model\"]').removeClass('hide');\r\n $tab.find('> .table[data-node=\"model\"] tbody').html(createModelTable(options.Model));\r\n } else {\r\n $tab.find('[data-node=\"model\"]').addClass('hide');\r\n $tab.find('> .table[data-node=\"model\"] tbody').empty();\r\n }\r\n\r\n if ((options.Mappings || []).length) {\r\n $tab.find('[data-node=\"mappings\"]').removeClass('hide');\r\n $tab.find('> .table[data-node=\"mappings\"] tbody').html(createMappingsTable(options.Mappings));\r\n } else {\r\n $tab.find('[data-node=\"mappings\"]').addClass('hide');\r\n $tab.find('> .table[data-node=\"mappings\"] tbody').empty();\r\n }\r\n }\r\n\r\n function createModelTable(model) {\r\n var html = [];\r\n\r\n model.forEach(function (attribute) {\r\n html.push(\r\n '',\r\n '{0}'.format(attribute.Attribute),\r\n '{0}'.format(Tools.escapeHtml(attribute.Type)),\r\n '{0}'.format(attribute.IsRequired ? i18next.t('misc.yes') : i18next.t('misc.no')),\r\n '{0}'.format(attribute.Remarks || ''),\r\n ''\r\n );\r\n\r\n if ((attribute.SubType || []).length) {\r\n html.push(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n createModelTable(attribute.SubType),\r\n '',\r\n '
',\r\n '',\r\n ''\r\n );\r\n }\r\n });\r\n\r\n return html.join('');\r\n }\r\n\r\n function createMappingsTable(mappings) {\r\n var html = [];\r\n\r\n function getHierarchy(element) {\r\n var hierarchy = [];\r\n\r\n while ((element = element.Parent)) {\r\n hierarchy.unshift(element.Title);\r\n\r\n if (element.Type === Enums.elementType.Form) {\r\n break;\r\n }\r\n }\r\n\r\n return hierarchy.join(' › ');\r\n }\r\n\r\n var form;\r\n\r\n mappings.forEach(function (mapping) {\r\n var element = changemode.Elements[mapping.ElementOID];\r\n\r\n if (element.Type === Enums.elementType.Form) {\r\n form = element;\r\n }\r\n\r\n var elementCell = ['',\r\n element.Title,\r\n '

',\r\n getHierarchy(element),\r\n '

'\r\n );\r\n\r\n var isForm = element.Type === Enums.elementType.Form;\r\n var isGroup = element.Type >= 93 && element.Type <= 99;\r\n var isCheckpoint = element.Type >= 100;\r\n\r\n var type;\r\n\r\n if (isForm) {\r\n type = '' + i18next.t('changeMode.panels.info.developerInformation.exampleWindow.form')\r\n } else if (isGroup) {\r\n type = '' + Tools.element.getTypeName(element, form);\r\n } else if (isCheckpoint) {\r\n type = Tools.element.getTypeName(element, form);\r\n }\r\n\r\n type += ' (' + element.Type + ')';\r\n\r\n if (isForm) {\r\n type += '';\r\n } else if (isGroup) {\r\n type += '';\r\n }\r\n\r\n html.push(\r\n '',\r\n elementCell.join(''),\r\n '{0}'.format(type),\r\n '{0}'.format(element.OID),\r\n '{0}

{1}

'.format(mapping.ResubmissionitemOID, mapping.ParentOID || ''),\r\n '{0}'.format(mapping.Row || ''),\r\n ''\r\n );\r\n });\r\n\r\n return html.join('');\r\n }\r\n\r\n function unbindEvents() {\r\n $window.find('.close').off('click');\r\n $tabControl.find('.tab-item').off('click');\r\n $tabs.find('.separator').off('click');\r\n $tabs.find('.btn-create').off('click');\r\n }\r\n\r\n function bindEvents() {\r\n $window.find('.close').on('click', hide);\r\n $tabControl.find('.tab-item').on('click', onTabItemClick);\r\n $tabs.find('.separator').on('click', onSeparatorClick);\r\n $tabs.find('.btn-create').on('click', onCreateButtonClick);\r\n }\r\n\r\n function onTabItemClick() {\r\n var $this = $(this);\r\n var id = $this.data('tab');\r\n\r\n if (!id) {\r\n return;\r\n }\r\n\r\n var $tab = $tabs.find('[data-tab=\"'+id+'\"]');\r\n\r\n if (!$tab.length) {\r\n return;\r\n }\r\n\r\n $this\r\n .addClass('active')\r\n .siblings()\r\n .removeClass('active');\r\n\r\n $tab\r\n .removeClass('hide')\r\n .siblings()\r\n .addClass('hide');\r\n\r\n $window.find('.content').scrollTop(0);\r\n }\r\n\r\n function onSeparatorClick() {\r\n var $this = $(this);\r\n\r\n $this.toggleClass('collapsed');\r\n\r\n var isCollapsed = $this.hasClass('collapsed');\r\n var node = $this.data('node');\r\n var $tab = $this.parents('.tab');\r\n\r\n $tab.find('[data-node=\"'+node+'\"]:not(.separator)').toggleClass('hide', isCollapsed);\r\n }\r\n\r\n function onCreateButtonClick() {\r\n var $this = $(this);\r\n var tabId = $this.parents('.tab').data('tab');\r\n\r\n if (!tabId || !configuration.hasOwnProperty(tabId)) {\r\n return;\r\n }\r\n\r\n var exampleData = configuration[tabId].Example;\r\n var serviceConfiguration = configuration[tabId].ServiceConfiguration;\r\n\r\n if (!exampleData || !serviceConfiguration) {\r\n return;\r\n }\r\n\r\n $this.text(i18next.t('changeMode.panels.info.developerInformation.exampleWindow.pleaseWait'));\r\n\r\n function successCallback(response, text, xhr) {\r\n $this.text('{0} {1}'.format(xhr.status, xhr.statusText));\r\n }\r\n\r\n function errorCallback(xhr) {\r\n if (tabId === 'issue') {\r\n $tabs.find('.tab[data-tab=\"issue\"] .btn-create')\r\n .text(i18next.t('changeMode.panels.info.developerInformation.createIssue.exampleWindow.createIssue'));\r\n } else if (tabId === 'recorditems') {\r\n $tabs.find('.tab[data-tab=\"recorditems\"] .btn-create')\r\n .text(i18next.t('changeMode.panels.info.developerInformation.createRecorditems.exampleWindow.createRecorditems'));\r\n }\r\n\r\n Tools.handleHttpError(Enums.HttpActionType.Write, xhr);\r\n Tools.Spinner.hide();\r\n }\r\n\r\n switch (serviceConfiguration.HttpMethod) {\r\n case 'POST':\r\n Tools.http.post(serviceConfiguration.Method, exampleData, successCallback, errorCallback);\r\n break;\r\n case 'PUT':\r\n Tools.http.put(serviceConfiguration.Method, exampleData, successCallback, errorCallback);\r\n break;\r\n }\r\n }\r\n\r\n function hide() {\r\n $overflow.addClass('hide');\r\n\r\n $window\r\n .addClass('hide')\r\n .find('.close')\r\n .off('click');\r\n }\r\n\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n })();\r\n\r\n Tools.generateRandomNumber = function (minimum, maximum) {\r\n return Math.round(Math.random() * (maximum - minimum) + minimum);\r\n };\r\n\r\n Tools.createActionDropdown = function (items, $container) {\r\n var html = [\r\n '
',\r\n '
    ',\r\n ];\r\n\r\n html.push((items || []).map(function renderItem(item) {\r\n var hasChildItems = (item.Children || []).length;\r\n var itemHtml = [\r\n '
  • '\r\n ];\r\n\r\n if (item.FileInput) {\r\n itemHtml.push(\r\n ''\r\n .format(\r\n !!item.FileInput.Accept ?\r\n ' accept=\"{0}\"'.format(item.FileInput.Accept) :\r\n '',\r\n item.FileInput.Multiple ? ' multiple' : ''\r\n )\r\n );\r\n }\r\n\r\n itemHtml.push(\r\n !!item.Icon ? ''.format(item.Icon) : '',\r\n '', item.Caption, ''\r\n );\r\n\r\n if (hasChildItems) {\r\n itemHtml.push(\r\n '
      ',\r\n item.Children.map(renderItem).join(''),\r\n '
    '\r\n );\r\n }\r\n\r\n itemHtml.push('
  • ');\r\n\r\n return itemHtml.join('');\r\n }).join(''));\r\n\r\n html.push(\r\n '
',\r\n '
'\r\n );\r\n\r\n $container.find('.action-dropdown').remove();\r\n $container.append(html.join(''));\r\n\r\n var height = 0;\r\n\r\n (items || []).forEach(function iterate(item) {\r\n var $item = $container.find('li[data-id=\"{0}\"]'.format(item.ID));\r\n\r\n height += $item.outerHeight();\r\n\r\n $item.on('click', function (evt) {\r\n evt.stopPropagation();\r\n\r\n if (item.OnClick instanceof Function) {\r\n item.OnClick();\r\n }\r\n\r\n $container.removeClass('active');\r\n $container\r\n .find('.action-dropdown')\r\n .removeClass('is-visible')\r\n .css('max-height', 0);\r\n });\r\n\r\n (item.Children || []).forEach(iterate);\r\n });\r\n\r\n $container.find('.action-dropdown').css('max-height', height);\r\n };\r\n\r\n Tools.GetBadgeCounterText = function (count) {\r\n if (isNaN(count) || count < 0) {\r\n return null;\r\n }\r\n\r\n return count >= 1000 ? '{0}k'.format(Math.floor(count / 1000)) : count;\r\n };\r\n\r\n Tools.ResolveUrlPattern = function (hash, pattern) {\r\n if (ApplicationRoutes[pattern] !== undefined) {\r\n return { pattern: pattern };\r\n } else {\r\n var patterns = [];\r\n\r\n for (pattern in ApplicationRoutes) {\r\n patterns.push(pattern);\r\n }\r\n\r\n patterns.sort(function (a, b) {\r\n if (a.toLowerCase() < b.toLowerCase()) {\r\n return 1;\r\n } else if (a.toLowerCase() > b.toLowerCase()) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n\r\n for (var i = 0, len = patterns.length; i < len; i++) {\r\n var pattern = patterns[i];\r\n\r\n if (ApplicationRoutes.hasOwnProperty(pattern)) {\r\n var regEx = new RegExp(pattern, 'i');\r\n var match = regEx.exec(hash);\r\n\r\n if (match !== null) {\r\n return { pattern: pattern, args: match }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n Tools.ComparePrintOptions = function (optionsA, optionsB) {\r\n if (!Tools.IsSet(optionsA) !== !Tools.IsSet(optionsB)) {\r\n return false;\r\n }\r\n\r\n //Alle Druckoptionen sammeln\r\n var keys = {};\r\n for (var key in optionsA) {\r\n if (optionsA.hasOwnProperty(key)) {\r\n keys[key] = true;\r\n }\r\n }\r\n\r\n for (var key in optionsB) {\r\n if (optionsB.hasOwnProperty(key)) {\r\n keys[key] = true;\r\n }\r\n }\r\n\r\n for (var key in keys) {\r\n var valueA = optionsA[key];\r\n var valueB = optionsB[key];\r\n\r\n if (!Tools.IsSet(valueA)) {\r\n valueA = PrintOptionsPicker.GetDefaultPrintOptionValue(key);\r\n }\r\n\r\n if (!Tools.IsSet(valueB)) {\r\n valueB = PrintOptionsPicker.GetDefaultPrintOptionValue(key);\r\n }\r\n\r\n if ((typeof valueA === 'boolean' ||\r\n typeof valueB === 'boolean')) {\r\n //NULL oder Undefined wird ebenfalls als false betrachtet\r\n if (!Tools.IsSet(valueA)) {\r\n valueA = false;\r\n }\r\n\r\n if (!Tools.IsSet(valueB)) {\r\n valueB = false;\r\n }\r\n }\r\n\r\n if (valueA !== valueB) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n Tools.GetIssueAbbreviation = function (issue) {\r\n if (!issue) {\r\n return null;\r\n }\r\n\r\n if (issue.IsTemplate) {\r\n return i18next.t('issueTypes.template_abbreviation');\r\n }\r\n\r\n switch (issue.Type) {\r\n case Enums.issueType.Note:\r\n return i18next.t('issueTypes.note_abbreviation');\r\n case Enums.issueType.Disturbance:\r\n return i18next.t('issueTypes.disturbance_abbreviation');\r\n case Enums.issueType.DisturbancesCompleted:\r\n return i18next.t('issueTypes.disturbancesCompleted_abbreviation');\r\n case Enums.issueType.Inspection:\r\n return i18next.t('issueTypes.inspection_abbreviation');\r\n case Enums.issueType.Investigation:\r\n return i18next.t('issueTypes.investigation_abbreviation');\r\n case Enums.issueType.Survey:\r\n return i18next.t('issueTypes.survey_abbreviation');\r\n default:\r\n return i18next.t('issueTypes.task_abbreviation');\r\n }\r\n };\r\n\r\n Tools.IsTabEnabledInMenu = function (menuId, tabId) {\r\n if (!menuId || !tabId) {\r\n return false;\r\n }\r\n\r\n if (!Client.OfficeConfiguration) {\r\n return false;\r\n }\r\n\r\n var menuConfiguration = Client.OfficeConfiguration[menuId];\r\n\r\n if (!menuConfiguration) {\r\n return false;\r\n }\r\n\r\n var enabledTabs = menuConfiguration ? menuConfiguration.EnabledTabs : null;\r\n\r\n if (!(enabledTabs || []).length) {\r\n return false;\r\n }\r\n\r\n return enabledTabs.indexOf(tabId) > -1;\r\n };\r\n\r\n Tools.IsPropertyDisabledInMenuTab = function (menuId, tabId, propertyId) {\r\n if (!menuId || !tabId || !propertyId) {\r\n return false;\r\n }\r\n\r\n if (!Client.OfficeConfiguration) {\r\n return false;\r\n }\r\n\r\n var menuConfiguration = Client.OfficeConfiguration[menuId];\r\n\r\n if (!menuConfiguration) {\r\n return false;\r\n }\r\n\r\n if (!Object.keys(menuConfiguration.HiddenProperties || {}).length) {\r\n return false;\r\n }\r\n\r\n if (!menuConfiguration.HiddenProperties.hasOwnProperty(tabId)) {\r\n return false;\r\n }\r\n\r\n return (menuConfiguration.HiddenProperties[tabId] || []).indexOf(propertyId) > -1;\r\n };\r\n\r\n Tools.IsPropertyEnabledInMenuTab = function (menuId, tabId, propertyId) {\r\n return !Tools.IsPropertyDisabledInMenuTab(menuId, tabId, propertyId);\r\n };\r\n\r\n Tools.GetElementDataForService = function (element) {\r\n if (element.Address &&\r\n !element.Address.Street &&\r\n !element.Address.StreetNumber &&\r\n !element.Address.ZipCode &&\r\n !element.Address.StateNumber &&\r\n !element.Address.Name &&\r\n !element.Address.Phone &&\r\n !element.Address.WebAddress &&\r\n !element.Address.EmailSignature) {\r\n element.Address = null;\r\n }\r\n\r\n if (element.Type === Enums.elementType.Info) {\r\n element.PrintAlways = true;\r\n }\r\n\r\n if (element.Type !== Enums.elementType.Checkbox &&\r\n element.Type !== Enums.elementType.Number &&\r\n element.Type !== Enums.elementType.Line &&\r\n element.Type !== Enums.elementType.Memo &&\r\n element.Type !== Enums.elementType.Date &&\r\n element.Type !== Enums.elementType.Time &&\r\n element.Type !== Enums.elementType.ListBox &&\r\n element.Type !== Enums.elementType.PhoneNumber &&\r\n element.Type !== Enums.elementType.EMailAddresses ||\r\n element.Parent &&\r\n element.Parent.Parent &&\r\n element.Parent.Parent.IsSurvey &&\r\n (element.Parent.Parent.Type === Enums.elementType.Form ||\r\n element.Parent.Parent.Type === Enums.elementType.FormTemplate)) {\r\n element.Formula = null;\r\n }\r\n\r\n var infoText = DOMPurify.sanitize(element.InfoText);\r\n\r\n var data = {\r\n Actions: element.Actions ? Tools.clone(element.Actions) : null,\r\n AdditionalProperties: element.AdditionalProperties ? Tools.clone(element.AdditionalProperties): null,\r\n AdditionalSettings: element.AdditionalSettings || null,\r\n Address: element.Address ? Tools.clone(element.Address) : null,\r\n AllowOverrideFormulaValue: element.AllowOverrideFormulaValue || false,\r\n Attribute: element.Attribute || 0,\r\n CodingOID: element.CodingOID || null,\r\n CodingIdent: element.CodingIdent || null,\r\n Color: element.Color || null,\r\n CostCenter: element.CostCenter || null,\r\n Decimals: typeof element.Decimals !== 'undefined' ? element.Decimals : null,\r\n DisableInAppEditing: element.DisableInAppEditing || false,\r\n Description: element.Description || null,\r\n Enabled: element.Enabled || false,\r\n EvaluatePeriodically: element.EvaluatePeriodically || false,\r\n Evaluation: element.Evaluation ? Tools.clone(element.Evaluation) : null,\r\n FilenameFormula: element.FilenameFormula || null,\r\n Files: element.Files ? Tools.clone(element.Files) : null,\r\n ForceParameterOrderWhileRecording: element.ForceParameterOrderWhileRecording || false,\r\n Formula: element.Formula || null,\r\n GradingScale: element.GradingScale ? Tools.clone(element.GradingScale) : null,\r\n Identcode: element.Identcode || null,\r\n IgnoreInEvaluation: element.IgnoreInEvaluation || false,\r\n ImageOID: element.ImageOID || null,\r\n InfoText: !!infoText ? infoText : null,\r\n InitialStateOID: element.InitialStateOID || null,\r\n IsBranchStore: element.IsBranchStore || false,\r\n IsInspection: element.IsInspection || false,\r\n IsInvestigation: element.IsInvestigation || false,\r\n IsRecordingLockable: element.IsRecordingLockable || false,\r\n IsRecordingLockedByDefault: element.IsRecordingLockedByDefault || false,\r\n IssueTitleFormula: element.IssueTitleFormula || null,\r\n IsSurvey: element.IsSurvey || false,\r\n IsWeighted: element.IsWeighted || false,\r\n Items: element.Items || null,\r\n Language: element.Language || null,\r\n Layout: element.Layout || null,\r\n MaxSubsampleCount: element.MaxSubsampleCount || null,\r\n MinSubsampleCount: element.MinSubsampleCount || null,\r\n ModifiedForms: element.ModifiedForms || null,\r\n OID: element.OID || null,\r\n ParentOID: element.Parent ? element.Parent.OID : (element.ParentOID || null),\r\n Position: element.Position,\r\n PrintAlways: element.PrintAlways || false,\r\n Properties: (element.Properties || []).length ? element.Properties : null,\r\n PrototypeOID: element.Prototype ? element.Prototype.OID : (element.PrototypeOID || null),\r\n ProvideToExternalApps: typeof element.ProvideToExternalApps === 'boolean' ? element.ProvideToExternalApps : false,\r\n QRCode: element.QRCode || null,\r\n ReferenceFormOID: element.ReferenceFormOID || null,\r\n RepresentationType: element.RepresentationType || null,\r\n Required: element.Required || false,\r\n Requirements: element.Requirements || null,\r\n Scheduling: (element.Scheduling || []).length ? element.Scheduling : null,\r\n ShowAtFirstPosition: element.ShowAtFirstPosition || false,\r\n ShowInOverallResult: element.ShowInOverallResult || false,\r\n Structure: element.Structure ? Tools.clone(element.Structure) : null,\r\n StructureEval: element.StructureEval || null,\r\n SuggestedValues: element.SuggestedValues || null,\r\n Teams: element.Teams || null,\r\n TemporaryDeviationOffset: element.TemporaryDeviationOffset,\r\n Title: element.Title || null,\r\n Type: element.Type,\r\n UnitOID: element.UnitOID || null,\r\n UseFormGrading: element.UseFormGrading || false,\r\n Processes: element.Processes || null\r\n };\r\n\r\n return Tools.UnEscape.Element(data);\r\n };\r\n\r\n Tools.BlockSpecialCharactersInput = function (e) {\r\n // < > : \"\r\n if (Tools.indexOf([34, 58, 60, 62], e.which) >= 0) {\r\n return false;\r\n }\r\n };\r\n\r\n Tools.GetAvailableAndVisibleForms = function (formMap, location, disableSurveys, disableInvestigations) {\r\n var availableForms = {};\r\n var visibleForms = {};\r\n\r\n if (!location) {\r\n return {\r\n AvailableForms: availableForms,\r\n VisibleForms: visibleForms\r\n };\r\n }\r\n\r\n (function walk(location) {\r\n (location.Forms || []).forEach(function (formIdentifier) {\r\n var form = formMap[formIdentifier];\r\n\r\n if (form) {\r\n if (!(disableSurveys && form.IsSurvey) && !(disableInvestigations && form.IsInvestigation)) {\r\n availableForms[formIdentifier] = true;\r\n }\r\n\r\n (function walkForm(form) {\r\n if (visibleForms[form.OID]) {\r\n return;\r\n }\r\n\r\n if (!(disableSurveys && form.IsSurvey)) {\r\n visibleForms[form.OID] = true;\r\n\r\n if (form.Parent) {\r\n walkForm(form.Parent);\r\n }\r\n }\r\n })(form);\r\n }\r\n });\r\n\r\n if (location.Parent) {\r\n walk(location.Parent);\r\n }\r\n })(location);\r\n\r\n return {\r\n AvailableForms: availableForms,\r\n VisibleForms: visibleForms\r\n };\r\n };\r\n\r\n Tools.GetAvailableAndVisibleSchedulings = function (schedulingMap, location, userMustBeAssigned) {\r\n return Tools.DataManager.FormLoader\r\n .GetAll()\r\n .then(function (formData) {\r\n var availableSchedulings = {};\r\n var visibleSchedulings = {};\r\n\r\n if (!location) {\r\n return {\r\n AvailableSchedulings: availableSchedulings,\r\n VisibleSchedulings: visibleSchedulings\r\n };\r\n }\r\n\r\n var addToVisibleSchedulings = function (scheduling) {\r\n if (!scheduling ||\r\n visibleSchedulings.hasOwnProperty(scheduling.OID)) {\r\n return;\r\n }\r\n\r\n visibleSchedulings[scheduling.OID] = true;\r\n addToVisibleSchedulings(scheduling.Parent);\r\n };\r\n\r\n var iterateScheduling = function (schedulingList) {\r\n if (!(schedulingList || []).length) {\r\n return;\r\n }\r\n\r\n for (var sCnt = 0, sLen = schedulingList.length; sCnt < sLen; sCnt++) {\r\n var scheduling = schedulingMap[schedulingList[sCnt].OID];\r\n\r\n if (!scheduling) {\r\n continue;\r\n }\r\n\r\n if (availableSchedulings.hasOwnProperty(scheduling.OID)) {\r\n continue;\r\n }\r\n\r\n if (!userMustBeAssigned) {\r\n availableSchedulings[scheduling.OID] = true;\r\n addToVisibleSchedulings(scheduling);\r\n continue;\r\n }\r\n\r\n var containsUser = Tools.contains(scheduling.Users, User.OID);\r\n var containsTeams = false;\r\n\r\n if ((scheduling.Teams || []).length && (User.Teams || []).length) {\r\n for (var t = 0; t < User.Teams.length; t++) {\r\n if (Tools.contains(scheduling.Teams, User.Teams[t])) {\r\n containsTeams = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (containsUser || containsTeams) {\r\n addToVisibleSchedulings(scheduling);\r\n availableSchedulings[scheduling.OID] = true;\r\n }\r\n }\r\n };\r\n\r\n (function traverse(elem) {\r\n if (elem.Type !== Enums.elementType.Root &&\r\n elem.Type !== Enums.elementType.Location) {\r\n return;\r\n }\r\n\r\n if ((elem.Parametergroups || []).length) {\r\n for (var gCnt = 0, gLen = elem.Parametergroups.length; gCnt < gLen; gCnt++) {\r\n iterateScheduling(elem.Parametergroups[gCnt].Scheduling);\r\n }\r\n }\r\n\r\n if ((elem.Forms || []).length) {\r\n for (var fCnt = 0, fLen = elem.Forms.length; fCnt < fLen; fCnt++) {\r\n var form = formData.Map[elem.Forms[fCnt]];\r\n\r\n if (form) {\r\n iterateScheduling(form.Scheduling);\r\n }\r\n }\r\n }\r\n\r\n (elem.Children || []).forEach(traverse);\r\n })(CurrentEntity);\r\n\r\n return {\r\n AvailableSchedulings: availableSchedulings,\r\n VisibleSchedulings: visibleSchedulings\r\n };\r\n });\r\n };\r\n\r\n Tools.UpdateOfficeUserSettings = function (key, value) {\r\n if (key == null) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n return Tools.http.post('office-usersettings', [{\r\n Key: key,\r\n Value: value\r\n }]).then(function () {\r\n User.OfficeSettings = User.OfficeSettings || {};\r\n User.OfficeSettings[key] = User.OfficeSettings[key] || { Key: key };\r\n User.OfficeSettings[key].Value = value;\r\n\r\n $(document).trigger('office-settings:changed', key);\r\n });\r\n };\r\n\r\n Tools.GetOfficeSettingValue = function (key) {\r\n if (!User || !User.OfficeSettings) {\r\n return null;\r\n }\r\n\r\n if (!User.OfficeSettings.hasOwnProperty(key)) {\r\n return null;\r\n }\r\n\r\n return User.OfficeSettings[key].Value;\r\n };\r\n\r\n Tools.GetAvailableAndVisibleStatusses = function (statusState, additionalFilterFn) {\r\n if (statusState == null) {\r\n statusState = Enums.StatusState.All;\r\n }\r\n\r\n var allStatusses = Object.values(Properties)\r\n .filter(function (prop) {\r\n return prop.Type === Enums.propertyType.Status;\r\n });\r\n\r\n if (statusState === Enums.StatusState.All) {\r\n var all = allStatusses\r\n .reduce(function (dictionary, status) {\r\n dictionary[status.OID] = true;\r\n return dictionary;\r\n }, {});\r\n\r\n return {\r\n AvailableStatusses: all,\r\n VisibleStatusses: all\r\n };\r\n }\r\n\r\n var availableStatusses = allStatusses\r\n .filter(function (status) {\r\n var isAvailable = statusState === Enums.StatusState.Open && !status.ClosedState ||\r\n statusState === Enums.StatusState.Closed && status.ClosedState;\r\n\r\n if (!isAvailable) {\r\n return false;\r\n }\r\n\r\n return additionalFilterFn instanceof Function ? additionalFilterFn(status) : isAvailable;\r\n })\r\n .reduce(function (dictionary, status) {\r\n dictionary[status.OID] = true;\r\n return dictionary;\r\n }, {});\r\n\r\n var visibleStatusses = {};\r\n\r\n Object.keys(availableStatusses)\r\n .forEach(function (identifier) {\r\n visibleStatusses[identifier] = true;\r\n\r\n var status = Properties[identifier];\r\n\r\n if (!status.ParentOID) {\r\n return;\r\n }\r\n\r\n if (visibleStatusses[status.ParentOID]) {\r\n return;\r\n }\r\n\r\n (function walk(visibleStatus) {\r\n if (!visibleStatus) {\r\n return;\r\n }\r\n\r\n if (visibleStatusses[visibleStatus.OID]) {\r\n return;\r\n }\r\n\r\n visibleStatusses[visibleStatus.OID] = true;\r\n walk(Properties[visibleStatus.ParentOID]);\r\n })(Properties[status.ParentOID]);\r\n });\r\n\r\n return {\r\n AvailableStatusses: availableStatusses,\r\n VisibleStatusses: visibleStatusses\r\n };\r\n }\r\n\r\n Tools.getAllRolesOfUser = function (userOID, useModifiedData) {\r\n var roles = useModifiedData ? changemode.Roles : Roles;\r\n var teams = useModifiedData ? changemode.Teams : Teams;\r\n var userRoles = []\r\n\r\n for (var teamOID in teams) {\r\n var team = teams[teamOID];\r\n\r\n if (team.ModificationType === Enums.ModificationType.Deleted || (team.Users || []).length === 0) {\r\n continue;\r\n }\r\n\r\n team.Users.forEach(function (user) {\r\n if (user.OID !== userOID) {\r\n return;\r\n }\r\n\r\n user.Roles.forEach(function (roleOID) {\r\n if (roles[roleOID] == null) {\r\n return;\r\n }\r\n\r\n if (!Tools.contains(userRoles, roleOID, 'OID')) {\r\n userRoles.push(roles[roleOID]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return userRoles.length ? userRoles : null;\r\n };\r\n\r\n Tools.JoinDistinct = function (collectionA, collectionB) {\r\n if (!collectionA) {\r\n collectionA = [];\r\n }\r\n\r\n if (!(collectionA instanceof Array)) {\r\n return null;\r\n }\r\n\r\n if (!(collectionB instanceof Array)) {\r\n return collectionA;\r\n }\r\n\r\n collectionA = $.extend(true, [], collectionA);\r\n\r\n collectionB.forEach(function (item) {\r\n if (collectionA.indexOf(item) === -1) {\r\n collectionA.push(item);\r\n }\r\n });\r\n\r\n return collectionA;\r\n };\r\n\r\n Tools.HasIntersection = function (a, b) {\r\n if (!(a || []).length || !(b || []).length) {\r\n return false;\r\n }\r\n\r\n return a.some(function (value) { return b.indexOf(value) > -1; });\r\n };\r\n\r\n Tools.OnUploadError = function (event, context) {\r\n if (context) {\r\n Tools.handleHttpError(Enums.HttpActionType.Write, context.xhr);\r\n }\r\n\r\n Tools.Spinner.hide();\r\n };\r\n\r\n Tools.IsContactModuleAvailable = function () {\r\n return Client && Client.Licenses && (Client.Licenses.Contacts || 0) > 0;\r\n };\r\n\r\n Tools.IsEMailCpEnabled = function () {\r\n return Client && Client.Licenses &&\r\n Client.Licenses.Contacts > 0 &&\r\n (Client.Licenses.EnableCpTypeEMailAddresses || false);\r\n };\r\n\r\n Tools.IsValidMailAddress = function (value) {\r\n if (!(typeof value === 'string')) {\r\n return false;\r\n }\r\n\r\n var regexp = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n\r\n return regexp.test(value.toLowerCase());\r\n };\r\n\r\n Tools.SortSelectControlAlphabetically = function ($control) {\r\n if (!$control || !$control.length) {\r\n return;\r\n }\r\n\r\n var options = $control.find('option');\r\n var selectedOption = $control.val();\r\n\r\n options.sort(function (a, b) {\r\n var textA = a.text.toLowerCase();\r\n var textB = b.text.toLowerCase();\r\n\r\n if (textA > textB) return 1;\r\n if (textA < textB) return -1;\r\n return 0;\r\n });\r\n\r\n $control.empty().append(options);\r\n $control.val(selectedOption);\r\n };\r\n\r\n Tools.GetEmailCheckpointsFromElement = function (element) {\r\n return $.map(element || [], function(groups) {\r\n return ((groups || {}).Parameters || []).filter(function(el) {\r\n return el.Type === Enums.elementType.EMailAddresses;\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Durchläuft eine Liste und führt die asynchrone Aktionen nacheinander aus\r\n * @param {T[]} collection - Liste die durchlaufen werden soll\r\n * @param {function(item: T): JQuery.Promise} actionCallback - Die Aktion welche für jeden Eintrag in der Liste ausgeführt werden soll\r\n * @param {{Visible: boolean, Text: string, ScreenBlock: boolean = false} | null} progressbarOptions - Optionen ob und wie die Progressbar angezeigt werden soll\r\n * @returns {JQuery.Promise}\r\n * @constructor\r\n */\r\n Tools.ForEachDeferredAction = function (collection, actionCallback, progressbarOptions) {\r\n if (collection == null || actionCallback == null) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n if (collection.length === 0) {\r\n return $.Deferred().resolve().promise();\r\n }\r\n\r\n progressbarOptions = progressbarOptions || {Visible: false};\r\n\r\n var deferred = $.Deferred();\r\n\r\n var totalProgress = collection.length;\r\n var currentProgress = 0;\r\n\r\n if (progressbarOptions.Visible) {\r\n Tools.Progressbar.Start(totalProgress, progressbarOptions.Text, null, progressbarOptions.ScreenBlock);\r\n Tools.Progressbar.StartProgress();\r\n }\r\n\r\n (function loop() {\r\n if (progressbarOptions.Visible) {\r\n Tools.Progressbar.Set(currentProgress, totalProgress);\r\n }\r\n\r\n if (currentProgress >= totalProgress)\r\n {\r\n Tools.Progressbar.StopProgress();\r\n deferred.resolve();\r\n return;\r\n }\r\n\r\n var item = collection[currentProgress];\r\n currentProgress++;\r\n\r\n //TODO Die aufrufenden Stellen sollte um ein Fehlerhandling erweitert werden Ticket: 3872\r\n actionCallback(item)\r\n .then(loop, loop); //Bisheriges Verhalten: Fehler ignorieren\r\n })();\r\n\r\n return deferred.promise();\r\n };\r\n\r\n Tools.ShowRteContentSize = function ($area, value) {\r\n var contentLength = (value || $area.val()).length;\r\n var infoText = $area.closest('.content').find('.item-description');\r\n\r\n // alle Warn-Klassen entfernen\r\n infoText.attr('class', 'item-description');\r\n\r\n if (contentLength > 2097152) {\r\n infoText.addClass('fatal');\r\n infoText.text(i18next.t('changeMode.panels.properties.rteFatal', {\r\n size: (contentLength / 1048576).toFixed(2) + ' MB',\r\n returnObjects: false\r\n }));\r\n } else if (contentLength > 1048576) {\r\n infoText.addClass('warn');\r\n infoText.text(i18next.t('changeMode.panels.properties.rteWarn', {\r\n size: (contentLength / 1048576).toFixed(2) + ' MB',\r\n returnObjects: false\r\n }));\r\n } else if (contentLength > 512000) {\r\n infoText.text(i18next.t('changeMode.panels.properties.rteInfo', {\r\n size: (contentLength / 1024).toFixed(2) + ' KB',\r\n returnObjects: false\r\n }));\r\n } else {\r\n infoText.empty();\r\n }\r\n };\r\n\r\n Tools.ReEncodeImage = function (srcImage, mimeType) {\r\n mimeType = mimeType || 'image/jpeg';\r\n\r\n var defer = $.Deferred();\r\n var name;\r\n var returnAsFile = false;\r\n\r\n var processImage = function () {\r\n var image = this;\r\n var canvas = document.createElement('canvas');\r\n\r\n canvas.width = image.naturalWidth || image.width;\r\n canvas.height = image.naturalHeight || image.height;\r\n\r\n var context = canvas.getContext('2d');\r\n context.drawImage(image, 0, 0);\r\n\r\n if (returnAsFile) {\r\n canvas.toBlob(function (compressedBlob) {\r\n compressedBlob.name = compressedBlob.name || name || 'image';\r\n defer.resolve(compressedBlob);\r\n }, mimeType, 0.85);\r\n } else {\r\n var compressedImage = canvas.toDataURL(mimeType, 0.85);\r\n defer.resolve(compressedImage);\r\n }\r\n };\r\n\r\n if (typeof srcImage === 'string') {\r\n var image = new Image();\r\n\r\n image.onload = processImage;\r\n image.onerror = defer.reject;\r\n image.src = srcImage;\r\n } else if (srcImage instanceof Image) {\r\n processImage.call(srcImage);\r\n } else if (srcImage instanceof File) {\r\n var image = new Image();\r\n var urlCreator = window.URL || window.webkitURL;\r\n var imageUrl = urlCreator.createObjectURL(srcImage);\r\n\r\n returnAsFile = true;\r\n name = srcImage.name.replace('.png', '');\r\n image.onload = processImage;\r\n image.onerror = defer.reject;\r\n image.src = imageUrl;\r\n } else {\r\n defer.reject('bad format');\r\n }\r\n\r\n return defer.promise();\r\n };\r\n\r\n Tools.ReplacePngUrlData = function(markup) {\r\n var r = new RegExp('data:image\\/png;base64,[^\"!)]*', 'ig')\r\n var defer = $.Deferred();\r\n var processDeferreds = [];\r\n var hasChanges = false;\r\n var match;\r\n\r\n while (match = r.exec(markup)) {\r\n var data = match[0];\r\n var reEncodeDefer = Tools.ReEncodeImage(data)\r\n .then(function (compressedImage) {\r\n markup = markup.replaceAll(data, compressedImage);\r\n hasChanges = true;\r\n });\r\n\r\n processDeferreds.push(reEncodeDefer);\r\n }\r\n\r\n $.when.apply($,processDeferreds)\r\n .always(function () {\r\n defer.resolve(markup, hasChanges);\r\n });\r\n\r\n return defer.promise();\r\n };\r\n\r\n // Verfügbarkeit von Benutzernamen und Email-Adressen prüfen\r\n Tools.CheckAvailability = function (text, options, isAvailableCallback, onFail) {\r\n isAvailableCallback = isAvailableCallback || $.noop;\r\n onFail = onFail || $.noop;\r\n\r\n return Tools.http.get('availability/', function (msg) {\r\n if (Boolean(msg)) {\r\n isAvailableCallback();\r\n } else {\r\n onFail();\r\n }\r\n }, null, options);\r\n };\r\n\r\n Tools.GetAssignedUserLicensesCount = function () {\r\n if (!changemode.active) {\r\n return null;\r\n }\r\n\r\n if (!ressources.users.hasRight('CMU')) {\r\n return null;\r\n }\r\n\r\n var fullLicensesAssigned = 0;\r\n var limitedLicensesAssigned = 0;\r\n var viewRightLicensesAssigned = 0;\r\n\r\n for (var identifier in changemode.Users) {\r\n var user = changemode.Users[identifier];\r\n\r\n if (user.ModificationType === Enums.ModificationType.Deleted ||\r\n user.IsSystemUser ||\r\n user.IsLocked) {\r\n continue;\r\n }\r\n\r\n if (user.LicenseType === Enums.LicenseType.Full) {\r\n fullLicensesAssigned++;\r\n } else if (user.LicenseType === Enums.LicenseType.Limited) {\r\n limitedLicensesAssigned++;\r\n } else {\r\n viewRightLicensesAssigned++;\r\n }\r\n }\r\n\r\n return {\r\n FullLicensesAssigned: fullLicensesAssigned,\r\n LimitedLicensesAssigned: limitedLicensesAssigned,\r\n ViewRightLicensesAssigned: viewRightLicensesAssigned\r\n };\r\n };\r\n\r\n Tools.GetSelectableUsers = function (locationIdentifier) {\r\n var userCanAssignAllTeamsAndUsers = !!locationIdentifier ? ressources.users.hasRightAtLocation(\r\n Enums.Rights.IssueRights.AllowAssigningAllUsersToIssues,\r\n locationIdentifier\r\n ) : ressources.users.hasRight(Enums.Rights.IssueRights.AllowAssigningAllUsersToIssues);\r\n\r\n var users = $.map(Users || {}, function (user) { return user; });\r\n\r\n if (userCanAssignAllTeamsAndUsers) {\r\n return users;\r\n }\r\n\r\n var teamUsers = {};\r\n var location = !!locationIdentifier ? DataManager.OrganizationUnitLoader.Data.DataMap[locationIdentifier] : null;\r\n\r\n (User.Teams || []).forEach(function (oid) {\r\n var team = Teams[oid];\r\n\r\n if (!team) {\r\n return;\r\n }\r\n\r\n if (location && !ressources.tools.isTeamAssignedToLocation(team.OID, location, false)) {\r\n return;\r\n }\r\n\r\n team.Users.forEach(function (user) {\r\n teamUsers[user.OID] = true;\r\n });\r\n });\r\n\r\n return users.filter(function (user) {\r\n return user.OID === User.OID || teamUsers.hasOwnProperty(user.OID);\r\n });\r\n };\r\n\r\n Tools.GetSelectableTeams = function (locationIdentifier) {\r\n var userCanAssignAllTeamsAndUsers = !!locationIdentifier ? ressources.users.hasRightAtLocation(\r\n Enums.Rights.IssueRights.AllowAssigningAllUsersToIssues,\r\n locationIdentifier\r\n ) : ressources.users.hasRight(Enums.Rights.IssueRights.AllowAssigningAllUsersToIssues);\r\n var location = !!locationIdentifier ? DataManager.OrganizationUnitLoader.Data.DataMap[locationIdentifier] : null;\r\n\r\n var teams = $.map(Teams || {}, function (team) { return team; });\r\n var visibleTeams, selectableTeams;\r\n\r\n if (!userCanAssignAllTeamsAndUsers) {\r\n teams = teams.filter(function (team) {\r\n return (User.Teams || []).indexOf(team.OID) > -1 &&\r\n (!location || ressources.tools.isTeamAssignedToLocation(team.OID, location, false));\r\n });\r\n\r\n visibleTeams = [];\r\n selectableTeams = teams.map(function (team) {\r\n return team.OID;\r\n });\r\n\r\n function addTeamToVisibleTeams(team) {\r\n if (visibleTeams.indexOf(team.OID) > -1) {\r\n return;\r\n }\r\n\r\n visibleTeams.push(team.OID);\r\n\r\n if (!team.Parent) {\r\n return;\r\n }\r\n\r\n addTeamToVisibleTeams(team.Parent);\r\n }\r\n\r\n teams.forEach(addTeamToVisibleTeams);\r\n }\r\n\r\n return {\r\n Teams: teams,\r\n VisibleTeams: visibleTeams,\r\n SelectableTeams: selectableTeams\r\n };\r\n }\r\n\r\n Tools.GetCountOfIssueResponsibilities = function (issueResponsibilities) {\r\n if (!issueResponsibilities) {\r\n return 0;\r\n }\r\n\r\n var usersCount = Object.keys(issueResponsibilities.Users || {}).length;\r\n var teamsCount = Object.keys(issueResponsibilities.Teams || {}).length;\r\n var contactsCount = Object.keys(issueResponsibilities.Contacts || {}).length;\r\n var contactGroupsCount = Object.keys(issueResponsibilities.ContactGroups || {}).length;\r\n\r\n return usersCount + teamsCount + contactsCount + contactGroupsCount;\r\n };\r\n\r\n /***\r\n * Bestimmt die Breite der Kindelemente eines jQuery-Elements.\r\n * @param $element {$}\r\n * @returns {number}\r\n */\r\n Tools.GetTotalWidthOfChildComponents = function ($element) {\r\n if (!$element || !($element instanceof $)) {\r\n return 0;\r\n }\r\n\r\n var $children = $element.children(':visible');\r\n\r\n if (!$children.length) {\r\n return 0;\r\n }\r\n\r\n var width = 0;\r\n\r\n $children.each(function (_, elem) {\r\n var $elem = $(elem);\r\n var grandChildrenWidth = Tools.GetTotalWidthOfChildComponents($elem);\r\n\r\n width += grandChildrenWidth || $elem.outerWidth(true);\r\n });\r\n\r\n return width;\r\n };\r\n\r\n /**\r\n * @param container {HTMLElement}\r\n * @param initialValue {string | null}\r\n * @param disableModifications {boolean}\r\n * @return {toastui.Editor | null}\r\n */\r\n Tools.CreateMarkdownEditor = function (container, initialValue, disableModifications) {\r\n if (!(container instanceof HTMLElement)) {\r\n return null;\r\n }\r\n\r\n disableModifications = disableModifications || false;\r\n\r\n var editorOptions = {\r\n el: container,\r\n language: User.Language,\r\n usageStatistics: false,\r\n initialEditType: 'wysiwyg',\r\n toolbarItems: [\r\n ['bold', 'italic', 'strike'],\r\n ['heading'],\r\n ['hr', 'quote'],\r\n ['ul', 'ol', 'indent', 'outdent'],\r\n ['link']\r\n ]\r\n };\r\n\r\n if (!!initialValue) {\r\n editorOptions.initialValue = initialValue;\r\n }\r\n\r\n if (disableModifications) {\r\n editorOptions.viewer = true;\r\n }\r\n\r\n return disableModifications ?\r\n toastui.Editor.factory(editorOptions) :\r\n new toastui.Editor(editorOptions);\r\n };\r\n\r\n Tools.RenderMarkdown = function (str) {\r\n if (!str) {\r\n return null;\r\n }\r\n\r\n var $container = $('
');\r\n\r\n toastui.Editor.factory({\r\n el: $container.get(0),\r\n initialValue: str,\r\n viewer: true\r\n });\r\n\r\n return $container.html();\r\n };\r\n\r\n Tools.GetPropertyKeys = function (obj, keyBase) {\r\n if (!obj || !keyBase) {\r\n return null;\r\n }\r\n\r\n var keys = Object.keys(obj);\r\n var props = [];\r\n\r\n for (var iCnt = 0, iLen = keys.length; iCnt < iLen; iCnt++) {\r\n var key = keys[iCnt];\r\n var prop = obj[key];\r\n var newKey = keyBase + '.' + key;\r\n\r\n if (typeof prop === 'object' && !(prop instanceof Array)) {\r\n props = props.concat(Tools.GetPropertyKeys(prop, newKey));\r\n } else {\r\n props.push(newKey);\r\n }\r\n }\r\n\r\n return props;\r\n };\r\n\r\n Tools.GetObjectPropertyByKeyPath = function (path, obj) {\r\n if (!path || !obj) {\r\n return null;\r\n }\r\n\r\n var splittedPath = path.split('.');\r\n\r\n for (var pCnt = 0, pLen = splittedPath.length; pCnt < pLen; pCnt++) {\r\n obj = obj[splittedPath[pCnt]];\r\n\r\n if (!obj) {\r\n return null;\r\n }\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n /***\r\n * Prüft, ob ein Array die gleichen Einträge enthält. Dabei wird die Reihenfolge der Einträge ignoriert.\r\n * @param arrayA\r\n * @param arrayB\r\n * @returns {boolean}\r\n * @constructor\r\n */\r\n Tools.IsSetEqual = function(arrayA, arrayB) {\r\n if ((arrayA || []).length !== (arrayB || []).length) {\r\n return false;\r\n }\r\n\r\n // Beide haben die gleiche länge\r\n if ((arrayA || []).length === 0) {\r\n return true;\r\n }\r\n\r\n if (!arrayA.every(function(oid) { return arrayB.includes(oid)})){\r\n return false\r\n }\r\n\r\n // Wir müssen auch aus dieser Richtung testen, da ansonsten auch beim Vergleich vom folgenden Fall diese Funktion true zurückgeben würde.\r\n // var test1 = new Array(4);\r\n // var test2 = new Array(4);\r\n // test2[0] = 2;\r\n // Beide haben nämlich eine length von 4\r\n return arrayB.every(function(oid) { return arrayA.includes(oid)});\r\n }\r\n\r\n /**\r\n * @return {Date}\r\n */\r\n Tools.GetBuildTime = function () {\r\n var buildTime = '1717666387478';\r\n\r\n if (!isNaN(buildTime)) {\r\n if (typeof buildTime === 'string') {\r\n buildTime = parseInt(buildTime, 10);\r\n }\r\n\r\n buildTime = new Date(buildTime);\r\n }\r\n\r\n return buildTime;\r\n };\r\n\r\n Tools.Users = (function () {\r\n function getProfilePicturePath(user, ignoreProfilePicture) {\r\n if (!user) {\r\n return './img/user.svg';\r\n }\r\n\r\n if (!ignoreProfilePicture && user.ImageOID) {\r\n var image = Files[user.ImageOID];\r\n\r\n if (image) {\r\n return Config.BaseUri + 'images/s/' + image.Filename;\r\n }\r\n }\r\n\r\n return './img/user.svg';\r\n }\r\n\r\n return {\r\n getProfilePicturePath: getProfilePicturePath\r\n };\r\n })();\r\n\r\n Tools.Comments = (function () {\r\n function renderComments(comments, rights) {\r\n var html = ['
'];\r\n\r\n if ((comments || []).length) {\r\n comments.forEach(function (comment) {\r\n html.push(renderComment(comment, rights));\r\n });\r\n } else {\r\n html.push('

', i18next.t('comments.noComments'), '

');\r\n }\r\n\r\n html.push('
');\r\n\r\n return html.join('');\r\n }\r\n\r\n function renderComment(comment, rights) {\r\n if (!comment) {\r\n return null;\r\n }\r\n\r\n rights = rights || {};\r\n\r\n var creator = Users[comment.CreatorOID];\r\n var imagePath = Tools.Users.getProfilePicturePath(creator);\r\n var creationTimestamp = Tools.dateTime.getDifferenceString(comment.CreationTimestamp);\r\n var editor = Users[comment.EditorOID];\r\n var modificationTimestamp = Tools.dateTime.getDifferenceString(comment.ModificationTimestamp);\r\n\r\n var html = [\r\n '
',\r\n '
',\r\n ];\r\n\r\n if (comment.CreatorOID !== User.OID) {\r\n html.push(\r\n '
',\r\n '',\r\n '
',\r\n );\r\n }\r\n\r\n html.push(\r\n '
',\r\n '
'\r\n );\r\n\r\n if (comment.CreatorOID !== User.OID) {\r\n html.push(\r\n '

',\r\n creator ? creator.Title : i18next.t('misc.unknown'),\r\n '

'\r\n );\r\n }\r\n\r\n var canEditComment = rights.userCanCreateComments && comment.CreatorOID === User.OID ||\r\n rights.userCanEditOrDeleteCommentsOfOthers;\r\n var clickToEditText = i18next.t('comments.clickToEdit');\r\n\r\n html.push(\r\n '

',\r\n comment.Text,\r\n '

',\r\n '
'\r\n );\r\n\r\n html.push(\r\n '
',\r\n '

', creationTimestamp, '

'\r\n );\r\n\r\n if (comment.CreationTimestamp.getTime() !== comment.ModificationTimestamp.getTime()) {\r\n html.push(\r\n '

(',\r\n i18next.t('comments.modifiedBy', {\r\n editorTitle: editor ? editor.Title : i18next.t('misc.unknown'),\r\n modificationTimestamp: modificationTimestamp\r\n }),\r\n ')

'\r\n );\r\n }\r\n\r\n if (canEditComment) {\r\n html.push(\r\n '
'\r\n );\r\n }\r\n\r\n html.push(\r\n '
',\r\n '
',\r\n '
',\r\n '
'\r\n );\r\n\r\n return html.join('');\r\n }\r\n\r\n return {\r\n renderComments: renderComments,\r\n renderComment: renderComment\r\n };\r\n })();\r\n\r\n return (global.Tools = Tools);\r\n})(window);","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var StartTools = {};\r\n\r\n StartTools.GetUserTeamIdent = function (userIdentifier) {\r\n return Object.keys(changemode.Teams)\r\n .filter(function (teamIdent) {\r\n var team = changemode.Teams[teamIdent];\r\n\r\n if (!(team.Users || []).length) {\r\n return false;\r\n }\r\n\r\n return team.Users.some(function (teamUser) {\r\n return teamUser.OID === userIdentifier;\r\n });\r\n })[0];\r\n };\r\n\r\n StartTools.GetUserTeam = function (userIdentifier) {\r\n var teamIdentifier = StartTools.GetUserTeamIdent(userIdentifier);\r\n\r\n if (!teamIdentifier) {\r\n return null;\r\n }\r\n\r\n var team = changemode.Teams[teamIdentifier];\r\n\r\n return team == null || team.ModificationType === Enums.ModificationType.Deleted ? null : team;\r\n };\r\n\r\n StartTools.GetTeamLocations = function (teamIdentifier) {\r\n if (!teamIdentifier) {\r\n return null;\r\n }\r\n\r\n var teamLocations = [];\r\n\r\n (function walk(location) {\r\n if (location.Type > 1) {\r\n return;\r\n }\r\n\r\n if ((location.Teams || []).length) {\r\n var isAssigned = location.Teams.some(function (assignedTeam) {\r\n return assignedTeam.OID === teamIdentifier;\r\n });\r\n\r\n if (isAssigned) {\r\n teamLocations.push(location.OID);\r\n }\r\n }\r\n\r\n (location.Children || []).forEach(walk);\r\n })(changemode.Root);\r\n\r\n return teamLocations;\r\n };\r\n\r\n tools.AwenkoStart = StartTools;\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var browsers = [\r\n { ua: navigator.userAgent, subUa: 'OPR', identity: 'Opera', versionSearch: 'OPR' },\r\n { ua: navigator.userAgent, subUa: 'Chrome', identity: 'Chrome' },\r\n { ua: navigator.userAgent, subUa: 'OmniWeb', versionSearch: 'OmniWeb/', identity: 'OmniWeb' },\r\n { ua: navigator.vendor, subUa: 'Apple', identity: 'Safari', versionSearch: 'Version' },\r\n { ua: navigator.vendor, subUa: 'iCab', identity: 'iCab' },\r\n { ua: navigator.vendor, subUa: 'KDE', identity: 'Konqueror' },\r\n { ua: navigator.userAgent, subUa: 'Firefox', identity: 'Firefox' },\r\n { ua: navigator.vendor, subUa: 'Camino', identity: 'Camino' },\r\n { ua: navigator.userAgent, subUa: 'Netscape', identity: 'Netscape' },\r\n { ua: navigator.userAgent, subUa: '(MSIE|trident)', identity: 'Internet Explorer', versionSearch: '(rv|MSIE)' },\r\n { ua: navigator.userAgent, subUa: 'Gecko', identity: 'Mozilla', versionSearch: 'rv' },\r\n { ua: navigator.userAgent, subUa: 'Mozilla', identity: 'Netscape', versionSearch: 'Mozilla'}\r\n ];\r\n\r\n var identity, version;\r\n\r\n function init() {\r\n var browserInfos = getBrowser();\r\n\r\n this.identity = browserInfos.identity;\r\n this.version = browserInfos.version;\r\n }\r\n\r\n function getBrowser() {\r\n var identity = 'unknown';\r\n var version = -1;\r\n var versionSearchString;\r\n\r\n $.each(browsers, function (_, browser) {\r\n var regex;\r\n\r\n if (!browser.ua) {\r\n return;\r\n }\r\n\r\n regex = new RegExp(browser.subUa, 'ig');\r\n\r\n if (regex.test(browser.ua)) {\r\n versionSearchString = browser.versionSearch || browser.identity;\r\n identity = browser.identity;\r\n return false;\r\n }\r\n });\r\n\r\n return {\r\n identity: identity,\r\n version: getVersion(versionSearchString)\r\n };\r\n }\r\n\r\n function getVersion(versionSearchString) {\r\n var regex = new RegExp(versionSearchString, 'ig');\r\n var ua, index;\r\n\r\n if (regex.test(navigator.userAgent)) {\r\n ua = navigator.userAgent;\r\n index = regex.lastIndex;\r\n } else if (regex.test(navigator.appVersion)) {\r\n ua = navigator.appVersion;\r\n index = regex.lastIndex;\r\n } else {\r\n return -1;\r\n }\r\n\r\n return parseFloat(/\\d+/.exec(ua.substring(index + 1)));\r\n }\r\n\r\n tools.browserdetect = {\r\n init: init,\r\n identity: identity,\r\n version: version\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getLocationData(settings) {\r\n // Settings ------------\r\n // {\r\n // location (object) (optional),\r\n // changemode (boolean) (optional)\r\n // }\r\n\r\n settings = settings || {};\r\n\r\n var files = settings.changemode ? changemode.Files : Files;\r\n var location = settings.location;\r\n var logo, address;\r\n\r\n (function traverse(elem) {\r\n if (elem) {\r\n if (!logo && elem.ImageOID && files[elem.ImageOID]) {\r\n logo = files[elem.ImageOID];\r\n }\r\n if (!address && elem.Address) {\r\n address = elem.Address;\r\n }\r\n if (!logo || !address) {\r\n traverse(elem.Parent);\r\n }\r\n }\r\n })(location);\r\n\r\n return {\r\n logo: logo,\r\n address: address\r\n };\r\n }\r\n\r\n function hasUIRight(navItemId) {\r\n var officeConfiguration = Client.OfficeConfiguration || {};\r\n var enabledNavItems = ((officeConfiguration.explorer || {}).EnabledTabs || [])\r\n .concat((officeConfiguration.current || {}).EnabledTabs || []);\r\n\r\n return Tools.contains(enabledNavItems, navItemId);\r\n }\r\n\r\n tools.client = {\r\n getLocationData: getLocationData,\r\n hasUIRight: hasUIRight\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getAllCookies() {\r\n var domainCookies = document.cookie.split(';');\r\n var cookies = [];\r\n\r\n for (var i = 0 ; i <= domainCookies.length - 1; i++) {\r\n var splitted = domainCookies[i].split('=');\r\n\r\n cookies.push({\r\n name: $.trim(splitted[0]),\r\n value: splitted[1]\r\n });\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n function getCookie(key) {\r\n if (!key) {\r\n return null;\r\n }\r\n\r\n var cookieArray = document.cookie.split(';');\r\n var cookie, i, len;\r\n\r\n for (i = 0, len = (cookieArray || []).length; i < len; i++) {\r\n cookie = cookieArray[i].split('=');\r\n\r\n if ($.trim(cookie[0]) === key) {\r\n return unescape(cookie[1]);\r\n }\r\n }\r\n }\r\n\r\n function getCSRFToken() {\r\n var csrf = Tools.Cookies.get(Config.CookieConfig.CsrfCookieName);\r\n\r\n return csrf && csrf.length ? csrf : null;\r\n }\r\n\r\n function setCookie(key, value, invalidateOnWindowClosed) {\r\n if (!key) {\r\n return;\r\n }\r\n\r\n var expires = new Date();\r\n\r\n if (invalidateOnWindowClosed) {\r\n document.cookie = '{0}={1};'.format(key, escape(value));\r\n } else {\r\n expires.setTime(expires.getTime() + (365 * 24 * 60 * 60 * 1000));\r\n document.cookie = '{0}={1}; expires={2}'.format(key, escape(value), expires.toGMTString());\r\n }\r\n }\r\n\r\n function delCookie(key) {\r\n if (!key) {\r\n return;\r\n }\r\n\r\n document.cookie = '{0}=;'.format(key);\r\n document.cookie = '{0}=; expires={1}'.format(key, new Date(0).toGMTString());\r\n }\r\n\r\n function migrateExistingCookies() {\r\n var deferreds = {\r\n updateNotifications: [],\r\n dashboard: []\r\n };\r\n\r\n var migrationKeys = getMigrationKeys();\r\n var migrationStatusFlags = getMigrationStatusFlags(migrationKeys);\r\n\r\n if (Object.keys(migrationKeys).length !== Object.keys(migrationStatusFlags).length) {\r\n (Tools.Cookies.getAll() || []).forEach(function (cookie) {\r\n var action;\r\n\r\n if (cookie.name.startsWith('update-notification-')) {\r\n if (migrationStatusFlags.updateNotificationsMigrated) {\r\n return;\r\n }\r\n\r\n action = migrateNotificationReadCookie(cookie);\r\n\r\n if (action) {\r\n deferreds.updateNotifications.push(action);\r\n }\r\n } else if (cookie.name.startsWith('explorer-dashboard-show-')) {\r\n if (migrationStatusFlags.explorerDashboardSettingsMigrated) {\r\n return;\r\n }\r\n\r\n action = migrateDashboardCookie(cookie);\r\n\r\n if (action) {\r\n deferreds.dashboard.push(action);\r\n }\r\n } else if (cookie.name === 'shrink-navigation') {\r\n if (migrationStatusFlags.shrinkNavigationMigrated) {\r\n return;\r\n }\r\n\r\n localStorage.setItem('shrink-navigation', cookie.value);\r\n Tools.Cookies.delete(cookie.name);\r\n }\r\n });\r\n\r\n if (!migrationStatusFlags.updateNotificationsMigrated) {\r\n $.when.apply($, deferreds.updateNotifications).then(function () {\r\n localStorage.setItem(migrationKeys.updateNotificationsMigrated, 'true');\r\n });\r\n }\r\n\r\n if (!migrationStatusFlags.explorerDashboardSettingsMigrated) {\r\n $.when.apply($, deferreds.dashboard).then(function () {\r\n localStorage.setItem(migrationKeys.explorerDashboardSettingsMigrated, 'true');\r\n });\r\n }\r\n\r\n if (!migrationStatusFlags.shrinkNavigationMigrated) {\r\n localStorage.setItem(migrationKeys.shrinkNavigationMigrated, 'true');\r\n }\r\n }\r\n\r\n return $.when.apply($, deferreds.updateNotifications.concat(deferreds.dashboard));\r\n }\r\n\r\n function getMigrationKeys() {\r\n return {\r\n updateNotificationsMigrated: 'update-notifications-migrated',\r\n explorerDashboardSettingsMigrated: 'explorer-dashboard-settings-migrated',\r\n shrinkNavigationMigrated: 'shrink-navigation-migrated'\r\n };\r\n }\r\n\r\n function getMigrationStatusFlags(keys) {\r\n if (!keys || !Object.values(keys).length) {\r\n return {};\r\n }\r\n\r\n var flags = {};\r\n\r\n for (var key in keys) {\r\n if (localStorage.getItem(keys[key]) !== 'true') {\r\n continue;\r\n }\r\n\r\n flags[key] = true;\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n function migrateNotificationReadCookie(cookie) {\r\n if (cookie == null) {\r\n return null;\r\n }\r\n\r\n var regex = /update-notification-([A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12})-read/ig;\r\n var matches = regex.exec(cookie.name);\r\n\r\n if (!matches) {\r\n return null;\r\n }\r\n\r\n var notificationOID = matches[1];\r\n\r\n if (!Tools.IsValidGuid(notificationOID)) {\r\n return null;\r\n }\r\n\r\n return Tools.http.post('update-notifications', {\r\n Action: Enums.UpdateNotificationAction.MarkAsRead,\r\n NotificationOID: notificationOID\r\n }).then(function () {\r\n Tools.Cookies.delete(cookie.name);\r\n }, function (xhr) {\r\n if (xhr.status === Enums.HttpStatusCode.Conflict &&\r\n xhr.responseText === 'Notification does not exist') {\r\n Tools.Cookies.delete(cookie.name);\r\n return;\r\n }\r\n\r\n return $.Deferred().reject().promise();\r\n });\r\n }\r\n\r\n function migrateDashboardCookie(cookie) {\r\n if (cookie == null) {\r\n return null;\r\n }\r\n\r\n if (cookie.value !== 'true') {\r\n Tools.Cookies.delete(cookie.name);\r\n return null;\r\n }\r\n\r\n // ChartName aus Cookienamen extrahieren\r\n var chartName = cookie.name.substring(24);\r\n var chartSettingName = Explorer.Dashboard.GetChartSettingName(chartName);\r\n\r\n return Tools.UpdateOfficeUserSettings(chartSettingName, true)\r\n .then(function () {\r\n Tools.Cookies.delete(cookie.name);\r\n });\r\n }\r\n\r\n tools.Cookies = {\r\n getAll: getAllCookies,\r\n get: getCookie,\r\n getCSRFToken: getCSRFToken,\r\n set: setCookie,\r\n delete: delCookie,\r\n migrateExistingCookies: migrateExistingCookies\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var DateTime = {};\r\n\r\n var daysOfWeek = {\r\n Sunday: 0,\r\n Monday: 1,\r\n Tuesday: 2,\r\n Wednesday: 3,\r\n Thursday: 4,\r\n Friday: 5,\r\n Saturday: 6\r\n };\r\n\r\n DateTime.setDate = function (date, day, month, year) {\r\n if (!(date instanceof Date) || !day || !month || !year) {\r\n return null;\r\n }\r\n\r\n return new Date(\r\n year,\r\n month - 1,\r\n day,\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds());\r\n };\r\n\r\n DateTime.getDateFromObject = function (date) {\r\n if (date instanceof Date || !isNaN((date = new Date(date)).getTime())) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n\r\n return null;\r\n };\r\n\r\n DateTime.getTimeFromObject = function (date) {\r\n if (date instanceof Date || !isNaN((date = new Date(date)).getTime())) {\r\n return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds());\r\n }\r\n\r\n return null;\r\n };\r\n\r\n DateTime.getDifferenceString = function (datetime) {\r\n if (typeof datetime === 'string') {\r\n datetime = new Date(datetime);\r\n }\r\n\r\n var now = new Date();\r\n var differenceInMinutes = (datetime.getTime() - now.getTime()) / 60000;\r\n var year = now.getFullYear();\r\n var month = now.getMonth();\r\n var day = now.getDate();\r\n\r\n if (datetime > new Date(year, month, day + 2)) {\r\n return Tools.dateTime.dateTimeToString(datetime);\r\n }\r\n\r\n if (datetime >= new Date(year, month, day + 1)) {\r\n return i18next.t('dateTime.tomorrowAt', { time: DateTime.timeToString(datetime) });\r\n }\r\n\r\n if (differenceInMinutes > 59) {\r\n return i18next.t('dateTime.todayAt', { time: DateTime.timeToString(datetime) });\r\n }\r\n\r\n if (differenceInMinutes > 2) {\r\n return i18next.t('dateTime.inMinutes', { minutes: differenceInMinutes + 1 | 0 });\r\n }\r\n\r\n if (differenceInMinutes > 1) {\r\n return i18next.t('dateTime.inOneMinute');\r\n }\r\n\r\n if (differenceInMinutes > 0) {\r\n return i18next.t('dateTime.inAFewSeconds');\r\n }\r\n\r\n if (differenceInMinutes > -1) {\r\n return i18next.t('dateTime.fewSecondsAgo');\r\n }\r\n\r\n if (differenceInMinutes > -2) {\r\n return i18next.t('dateTime.oneMinuteAgo');\r\n }\r\n\r\n if (differenceInMinutes > -60) {\r\n return i18next.t('dateTime.minutesAgo', { minutes: -differenceInMinutes | 0 });\r\n }\r\n\r\n if (datetime >= new Date(year, month, day)) {\r\n return i18next.t('dateTime.todayAt', { time: DateTime.timeToString(datetime) });\r\n }\r\n\r\n if (datetime > new Date(year, month, day - 1)) {\r\n return i18next.t('dateTime.yesterdayAt', { time: DateTime.timeToString(datetime) });\r\n }\r\n\r\n return DateTime.dateTimeToString(datetime);\r\n };\r\n\r\n DateTime.dateToString = function (datetime) {\r\n var year = datetime.getFullYear().toString();\r\n var month = (datetime.getMonth() + 1).toString().padleft('0', 2);\r\n var day = datetime.getDate().toString().padleft('0', 2);\r\n var dayOfWeek = datetime.getDay();\r\n var dayOfWeekName;\r\n\r\n switch (dayOfWeek) {\r\n case daysOfWeek.Sunday:\r\n dayOfWeekName = i18next.t('weekdays.sunday_abbreviation');\r\n break;\r\n case daysOfWeek.Monday:\r\n dayOfWeekName = i18next.t('weekdays.monday_abbreviation');\r\n break;\r\n case daysOfWeek.Tuesday:\r\n dayOfWeekName = i18next.t('weekdays.tuesday_abbreviation');\r\n break;\r\n case daysOfWeek.Wednesday:\r\n dayOfWeekName = i18next.t('weekdays.wednesday_abbreviation');\r\n break;\r\n case daysOfWeek.Thursday:\r\n dayOfWeekName = i18next.t('weekdays.thursday_abbreviation');\r\n break;\r\n case daysOfWeek.Friday:\r\n dayOfWeekName = i18next.t('weekdays.friday_abbreviation');\r\n break;\r\n case daysOfWeek.Saturday:\r\n dayOfWeekName = i18next.t('weekdays.saturday_abbreviation');\r\n break;\r\n }\r\n\r\n return i18next.t('dateTime.dateFormat', {\r\n dayOfWeek: dayOfWeekName,\r\n day: day,\r\n month: month,\r\n year: year\r\n });\r\n };\r\n\r\n DateTime.weekdayToOnWeekdayText = function (day) {\r\n var weekdayText = i18next.t('changeMode.scheduleWindow.on') + \" \";\r\n\r\n switch (day) {\r\n case Enums.Weekdays.Monday:\r\n weekdayText += i18next.t('weekdays.monday');\r\n break;\r\n case Enums.Weekdays.Tuesday:\r\n weekdayText += i18next.t('weekdays.tuesday');\r\n break;\r\n case Enums.Weekdays.Wednesday:\r\n weekdayText += i18next.t('weekdays.wednesday');\r\n break;\r\n case Enums.Weekdays.Thursday:\r\n weekdayText += i18next.t('weekdays.thursday');\r\n break;\r\n case Enums.Weekdays.Friday:\r\n weekdayText += i18next.t('weekdays.friday');\r\n break;\r\n case Enums.Weekdays.Saturday:\r\n weekdayText += i18next.t('weekdays.saturday');\r\n break;\r\n default:\r\n weekdayText += i18next.t('weekdays.sunday');\r\n }\r\n\r\n return weekdayText;\r\n }\r\n\r\n DateTime.timeToString = function (datetime) {\r\n var hour = datetime.getHours().toString().padleft('0', 2);\r\n var minute = datetime.getMinutes().toString().padleft('0', 2);\r\n\r\n return i18next.t('dateTime.timeFormat', {\r\n hour: hour,\r\n minute: minute\r\n });\r\n };\r\n\r\n DateTime.exportDateTimeFormat = function (datetime) {\r\n var year = datetime.getFullYear().toString();\r\n var month = (datetime.getMonth() + 1).toString().padleft('0', 2);\r\n var day = datetime.getDate().toString().padleft('0', 2);\r\n var hour = datetime.getHours().toString().padleft('0', 2);\r\n var minute = datetime.getMinutes().toString().padleft('0', 2);\r\n var seconds = datetime.getSeconds().toString().padleft('0', 2);\r\n\r\n // Mit i18next wird nichts angezeigt Bug?\r\n return year + '-' + month + '-' + day + '_' + hour + '-' + minute + '-' + seconds;\r\n };\r\n\r\n DateTime.dateTimeToString = function (datetime) {\r\n return DateTime.dateToString(datetime) + ' ' + DateTime.timeToString(datetime);\r\n };\r\n\r\n DateTime.toGMTString = function (datetime, withoutTime) {\r\n var value = datetime.toGMTString().replace(/^(\\S{3},\\W)(\\d?)(\\d\\W\\S{3}\\W\\d{4}\\W\\d{2}:\\d{2}:\\d{2}\\W)UTC$/,\r\n function(){\r\n var a=Array.prototype.slice.call(arguments,1,-2);\r\n a.push(\"GMT\");\r\n 0===a[1].length && (a[1]=\"0\");\r\n return a.join('')\r\n });\r\n\r\n if (withoutTime) {\r\n return value.substring(0, value.length-13);\r\n } else {\r\n return value;\r\n }\r\n };\r\n\r\n DateTime.isValidDate = function (datetime) {\r\n var value = typeof datetime === 'string' ?\r\n new Date(datetime) :\r\n (datetime instanceof Date ? new Date(datetime.getTime()) : null);\r\n\r\n return value && !isNaN(value.getDate());\r\n };\r\n\r\n DateTime.isTimeOfDateNull = function (datetime) {\r\n if (!DateTime.isValidDate(datetime)) {\r\n return true;\r\n }\r\n\r\n return (datetime.getHours() + datetime.getMinutes() + datetime.getSeconds()) === 0;\r\n };\r\n\r\n DateTime.getWeekNumber = function (date) {\r\n var newDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n var dayNum = newDate.getUTCDay() || 7;\r\n\r\n newDate.setUTCDate(newDate.getUTCDate() + 4 - dayNum);\r\n\r\n var yearStart = new Date(Date.UTC(newDate.getUTCFullYear(), 0, 1));\r\n\r\n return Math.ceil((((newDate - yearStart) / 86400000) + 1) / 7);\r\n };\r\n\r\n DateTime.isDate = function (date) {\r\n return Object.prototype.toString.call(date) === '[object Date]' &&\r\n !isNaN(date.getTime());\r\n };\r\n\r\n DateTime.getDateString = function(date) {\r\n // 1.8.2019 => 01.08.2019\r\n return ('0' + date.getDate()).slice(-2) + '.' + ('0' + (date.getMonth()+1)).slice(-2) + '.' + date.getFullYear();\r\n };\r\n\r\n tools.dateTime = DateTime;\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getTypeName(element, root) {\r\n switch (element.Type) {\r\n case Enums.elementType.Root:\r\n case Enums.elementType.Location:\r\n return i18next.t('elementTypes.room');\r\n case Enums.elementType.ObjectTemplate:\r\n return i18next.t('elementTypes.item');\r\n case Enums.elementType.Form:\r\n return i18next.t('elementTypes.form');\r\n case Enums.elementType.CheckpointGroupTemplate:\r\n return i18next.t('elementTypes.testgroupTemplate');\r\n case Enums.elementType.MasterdataTemplate:\r\n return i18next.t('elementTypes.masterDataTemplate');\r\n case Enums.elementType.PropertyTemplate:\r\n return i18next.t('elementTypes.propertyTemplate');\r\n case Enums.elementType.Sensor:\r\n return i18next.t('elementTypes.sensor');\r\n case Enums.elementType.MasterdataGroup:\r\n return i18next.t('elementTypes.masterDataGroup');\r\n case Enums.elementType.FormHeader:\r\n return i18next.t('elementTypes.formHeader');\r\n case Enums.elementType.FormFooter:\r\n return i18next.t('elementTypes.formFooter');\r\n case Enums.elementType.SubsampleFormRow:\r\n return i18next.t('elementTypes.formRow');\r\n case Enums.elementType.SingletonFormRow:\r\n if (root &&\r\n (root.Type === Enums.elementType.Form || root.Type === Enums.elementType.FormTemplate) &&\r\n root.IsWeighted) {\r\n return i18next.t('elementTypes.singleFormRow_weighted');\r\n }\r\n\r\n return i18next.t('elementTypes.singleFormRow');\r\n case Enums.elementType.Parametergroup:\r\n return i18next.t('elementTypes.testgroup');\r\n case Enums.elementType.Checkbox:\r\n return i18next.t('elementTypes.checkbox');\r\n case Enums.elementType.Number:\r\n if (element.RepresentationType &&\r\n root &&\r\n root.Type === Enums.elementType.Form &&\r\n root.IsSurvey) {\r\n switch (element.RepresentationType) {\r\n case 1:\r\n return i18next.t('formsOfRepresentation.smileysHorizontal');\r\n case 2:\r\n return i18next.t('formsOfRepresentation.smileysVertical');\r\n case 3:\r\n return i18next.t('formsOfRepresentation.stars');\r\n }\r\n }\r\n\r\n return i18next.t('elementTypes.number');\r\n case Enums.elementType.Line:\r\n return i18next.t('elementTypes.line');\r\n case Enums.elementType.Memo:\r\n return i18next.t('elementTypes.memo');\r\n case Enums.elementType.Date:\r\n return i18next.t('elementTypes.date');\r\n case Enums.elementType.Time:\r\n return i18next.t('elementTypes.time');\r\n case Enums.elementType.Photo:\r\n return i18next.t('elementTypes.photo');\r\n case Enums.elementType.Scancode:\r\n return i18next.t('elementTypes.scancode');\r\n case Enums.elementType.LocationCode:\r\n return i18next.t('elementTypes.locationCode');\r\n case Enums.elementType.ListBox:\r\n return i18next.t('elementTypes.listbox');\r\n case Enums.elementType.MultiListBox:\r\n return i18next.t('elementTypes.multipleChoice');\r\n case Enums.elementType.Info:\r\n return i18next.t('elementTypes.info');\r\n case Enums.elementType.Print:\r\n return i18next.t('elementTypes.print');\r\n case Enums.elementType.Signature:\r\n return i18next.t('elementTypes.signature');\r\n case Enums.elementType.UsersAndTeams:\r\n return i18next.t('elementTypes.usersAndTeams');\r\n case Enums.elementType.PhoneNumber:\r\n return i18next.t('elementTypes.phoneNumber');\r\n case Enums.elementType.EMailAddresses:\r\n return i18next.t('elementTypes.emailAddresses');\r\n case Enums.elementType.IndividualData:\r\n if (element.AdditionalSettings) {\r\n var schemas = IndividualData.GetSchemas();\r\n\r\n var types = $.map(element.AdditionalSettings.Types || [], function (type) {\r\n var schema = Tools.getFirst(schemas, type, 'Type');\r\n\r\n return schema ? schema.NamePlural : null;\r\n });\r\n\r\n if (types.length) {\r\n return types.join(', ');\r\n }\r\n }\r\n\r\n return i18next.t('elementTypes.individualData');\r\n case Enums.elementType.Files:\r\n return i18next.t('elementTypes.files');\r\n default:\r\n return i18next.t('misc.unknown');\r\n }\r\n }\r\n\r\n function prepareAdditionalProperties(properties, prepareForPrint) {\r\n var propertyList = {};\r\n var groups = [];\r\n var property;\r\n var parent;\r\n\r\n if ((properties || []).length) {\r\n for (var pCnt = 0, pLen = properties.length; pCnt < pLen; pCnt++) {\r\n property = properties[pCnt];\r\n\r\n propertyList[property.OID] = $.extend(true, {}, property);\r\n }\r\n\r\n for (var oid in propertyList) {\r\n property = propertyList[oid];\r\n\r\n if (!!property.ParentOID) {\r\n parent = propertyList[property.ParentOID];\r\n\r\n if (!parent) {\r\n continue;\r\n }\r\n\r\n parent.Children = parent.Children || [];\r\n parent.Children.push(property);\r\n property.Parent = parent;\r\n\r\n parent.Children.sort(Tools.SortByPosition);\r\n } else {\r\n groups.push(property);\r\n groups.sort(Tools.SortByPosition);\r\n }\r\n\r\n property.Value = getAdditionalPropertyValue(property, prepareForPrint);\r\n }\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n function getAdditionalPropertyValue(property, prepareForPrint, asStringValue) {\r\n if (property.Type !== Enums.additionalPropertyType.Checkbox\r\n && !property.Value) {\r\n return '-/-';\r\n }\r\n\r\n switch (property.Type) {\r\n case Enums.additionalPropertyType.Checkbox:\r\n if (property.Value === true) {\r\n if (asStringValue) {\r\n return i18next.t('misc.yes');\r\n }\r\n\r\n return ''.format(prepareForPrint ? 25 : 50);\r\n } else if (property.Value === false) {\r\n if (asStringValue) {\r\n return i18next.t('misc.no');\r\n }\r\n\r\n return ''.format(prepareForPrint ? 25 : 50);\r\n } else {\r\n if (asStringValue) {\r\n return '-/-';\r\n }\r\n\r\n return ''.format(prepareForPrint ? 25 : 50);\r\n }\r\n case Enums.additionalPropertyType.Date:\r\n return Tools.dateTime.dateToString(new Date(property.Value));\r\n case Enums.additionalPropertyType.Time:\r\n return Tools.dateTime.timeToString(new Date(property.Value));\r\n case Enums.additionalPropertyType.Image:\r\n if (asStringValue) {\r\n return property.Value;\r\n }\r\n\r\n var file = Files[property.Value];\r\n\r\n if (!file) {\r\n return '-/-';\r\n }\r\n\r\n return ''.format(Config.BaseUri, file.Filename);\r\n case Enums.additionalPropertyType.IndividualData:\r\n var selectedEntities = typeof property.Value === 'object' ?\r\n property.Value[property.SubType] || [] :\r\n [];\r\n\r\n var texts = $.map(selectedEntities, function (id) {\r\n return IndividualData.GetEntityTitle(property.SubType, id);\r\n }).filter(function (title) {\r\n return !!title;\r\n });\r\n\r\n texts.sort(Tools.SortStringArray);\r\n\r\n return texts.join('
') || '-/-';\r\n }\r\n\r\n return property.Value;\r\n }\r\n\r\n function isDescendant(descendant, ancestor) {\r\n while (descendant) {\r\n if (descendant.OID === ancestor.OID) {\r\n return true;\r\n }\r\n\r\n descendant = descendant.Parent;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getElementPath(identifier, useModified, typeFilter) {\r\n var dataSource = useModified ? changemode.Elements : DataManager.OrganizationUnitLoader.Data.DataMap;\r\n var path;\r\n\r\n if (dataSource.hasOwnProperty(identifier)) {\r\n var parent = dataSource[identifier];\r\n\r\n if (!parent.Parent) {\r\n return '';\r\n }\r\n\r\n parent = parent.Parent;\r\n path = parent.Title;\r\n\r\n for (var i = 2; i > 0 && (parent = parent.Parent); i--) {\r\n if (typeFilter instanceof Array &&\r\n typeFilter.indexOf(parent.Type) === -1) {\r\n break;\r\n }\r\n\r\n path = '{0} › {1}'.format(parent.Title, path);\r\n }\r\n }\r\n\r\n return path;\r\n }\r\n\r\n function formatElementCoding(prefix, ident) {\r\n if (!prefix || !ident) {\r\n return null;\r\n }\r\n\r\n if (typeof ident === 'number') {\r\n ident = formatElementCodingIdent(ident);\r\n }\r\n\r\n return prefix + ident;\r\n }\r\n\r\n function formatElementCodingIdent(ident) {\r\n if (!ident) {\r\n return null;\r\n }\r\n\r\n return ('' + ident).padleft('0', 4);\r\n }\r\n\r\n function createElementHierarchy(elements) {\r\n if (!(elements instanceof Array)) {\r\n return null;\r\n }\r\n\r\n var map = elements.reduce(function (map, elem) {\r\n map[elem.OID] = elem;\r\n\r\n return map;\r\n }, {});\r\n\r\n var root;\r\n\r\n elements.forEach(function (elem) {\r\n var parentElement = map[elem.ParentOID];\r\n\r\n if (elem.ParentOID && !parentElement) {\r\n delete elem.ParentOID;\r\n }\r\n\r\n if (elem.Type === Enums.elementType.Form && parentElement && parentElement.Type === Enums.elementType.Root) {\r\n delete elem.ParentOID;\r\n parentElement = null;\r\n }\r\n\r\n if (!elem.ParentOID) {\r\n root = elem;\r\n return;\r\n }\r\n\r\n if (parentElement) {\r\n elem.Parent = parentElement;\r\n\r\n if (elem.Type >= Enums.elementType.Checkbox) {\r\n // Prüfpunkte\r\n parentElement.Parameters = parentElement.Parameters || [];\r\n parentElement.Parameters.push(elem);\r\n parentElement.Parameters.sort(Tools.SortByPosition);\r\n } else if (Tools.contains(Enums.elementType.AllGroups, elem.Type)) {\r\n // Prüfgruppen\r\n parentElement.Parametergroups = parentElement.Parametergroups || [];\r\n parentElement.Parametergroups.push(elem);\r\n parentElement.Parametergroups.sort(Tools.SortByPosition);\r\n } else if (elem.Type !== Enums.elementType.Root) {\r\n // Der Rest\r\n parentElement.Children = parentElement.Children || [];\r\n parentElement.Children.push(elem);\r\n parentElement.Children.sort(Tools.SortByPosition);\r\n }\r\n }\r\n });\r\n\r\n return root;\r\n }\r\n\r\n function createHierarchyForDownloadedElements(elements, attachToOUs) {\r\n if (!(elements instanceof Array) || !elements.length) {\r\n return;\r\n }\r\n\r\n attachToOUs = attachToOUs || false;\r\n\r\n var cache = (elements || []).reduce(function (dict, element) {\r\n dict[element.OID] = Tools.Escape.Element(element);\r\n\r\n return dict;\r\n }, {});\r\n\r\n for (var oid in cache) {\r\n var element = cache[oid];\r\n\r\n if (!element.ParentOID) {\r\n continue;\r\n }\r\n\r\n var parent = cache[element.ParentOID] || DataManager.OrganizationUnitLoader.Data.DataMap[element.ParentOID];\r\n\r\n if (!parent) {\r\n continue;\r\n }\r\n\r\n element.Parent = parent;\r\n\r\n if (attachToOUs &&\r\n (parent.Type === Enums.elementType.Root || parent.Type === Enums.elementType.Location) &&\r\n element.Type === Enums.elementType.Parametergroup) {\r\n parent.Parametergroups = parent.Parametergroups || [];\r\n parent.Parametergroups.push(element);\r\n parent.Parametergroups.sort(Tools.SortByPosition);\r\n }\r\n\r\n if (parent.Type >= Enums.elementType.SingletonFormRow &&\r\n element.Type >= Enums.elementType.Checkbox) {\r\n parent.Children = parent.Children || [];\r\n parent.Children.push(element);\r\n parent.Children.sort(Tools.SortByPosition);\r\n }\r\n }\r\n\r\n return cache;\r\n }\r\n\r\n function getFromAdditionalSettings(element, settingsKey, defaultValue) {\r\n if (!element || !element.AdditionalSettings || !settingsKey) {\r\n return defaultValue;\r\n }\r\n\r\n return element.AdditionalSettings[settingsKey] || defaultValue;\r\n }\r\n\r\n tools.element = {\r\n getTypeName: getTypeName,\r\n prepareAdditionalProperties: prepareAdditionalProperties,\r\n getAdditionalPropertyValue: getAdditionalPropertyValue,\r\n isDescendant: isDescendant,\r\n getElementPath: getElementPath,\r\n formatElementCoding: formatElementCoding,\r\n formatElementCodingIdent: formatElementCodingIdent,\r\n createElementHierarchy: createElementHierarchy,\r\n createHierarchyForDownloadedElements: createHierarchyForDownloadedElements,\r\n getFromAdditionalSettings: getFromAdditionalSettings\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var escapeBase = function(getValue) {\r\n function escapeArray(arr, escapeFunction) {\r\n if (!arr || !(arr instanceof Array)) {\r\n return arr;\r\n }\r\n\r\n var len = arr.length;\r\n for (var cnt = 0; cnt < len; cnt++) {\r\n if (escapeFunction instanceof Function) {\r\n escapeFunction(arr[cnt]);\r\n } else {\r\n arr[cnt] = getValue(arr[cnt]);\r\n }\r\n }\r\n }\r\n\r\n function escapeDictionary(dic, escapeFunction) {\r\n if (!dic) {\r\n return dic;\r\n }\r\n\r\n for (var key in dic) {\r\n if (!dic.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n if (escapeFunction instanceof Function) {\r\n escapeFunction(dic[key]);\r\n } else {\r\n dic[key] = getValue(dic[key]);\r\n }\r\n }\r\n\r\n return dic;\r\n }\r\n\r\n function escapeClient(client) {\r\n if (!client) {\r\n return client;\r\n }\r\n\r\n client.CompanyName = getValue(client.CompanyName);\r\n client.Name = getValue(client.Name);\r\n\r\n return client;\r\n }\r\n\r\n function escapeSchedule(schedule) {\r\n if (!schedule) {\r\n return schedule;\r\n }\r\n\r\n schedule.Title = getValue(schedule.Title);\r\n\r\n return schedule\r\n }\r\n\r\n function escapeScheduling(scheduling) {\r\n if (!scheduling) {\r\n return scheduling;\r\n }\r\n\r\n scheduling.Title = getValue(scheduling.Title);\r\n scheduling.Description = getValue(scheduling.Description);\r\n\r\n return scheduling;\r\n }\r\n\r\n function property(property) {\r\n if (!property) {\r\n return property;\r\n }\r\n\r\n property.Title = getValue(property.Title);\r\n property.Description = getValue(property.Description);\r\n property.ActivationDescription = getValue(property.ActivationDescription);\r\n property.ChangeDescription = getValue(property.ChangeDescription);\r\n\r\n return property;\r\n }\r\n\r\n function element(element, withLastRecorditem) {\r\n if (!element) {\r\n return element;\r\n }\r\n\r\n element.Title = getValue(element.Title);\r\n element.Description = getValue(element.Description);\r\n element.QRCode = getValue(element.QRCode);\r\n element.CostCenter = getValue(element.CostCenter);\r\n element.Address = address(element.Address);\r\n element.GradingScale = gradingScale(element.GradingScale);\r\n element.Unit = property(element.Unit);\r\n\r\n escapeDictionary(element.Structure);\r\n escapeArray(element.Properties, property);\r\n escapeArray(element.AdditionalProperties, additionalProperty);\r\n escapeArray(element.Actions, workflow);\r\n\r\n if (withLastRecorditem) {\r\n recorditem(element.LastRecorditem)\r\n }\r\n\r\n return element;\r\n }\r\n\r\n function folder(folder) {\r\n if (!folder) {\r\n return folder;\r\n }\r\n\r\n folder.Title = getValue(folder.Title);\r\n\r\n return folder;\r\n }\r\n\r\n function file(file) {\r\n if (!file) {\r\n return file;\r\n }\r\n\r\n file.Title = getValue(file.Title);\r\n file.Description = getValue(file.Description);\r\n\r\n return file;\r\n }\r\n\r\n function role(role) {\r\n if (!role) {\r\n return role;\r\n }\r\n\r\n role.Title = getValue(role.Title);\r\n role.Description = getValue(role.Description);\r\n\r\n return role;\r\n }\r\n\r\n function contact(contact) {\r\n if (!contact) {\r\n return contact;\r\n }\r\n\r\n contact.Firstname = getValue(contact.Firstname);\r\n contact.Lastname = getValue(contact.Lastname);\r\n contact.Company = getValue(contact.Company);\r\n contact.Description = getValue(contact.Description);\r\n\r\n return contact\r\n }\r\n\r\n function contactGroup(contactGroup) {\r\n if (!contactGroup) {\r\n return contactGroup;\r\n }\r\n\r\n contactGroup.Title = getValue(contactGroup.Title);\r\n contactGroup.Description = getValue(contactGroup.Description);\r\n\r\n return contactGroup\r\n }\r\n\r\n function user(user) {\r\n if (!user) {\r\n return user;\r\n }\r\n\r\n user.Username = getValue(user.Username);\r\n user.Firstname = getValue(user.Firstname);\r\n user.Lastname = getValue(user.Lastname);\r\n user.Fullname = getValue(user.Fullname);\r\n user.Title = getValue(user.Title);\r\n\r\n return user;\r\n }\r\n\r\n function team(team) {\r\n if (!team) {\r\n return team;\r\n }\r\n\r\n team.Title = getValue(team.Title);\r\n team.Description = getValue(team.Description);\r\n\r\n return team\r\n }\r\n\r\n function recorditem(recorditem, withElement, withIssue) {\r\n if (!recorditem) {\r\n return recorditem;\r\n }\r\n\r\n if (recorditem.Value && recorditem.Element &&\r\n (recorditem.Element.Type === Enums.elementType.Line ||\r\n recorditem.Element.Type === Enums.elementType.Memo ||\r\n recorditem.Element.Type === Enums.elementType.PhoneNumber ||\r\n recorditem.Element.Type === Enums.elementType.Scancode)) {\r\n recorditem.Value = getValue(recorditem.Value);\r\n }\r\n\r\n escapeArray(recorditem.Comments, comment);\r\n escapeDictionary(recorditem.Workflows, workflow);\r\n\r\n if (withElement) {\r\n element(recorditem.Element);\r\n }\r\n\r\n if (withIssue) {\r\n issue(recorditem.Issue);\r\n }\r\n\r\n recorditem.WorkflowInformation = getValue(recorditem.WorkflowInformation);\r\n\r\n return recorditem;\r\n }\r\n\r\n function issue(issue) {\r\n if (!issue) {\r\n return issue;\r\n }\r\n\r\n issue.CustomID = getValue(issue.CustomID);\r\n issue.Title = getValue(issue.Title);\r\n\r\n if (!(issue.IsTemplate || !!issue.TemplateID)) {\r\n issue.Description = getValue(issue.Description);\r\n }\r\n\r\n escapeArray(issue.Comments, comment);\r\n\r\n return issue;\r\n }\r\n\r\n function additionalProperty(additionalProp) {\r\n if (!additionalProp) {\r\n return additionalProp;\r\n }\r\n\r\n additionalProp.Title = getValue(additionalProp.Title);\r\n\r\n if (additionalProp.Value && (\r\n additionalProp.Type === Enums.additionalPropertyType.Text ||\r\n additionalProp.Type === Enums.additionalPropertyType.Info ||\r\n additionalProp.Type === Enums.additionalPropertyType.PhoneNumber)) {\r\n additionalProp.Value = getValue(additionalProp.Value);\r\n }\r\n\r\n return additionalProp;\r\n }\r\n\r\n function workflow(workflow) {\r\n if (!workflow) {\r\n return workflow;\r\n }\r\n\r\n if (workflow.Title) {\r\n workflow.Title = getValue(workflow.Title);\r\n }\r\n\r\n if (workflow.Text) {\r\n workflow.Text = getValue(workflow.Text);\r\n }\r\n\r\n return workflow;\r\n }\r\n\r\n function comment(comment) {\r\n if (!comment) {\r\n return comment;\r\n }\r\n\r\n comment.Text = getValue(comment.Text);\r\n\r\n return comment;\r\n }\r\n\r\n function address(address) {\r\n if (!address) {\r\n return address;\r\n }\r\n\r\n address.City = getValue(address.City);\r\n address.ZipCode = getValue(address.ZipCode);\r\n address.Name = getValue(address.Name);\r\n address.Phone = getValue(address.Phone);\r\n address.Street = getValue(address.Street);\r\n address.WebAddress = getValue(address.WebAddress);\r\n\r\n return address;\r\n }\r\n\r\n function customMenuItem(menuItem) {\r\n if (!menuItem) {\r\n return menuItem;\r\n }\r\n\r\n menuItem.Title = getValue(menuItem.Title);\r\n menuItem.Description = getValue(menuItem.Description);\r\n\r\n return menuItem;\r\n }\r\n\r\n function mailTemplate(mailTemplate) {\r\n if (!mailTemplate) {\r\n return mailTemplate;\r\n }\r\n\r\n mailTemplate.Title = getValue(mailTemplate.Title);\r\n mailTemplate.Description = getValue(mailTemplate.Description);\r\n mailTemplate.Subject = getValue(mailTemplate.Subject);\r\n\r\n return mailTemplate;\r\n }\r\n\r\n function elementCoding(elementCoding) {\r\n if (!elementCoding) {\r\n return elementCoding;\r\n }\r\n\r\n elementCoding.Prefix = getValue(elementCoding.Prefix);\r\n elementCoding.Description = getValue(elementCoding.Description);\r\n\r\n return elementCoding;\r\n }\r\n\r\n function gradingScale(scale) {\r\n if (!scale) {\r\n return scale;\r\n }\r\n\r\n escapeArray(scale.Gradings, grading);\r\n\r\n return scale;\r\n }\r\n\r\n function grading(grad) {\r\n if (!grad) {\r\n return grad;\r\n }\r\n\r\n grad.Text = getValue(grad.Text);\r\n\r\n return grad;\r\n }\r\n\r\n function excelImportElementItem(item) {\r\n if (!item) {\r\n return item;\r\n }\r\n\r\n item.Title = Tools.escapeHtml(item.Title);\r\n item.GroupTitle = Tools.escapeHtml(item.GroupTitle);\r\n item.GroupDescription = Tools.escapeHtml(item.GroupDescription);\r\n item.ParameterTitle = Tools.escapeHtml(item.ParameterTitle);\r\n item.ParameterDescription = Tools.escapeHtml(item.ParameterDescription);\r\n item.Keywords = Tools.escapeHtml(item.Keywords);\r\n item.PropertyTitle = Tools.escapeHtml(item.PropertyTitle);\r\n\r\n return item;\r\n }\r\n\r\n function excelImportUserItem(item) {\r\n if (!item) {\r\n return item;\r\n }\r\n\r\n item.Team = Tools.escapeHtml(item.Team);\r\n item.OrganisationUnit = Tools.escapeHtml(item.OrganisationUnit);\r\n item.Role = Tools.escapeHtml(item.Role);\r\n item.LicenseType = Tools.escapeHtml(item.LicenseType);\r\n item.FirstName = Tools.escapeHtml(item.FirstName);\r\n item.LastName = Tools.escapeHtml(item.LastName);\r\n item.EmailAddress = Tools.escapeHtml(item.EmailAddress);\r\n\r\n return item;\r\n }\r\n\r\n function individualDataSchema(schema) {\r\n if (!schema) {\r\n return schema;\r\n }\r\n\r\n schema.NameSingular = Tools.escapeHtml(schema.NameSingular);\r\n schema.NamePlural = Tools.escapeHtml(schema.NamePlural);\r\n\r\n return schema;\r\n }\r\n\r\n function individualDataEntity(entity, schema) {\r\n if (!entity || !schema || !schema.Properties) {\r\n return entity;\r\n }\r\n\r\n var len = schema.Properties.length;\r\n var property;\r\n for (var cnt = 0; cnt < len; cnt++) {\r\n property = schema.Properties[cnt];\r\n\r\n if (!property.Name || property.Type !== Enums.IndividualdataSchemaPropertyType.Text) {\r\n continue;\r\n }\r\n\r\n entity[property.Name] = Tools.escapeHtml(entity[property.Name]);\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n function analysisQuery(query) {\r\n if (!query) {\r\n return query;\r\n }\r\n\r\n query.Title = getValue(query.Title);\r\n\r\n if (query.Description) {\r\n query.Description = getValue(query.Description);\r\n }\r\n\r\n return query;\r\n }\r\n\r\n return {\r\n Client: escapeClient,\r\n Schedule: escapeSchedule,\r\n Scheduling: escapeScheduling,\r\n Property: property,\r\n Element: element,\r\n Folder: folder,\r\n File: file,\r\n Role: role,\r\n Contact: contact,\r\n ContactGroup: contactGroup,\r\n User: user,\r\n Team: team,\r\n Recorditem: recorditem,\r\n Issue: issue,\r\n Comment: comment,\r\n Workflow: workflow,\r\n Address: address,\r\n CustomMenuItem: customMenuItem,\r\n MailTemplate: mailTemplate,\r\n ElementCoding: elementCoding,\r\n GradingScale: gradingScale,\r\n ExcelImportElementItem: excelImportElementItem,\r\n ExcelImportUserItem: excelImportUserItem,\r\n AdditionalProperty: additionalProperty,\r\n IndividualDataSchema: individualDataSchema,\r\n IndividualDataEntity: individualDataEntity,\r\n AnalysisQuery: analysisQuery\r\n };\r\n };\r\n\r\n tools.Escape = (function() {\r\n function getEscapedValue(val) {\r\n if (!val) {\r\n return val;\r\n }\r\n\r\n return Tools.escapeHtml(val);\r\n }\r\n\r\n return escapeBase(getEscapedValue);\r\n })();\r\n\r\n tools.UnEscape = (function() {\r\n function getUnEscapedValue(val) {\r\n if (!val) {\r\n return val;\r\n }\r\n\r\n return Tools.unescapeHtml(val);\r\n }\r\n\r\n return escapeBase(getUnEscapedValue);\r\n })();\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var Evaluation = {};\r\n var Linking = { And: 0, Or: 1 };\r\n var Operators = { eq: 0, ne: 1, lt: 2, le: 3, gt: 4, ge: 5 };\r\n\r\n var _recorditem, _element, _evaluations;\r\n\r\n function evaluate(recorditem, element) {\r\n if (!recorditem && !element) {\r\n return null;\r\n }\r\n\r\n _recorditem = recorditem;\r\n _element = element || recorditem.Element;\r\n\r\n if (!_element) {\r\n return null;\r\n }\r\n\r\n _evaluations = (_element.Evaluation || []).filter(function (e) {\r\n return e.Type === _element.Type;\r\n });\r\n\r\n if (!_evaluations.length) {\r\n return null;\r\n }\r\n\r\n switch (_element.Type) {\r\n case Enums.elementType.Checkbox:\r\n return evaluateBool();\r\n case Enums.elementType.Number:\r\n return evaluateNumeric();\r\n case Enums.elementType.Date:\r\n return evaluateDate();\r\n case Enums.elementType.Time:\r\n return evaluateTime();\r\n case Enums.elementType.ListBox:\r\n return evaluateListBox();\r\n default:\r\n return evaluateDefault();\r\n }\r\n }\r\n\r\n function evaluateBool() {\r\n var recorditemValue, i, len, evaluation;\r\n\r\n recorditemValue = (_recorditem || {}).Value;\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n\r\n if (evaluation.Value === 1 && recorditemValue === true ||\r\n evaluation.Value === 2 && recorditemValue === false ||\r\n evaluation.Value === 3 && recorditemValue === null ||\r\n evaluation.Value === 3 && typeof recorditemValue === 'undefined') {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function evaluateNumeric() {\r\n var recorditemValue, i, len, evaluation, firstValue, secondValue;\r\n\r\n function compareNumbers(operator, firstValue, secondValue) {\r\n switch (operator) {\r\n case Operators.eq:\r\n return firstValue === secondValue;\r\n case Operators.ne:\r\n return firstValue !== secondValue;\r\n case Operators.lt:\r\n return firstValue < secondValue;\r\n case Operators.le:\r\n return firstValue <= secondValue;\r\n case Operators.gt:\r\n return firstValue > secondValue;\r\n case Operators.ge:\r\n return firstValue >= secondValue;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n if (!_recorditem) {\r\n return null;\r\n }\r\n\r\n recorditemValue = parseFloat(_recorditem.Value);\r\n\r\n if (isNaN(recorditemValue)) {\r\n return null;\r\n }\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n firstValue = parseFloat(evaluation.FirstValue);\r\n secondValue = parseFloat(evaluation.SecondValue);\r\n\r\n switch (evaluation.Linking) {\r\n case Linking.And:\r\n if (compareNumbers(evaluation.FirstOperator, recorditemValue, firstValue) &&\r\n compareNumbers(evaluation.SecondOperator, recorditemValue, secondValue)) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Linking.Or:\r\n if (compareNumbers(evaluation.FirstOperator, recorditemValue, firstValue) ||\r\n compareNumbers(evaluation.SecondOperator, recorditemValue, secondValue)) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n default:\r\n if (compareNumbers(evaluation.FirstOperator, recorditemValue, firstValue)) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function evaluateDate() {\r\n var recorditemValue, modificationTimestamp, modificationDate,\r\n recorditemDate, i, len, evaluation, valueType,\r\n firstOperator, secondOperator, firstValue, secondValue;\r\n\r\n function addDays(date, days) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setDate(date.getDate() + days);\r\n\r\n return newDate;\r\n }\r\n\r\n function addMonths(date, months) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setMonth(date.getMonth() + months);\r\n\r\n return newDate;\r\n }\r\n\r\n function addYears(date, years) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setFullYear(date.getFullYear() + years);\r\n\r\n return newDate;\r\n }\r\n\r\n if (!_recorditem) {\r\n return null;\r\n }\r\n\r\n recorditemValue = new Date(_recorditem.Value);\r\n modificationTimestamp = new Date(_recorditem.ModificationTimestamp);\r\n\r\n if (isNaN(recorditemValue)) {\r\n return null;\r\n }\r\n\r\n modificationDate = new Date(modificationTimestamp.getFullYear(), modificationTimestamp.getMonth(), modificationTimestamp.getDate());\r\n recorditemDate = new Date(recorditemValue.getFullYear(), recorditemValue.getMonth(), recorditemValue.getDate());\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n valueType = evaluation.ValueType;\r\n firstOperator = evaluation.FirstOperator;\r\n secondOperator = evaluation.SecondOperator;\r\n firstValue = parseInt(evaluation.FirstValue, 10);\r\n secondValue = parseInt(evaluation.SecondValue, 10);\r\n\r\n switch (firstOperator) {\r\n case Operators.eq:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() === modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() === modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() === modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.ne:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() !== modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() !== modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() !== modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.lt:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() > modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() > modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() > modificationDate.getTime()) {\r\n if (secondOperator === 4 && secondValue < firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() < modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 5 && secondValue < firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() <= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.le:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() >= modificationDate.getTime()) {\r\n if (secondOperator === 4 && secondValue < firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() < modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 5 && secondValue < firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() <= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.gt:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() < modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() < modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() < modificationDate.getTime()) {\r\n if (secondOperator === 2 && secondValue > firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() > modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 3 && secondValue > firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() >= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.ge:\r\n if (valueType === 0 && addDays(recorditemDate, firstValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, firstValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, firstValue).getTime() <= modificationDate.getTime()) {\r\n if (secondOperator === 2 && secondValue > firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() > modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 3 && secondValue > firstValue) {\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() >= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if ((secondOperator === Operators.lt || secondOperator === Operators.le) && secondValue <= firstValue ||\r\n (secondOperator === Operators.gt || secondOperator === Operators.ge) && secondValue >= firstValue) {\r\n switch (secondOperator) {\r\n case Operators.lt:\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() > modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() > modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.le:\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() >= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() >= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.gt:\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() < modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() < modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.ge:\r\n if (valueType === 0 && addDays(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 1 && addMonths(recorditemDate, secondValue).getTime() <= modificationDate.getTime() ||\r\n valueType === 2 && addYears(recorditemDate, secondValue).getTime() <= modificationDate.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function evaluateTime() {\r\n var recorditemValue, modificationTimestamp, recorditemTimestamp,\r\n i, len, evaluation, valueType, firstOperator, secondOperator,\r\n firstValue, secondValue;\r\n\r\n function addSeconds(date, seconds) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setSeconds(date.getSeconds() + seconds);\r\n\r\n return newDate;\r\n }\r\n\r\n function addMinutes(date, minutes) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setMinutes(date.getMinutes() + minutes);\r\n\r\n return newDate;\r\n }\r\n\r\n function addHours(date, hours) {\r\n var newDate = new Date(date);\r\n\r\n newDate.setHours(date.getHours() + hours);\r\n\r\n return newDate;\r\n }\r\n\r\n if (!_recorditem) {\r\n return null;\r\n }\r\n\r\n recorditemValue = new Date(_recorditem.Value);\r\n modificationTimestamp = new Date(_recorditem.ModificationTimestamp);\r\n\r\n if (isNaN(recorditemValue)) {\r\n return null;\r\n }\r\n\r\n recorditemTimestamp = new Date(modificationTimestamp);\r\n recorditemTimestamp.setHours(recorditemValue.getHours());\r\n recorditemTimestamp.setMinutes(recorditemValue.getMinutes());\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n valueType = evaluation.ValueType;\r\n firstOperator = evaluation.FirstOperator;\r\n secondOperator = evaluation.SecondOperator;\r\n firstValue = parseInt(evaluation.FirstValue, 10);\r\n secondValue = parseInt(evaluation.SecondValue, 10);\r\n\r\n switch (firstOperator) {\r\n case Operators.eq:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() === modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() === modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() === modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.ne:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() !== modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() !== modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() !== modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.lt:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() > modificationTimestamp.getTime()) {\r\n if (secondOperator === 4 && secondValue < firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 5 && secondValue < firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.le:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() >= modificationTimestamp.getTime()) {\r\n if (secondOperator === 4 && secondValue < firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 5 && secondValue < firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.gt:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() < modificationTimestamp.getTime()) {\r\n if (secondOperator === 2 && secondValue > firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 3 && secondValue > firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n case Operators.ge:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, firstValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, firstValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, firstValue).getTime() <= modificationTimestamp.getTime()) {\r\n if (secondOperator === 2 && secondValue > firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else if (secondOperator === 3 && secondValue > firstValue) {\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n } else {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if ((secondOperator === Operators.lt || secondOperator === Operators.le) && secondValue <= firstValue ||\r\n (secondOperator === Operators.gt || secondOperator === Operators.ge) && secondValue >= firstValue) {\r\n switch (secondOperator) {\r\n case Operators.lt:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() > modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.le:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() >= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.gt:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() < modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n case Operators.ge:\r\n if (valueType === 0 && addSeconds(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 1 && addMinutes(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime() ||\r\n valueType === 2 && addHours(recorditemTimestamp, secondValue).getTime() <= modificationTimestamp.getTime()) {\r\n return evaluation.CategoryOID;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function evaluateListBox() {\r\n var recorditemValue, i, len, evaluation, evaluationValue;\r\n\r\n if (!_recorditem) {\r\n return null;\r\n }\r\n\r\n recorditemValue = parseInt(_recorditem.Value, 10);\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n evaluationValue = parseInt(evaluation.Value, 10);\r\n\r\n if (recorditemValue === evaluationValue) {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function evaluateDefault() {\r\n var recorditemValue, i, len, evaluation, evaluationValue;\r\n\r\n recorditemValue = _recorditem && _recorditem.Value ? _recorditem.Value : '';\r\n\r\n for (i = 0, len = _evaluations.length; i < len; i++) {\r\n evaluation = _evaluations[i];\r\n evaluationValue = parseInt(evaluation.Value, 10);\r\n\r\n if (evaluationValue === 0 && recorditemValue ||\r\n evaluationValue === 1 && !recorditemValue) {\r\n return evaluation.CategoryOID;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Evaluation.evaluate = evaluate;\r\n\r\n tools.evaluation = {\r\n evaluate: evaluate\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function isImage(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType.startsWith('image/') && mimeType !== 'image/svg';\r\n }\r\n\r\n function isAudio(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType.startsWith('audio/');\r\n }\r\n\r\n function isVideo(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType.startsWith('video/');\r\n }\r\n\r\n function isPdf(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType.contains('pdf');\r\n }\r\n\r\n function isText(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType === 'text/plain' ||\r\n mimeType.contains('msword') || mimeType.contains('wordprocessingml') ||\r\n mimeType.startsWith('application/vnd.oasis.opendocument.text');\r\n }\r\n\r\n function isSpreadsheet(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType === 'text/csv' ||\r\n mimeType.startsWith('application/vnd.ms-excel') ||\r\n mimeType.contains('spreadsheetml') ||\r\n mimeType.startsWith('application/vnd.oasis.opendocument.spreadsheet');\r\n }\r\n\r\n function isPresentation(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType.contains('ms-powerpoint') || mimeType.contains('presentationml') ||\r\n mimeType.startsWith('application/vnd.oasis.opendocument.presentation');\r\n }\r\n\r\n function isArchive(mimeType) {\r\n if (!mimeType) {\r\n return false;\r\n }\r\n\r\n return mimeType === 'application/zip' ||\r\n mimeType === 'application/x-zip-compressed' ||\r\n mimeType === 'application/x-7z-compressed' ||\r\n mimeType === 'application/vnd.rar' ||\r\n mimeType === 'application/tar' ||\r\n mimeType === 'application/x-tar' ||\r\n mimeType === 'application/gzip' ||\r\n mimeType.startsWith('application/x-bzip');\r\n }\r\n\r\n function loadUsageInformation(fileIdentifiers) {\r\n if (!(fileIdentifiers instanceof Array) ||\r\n !fileIdentifiers.length) {\r\n return $.Deferred().reject('no file identifiers given').promise();\r\n }\r\n\r\n var payload = {\r\n Identifiers: fileIdentifiers,\r\n EntityType: 3 // TODO Enum\r\n };\r\n\r\n return Tools.http.post('masterdata/usage-information', payload);\r\n }\r\n\r\n function deleteFile(oid) {\r\n if (!oid) {\r\n return $.Deferred().reject('no identifier given').promise();\r\n }\r\n\r\n // TODO Prüfung auf API umstellen\r\n\r\n var file = changemode.Files[oid];\r\n var elementAssignments = [];\r\n var userAssignments = [];\r\n var teamAssignments = [];\r\n var customMenuItemsAssignments = [];\r\n var mailTemplateAssignments = [];\r\n var cannotBeDeleted = false;\r\n var options = {};\r\n var filenameRegex;\r\n\r\n if (!file) {\r\n return $.Deferred().reject('file not found').promise();\r\n }\r\n\r\n function onDelete() {\r\n function deleteFile() {\r\n Tools.http.del('files/' + file.OID, function () {\r\n var folder = changemode.Folders[file.FolderOID];\r\n\r\n if (folder) {\r\n folder.Files = Tools.remove(folder.Files, file.OID, 'OID');\r\n\r\n folder.Files.sort(function (a, b) {\r\n return (a.Position || 0) - (b.Position || 0);\r\n });\r\n }\r\n\r\n file.ModificationType = Enums.ModificationType.Deleted;\r\n\r\n Commit.setChanged(true);\r\n content.views.createFileTable();\r\n setChangeModeTabCounter();\r\n\r\n Tools.Spinner.hide();\r\n }, function (xhr) {\r\n Tools.Spinner.hide();\r\n Tools.handleHttpError(Enums.HttpActionType.Delete, xhr);\r\n });\r\n }\r\n\r\n function updateElements() {\r\n var updatedElements = [];\r\n\r\n elementAssignments.forEach(function (element) {\r\n if (element.ImageOID === file.OID) {\r\n element.ImageOID = null;\r\n }\r\n\r\n element.Files = Tools.remove(element.Files, file.OID, 'OID');\r\n\r\n updatedElements.push(element);\r\n });\r\n\r\n return Tools.ForEachDeferredAction(updatedElements, putElement,\r\n {Visible: true, Text: i18next.t('progressbar.updatingLinkedElements'), ScreenBlock: true});\r\n }\r\n\r\n function updateUsers() {\r\n var updatedUsers = [];\r\n\r\n userAssignments.forEach(function (user) {\r\n user.ImageOID = null;\r\n\r\n updatedUsers.push(user);\r\n });\r\n\r\n return Tools.ForEachDeferredAction(updatedUsers, ressources.users.put,\r\n {Visible: true, Text: i18next.t('progressbar.updatingUsers'), ScreenBlock: true});\r\n }\r\n\r\n function updateTeams() {\r\n var updatedTeams = [];\r\n\r\n teamAssignments.forEach(function (team) {\r\n team.ImageOID = null;\r\n\r\n updatedTeams.push(team);\r\n });\r\n\r\n return Tools.ForEachDeferredAction(updatedTeams, teams.put,\r\n {Visible: true, Text: i18next.t('progressbar.updatingTeams'), ScreenBlock: true});\r\n }\r\n\r\n function updateCustomMenuItems() {\r\n var updatedCustomMenuItems = [];\r\n\r\n customMenuItemsAssignments.forEach(function (customMenuItem) {\r\n if (customMenuItem.IconOID === file.OID) {\r\n customMenuItem.IconOID = null;\r\n }\r\n\r\n if (customMenuItem.OfficeIconOID === file.OID) {\r\n customMenuItem.OfficeIconOID = null;\r\n }\r\n\r\n updatedCustomMenuItems.push(customMenuItem);\r\n });\r\n\r\n return Tools.ForEachDeferredAction(updatedCustomMenuItems, CustomMenuItems.SaveMenuItem,\r\n {Visible: true, Text: i18next.t('progressbar.updatingCustomMenuItems'), ScreenBlock: true});\r\n }\r\n\r\n function updateMailTemplates() {\r\n var updatedMailTemplates = [];\r\n\r\n mailTemplateAssignments.forEach(function (mailTemplate) {\r\n mailTemplate.AttachmentFiles = Tools.remove(mailTemplate.AttachmentFiles, file.OID);\r\n\r\n updatedMailTemplates.push(mailTemplate);\r\n });\r\n\r\n return Tools.ForEachDeferredAction(updatedMailTemplates, MailTemplates.Save,\r\n {Visible: true, Text: i18next.t('progressbar.updatingMailTemplates'), ScreenBlock: true});\r\n }\r\n\r\n Tools.Spinner.show();\r\n\r\n updateElements()\r\n .then(updateUsers)\r\n .then(updateTeams)\r\n .then(updateCustomMenuItems)\r\n .then(updateMailTemplates)\r\n .then(deleteFile);\r\n }\r\n\r\n function propertyContainsImage(property) {\r\n return property.Type === Enums.additionalPropertyType.Image &&\r\n property.Value === file.OID;\r\n }\r\n\r\n if (file.Type === Enums.FileType.File) {\r\n filenameRegex = new RegExp(file.Filename, 'ig');\r\n }\r\n\r\n for (var elementIdentifier in changemode.Elements) {\r\n var element = changemode.Elements[elementIdentifier];\r\n\r\n if (element.ModificationType === Enums.ModificationType.Deleted) {\r\n continue;\r\n }\r\n\r\n if (Tools.contains(element.AdditionalProperties, propertyContainsImage)) {\r\n elementAssignments.push(element);\r\n cannotBeDeleted = true;\r\n continue;\r\n }\r\n\r\n if ((element.AdditionalSettings || {}).MapStructureToImages &&\r\n Object.keys(element.Structure || {}).length &&\r\n Tools.contains($.map(element.Structure || {}, function (v) {\r\n return v;\r\n }), elementIdentifier)) {\r\n elementAssignments.push(element);\r\n cannotBeDeleted = true;\r\n continue;\r\n }\r\n\r\n if (file.Type === Enums.FileType.File &&\r\n element.hasOwnProperty('Layout') &&\r\n filenameRegex.test(element.Layout)) {\r\n elementAssignments.push(element);\r\n cannotBeDeleted = true;\r\n continue;\r\n }\r\n\r\n if (element.ImageOID === file.OID) {\r\n elementAssignments.push(element);\r\n continue;\r\n }\r\n\r\n if (Tools.contains(element.Files, file.OID, 'OID')) {\r\n elementAssignments.push(element);\r\n }\r\n }\r\n\r\n for (var userIdentifier in changemode.Users) {\r\n var user = changemode.Users[userIdentifier];\r\n\r\n if (user.ModificationType === Enums.ModificationType.Deleted) {\r\n continue;\r\n }\r\n\r\n if (user.ImageOID === file.OID) {\r\n userAssignments.push(user);\r\n }\r\n }\r\n\r\n for (var teamIdentifier in changemode.Teams) {\r\n var team = changemode.Teams[teamIdentifier];\r\n\r\n if (team.ModificationType === Enums.ModificationType.Deleted) {\r\n continue;\r\n }\r\n\r\n if (team.ImageOID === file.OID) {\r\n teamAssignments.push(team);\r\n }\r\n }\r\n\r\n for (var menuItemIdentifier in changemode.CustomMenuItems) {\r\n var customMenuItem = changemode.CustomMenuItems[menuItemIdentifier];\r\n\r\n if (customMenuItem.ModificationType === Enums.ModificationType.Deleted) {\r\n continue;\r\n }\r\n\r\n if (customMenuItem.IconOID === file.OID ||\r\n customMenuItem.OfficeIconOID === file.OID) {\r\n customMenuItemsAssignments.push(customMenuItem);\r\n }\r\n }\r\n\r\n for (var mailTemplateIdentifier in changemode.MailTemplates) {\r\n var mailTemplate = changemode.MailTemplates[mailTemplateIdentifier];\r\n\r\n if (mailTemplate.ModificationType === Enums.ModificationType.Deleted) {\r\n continue;\r\n }\r\n\r\n if (Tools.indexOf(mailTemplate.AttachmentFiles, oid) > -1) {\r\n mailTemplateAssignments.push(mailTemplate);\r\n }\r\n }\r\n\r\n var assignments = teamAssignments\r\n .map(function (team) {\r\n return team.Title;\r\n })\r\n .concat(userAssignments.map(function (user) {\r\n return user.Title;\r\n }))\r\n .concat(elementAssignments.map(function (element) {\r\n return element.Title;\r\n }))\r\n .concat(customMenuItemsAssignments.map(function (menuItem) {\r\n return menuItem.Title;\r\n }))\r\n .concat(mailTemplateAssignments.map(function (mailTemplate) {\r\n return mailTemplate.Title;\r\n }));\r\n\r\n if (cannotBeDeleted) {\r\n options.title = i18next.t('changeMode.messages.deleteFile.title');\r\n options.text = i18next.t('changeMode.messages.deleteFile.text', {\r\n file: file.Title,\r\n context: 'cannotBeDeleted'\r\n });\r\n options.assignments = assignments;\r\n options.ok = true;\r\n } else if (assignments.length) {\r\n options.title = i18next.t('changeMode.messages.deleteFile.title');\r\n options.text = i18next.t('changeMode.messages.deleteFile.text', {\r\n file: file.Title,\r\n context: 'withAssignments'\r\n });\r\n options.assignments = assignments;\r\n options.abort = true;\r\n options.onDelete = onDelete;\r\n } else {\r\n options.title = i18next.t('changeMode.messages.deleteFile.title');\r\n options.text = i18next.t('changeMode.messages.deleteFile.text', {file: file.Title});\r\n options.abort = true;\r\n options.onDelete = onDelete;\r\n }\r\n\r\n Tools.Message.Show(options);\r\n }\r\n\r\n function getFileTypeText(file) {\r\n if (!file) {\r\n return null;\r\n }\r\n\r\n switch (file.Type) {\r\n case Enums.FileType.Link:\r\n return i18next.t('misc.fileTypes.link');\r\n case Enums.FileType.YoutubeVideo:\r\n return i18next.t('misc.fileTypes.youtube');\r\n case Enums.FileType.VimeoPrivateVideo:\r\n case Enums.FileType.VimeoPublicVideo:\r\n return i18next.t('misc.fileTypes.vimeo');\r\n }\r\n\r\n file.MimeType = file.MimeType || '';\r\n\r\n if (Tools.Files.isImage(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.image');\r\n }\r\n\r\n if (Tools.Files.isAudio(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.audio');\r\n }\r\n\r\n if (Tools.Files.isVideo(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.video');\r\n }\r\n\r\n if (Tools.Files.isText(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.text');\r\n }\r\n\r\n if (Tools.Files.isSpreadsheet(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.spreadsheet');\r\n }\r\n\r\n if (Tools.Files.isPresentation(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.presentation');\r\n }\r\n\r\n if (Tools.Files.isPdf(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.pdf');\r\n }\r\n\r\n if (Tools.Files.isArchive(file.MimeType)) {\r\n return i18next.t('misc.fileTypes.archive');\r\n }\r\n\r\n return i18next.t('misc.fileTypes.file');\r\n }\r\n\r\n function getFileIconForMimeType(mimeType) {\r\n if (Tools.Files.isPdf(mimeType)) {\r\n return 'file-pdf';\r\n }\r\n\r\n if (Tools.Files.isText(mimeType)) {\r\n return mimeType === 'text/plain' ? 'file-text' : 'file-word';\r\n }\r\n\r\n if (Tools.Files.isSpreadsheet(mimeType)) {\r\n return 'file-excel';\r\n }\r\n\r\n if (Tools.Files.isPresentation(mimeType)) {\r\n return 'file-powerpoint';\r\n }\r\n\r\n if (Tools.Files.isVideo(mimeType)) {\r\n return 'file-video';\r\n }\r\n\r\n if (Tools.Files.isAudio(mimeType)) {\r\n return 'file-audio';\r\n }\r\n\r\n if (Tools.Files.isArchive(mimeType)) {\r\n return 'file-archive';\r\n }\r\n\r\n return 'file-unknown';\r\n }\r\n\r\n function getSanitizedFilename(filename) {\r\n if (!filename) {\r\n return null;\r\n }\r\n\r\n return filename.replace(/[/\\\\?%*:|\"<>&]/g, '-');\r\n }\r\n\r\n function getFileExtension(filename) {\r\n if (!filename) {\r\n return '';\r\n }\r\n\r\n var fileNameParts = filename.split('.');\r\n\r\n if (fileNameParts.length === 1) {\r\n return '';\r\n }\r\n\r\n return ('.' + fileNameParts.pop());\r\n }\r\n\r\n function createFilename(filename, fileTitle) {\r\n if (!fileTitle) {\r\n return filename;\r\n }\r\n\r\n fileTitle = getSanitizedFilename(fileTitle);\r\n\r\n var fileExtension = getFileExtension(filename);\r\n\r\n if (!fileExtension || fileTitle.endsWith(fileExtension)) {\r\n return fileTitle;\r\n }\r\n\r\n return (fileTitle + fileExtension);\r\n }\r\n\r\n function renderFilesTable(files) {\r\n return [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''.format(i18next.t('misc.fileTable.title')),\r\n ''.format(i18next.t('misc.fileTable.type')),\r\n ''.format(i18next.t('misc.fileTable.onlyAvailableOnline')),\r\n '',\r\n '',\r\n '',\r\n '',\r\n renderFilesTableBody(files),\r\n '',\r\n '
{0}{0}{0}
',\r\n ].join('');\r\n }\r\n\r\n function renderFilesTableBody(files) {\r\n if (!(files instanceof Array) || !files.length) {\r\n return '{0}'\r\n .format(i18next.t('changeMode.panels.fileAssignments.noFilesAssigned'));\r\n }\r\n\r\n return files.map(renderFileListItem).join('');\r\n }\r\n\r\n function renderFileListItem(file) {\r\n if (!file) {\r\n return '';\r\n }\r\n\r\n var html = [];\r\n\r\n html.push(\r\n ''.format(file.OID, file.IsDerived ? 'template' : ''),\r\n '
',\r\n '',\r\n '{0}'.format(file.Title),\r\n '

{0}

'.format(Tools.folders.getFolderPathForModifiedData(file.FolderOID, true)),\r\n ''\r\n );\r\n\r\n var fileTypeText = Tools.Files.getFileTypeText(file);\r\n\r\n html.push('{0}'.format(fileTypeText));\r\n\r\n html.push('{0}'\r\n .format(\r\n file.IsAvailableOffline\r\n ? i18next.t('changeMode.panels.fileAssignments.no')\r\n : i18next.t('changeMode.panels.fileAssignments.yes')\r\n )\r\n );\r\n\r\n html.push('
{0}
'\r\n .format(i18next.t('changeMode.panels.fileAssignments.remove')));\r\n\r\n html.push('');\r\n\r\n return html.join('');\r\n }\r\n\r\n tools.Files = {\r\n isImage: isImage,\r\n isAudio: isAudio,\r\n isVideo: isVideo,\r\n isPdf: isPdf,\r\n isText: isText,\r\n isSpreadsheet: isSpreadsheet,\r\n isPresentation: isPresentation,\r\n isArchive: isArchive,\r\n loadUsageInformation: loadUsageInformation,\r\n deleteFile: deleteFile,\r\n getFileTypeText: getFileTypeText,\r\n getFileIconForMimeType: getFileIconForMimeType,\r\n getSanitizedFilename: getSanitizedFilename,\r\n getFileExtension: getFileExtension,\r\n createFilename: createFilename,\r\n getSanitizedFilename: getSanitizedFilename,\r\n renderFilesTable: renderFilesTable,\r\n renderFilesTableBody: renderFilesTableBody,\r\n renderFilesTableBodyRow: renderFileListItem\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getFolderPathForModifiedData(identifier, printGivenFolder) {\r\n if (!(changemode.Folders && changemode.Folders.hasOwnProperty(identifier))) {\r\n return '';\r\n }\r\n\r\n var parent = changemode.Folders[identifier];\r\n\r\n if (!parent.Parent) {\r\n return '';\r\n }\r\n\r\n if (!printGivenFolder) {\r\n parent = parent.Parent;\r\n }\r\n\r\n var path = parent.Title;\r\n\r\n for (var i = 2; i > 0 && (parent = parent.Parent); i--) {\r\n if (!parent.Parent) {\r\n break;\r\n }\r\n\r\n path = '{0} › {1}'.format(parent.Title, path);\r\n }\r\n\r\n return path;\r\n }\r\n\r\n tools.folders = {\r\n getFolderPathForModifiedData: getFolderPathForModifiedData\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n tools.http = (function () {\r\n function get(method, success, error, data, dataType) /*Deferred*/ {\r\n return createRequest('GET', method, success, error, false, data, dataType);\r\n }\r\n\r\n function put(method, data, success, error, dataType, csrfRequiredOverride) /*Deferred*/ {\r\n return createRequest('PUT', method, success, error,\r\n csrfRequiredOverride == null ? true : csrfRequiredOverride, data, dataType);\r\n }\r\n\r\n function post(method, data, success, error, dataType, csrfRequiredOverride) /*Deferred*/ {\r\n return createRequest('POST', method, success, error,\r\n csrfRequiredOverride == null ? true : csrfRequiredOverride, data, dataType);\r\n }\r\n\r\n function del(method, success, error, dataType, csrfRequiredOverride) /*Deferred*/ {\r\n return createRequest('DELETE', method, success, error,\r\n csrfRequiredOverride == null ? true : csrfRequiredOverride, null, dataType);\r\n }\r\n\r\n function createRequest(type, method, success, error, csrfRequired, data, dataType) /*Deferred*/ {\r\n success = typeof success === 'function' ? success : $.noop;\r\n error = typeof error === 'function' ? error : $.noop;\r\n dataType = dataType === undefined ? 'json' : dataType;\r\n\r\n function getOriginAjaxSettings() {\r\n var settings = {\r\n type: type,\r\n url: Config.BaseUri + method,\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: dataType,\r\n beforeSend: function (xhr) {\r\n xhr.withCredentials = true;\r\n },\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: success,\r\n error: error\r\n };\r\n\r\n if (csrfRequired) {\r\n settings.headers = settings.headers || {};\r\n settings.headers['X-Csrf-Token'] = Tools.Cookies.getCSRFToken();\r\n }\r\n\r\n if (Tools.IsSet(data)) {\r\n // Werden bei GET automatisch als Query-Parameter zur url hinzugefügt\r\n settings.data = type === 'GET' || typeof data === 'string' ? data : JSON.stringify(data);\r\n }\r\n\r\n return settings;\r\n }\r\n\r\n var originAjax;\r\n var deferred = Tools.CreateAbortableDeferred(function () {\r\n if (originAjax) {\r\n originAjax.abort();\r\n }\r\n });\r\n\r\n sendHeartbeatIfRequired(csrfRequired, error)\r\n .then(function() {\r\n //nur wenn das deferred noch nicht abgeschlossen / rejected wurde\r\n if (deferred.state() !== 'pending') {\r\n return;\r\n }\r\n\r\n originAjax = $.ajax(getOriginAjaxSettings());\r\n originAjax.then(deferred.resolve, deferred.reject);\r\n }, deferred.reject);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n function sendHeartbeatIfRequired(csrfRequired, errorCallback) /*Deferred*/ {\r\n var csrfToken = Tools.Cookies.getCSRFToken();\r\n\r\n if (!csrfRequired || (csrfToken && Tools.IsCsrfTokenValid(csrfToken))) {\r\n return $.Deferred().resolve().promise();\r\n }\r\n\r\n return $.ajax({\r\n type: 'GET',\r\n url: Config.BaseUri + 'heartbeat',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function(xhr) {\r\n xhr.withCredentials = true;\r\n },\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n error: errorCallback\r\n });\r\n }\r\n\r\n return {\r\n get: get,\r\n put: put,\r\n post: post,\r\n del: del\r\n };\r\n })();\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getWithMarks(settings) {\r\n var viewboxRegex = /]*width=\"(\\d+)\"[^>]*height=\"(\\d+)\"/ig;\r\n var size = settings.size || 's';\r\n var match, oid, image, svgWidth, svgHeight, viewBoxWidth, viewBoxHeight, viewBox, src;\r\n var svg = [];\r\n\r\n if (settings.filename) {\r\n image = { Filename: settings.filename };\r\n\r\n for (oid in Files) {\r\n if (Files[oid].Filename === settings.filename) {\r\n image = Files[oid];\r\n break;\r\n }\r\n }\r\n } else if (settings.image) {\r\n image = settings.image;\r\n }\r\n\r\n svgWidth = settings.width || '100%';\r\n svgHeight = settings.height || '100%';\r\n viewBox = '';\r\n\r\n if ((match = viewboxRegex.exec(image.Marks)) && match.length === 3) {\r\n viewBoxWidth = parseInt(match[1], 10);\r\n viewBoxHeight = parseInt(match[2], 10);\r\n\r\n if (viewBoxWidth && viewBoxHeight) {\r\n viewBox = ' viewBox=\"0 0 {0} {1}\"'.format(viewBoxWidth, viewBoxHeight);\r\n }\r\n }\r\n\r\n src = image.Local ?\r\n './img/' + image.Filename :\r\n '{0}images/{1}/{2}'.format(Config.BaseUri, size, image.Filename);\r\n\r\n svg.push(''\r\n .format(svgWidth, svgHeight, viewBox));\r\n\r\n svg.push(\r\n ''\r\n );\r\n\r\n svg.push(getInnerSVG(image.Marks));\r\n svg.push('');\r\n\r\n return svg.join('');\r\n }\r\n\r\n function getInnerSVG(marks) {\r\n if (!marks) {\r\n return '';\r\n }\r\n\r\n var svgRegex = /([\\S\\s]*)<\\/svg>/ig;\r\n var innerSVG = '';\r\n var match = svgRegex.exec(marks);\r\n\r\n if (match && match.length > 1) {\r\n innerSVG = match[0] || '';\r\n }\r\n\r\n return innerSVG;\r\n }\r\n\r\n tools.image = {\r\n getWithMarks: getWithMarks\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (global) {\r\n var InteractJs = {};\r\n\r\n /***\r\n * Prüft, ob sich das zu verschiebende Element auch tatsächlich über dem sichtbaren Teil der Baumstruktur befindet.\r\n * @return {boolean}\r\n * @see https://interactjs.io/docs/dropzone/#checker\r\n */\r\n InteractJs.IsBeingDraggedOverTreeNode = function (dragEvt, evt, dropped, dropzone, dropElement, draggable, draggableElement) {\r\n if (!dropped) {\r\n return false;\r\n }\r\n\r\n if (!evt) {\r\n return false;\r\n }\r\n\r\n var evtPath = evt.composedPath();\r\n\r\n if (!(evtPath instanceof Array && evtPath.length)) {\r\n evtPath = evt.path;\r\n }\r\n\r\n if (evtPath instanceof Array) {\r\n return evtPath.some(function (domElement) {\r\n if (domElement.classList) {\r\n return domElement.classList.contains('jquery-tree-node');\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (global.InteractJs = InteractJs);\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function prepareIssueForWebApp(issue) {\r\n if (!issue) {\r\n return null;\r\n }\r\n\r\n issue.CustomID = issue.CustomID || '' + issue.ID;\r\n issue.NaturalizedCustomID = naturalizeCustomID(issue.CustomID);\r\n issue.CreationTimestamp = new Date(issue.CreationTimestamp);\r\n issue.ModificationTimestamp = new Date(issue.ModificationTimestamp);\r\n issue.RemindingTimestamp = issue.RemindingTimestamp ? new Date(issue.RemindingTimestamp) : null;\r\n issue.DeadlineTimestamp = issue.DeadlineTimestamp ? new Date(issue.DeadlineTimestamp) : null;\r\n issue.TerminationTimestamp = issue.TerminationTimestamp ? new Date(issue.TerminationTimestamp) : null;\r\n issue.Creator = Users[issue.CreatorOID];\r\n issue.Editor = Users[issue.EditorOID];\r\n issue.State = issue.StateOID ? Properties[issue.StateOID] : null;\r\n issue.Priority = issue.PriorityOID ? Properties[issue.PriorityOID] : null;\r\n issue.ParameterCount = issue.ParameterCount || 0;\r\n issue.RequiredParameterCount = issue.RequiredParameterCount || 0;\r\n issue.CollectedParameterCount = issue.CollectedParameterCount || 0;\r\n issue.CollectedRequiredParameterCount = issue.CollectedRequiredParameterCount || 0;\r\n issue.OpenParameterCount = issue.RequiredParameterCount - issue.CollectedRequiredParameterCount;\r\n\r\n issue.Classifications = $.map(issue.Classifications || [], function (oid) {\r\n return Properties[oid];\r\n });\r\n\r\n issue.Keywords = $.map(issue.Keywords || [], function (oid) {\r\n return Properties[oid];\r\n });\r\n\r\n (issue.Files || []).sort(Tools.SortByPosition);\r\n\r\n var checkpointPreviewImage = null;\r\n if (!issue.Files && issue.AdditionalData && issue.AdditionalData.CheckpointPreviewImages) {\r\n var previewImagesFromCheckpoints = issue.AdditionalData.CheckpointPreviewImages;\r\n // Indices für Vorschaubilder aufsteigend sortieren\r\n var indices = Object.keys(previewImagesFromCheckpoints).sort(function(a, b) { return +a - +b; });\r\n\r\n for (var i = 0; i < indices.length; i++) {\r\n var key = indices[i]\r\n\r\n // erstes gültiges Bild aus der Liste verwenden\r\n checkpointPreviewImage = previewImagesFromCheckpoints[key];\r\n if (checkpointPreviewImage) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n issue.LocationPath = Explorer.CreateOrganisationUnitPath(issue.AssignedElementOID);\r\n issue.Users = prepareUsers(issue.Users);\r\n issue.Teams = prepareTeams(issue.Teams);\r\n issue.Recipients = prepareRecipients(issue.NotificationRecipients);\r\n issue.Comments = prepareComments(issue.Comments);\r\n issue.Image = prepareImage(issue.Files, checkpointPreviewImage);\r\n\r\n return Tools.Escape.Issue(issue);\r\n }\r\n\r\n function naturalizeCustomID(input) {\r\n if (!input) {\r\n return '';\r\n }\r\n\r\n return input\r\n .replace(/\\s{2,}/g, ' ')\r\n .replace(/\\d+/g, function (val) {\r\n return val.padleft('0', 15);\r\n });\r\n }\r\n\r\n function prepareUsers(users) {\r\n users = $.map(users || [], function (oid) {\r\n return Users[oid];\r\n });\r\n\r\n users.sort(Tools.SortByTitle);\r\n\r\n return users;\r\n }\r\n\r\n function prepareTeams(teams) {\r\n teams = $.map(teams || [], function (oid) { return Teams[oid]; });\r\n\r\n teams = Tools.sort(teams, 'Title');\r\n\r\n return teams;\r\n }\r\n\r\n function prepareRecipients(notificationRecipients) {\r\n if (!notificationRecipients) {\r\n return recipients;\r\n }\r\n\r\n var recipients = [].concat(\r\n notificationRecipients.Users || [],\r\n notificationRecipients.Contacts || []\r\n );\r\n\r\n (notificationRecipients.Teams || []).forEach(function (teamOID) {\r\n var team = Teams[teamOID];\r\n\r\n if (!team || !team.Users) {\r\n return;\r\n }\r\n\r\n team.Users.forEach(function (userRole) {\r\n recipients = Tools.addUnique(recipients, userRole.OID);\r\n });\r\n });\r\n\r\n (notificationRecipients.ContactGroups || []).forEach(function (contactGroupOID) {\r\n var contactGroup = ContactGroups[contactGroupOID];\r\n\r\n if (!contactGroup || !contactGroup.Contacts) {\r\n return;\r\n }\r\n\r\n contactGroup.Contacts.forEach(function (contactOID) {\r\n recipients = Tools.addUnique(recipients, contactOID);\r\n });\r\n });\r\n\r\n (notificationRecipients.Unsubscribed || []).forEach(function (userOID) {\r\n recipients = Tools.remove(recipients, userOID);\r\n });\r\n\r\n return recipients;\r\n }\r\n\r\n function prepareComments(comments) {\r\n comments = $.map(comments || [], function (comment) {\r\n comment.Timestamp = new Date(comment.Timestamp);\r\n\r\n if ((comment.Creator = Users[comment.CreatorOID])) {\r\n comment.Creator = $.extend({}, comment.Creator);\r\n comment.Creator.Image = Files[comment.Creator.ImageOID];\r\n }\r\n\r\n return comment;\r\n });\r\n\r\n comments.sort(function (a, b) {\r\n return a.Timestamp.getTime() - b.Timestamp.getTime();\r\n });\r\n\r\n return comments;\r\n }\r\n\r\n function prepareImage(files, checkpointPreviewImage) {\r\n for (var i = 0, len = (files || []).length; i < len; i++) {\r\n var file = files[i];\r\n\r\n if (file.MimeType && file.MimeType.contains('image/') && !file.MimeType.contains('svg')) {\r\n return file;\r\n }\r\n }\r\n\r\n if (checkpointPreviewImage && checkpointPreviewImage.MimeType.contains('image/')) {\r\n return checkpointPreviewImage;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function prepareIssueForWebService(issue, changeComment) {\r\n issue.PrecedingOID = issue.OID;\r\n issue.OID = uuid();\r\n\r\n return {\r\n OID: issue.OID,\r\n PrecedingOID: issue.PrecedingOID,\r\n ID: issue.ID,\r\n Revision: (issue.Revision || 0) + 1,\r\n ParentID: issue.ParentID,\r\n CustomID: Tools.unescapeHtml(issue.CustomID),\r\n Type: issue.Type,\r\n Title: Tools.unescapeHtml(issue.Title),\r\n Description: Tools.unescapeHtml(issue.Description),\r\n CreatorOID: issue.CreatorOID,\r\n EditorOID: User.OID,\r\n CreationTimestamp: Tools.dateTime.toGMTString(issue.CreationTimestamp || new Date()),\r\n ModificationTimestamp: Tools.dateTime.toGMTString(new Date()),\r\n RemindingTimestamp: Tools.dateTime.isValidDate(issue.RemindingTimestamp) ? Tools.dateTime.toGMTString(issue.RemindingTimestamp) : null,\r\n DeadlineTimestamp: Tools.dateTime.isValidDate(issue.DeadlineTimestamp) ? Tools.dateTime.toGMTString(issue.DeadlineTimestamp) : null,\r\n TerminationTimestamp: Tools.dateTime.isValidDate(issue.TerminationTimestamp) ? Tools.dateTime.toGMTString(issue.TerminationTimestamp) : null,\r\n StateOID: issue.StateOID,\r\n PriorityOID: issue.PriorityOID,\r\n AssignedElementOID: issue.AssignedElementOID,\r\n AssignedFormOID: issue.AssignedFormOID,\r\n AssignedMeasureOID: issue.AssignedMeasureOID,\r\n AssignedSchedulingOID: issue.AssignedSchedulingOID,\r\n AssignedScheduleOID: issue.AssignedScheduleOID,\r\n AssignedRecorditemOID: issue.AssignedRecorditemOID,\r\n LocationMarkers: issue.LocationMarkers,\r\n ChangeComment: !!changeComment ? Tools.unescapeHtml(changeComment) : null,\r\n IsArchived: issue.IsArchived,\r\n IsInvestigationCompleted: issue.IsInvestigationCompleted,\r\n AdditionalData: issue.AdditionalData,\r\n Classifications: (issue.Classifications || []).map(function (d) {\r\n return d.OID;\r\n }),\r\n Keywords: (issue.Keywords || []).map(function (d) {\r\n return d.OID;\r\n }),\r\n Files: issue.Files,\r\n Resubmissionitems: issue.Resubmissionitems,\r\n Disturbances: (issue.Disturbances || []).map(function (d) {\r\n return {OID: d.OID, Type: d.Type};\r\n }),\r\n Investigationitems: issue.Investigationitems,\r\n EstimatedEffort: issue.EstimatedEffort,\r\n ResponsibilityAssignments: issue.ResponsibilityAssignments\r\n };\r\n }\r\n\r\n function getRightToEditIssueType(issueType) {\r\n switch (issueType) {\r\n case Enums.issueType.Incident:\r\n return 'TMFT-TASKS';\r\n case Enums.issueType.Resubmission:\r\n return 'TMFT-SCHEDULINGS';\r\n case Enums.issueType.Form:\r\n case Enums.issueType.Survey:\r\n return 'TMFT-FORMS';\r\n case Enums.issueType.Note:\r\n case Enums.issueType.DisturbancesCompleted:\r\n return 'TMFT-NOTES';\r\n case Enums.issueType.Disturbance:\r\n return 'TMFT-DISTURBANCES';\r\n case Enums.issueType.Inspection:\r\n return 'TMFT-INSPECTIONS';\r\n case Enums.issueType.Investigation:\r\n return 'TMFT-INVESTIGATIONS';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function getInvestigationStatusText(investigationStatus) {\r\n if (isNaN(investigationStatus)) {\r\n return null;\r\n }\r\n\r\n switch (investigationStatus) {\r\n case Enums.Investigations.Status.Open:\r\n return i18next.t('misc.investigationStatus.open');\r\n case Enums.Investigations.Status.Finished:\r\n return i18next.t('misc.investigationStatus.finished');\r\n case Enums.Investigations.Status.Pulled:\r\n return i18next.t('misc.investigationStatus.pulled');\r\n case Enums.Investigations.Status.Unsynced:\r\n return i18next.t('misc.investigationStatus.unsynced');\r\n case Enums.Investigations.Status.CancellationRequested:\r\n return i18next.t('misc.investigationStatus.cancellationRequested');\r\n case Enums.Investigations.Status.Cancelled:\r\n return i18next.t('misc.investigationStatus.cancelled');\r\n case Enums.Investigations.Status.Error:\r\n return i18next.t('misc.investigationStatus.error');\r\n default:\r\n return i18next.t('misc.unknown');\r\n }\r\n }\r\n\r\n function getInvestigationErrorText(errorCode) {\r\n if (isNaN(errorCode)) {\r\n return null;\r\n }\r\n\r\n switch (errorCode) {\r\n case Enums.Investigations.Error.MissingAdditionalProperty:\r\n return i18next.t('misc.investigationStatus.errorDetails.missingAdditionalProperty');\r\n case Enums.Investigations.Error.MissingScheduling:\r\n return i18next.t('misc.investigationStatus.errorDetails.missingScheduling');\r\n case Enums.Investigations.Error.NoRecipients:\r\n return i18next.t('misc.investigationStatus.errorDetails.noRecipients');\r\n case Enums.Investigations.Error.UploadError:\r\n return i18next.t('misc.investigationStatus.errorDetails.uploadError');\r\n case Enums.Investigations.Error.DownloadError:\r\n return i18next.t('misc.investigationStatus.errorDetails.downloadError');\r\n case Enums.Investigations.Error.NoMailTemplateConfigured:\r\n return i18next.t('misc.investigationStatus.errorDetails.noMailTemplateConfigured');\r\n default:\r\n return i18next.t('misc.unknown');\r\n }\r\n }\r\n\r\n tools.issue = {\r\n prepareIssueForWebApp: prepareIssueForWebApp,\r\n prepareCommentsForWebApp: prepareComments,\r\n prepareIssueForWebService: prepareIssueForWebService,\r\n getRightToEditIssueType: getRightToEditIssueType,\r\n getInvestigationStatusText: getInvestigationStatusText,\r\n getInvestigationErrorText: getInvestigationErrorText\r\n };\r\n})(window.Tools || (window.Tools = {}));\r\n","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n var $progressbar = $('#progressbar');\r\n var $overflow = $('#overflow-transparent');\r\n var inProgress = 0;\r\n var total = 0;\r\n var current = 0;\r\n var fnOnstop = null;\r\n\r\n function draw() {\r\n var percentage = Math.round(100 / total * current);\r\n\r\n percentage = Math.min(percentage, 100);\r\n percentage += '%';\r\n\r\n $progressbar.find('.progress').css('width', percentage);\r\n $progressbar.find('.progresstext').html(percentage);\r\n }\r\n\r\n function set(progressCurrent, progressTotal) {\r\n current = progressCurrent || current;\r\n total = progressTotal || total;\r\n draw();\r\n }\r\n\r\n function start(progressTotal, text, fn, screenBlock) {\r\n fnOnstop = null;\r\n total += progressTotal;\r\n\r\n draw();\r\n\r\n if (total) {\r\n $progressbar.removeClass('hide');\r\n\r\n if (text) {\r\n $progressbar.find('.text').html(text);\r\n }\r\n\r\n if (fn) {\r\n fnOnstop = fn;\r\n }\r\n\r\n if (screenBlock) {\r\n $progressbar.addClass('screenBlock');\r\n $overflow.removeClass('hide');\r\n } else {\r\n $progressbar.removeClass('screenBlock');\r\n $overflow.addClass('hide');\r\n }\r\n }\r\n }\r\n\r\n function stop() {\r\n $progressbar.addClass('hide');\r\n $overflow.addClass('hide');\r\n\r\n inProgress = 0;\r\n total = 0;\r\n current = 0;\r\n }\r\n\r\n function startProgress() {\r\n inProgress++;\r\n }\r\n\r\n function stopProgress() {\r\n current++;\r\n\r\n draw();\r\n\r\n inProgress--;\r\n\r\n if (inProgress <= 0) {\r\n $progressbar.addClass('hide');\r\n $overflow.addClass('hide');\r\n\r\n inProgress = 0;\r\n total = 0;\r\n current = 0;\r\n\r\n if (fnOnstop) {\r\n fnOnstop();\r\n }\r\n }\r\n }\r\n\r\n tools.Progressbar = {\r\n Set: set,\r\n Start: start,\r\n Stop: stop,\r\n StartProgress: startProgress,\r\n StopProgress: stopProgress\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getPropertyPath(identifier, useModified) {\r\n var dataSource = useModified ? changemode.Properties : Properties;\r\n var path;\r\n\r\n if (dataSource.hasOwnProperty(identifier)) {\r\n var parent = dataSource[identifier];\r\n\r\n if (!parent.Parent) {\r\n return '';\r\n }\r\n\r\n parent = parent.Parent;\r\n path = parent.Title;\r\n\r\n for (var i = 2; i > 0 && (parent = parent.Parent); i--) {\r\n path = '{0} › {1}'.format(parent.Title, path);\r\n }\r\n }\r\n\r\n return path;\r\n }\r\n\r\n tools.properties = {\r\n getPropertyPath: getPropertyPath\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n function getSchedulingPath(identifier, useModified) {\r\n var dataSource = useModified ? changemode.Scheduling : DataManager.SchedulingLoader.Data.DataMap;\r\n var path;\r\n\r\n if (dataSource.hasOwnProperty(identifier)) {\r\n var parent = dataSource[identifier];\r\n\r\n if (!parent.Parent) {\r\n return '';\r\n }\r\n\r\n parent = parent.Parent;\r\n path = parent.Title;\r\n\r\n for (var i = 2; i > 0 && (parent = parent.Parent); i--) {\r\n path = '{0} › {1}'.format(parent.Title, path);\r\n }\r\n }\r\n\r\n return path;\r\n }\r\n\r\n tools.scheduling = {\r\n getSchedulingPath: getSchedulingPath\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (global) {\r\n var Sessions = {};\r\n\r\n var _hasActiveSession;\r\n\r\n Sessions.setSessionActive = function (isActive) {\r\n _hasActiveSession = isActive;\r\n };\r\n\r\n Sessions.hasActiveSession = function () {\r\n return _hasActiveSession === true;\r\n };\r\n\r\n Sessions.getActiveUserIdentifier = function () {\r\n var activeSessionUserOID = Tools.Cookies.get(Config.CookieConfig.SessionUserCookieName);\r\n\r\n return activeSessionUserOID && activeSessionUserOID.length ? activeSessionUserOID : null;\r\n };\r\n\r\n return (global.Sessions = Sessions);\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (global) {\r\n var Spinner = {};\r\n\r\n var _$spinner = $('#spinner');\r\n var _timeout;\r\n\r\n Spinner.show = function (delay) {\r\n if (_timeout) {\r\n window.clearTimeout(_timeout);\r\n }\r\n\r\n _$spinner.find('.spinner-text').text(i18next.t('spinner.pleaseWait'));\r\n\r\n if (delay && window.focused) {\r\n _timeout = window.setTimeout(function () {\r\n _$spinner.removeClass('hide');\r\n }, delay);\r\n } else {\r\n _$spinner.removeClass('hide');\r\n }\r\n };\r\n\r\n Spinner.hide = function () {\r\n if (_timeout) {\r\n window.clearTimeout(_timeout);\r\n }\r\n\r\n _$spinner.addClass('hide');\r\n };\r\n\r\n return (global.Spinner = Spinner);\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n tools.values = (function () {\r\n var recItm;\r\n var element;\r\n\r\n function render(recorditem, settings) {\r\n settings = settings || {};\r\n\r\n if (settings.escapeValue == null) {\r\n settings.escapeValue = true;\r\n }\r\n\r\n recItm = recorditem;\r\n if (recItm) {\r\n if (recItm.Element) {\r\n element = recItm.Element;\r\n } else if (settings.elements && recItm.ElementOID) {\r\n element = settings.elements[recItm.ElementOID];\r\n }\r\n }\r\n\r\n var html = [];\r\n\r\n html.push('
'\r\n .format(\r\n settings.alignLeft ? ' style=\"text-align: left;\"' : '',\r\n settings.addElementType && element ? ' element-type=\"' + element.Type + '\"' : ''\r\n )\r\n );\r\n\r\n if (recItm) {\r\n if (settings.getRawString) {\r\n return (renderValue(settings) || '-/-').toString();\r\n } else {\r\n if (!settings.suppressCategory) {\r\n html.push(renderCategory(settings));\r\n }\r\n\r\n html.push(renderValue(settings));\r\n\r\n if (!settings.suppressInfos) {\r\n html.push(renderInfos(settings));\r\n }\r\n }\r\n } else {\r\n if (settings.getRawString) {\r\n return '-/-';\r\n } else {\r\n html.push('-/-');\r\n }\r\n }\r\n\r\n html.push('
');\r\n\r\n return html.join('');\r\n }\r\n\r\n function renderValue(settings) {\r\n var value = (recItm || {}).Value;\r\n var unit;\r\n var result;\r\n var structure;\r\n var tmp;\r\n var users;\r\n var teams;\r\n\r\n if (!element || (typeof value === 'undefined' && element.Type !== Enums.elementType.Checkbox)) {\r\n return '-/-';\r\n }\r\n\r\n switch (element.Type) {\r\n case Enums.elementType.Checkbox:\r\n if (/true/i.test(value)) {\r\n result = settings.getRawString ? i18next.t('misc.yes') : ''\r\n .format(settings.isPrint || settings.scaledDown ? 25 : 50);\r\n } else if (/false/i.test(value)) {\r\n result = settings.getRawString ? i18next.t('misc.no') : ''\r\n .format(settings.isPrint || settings.scaledDown ? 25 : 50);\r\n } else {\r\n result = settings.getRawString ? '-/-' : ''\r\n .format(settings.isPrint || settings.scaledDown ? 25 : 50);\r\n }\r\n break;\r\n case Enums.elementType.Number:\r\n if (settings.IsSurveyValue) {\r\n switch (parseInt(value, 10)) {\r\n case 0:\r\n result = '-/-';\r\n break;\r\n case 1:\r\n result = i18next.t('formsOfRepresentation.veryBad');\r\n break;\r\n case 2:\r\n result = i18next.t('formsOfRepresentation.bad');\r\n break;\r\n case 3:\r\n result = i18next.t('formsOfRepresentation.satisfactory');\r\n break;\r\n case 4:\r\n result = i18next.t('formsOfRepresentation.good');\r\n break;\r\n case 5:\r\n result = i18next.t('formsOfRepresentation.veryGood');\r\n break;\r\n }\r\n } else {\r\n result = value;\r\n\r\n if (!/(^[<>][+-]?\\d+(\\.\\d+)?$)|(^[<>]?[+-]?\\d+(\\.\\d+)?e[+-]?\\d+(\\.\\d+)?$)|(^n{2}$)|(^ni$)|(^n\\.(n\\.|i\\.)$)/.test(result)) {\r\n result = parseFloat(result).toFixed(element.Decimals || 0);\r\n result = result.toString().replace('.', ',');\r\n }\r\n\r\n unit = element.Unit || Properties[element.UnitOID];\r\n\r\n if (unit) {\r\n result += ' {0}'.format(unit.Description || unit.Title);\r\n }\r\n }\r\n break;\r\n case Enums.elementType.Date:\r\n result = Tools.dateTime.dateToString(new Date(value));\r\n break;\r\n case Enums.elementType.Time:\r\n result = Tools.dateTime.timeToString(new Date(value));\r\n break;\r\n case Enums.elementType.Photo:\r\n case Enums.elementType.Signature:\r\n {\r\n if (settings.getRawString) {\r\n result = value;\r\n } else {\r\n var html = [\r\n ''.format(\r\n Config.BaseUri,\r\n value,\r\n settings.lazyLoadImage ? 'data-' : '',\r\n recItm.AdditionalValueInfo && recItm.AdditionalValueInfo.Marks ? 'onload=\"Tools.FixMarksSize(this)\"' : '',\r\n settings.addFilenameToTag ? ' data-filename=\"' + value + '\"' : ''\r\n )\r\n ];\r\n\r\n if (recItm.AdditionalValueInfo && recItm.AdditionalValueInfo.Marks) {\r\n html.unshift('
')\r\n\r\n var fixedSVG = Tools.FixSVGMetrics(recItm.AdditionalValueInfo.Marks);\r\n\r\n html.push(fixedSVG);\r\n html.push('
');\r\n }\r\n\r\n result = html.join('');\r\n }\r\n }\r\n break;\r\n case Enums.elementType.LocationCode:\r\n if (Tools.IsValidGuid(value) && DataManager.OrganizationUnitLoader.Data.DataMap[value]) {\r\n result = DataManager.OrganizationUnitLoader.Data.DataMap[value].Title;\r\n }\r\n break;\r\n case Enums.elementType.ListBox:\r\n structure = element.Structure;\r\n\r\n if (!Object.keys(structure || {}).length || !(result = structure[parseInt(value, 10)])) {\r\n return '-/-';\r\n }\r\n\r\n if (element.hasOwnProperty('AdditionalSettings')\r\n && element.AdditionalSettings.MapStructureToImages\r\n && !settings.getRawString)\r\n {\r\n tmp = Files[result];\r\n\r\n if (tmp) {\r\n result = ''.format(\r\n Config.BaseUri,\r\n tmp.Filename,\r\n settings.addFilenameToTag ? ' data-filename=\"' + tmp.Filename + '\"' : '',\r\n settings.lazyLoadImage ? 'data-' : '');\r\n }\r\n } else {\r\n result = settings.escapeValue ? Tools.escapeHtml(result) : result;\r\n }\r\n break;\r\n case Enums.elementType.MultiListBox:\r\n structure = element.Structure;\r\n result = [];\r\n\r\n if (!Object.keys(structure || {}).length || !(value || []).length || !(value instanceof Array)) {\r\n return '-/-';\r\n }\r\n\r\n value.sort(function (a,b) {\r\n return a - b;\r\n });\r\n\r\n $.each(value || [], function (idx, val) {\r\n var res;\r\n\r\n if (structure.hasOwnProperty(val)) {\r\n res = structure[val];\r\n\r\n if (element.hasOwnProperty('AdditionalSettings')\r\n && element.AdditionalSettings.MapStructureToImages\r\n && !settings.getRawString)\r\n {\r\n tmp = Files[res];\r\n\r\n if (tmp) {\r\n res = ''.format(Config.BaseUri\r\n , tmp.Filename\r\n , settings.addFilenameToTag ? ' data-filename=\"' + tmp.Filename + '\"' : ''\r\n , settings.lazyLoadImage ? 'data-' : '');\r\n result.push(res);\r\n }\r\n } else {\r\n result.push(settings.escapeValue ? Tools.escapeHtml(res) : res);\r\n }\r\n }\r\n });\r\n\r\n if (!(result || []).length) {\r\n return '-/-';\r\n }\r\n\r\n result = result.join('
');\r\n break;\r\n case Enums.elementType.UsersAndTeams:\r\n tmp = typeof value === 'string' ? JSON.parse(value) : value;\r\n result = [];\r\n\r\n users = $.map(tmp.Users || [], function (oid) {\r\n if (Users.hasOwnProperty(oid) &&\r\n Users[oid].Title) {\r\n return Users[oid].Title;\r\n }\r\n });\r\n\r\n teams = $.map(tmp.Teams || [], function (oid) {\r\n if (Teams.hasOwnProperty(oid)) {\r\n return Teams[oid].Title;\r\n }\r\n });\r\n\r\n if (users.length) {\r\n if (settings.valuesAsList) {\r\n result.push(users.join('
'));\r\n } else {\r\n result.push('{0}: '.format(i18next.t('misc.user_plural')));\r\n\r\n if (users.length > 1) {\r\n result.push(users.slice(0, -1).join(', '));\r\n result.push(' {0} '.format(i18next.t('misc.and')));\r\n }\r\n\r\n result.push(users[users.length - 1]);\r\n }\r\n\r\n if (teams.length) {\r\n result.push('
');\r\n }\r\n }\r\n\r\n if (teams.length) {\r\n result.push('{0}: '.format(i18next.t('misc.team_plural')));\r\n\r\n if (settings.valuesAsList) {\r\n result.push(teams.join('
'));\r\n } else {\r\n if (teams.length > 1) {\r\n result.push(teams.slice(0, -1).join(', '));\r\n result.push(' {0} '.format(i18next.t('misc.and')));\r\n }\r\n\r\n result.push(teams[teams.length -1]);\r\n }\r\n\r\n }\r\n\r\n if (!(result || []).length) {\r\n return i18next.t('misc.notRecorded');\r\n }\r\n\r\n result = result.join('');\r\n\r\n break;\r\n case Enums.elementType.IndividualData:\r\n result = [];\r\n\r\n if (Object.keys(value).length) {\r\n for (var key in value) {\r\n tmp = IndividualData.GetSchema(key);\r\n\r\n if (!tmp) {\r\n continue;\r\n }\r\n\r\n var valueStrings = $.map(value[key], function (v) {\r\n return IndividualData.GetEntityTitle(tmp, v);\r\n });\r\n\r\n if (settings.valuesAsList) {\r\n result.push(valueStrings.join('
'));\r\n } else {\r\n result.push(valueStrings.join(', '));\r\n }\r\n }\r\n }\r\n\r\n if (!result.length) {\r\n return '-/-';\r\n }\r\n\r\n result = result.join('
').replace(/\\\\n/ig, '
');\r\n\r\n break;\r\n case Enums.elementType.EMailAddresses:\r\n try {\r\n tmp = value instanceof Array ? value : JSON.parse(value);\r\n }\r\n catch (ex) {\r\n tmp = null;\r\n }\r\n\r\n if (!(tmp instanceof Array) || tmp.length === 0) {\r\n return '-/-';\r\n }\r\n\r\n result = tmp.join(', ');\r\n\r\n break;\r\n case Enums.elementType.Files:\r\n if (settings.getRawString) {\r\n return value instanceof Array ? JSON.stringify(value) : null;\r\n }\r\n\r\n result = value instanceof Array && value.length ? value\r\n .sort(Tools.SortByTitle)\r\n .map(function (file) {\r\n var markup = [\r\n '
',\r\n '
', DOMPurify.sanitize(file.Title), '
',\r\n ];\r\n\r\n if (!!file.Description) {\r\n markup.push(\r\n '
',\r\n DOMPurify.sanitize(Tools.escapeHtml(file.Description)),\r\n '
'\r\n );\r\n }\r\n\r\n markup.push('
');\r\n\r\n return markup.join('');\r\n }).join('') : null;\r\n break;\r\n default:\r\n if (typeof value !== 'string') {\r\n return '-/-';\r\n }\r\n\r\n if (settings.escapeValue) {\r\n value = value.replace(//gm, '\\n');\r\n }\r\n\r\n result = settings.escapeValue ? Tools.escapeHtml(value) : value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function renderCategory(settings) {\r\n var category = recItm.Category || Properties[recItm.CategoryOID];\r\n var html = [];\r\n\r\n if (!category) {\r\n return '';\r\n }\r\n\r\n if (!settings.categoryInline) {\r\n html.push('
');\r\n }\r\n\r\n if (settings.isPrint) {\r\n html.push('
');\r\n html.push('
'.format(category.Color));\r\n html.push('
');\r\n } else {\r\n if (!settings.categoryInline) {\r\n html.push('
'.format(category.Color));\r\n } else {\r\n html.push(''.format(category.Color));\r\n }\r\n }\r\n\r\n if (!settings.categoryInline) {\r\n html.push('
');\r\n }\r\n\r\n return html.join('');\r\n }\r\n\r\n function renderInfos(settings) {\r\n if (!recItm) {\r\n return '';\r\n }\r\n\r\n var html = [];\r\n var hasWorkflow = Boolean(recItm.WorkflowInformation) || recItm.HasCorrectiveActions;\r\n\r\n if (recItm.HasAdditionalFiles || recItm.HasComments || recItm.AdditionalText || hasWorkflow || recItm.Revision > 1) {\r\n html.push('
');\r\n\r\n if (recItm.Revision > 1) {\r\n if (settings.isPrint) {\r\n html.push(' {0}'.format(recItm.Revision - 1));\r\n } else {\r\n html.push('
{0}'.format(recItm.Revision - 1));\r\n }\r\n }\r\n\r\n if (recItm.HasAdditionalFiles) {\r\n if (settings.isPrint) {\r\n html.push('');\r\n } else {\r\n html.push('
');\r\n }\r\n }\r\n\r\n if (recItm.HasComments || recItm.AdditionalText) {\r\n if (settings.isPrint) {\r\n html.push('');\r\n } else {\r\n html.push('
');\r\n }\r\n }\r\n\r\n if (hasWorkflow) {\r\n if (settings.isPrint) {\r\n html.push('');\r\n } else {\r\n html.push('
');\r\n }\r\n }\r\n\r\n html.push('
');\r\n }\r\n\r\n return html.join('');\r\n }\r\n\r\n return {\r\n render: render\r\n };\r\n })();\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (global) {\r\n var WindowWrappers = {};\r\n\r\n WindowWrappers.ShowFormSelectionForLocation = function (options) {\r\n Tools.Spinner.show();\r\n Tools.DataManager.FormLoader\r\n .GetAll()\r\n .then(function (formData) {\r\n Tools.Spinner.hide();\r\n\r\n var location = options.Location ? options.Location : CurrentEntity;\r\n\r\n options = options || {};\r\n\r\n options.showAssignedFormsOnly = typeof options.showAssignedFormsOnly === 'boolean' ?\r\n options.showAssignedFormsOnly :\r\n Tools.GetOfficeSettingValue('ShowOnlyAssignedForms') ||\r\n !ressources.users.hasRightAtLocation(Enums.Rights.CurrentModeRights.CreateAnyForm, location.OID);\r\n\r\n options.showCheckbox = typeof options.showCheckbox === 'boolean' ?\r\n options.showCheckbox :\r\n false;\r\n\r\n options.selectMultiple = typeof options.selectMultiple === 'boolean' ?\r\n options.selectMultiple :\r\n false;\r\n\r\n options.selectedForms = options.selectedForms || [];\r\n options.onApplySelection = options.onApplySelection || $.noop;\r\n\r\n var formInformation = Tools.GetAvailableAndVisibleForms(\r\n formData.Map,\r\n location,\r\n options.disableSurveys,\r\n options.disableInvestigations\r\n );\r\n\r\n var customActionButton = ressources.users.hasRightAtLocation(Enums.Rights.CurrentModeRights.CreateAnyForm, location.OID) ?\r\n {\r\n title: options.showAssignedFormsOnly ?\r\n options.buttons.showAllForms :\r\n options.buttons.showAssignedFormsOnly,\r\n onClick: function (evt) {\r\n var $this = $(evt.currentTarget);\r\n\r\n options.showAssignedFormsOnly = !options.showAssignedFormsOnly;\r\n\r\n TreePicker.Close();\r\n Tools.WindowWrappers.ShowFormSelectionForLocation(options);\r\n\r\n $this.text(\r\n options.showAssignedFormsOnly ?\r\n options.buttons.showAllForms :\r\n options.buttons.showAssignedFormsOnly\r\n );\r\n\r\n Tools.UpdateOfficeUserSettings('ShowOnlyAssignedForms', options.showAssignedFormsOnly);\r\n }\r\n } :\r\n null;\r\n\r\n var checkbox = options.showCheckbox ?\r\n {\r\n fullrow: true,\r\n disabled: function (node) {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n var form = node.entity;\r\n\r\n if (options.disableSurveys && form.IsSurvey) {\r\n return true;\r\n }\r\n\r\n if (options.disableInvestigations && form.IsInvestigation) {\r\n return true;\r\n }\r\n\r\n return options.showAssignedFormsOnly &&\r\n !formInformation.AvailableForms[form.OID];\r\n }\r\n } :\r\n undefined;\r\n\r\n var isSelectable = !options.showCheckbox ?\r\n function (form) {\r\n if (!form) {\r\n return false;\r\n }\r\n\r\n if (options.disableSurveys && form.IsSurvey) {\r\n return false;\r\n }\r\n\r\n if (options.disableInvestigations && form.IsInvestigation) {\r\n return false;\r\n }\r\n\r\n var isSelectable = !options.showAssignedFormsOnly ||\r\n formInformation.AvailableForms[form.OID] || false;\r\n\r\n if (!isSelectable || !options.disableEmptyForms) {\r\n return isSelectable;\r\n }\r\n\r\n return form.HasCheckpoints;\r\n } : undefined;\r\n\r\n var pickerOptions = {\r\n title: options.windowCaption,\r\n selectMultiple: options.selectMultiple,\r\n onApply: options.showCheckbox || options.selectMultiple ? options.onApplySelection : null,\r\n onSelect: !(options.showCheckbox || options.selectMultiple) ? options.onApplySelection : null,\r\n checkedEntities: options.selectedForms,\r\n customActionButton: customActionButton,\r\n treeOptions: {\r\n schema: {id: 'OID', children: 'Children', text: 'Title', color: 'Color'},\r\n opened: true,\r\n checkbox: checkbox,\r\n selectable: isSelectable,\r\n filter: function (form) {\r\n if (!options.showAssignedFormsOnly) {\r\n return form.Enabled;\r\n }\r\n\r\n if (options.disableSurveys && form.IsSurvey) {\r\n return false;\r\n }\r\n\r\n if (options.disableInvestigations && form.IsInvestigation) {\r\n return false;\r\n }\r\n\r\n return form.Enabled && formInformation.VisibleForms[form.OID];\r\n }\r\n }\r\n };\r\n\r\n TreePicker.Show(formData.Root, pickerOptions);\r\n }, function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n };\r\n\r\n WindowWrappers.ShowSchedulingSelectionForLocation = function (options) {\r\n Tools.Spinner.show();\r\n Tools.DataManager.SchedulingLoader\r\n .GetAll()\r\n .then(function (data) {\r\n Tools.Spinner.hide();\r\n\r\n var location = options.Location ? options.Location : CurrentEntity;\r\n\r\n options = options || {};\r\n\r\n options.showAssignedSchedulingsOnly = typeof options.showAssignedSchedulingsOnly === 'boolean' ?\r\n options.showAssignedSchedulingsOnly :\r\n Tools.GetOfficeSettingValue('ShowOnlyAssignedSchedulings') ||\r\n !ressources.users.hasRightAtLocation(Enums.Rights.CurrentModeRights.ShowAllSchedulings, location.OID);\r\n\r\n options.showCheckbox = typeof options.showCheckbox === 'boolean' ?\r\n options.showCheckbox :\r\n false;\r\n\r\n options.selectMultiple = typeof options.selectMultiple === 'boolean' ?\r\n options.selectMultiple :\r\n false;\r\n\r\n options.selectedSchedulings = options.selectedSchedulings || [];\r\n options.onApplySelection = options.onApplySelection || $.noop;\r\n\r\n Tools.GetAvailableAndVisibleSchedulings(data.Map, location, options.showAssignedSchedulingsOnly)\r\n .then(function (schedulingInformation) {\r\n var customActionButton = ressources.users.hasRightAtLocation(Enums.Rights.CurrentModeRights.ShowAllSchedulings, location.OID) ?\r\n {\r\n title: options.showAssignedSchedulingsOnly ?\r\n options.buttons.showAllSchedulings :\r\n options.buttons.showAssignedSchedulingsOnly,\r\n onClick: function (evt) {\r\n var $this = $(evt.currentTarget);\r\n\r\n options.showAssignedSchedulingsOnly = !options.showAssignedSchedulingsOnly;\r\n\r\n TreePicker.Close();\r\n Tools.WindowWrappers.ShowSchedulingSelectionForLocation(options);\r\n\r\n $this.text(\r\n options.showAssignedSchedulingsOnly ?\r\n options.buttons.showAllSchedulings :\r\n options.buttons.showAssignedSchedulingsOnly\r\n );\r\n\r\n Tools.UpdateOfficeUserSettings(\r\n 'ShowOnlyAssignedSchedulings',\r\n options.showAssignedSchedulingsOnly\r\n );\r\n }\r\n } :\r\n null;\r\n\r\n var checkbox = options.showCheckbox ?\r\n {\r\n fullrow: true,\r\n disabled: function (node) {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n var scheduling = node.entity;\r\n\r\n return options.showAssignedSchedulingsOnly &&\r\n !schedulingInformation.AvailableSchedulings[scheduling.OID];\r\n }\r\n } :\r\n undefined;\r\n\r\n var isSelectable = !options.showCheckbox ?\r\n function (scheduling) {\r\n if (!scheduling) {\r\n return false;\r\n }\r\n\r\n return !options.showAssignedSchedulingsOnly ||\r\n schedulingInformation.AvailableSchedulings[scheduling.OID];\r\n } : undefined;\r\n\r\n var pickerOptions = {\r\n title: options.windowCaption,\r\n selectMultiple: options.selectMultiple,\r\n onApply: options.showCheckbox || options.selectMultiple ? options.onApplySelection : null,\r\n onSelect: !(options.showCheckbox || options.selectMultiple) ? options.onApplySelection : null,\r\n checkedEntities: options.selectedSchedulings,\r\n customActionButton: customActionButton,\r\n treeOptions: {\r\n schema: {id: 'OID', children: 'Children', text: 'Title', color: 'Color'},\r\n opened: true,\r\n checkbox: checkbox,\r\n selectable: isSelectable,\r\n filter: function (scheduling) {\r\n return !options.showAssignedSchedulingsOnly ||\r\n schedulingInformation.VisibleSchedulings[scheduling.OID];\r\n }\r\n }\r\n };\r\n\r\n TreePicker.Show(data.Root, pickerOptions);\r\n }, function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n }, function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n };\r\n\r\n WindowWrappers.ShowStatusSelection = function (options) {\r\n options = options || {};\r\n\r\n options.showCheckbox = typeof options.showCheckbox === 'boolean' ?\r\n options.showCheckbox :\r\n false;\r\n\r\n options.selectMultiple = typeof options.selectMultiple === 'boolean' ?\r\n options.selectMultiple :\r\n false;\r\n\r\n options.selectedStatusses = options.selectedStatusses || [];\r\n options.onApplySelection = options.onApplySelection || $.noop;\r\n\r\n var statusInformation = Tools.GetAvailableAndVisibleStatusses(options.statusState, options.additionalFilter);\r\n\r\n var checkbox = options.showCheckbox ?\r\n {\r\n fullrow: true,\r\n disabled: function (node) {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n var status = node.entity;\r\n\r\n return !statusInformation.AvailableStatusses[status.OID];\r\n }\r\n } :\r\n undefined;\r\n\r\n var isSelectable = !options.showCheckbox ?\r\n function (status) {\r\n return status && statusInformation.AvailableStatusses[status.OID];\r\n } : undefined\r\n\r\n var pickerOptions = {\r\n title: options.windowCaption,\r\n selectMultiple: options.selectMultiple,\r\n onApply: options.showCheckbox || options.selectMultiple ? options.onApplySelection : null,\r\n onSelect: !(options.showCheckbox || options.selectMultiple) ? options.onApplySelection : null,\r\n checkedEntities: options.selectedStatusses,\r\n treeOptions: {\r\n schema: { id: 'OID', children: 'Children', text: 'Title', color: 'Color' },\r\n opened: true,\r\n checkbox: checkbox,\r\n selectable: isSelectable,\r\n filter: function (status) {\r\n return statusInformation.VisibleStatusses[status.OID];\r\n }\r\n }\r\n };\r\n\r\n TreePicker.Show(IssueStates, pickerOptions);\r\n };\r\n\r\n WindowWrappers.ShowRolesSelection = function (options) {\r\n var selections = (options.selectedRoles || []).concat(options.inheritedRoles || []);\r\n var treeOptions = {\r\n schema: function (role) {\r\n var isChecked = selections.includes(role.OID);\r\n var isDisabled = (options.inheritedRoles || []).includes(role.OID);\r\n var checkbox = role.OID === '#' ? false : { checked: isChecked, disabled: isDisabled, fullrow: true };\r\n\r\n return {\r\n id: role.OID,\r\n text: role.Title,\r\n children: role.Children,\r\n checkbox: checkbox\r\n };\r\n },\r\n filter: function (role) { return role.ModificationType !== Enums.ModificationType.Deleted; }\r\n };\r\n\r\n var roles = Object\r\n .keys(options.dataSource)\r\n .map(function (oid) { return options.dataSource[oid]; })\r\n .sort(Tools.SortByTitle);\r\n\r\n var treePickerOptions = {\r\n title: options.title,\r\n treeOptions: treeOptions,\r\n onApply: options.onSelect\r\n };\r\n\r\n TreePicker.Show(roles, treePickerOptions);\r\n };\r\n\r\n return (global.WindowWrappers = WindowWrappers);\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.js\r\n */\r\n(function (tools) {\r\n tools.InputWindow = (function () {\r\n var $document = $(document);\r\n var $inputWindow = $('#input-window');\r\n var $overflow = $('#input-window-overflow');\r\n var $title = $inputWindow.find('.window-title');\r\n var $content = $inputWindow.find('.content');\r\n var $text = $content.find('.input-window-text');\r\n var $input = $inputWindow.find(':input');\r\n var $abort = $inputWindow.find('.btn-abort');\r\n var $ok = $inputWindow.find('.btn-ok');\r\n\r\n var _options;\r\n\r\n function show(options) {\r\n _options = options;\r\n _options.title = _options.title || '';\r\n _options.text = _options.text || '';\r\n _options.type = _options.type || 'text';\r\n _options.value = _options.value || '';\r\n _options.maxLength = _options.maxLength || 50;\r\n _options.emptyAllowed = _options.emptyAllowed || false;\r\n _options.abort = _options.abort || _options.abort !== false && typeof _options.onAbort === 'function';\r\n _options.onAbort = _options.onAbort || $.noop;\r\n _options.ok = _options.ok || _options.ok !== false && typeof _options.onOk === 'function';\r\n _options.onOk = _options.onOk || $.noop;\r\n\r\n init();\r\n\r\n $overflow.removeClass('hide');\r\n $inputWindow.removeClass('hide');\r\n $inputWindow.css('margin-top', $inputWindow.outerHeight() / -2);\r\n $input.focus();\r\n }\r\n\r\n function hide() {\r\n $document.off('keydown');\r\n\r\n $inputWindow.addClass('hide');\r\n $overflow.addClass('hide');\r\n }\r\n\r\n function init() {\r\n initLanguage();\r\n initInputWindow();\r\n initButtons();\r\n initEvents();\r\n }\r\n\r\n function initLanguage() {\r\n $abort.text(i18next.t('inputWindow.abort'));\r\n $ok.text(i18next.t('inputWindow.ok'));\r\n }\r\n\r\n function initInputWindow() {\r\n $title.html(_options.title);\r\n $text.html(_options.text);\r\n $input\r\n .attr('type', _options.type)\r\n .val(_options.value)\r\n .attr('maxlength', _options.maxLength);\r\n }\r\n\r\n function initButtons() {\r\n if (_options.abort) {\r\n $abort.removeClass('hide');\r\n } else {\r\n $abort.addClass('hide');\r\n }\r\n\r\n if (_options.ok) {\r\n $ok.removeClass('hide');\r\n } else {\r\n $ok.addClass('hide');\r\n }\r\n\r\n if (_options.emptyAllowed || _options.value) {\r\n $ok.removeAttr('disabled');\r\n } else {\r\n $ok.attr('disabled', 'disabled');\r\n }\r\n }\r\n\r\n function initEvents() {\r\n $input.off('keyup change');\r\n $document.off('keydown');\r\n $overflow.off('click');\r\n $abort.off('click');\r\n $ok.off('click');\r\n\r\n $input.on('keyup change', onChange);\r\n $document.on('keydown', onKeydown);\r\n\r\n if (_options.abort) {\r\n $overflow.on('click', onAbort);\r\n $abort.on('click', onAbort);\r\n }\r\n\r\n if (_options.ok) {\r\n $ok.on('click', onOk);\r\n }\r\n }\r\n\r\n function onChange() {\r\n if (_options.emptyAllowed || $input.val().trim()) {\r\n $ok.removeAttr('disabled')\r\n } else {\r\n $ok.attr('disabled', 'disabled');\r\n }\r\n }\r\n\r\n function onKeydown(event) {\r\n switch (event.which) {\r\n case 27:\r\n if (_options.abort) {\r\n onAbort();\r\n }\r\n break;\r\n case 13:\r\n if (_options.ok) {\r\n onOk();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n function onAbort() {\r\n hide();\r\n _options.onAbort();\r\n }\r\n\r\n function onOk() {\r\n var value;\r\n\r\n if ($ok.attr('disabled')) {\r\n return;\r\n }\r\n\r\n value = $input.val().trim();\r\n\r\n hide();\r\n _options.onOk(value);\r\n }\r\n\r\n return { Show: show, Hide: hide };\r\n })();\r\n\r\n tools.Message = (function () {\r\n var $document = $(document);\r\n var $message = $('#message');\r\n var $overflow = $('#message-overflow');\r\n var $title = $message.find('.top .title');\r\n var $close = $message.find('.top .close');\r\n var $content = $message.find('.content');\r\n var $text = $content.find('.message-text');\r\n var $list = $content.find('.list');\r\n var $listHeader = $list.find('.list-header');\r\n var $listContent = $list.find('.list-content');\r\n var $abort = $message.find('.btn-abort');\r\n var $no = $message.find('.btn-no');\r\n var $yes = $message.find('.btn-yes');\r\n var $delete = $message.find('.btn-delete');\r\n var $lock = $message.find('.btn-lock');\r\n var $unlock = $message.find('.btn-unlock');\r\n var $ok = $message.find('.btn-ok');\r\n var $logout = $message.find('.btn-logout');\r\n\r\n var _options;\r\n var _queue = [];\r\n\r\n function show(options) {\r\n if (isVisible()) {\r\n _queue.push(options);\r\n return;\r\n }\r\n\r\n _options = options;\r\n _options.title = _options.title || '';\r\n _options.text = _options.text || '';\r\n _options.assignments = _options.assignments || [];\r\n _options.abort = _options.abort || _options.abort !== false && typeof _options.onAbort === 'function';\r\n _options.onAbort = _options.onAbort || $.noop;\r\n _options.no = _options.no || _options.no !== false && typeof _options.onNo === 'function';\r\n _options.onNo = _options.onNo || $.noop;\r\n _options.yes = _options.yes || _options.yes !== false && typeof _options.onYes === 'function';\r\n _options.onYes = _options.onYes || $.noop;\r\n _options.delete = _options.delete || _options.delete !== false && typeof _options.onDelete === 'function';\r\n _options.onDelete = _options.onDelete || $.noop;\r\n _options.lock = _options.lock || _options.lock !== false && typeof _options.onLock === 'function';\r\n _options.unlock = _options.unlock || _options.unlock !== false && typeof _options.onUnlock === 'function';\r\n _options.onLock = _options.onLock || $.noop;\r\n _options.onUnlock = _options.onUnlock || $.noop;\r\n _options.ok = _options.ok || _options.ok !== false && typeof _options.onOk === 'function';\r\n _options.onOk = _options.onOk || $.noop;\r\n _options.logout = _options.logout ||_options.logout !== false && typeof _options.onLogout === 'function';\r\n _options.onLogout = _options.onLogout || $.noop;\r\n\r\n init();\r\n\r\n $overflow.removeClass('hide');\r\n $message.removeClass('hide');\r\n\r\n if ($listContent.is(':visible')) {\r\n $listContent.scrollTop(0);\r\n }\r\n\r\n setPosition();\r\n }\r\n\r\n function hide() {\r\n $document.off('keydown');\r\n\r\n $message.addClass('hide');\r\n $overflow.addClass('hide');\r\n\r\n if (_queue.length) {\r\n var nextMessage = _queue.shift();\r\n\r\n show(nextMessage);\r\n }\r\n }\r\n\r\n function isVisible() {\r\n return !$message.hasClass('hide');\r\n }\r\n\r\n function init() {\r\n initLanguage();\r\n initMessage();\r\n initButtons();\r\n initEvents();\r\n }\r\n\r\n function initLanguage() {\r\n $listHeader.find('.textcontent').text(i18next.t('message.selectAll'));\r\n $listHeader.find('.text-right').text(i18next.t('message.deleteSelectedElements'));\r\n\r\n $abort.text(i18next.t('message.abort'));\r\n $no.text(i18next.t('message.no'));\r\n $yes.text(i18next.t('message.yes'));\r\n $delete.text(i18next.t('message.delete'));\r\n $lock.text(i18next.t('message.lock'));\r\n $unlock.text(i18next.t('message.unlock'));\r\n $ok.text(i18next.t('message.ok'));\r\n $logout.text(i18next.t('message.logout'));\r\n }\r\n\r\n function initMessage() {\r\n $title.html(_options.title);\r\n $text.html(_options.text);\r\n\r\n if (_options.assignments.length) {\r\n $listContent.html(renderAssignments());\r\n\r\n $listHeader\r\n .find('input:checkbox')\r\n .prop('checked', true);\r\n\r\n if (_options.withCheckbox) {\r\n $listHeader.find('.element').removeClass('hide');\r\n } else {\r\n $listHeader.find('.element').addClass('hide');\r\n }\r\n\r\n $list.removeClass('hide');\r\n $message.css({ 'width': 800, 'margin-left': -400 });\r\n } else {\r\n $list.addClass('hide');\r\n $message.css({ 'width': 500, 'margin-left': -250 });\r\n }\r\n }\r\n\r\n function initButtons() {\r\n if (_options.abort) {\r\n $abort.removeClass('hide');\r\n } else {\r\n $abort.addClass('hide');\r\n }\r\n\r\n if (_options.no) {\r\n $no.removeClass('hide');\r\n } else {\r\n $no.addClass('hide');\r\n }\r\n\r\n if (_options.yes) {\r\n $yes.removeClass('hide');\r\n } else {\r\n $yes.addClass('hide');\r\n }\r\n\r\n if (_options.delete) {\r\n $delete.removeClass('hide');\r\n } else {\r\n $delete.addClass('hide');\r\n }\r\n\r\n if (_options.lock) {\r\n $lock.removeClass('hide');\r\n } else {\r\n $lock.addClass('hide');\r\n }\r\n\r\n if (_options.unlock) {\r\n $unlock.removeClass('hide');\r\n } else {\r\n $unlock.addClass('hide');\r\n }\r\n\r\n if (_options.ok) {\r\n $ok.removeClass('hide');\r\n } else {\r\n $ok.addClass('hide');\r\n }\r\n\r\n if (_options.logout) {\r\n $logout.removeClass('hide');\r\n } else {\r\n $logout.addClass('hide');\r\n }\r\n\r\n if (_options.abort || _options.no || _options.ok) {\r\n $close.removeClass('hide');\r\n } else {\r\n $close.addClass('hide');\r\n }\r\n }\r\n\r\n function initEvents() {\r\n $document.off('keydown');\r\n $close.off('click');\r\n $overflow.off('click');\r\n $abort.off('click');\r\n $no.off('click');\r\n $yes.off('click');\r\n $delete.off('click');\r\n $lock.off('click');\r\n $unlock.off('click');\r\n $ok.off('click');\r\n $logout.off('click');\r\n\r\n $document.on('keydown', onKeydown);\r\n\r\n if (_options.abort) {\r\n $close.on('click', onAbort);\r\n $overflow.on('click', onAbort);\r\n $abort.on('click', onAbort);\r\n }\r\n\r\n if (_options.no) {\r\n if (!_options.abort) {\r\n $close.on('click', onNo);\r\n }\r\n\r\n $no.on('click', onNo);\r\n }\r\n\r\n if (_options.yes) {\r\n $yes.on('click', onYes);\r\n }\r\n\r\n if (_options.delete) {\r\n $delete.on('click', onDelete);\r\n }\r\n\r\n if (_options.lock) {\r\n $lock.on('click', onLock);\r\n }\r\n\r\n if (_options.unlock) {\r\n $unlock.on('click', onUnlock);\r\n }\r\n\r\n if (_options.ok) {\r\n if (!_options.abort && !_options.no) {\r\n $close.on('click', onOk);\r\n }\r\n\r\n $close.on('click', onOk);\r\n $ok.on('click', onOk);\r\n }\r\n\r\n if (_options.logout) {\r\n $logout.on('click', onLogout);\r\n }\r\n }\r\n\r\n function setPosition() {\r\n var $content = $message.find('.content');\r\n var $footer = $message.find('.bottom');\r\n var maxHeight = $(window).height() - 40;\r\n var maxWidth = $(window).width() - 60;\r\n var headerHeight, footerHeight, maxBodyHeight, windowHeight;\r\n\r\n $message.removeAttr('style');\r\n $content.removeAttr('style');\r\n\r\n $message.css({\r\n top: 0,\r\n left: 0\r\n });\r\n\r\n $message.css('max-width', maxWidth);\r\n\r\n var contentHeight = parseInt($content.css('padding-top'), 10) + parseInt($content.css('padding-bottom'), 10);\r\n var $messageText = $content.find('.message-text');\r\n var $list = $content.find('.list');\r\n\r\n if ($messageText.is(':visible')) {\r\n contentHeight += $messageText.outerHeight(true);\r\n }\r\n\r\n if ($list.is(':visible')) {\r\n contentHeight += $list.outerHeight();\r\n }\r\n\r\n headerHeight = +$message.find('.top').outerHeight();\r\n footerHeight = +$footer.outerHeight();\r\n maxBodyHeight = $(window).height() - (headerHeight + footerHeight) - 60;\r\n\r\n if (maxBodyHeight + headerHeight + footerHeight >= maxHeight) {\r\n maxBodyHeight = maxHeight - headerHeight - footerHeight - 60;\r\n }\r\n\r\n $content.css('max-height', maxBodyHeight);\r\n\r\n windowHeight = headerHeight + contentHeight + footerHeight;\r\n\r\n if (windowHeight > maxHeight) {\r\n windowHeight = maxHeight;\r\n }\r\n\r\n $message.css('height', windowHeight);\r\n\r\n $message.css({\r\n 'margin-top': -($message.innerHeight() / 2) - 10,\r\n 'margin-left': -($message.innerWidth() / 2)\r\n });\r\n\r\n $message.css({ top: '50%', left: '50%' });\r\n }\r\n\r\n function renderAssignments() {\r\n return _options.assignments\r\n .map(renderAssignment)\r\n .join('');\r\n }\r\n\r\n function renderAssignment(assignment) {\r\n var html = [];\r\n\r\n html.push('
');\r\n\r\n if (_options.withCheckbox) {\r\n html.push(''.format(assignment.Key));\r\n html.push('
{0}
'.format(Tools.escapeHtml(assignment.Value)));\r\n } else {\r\n html.push('
{0}
'.format(Tools.escapeHtml(assignment)));\r\n }\r\n\r\n html.push('
');\r\n\r\n return html.join('');\r\n }\r\n\r\n function getCheckedValues() {\r\n return $.map($listContent.find('input:checked'), function (checkbox) {\r\n return $(checkbox).val();\r\n });\r\n }\r\n\r\n function onKeydown(event) {\r\n var values;\r\n\r\n switch (event.which) {\r\n case 27:\r\n if (_options.abort) {\r\n hide();\r\n _options.onAbort();\r\n }\r\n break;\r\n case 13:\r\n values = getCheckedValues();\r\n\r\n if (_options.yes) {\r\n hide();\r\n _options.onYes(values);\r\n } else if (_options.delete) {\r\n hide();\r\n _options.onDelete(values);\r\n } else if (_options.lock) {\r\n hide();\r\n _options.onLock(values);\r\n } else if (_options.unlock) {\r\n hide();\r\n _options.onUnlock(values);\r\n } else if (_options.ok) {\r\n hide();\r\n _options.onOk(values);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n function onAbort() {\r\n hide();\r\n _options.onAbort();\r\n }\r\n\r\n function onNo() {\r\n hide();\r\n _options.onNo();\r\n }\r\n\r\n function onYes() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onYes(values);\r\n }\r\n\r\n function onDelete() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onDelete(values);\r\n }\r\n\r\n function onLock() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onLock(values);\r\n }\r\n\r\n function onUnlock() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onUnlock(values);\r\n }\r\n\r\n function onOk() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onOk(values);\r\n }\r\n\r\n function onLogout() {\r\n var values = getCheckedValues();\r\n\r\n hide();\r\n _options.onLogout(values);\r\n }\r\n\r\n return { Show: show, Hide: hide, IsVisible: isVisible };\r\n })();\r\n\r\n tools.QRCode = (function () {\r\n var $qrCodeGenerator = $('#qr-code-generator');\r\n var $title = $qrCodeGenerator.find('.window-title');\r\n var $settings = $('#qr-code-settings');\r\n var $lblQRCodeSize = $('#lblQRCodeSize');\r\n var $cbQRCodeSize = window.$('#cbQRCodeSize');\r\n var $lblShowQRCodeTitle = $('#lblShowQRCodeTitle');\r\n var $showTitle = $('#cbShowQRCodeTitle');\r\n var $download = $qrCodeGenerator.find('.btn-download');\r\n var $close = $qrCodeGenerator.find('.btn-close');\r\n\r\n var _data;\r\n var _title;\r\n var _showTrustServiceUrl;\r\n var _qrCode;\r\n\r\n var _qrCodeSettings;\r\n\r\n $qrCodeGenerator.on('click', close);\r\n $qrCodeGenerator.on('click', '.window-close, .btn-close', close);\r\n $qrCodeGenerator.on('click', '.gfx-window', stopPropagation);\r\n\r\n function show(data, title, showTrustServiceUrl) {\r\n if (data) {\r\n _data = data;\r\n }\r\n\r\n if (title) {\r\n _title = title;\r\n }\r\n\r\n _showTrustServiceUrl = showTrustServiceUrl;\r\n\r\n initLanguage();\r\n\r\n if (_title) {\r\n _title = Tools.unescapeHtml(_title);\r\n }\r\n\r\n var scale = parseInt($cbQRCodeSize.val(), 10);\r\n var moduleCount = 37;\r\n var sizeModuleTable = {\"3\":21,\"10\":25,\"20\":29,\"30\":33,\"40\":37,\"54\":41,\"60\":45,\"80\":49,\"94\":53,\"115\":57,\"127\":61};\r\n var dataLength = _data.length;\r\n // Finde richtige Modulgröße für pixelgenaues Rendern\r\n for (var maxSize in sizeModuleTable) {\r\n if (dataLength < maxSize) {\r\n moduleCount = sizeModuleTable[maxSize];\r\n break;\r\n }\r\n }\r\n\r\n var logoModuleSize = Math.floor(moduleCount / 3);\r\n if (logoModuleSize % 2 == 0) {\r\n // zusätzliche Modulweite hinzufügen, damit Logo sauber zentriert wird\r\n logoModuleSize++;\r\n }\r\n\r\n var colorRed = \"#701210\";\r\n var colorBlue = '#2c4754';\r\n _qrCodeSettings = {\r\n text: _data,\r\n logo: './img/awenko_App-Logo.svg',\r\n height: moduleCount * scale,\r\n width: moduleCount * scale,\r\n logoWidth: logoModuleSize * scale,\r\n logoHeight: logoModuleSize * scale,\r\n dotScale: 1,\r\n quietZone: 15,\r\n // farbe: timing\r\n PO:colorRed,\r\n PI:colorBlue,\r\n // farbe: alignment\r\n AO:colorRed,\r\n AI:colorBlue,\r\n // farbe: module\r\n colorDark : colorBlue\r\n };\r\n\r\n if ($showTitle.is(':checked')) {\r\n _qrCodeSettings.title = _title;\r\n _qrCodeSettings.titleFont = 'bold ' + Math.floor(scale * 2.5) + 'px \"Titillium Web\"';\r\n _qrCodeSettings.titleHeight = scale * 2 + 30;\r\n }\r\n\r\n if (showTrustServiceUrl) {\r\n $settings.find('.qrCodeURL')\r\n .removeClass('hide')\r\n .find('input')\r\n .val(_data);\r\n } else {\r\n $settings.find('.qrCodeURL')\r\n .addClass('hide');\r\n }\r\n\r\n $qrCodeGenerator\r\n .find('.ui-draggable')\r\n .css('height', '');\r\n\r\n $qrCodeGenerator\r\n .removeClass('hide')\r\n .find('#qr-code-preview')\r\n .empty();\r\n\r\n _qrCode = new QRCode(document.querySelector('#qr-code-preview'), _qrCodeSettings);\r\n\r\n $settings.find('.qrCodeType .btn-download')\r\n .off('click.download')\r\n .on('click.download', function (event) {\r\n event.preventDefault();\r\n\r\n $qrCodeGenerator\r\n .find('#qr-code-preview canvas')\r\n .get(0)\r\n .saveAs(_title + '.png');\r\n });\r\n\r\n resizeWindow();\r\n\r\n $(window)\r\n .off('resize.resizeQrCodeWindow')\r\n .on('resize.resizeQrCodeWindow', resizeWindow);\r\n }\r\n\r\n function initLanguage() {\r\n $title.text(i18next.t('qrCode.title'));\r\n $lblQRCodeSize.text(i18next.t('qrCode.size'));\r\n $cbQRCodeSize.find('option[data-size=\"small\"]').text(i18next.t('qrCode.sizes.small'));\r\n $cbQRCodeSize.find('option[data-size=\"medium\"]').text(i18next.t('qrCode.sizes.medium'));\r\n $cbQRCodeSize.find('option[data-size=\"large\"]').text(i18next.t('qrCode.sizes.large'));\r\n $cbQRCodeSize.find('option[data-size=\"very-large\"]').text(i18next.t('qrCode.sizes.veryLarge'));\r\n $lblShowQRCodeTitle.text(i18next.t('qrCode.showTitle'));\r\n $download.text(i18next.t('qrCode.download'));\r\n $close.text(i18next.t('qrCode.close'));\r\n }\r\n\r\n function getShowTrustServiceUrl() {\r\n return _showTrustServiceUrl;\r\n }\r\n\r\n function close() {\r\n _data = null;\r\n _title = null;\r\n _showTrustServiceUrl = false;\r\n\r\n $qrCodeGenerator.addClass('hide');\r\n $(window).off('resize.resizeQrCodeWindow');\r\n }\r\n\r\n function stopPropagation(event) {\r\n event.stopPropagation();\r\n }\r\n\r\n function generate(charCount, prefix, callback) /* Deferred */{\r\n var qrCode = '';\r\n\r\n if (!!prefix) {\r\n if (prefix.length > 50-charCount) {\r\n prefix = prefix.substr(0, 50-charCount-1);\r\n }\r\n\r\n qrCode = prefix;\r\n charCount += prefix.length;\r\n }\r\n\r\n while (qrCode.length < charCount) {\r\n var asciiIndex = Math.round((90 - 48) * Math.random() + 48);\r\n\r\n if (asciiIndex >= 48 && asciiIndex <= 57 || asciiIndex >= 65 && asciiIndex <= 90) {\r\n qrCode += String.fromCharCode(asciiIndex).toLowerCase();\r\n }\r\n }\r\n\r\n return checkAvailability(qrCode, callback)\r\n .then(function(isAvailable) {\r\n if (Boolean(isAvailable)) {\r\n if (callback instanceof Function) {\r\n callback(qrCode);\r\n }\r\n\r\n return qrCode;\r\n } else {\r\n return generate(charCount, prefix, callback);\r\n }\r\n });\r\n }\r\n\r\n function checkAvailability(qrcode) /* Deferred */{\r\n return Tools.http.get('availability/', null, null, { qrcode: qrcode, type: 0 });\r\n }\r\n\r\n function getHeight() {\r\n var $window = $qrCodeGenerator.find('.gfx-window');\r\n var $content = $window.find('.content');\r\n var height = parseInt($window.css('border-top-width'), 10) +\r\n parseInt($window.css('border-bottom-width'), 10) +\r\n $window.find('.top').outerHeight() +\r\n $window.find('.bottom').outerHeight() +\r\n parseInt($content.css('padding-top'), 10) +\r\n parseInt($content.css('padding-bottom'), 10);\r\n\r\n $content.children().each(function (_idx, child) {\r\n var $child = $(child);\r\n var childHeight = $child.outerHeight();\r\n var childMargin = parseInt($child.css('margin-top'), 10) + parseInt($child.css('margin-bottom'), 10);\r\n\r\n height += Math.ceil(childHeight);\r\n height += childMargin;\r\n });\r\n\r\n return height;\r\n }\r\n\r\n function resizeWindow() {\r\n var screenHeight = $(window).height();\r\n var height = getHeight();\r\n\r\n if ((screenHeight - 40) < height) {\r\n height = screenHeight - 40;\r\n }\r\n\r\n $qrCodeGenerator.find('.gfx-window').css({\r\n height: height\r\n });\r\n }\r\n\r\n return {\r\n Show: show,\r\n Close: close,\r\n Generate: generate,\r\n CheckAvailability: checkAvailability,\r\n GetShowTrustServiceUrl: getShowTrustServiceUrl\r\n };\r\n })();\r\n\r\n tools.UsersAndTeamsPicker = (function () {\r\n var $userPicker = $('#user-picker');\r\n var $overflow = $('#overflowTools');\r\n var $nav = $userPicker.find('.nav');\r\n var $navTitle = $nav.find('.title');\r\n var $navPrev = $nav.find('.prev');\r\n var $search = $nav.find('.search');\r\n var $items = $userPicker.find('.items');\r\n var $selectedItems = $userPicker.find('.selectedItems');\r\n var $selectAllItemsRow = $userPicker.find('.select-all-row');\r\n var $unselectAllItemsRow = $userPicker.find('.unselect-all-row');\r\n var $currentType = $userPicker.find('.currentType');\r\n var $save = $userPicker.find('.save');\r\n var $abort = $userPicker.find('.abort');\r\n var selectedTeams = [];\r\n var selectedUsers = [];\r\n var selectableUsers = [];\r\n var selectableTeams = [];\r\n var mode = 'users';\r\n var teamOID = null;\r\n var searchText = null;\r\n var allowedTypes = [ 0, 1, 2 ];\r\n var hierarchy = { Global: 0, Current: 1, Root: 2 };\r\n var filters, datasource, locationOID, currentHierarchyType, readOnly;\r\n\r\n function show(settings) {\r\n if (!(settings || {}).saveFunction) {\r\n return;\r\n }\r\n\r\n initLanguage();\r\n\r\n allowedTypes = settings.types;\r\n filters = settings.filters;\r\n locationOID = settings.locationOID;\r\n datasource = settings.datasource || {};\r\n datasource.teams = datasource.teams || Teams;\r\n datasource.users = datasource.users || Users;\r\n readOnly = settings.readOnly === true;\r\n\r\n if (!settings.maximumSelectionCount) {\r\n maximumSelectionCount = Infinity;\r\n } else {\r\n maximumSelectionCount = settings.maximumSelectionCount;\r\n }\r\n\r\n $nav.addClass('hide');\r\n\r\n if (Client.Settings.ShowGlobalUsersAndTeams || settings.allowGlobalFilter) {\r\n currentHierarchyType = hierarchy.Global;\r\n\r\n $userPicker.find('.header-item[data-mode=\"hierarchy\"]')\r\n .removeClass('global current root')\r\n .addClass('global');\r\n } else {\r\n currentHierarchyType = hierarchy.Root;\r\n\r\n $userPicker.find('.header-item[data-mode=\"hierarchy\"]')\r\n .removeClass('global current root')\r\n .addClass('root');\r\n }\r\n\r\n if (Tools.contains(allowedTypes, 0)) {\r\n mode = 'users';\r\n } else if (Tools.contains(allowedTypes, 1)) {\r\n mode = 'teams';\r\n } else {\r\n return;\r\n }\r\n\r\n $search.val('');\r\n $currentType\r\n .removeClass('t v')\r\n .addClass('p')\r\n .text(i18next.t('userPicker.user_plural'));\r\n\r\n $userPicker\r\n .find('.header .users')\r\n .addClass('hide')\r\n .siblings()\r\n .removeClass('hide');\r\n\r\n $save.off('click');\r\n $abort.off('click');\r\n\r\n if (settings.preSelection) {\r\n selectedTeams = $.extend(true, [], settings.preSelection.Teams);\r\n selectedUsers = $.extend(true, [], settings.preSelection.Users);\r\n\r\n if ((selectedUsers.length || selectedTeams.length) && !readOnly) {\r\n $unselectAllItemsRow.removeClass('hide');\r\n }\r\n }\r\n\r\n initSelectableItems();\r\n\r\n $selectAllItemsRow.find('.btn').on('click', function () {\r\n var searchText = $.trim($search.val());\r\n var searchRegEx = !!searchText ? new RegExp(Tools.escRegExp(searchText), 'i') : null;\r\n\r\n if (mode === 'users' || teamOID) {\r\n var team = datasource.teams[teamOID];\r\n var usersToAdd = [];\r\n\r\n if (team) {\r\n var selectableUserIdentifiers = selectableUsers.map(function (user) {\r\n return user.OID;\r\n });\r\n\r\n usersToAdd = team.Users.filter(function (teamMember) {\r\n var user = Users[teamMember.OID];\r\n\r\n if (searchRegEx && !searchRegEx.test(user.Title)) {\r\n return false;\r\n }\r\n\r\n return selectableUserIdentifiers.indexOf(user.OID) !== -1 &&\r\n selectedUsers.indexOf(user.OID) === -1;\r\n }).map(function (user) {\r\n return user.OID;\r\n });\r\n } else {\r\n usersToAdd = selectableUsers.filter(function(selectableUser) {\r\n var user = Users[selectableUser.OID];\r\n\r\n if (searchRegEx && !searchRegEx.test(user.Title)) {\r\n return false;\r\n }\r\n\r\n return selectedUsers.indexOf(user.OID) === -1;\r\n }).map(function (user) {\r\n return user.OID;\r\n });\r\n }\r\n\r\n selectedUsers = selectedUsers.concat(usersToAdd);\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n var teamsToAdd = selectableTeams.filter(function(selectableTeam) {\r\n var team = Teams[selectableTeam.OID];\r\n\r\n if (!team.ParentOID) {\r\n return false;\r\n }\r\n\r\n if (searchRegEx && !searchRegEx.test(team.Title)) {\r\n return false;\r\n }\r\n\r\n return selectedTeams.indexOf(team.OID) === -1;\r\n }).map(function (team) {\r\n return team.OID;\r\n });\r\n\r\n selectedTeams = selectedTeams.concat(teamsToAdd);\r\n pickerGenerateTeamView(0);\r\n }\r\n });\r\n\r\n $unselectAllItemsRow.find('.btn').on('click', function () {\r\n selectedUsers = [];\r\n selectedTeams = [];\r\n\r\n if (mode === 'users' || teamOID) {\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n pickerGenerateTeamView(0);\r\n }\r\n });\r\n\r\n $abort.one('click', function(){\r\n close(settings);\r\n });\r\n\r\n if (readOnly) {\r\n $save.addClass('hide');\r\n } else {\r\n $save.removeClass('hide');\r\n $save.one('click', function () {\r\n teamOID = null;\r\n searchText = null;\r\n settings.saveFunction(selectedUsers, selectedTeams);\r\n close();\r\n });\r\n }\r\n\r\n $userPicker.on('click.stopPropagation', function (event) { event.stopPropagation(); });\r\n $overflow.on('click.stopPropagation', function (event) { event.stopPropagation(); });\r\n\r\n $userPicker.removeClass('hide');\r\n $overflow.removeClass('hide');\r\n\r\n if (maximumSelectionCount > 0 || readOnly) {\r\n $selectAllItemsRow.addClass('hide');\r\n $unselectAllItemsRow.addClass('hide');\r\n }\r\n\r\n if (mode === 'users') {\r\n pickerGenerateUserView();\r\n } else {\r\n pickerGenerateTeamView(mode === 'teams' ? 0 : 1);\r\n }\r\n }\r\n\r\n function close(settings) {\r\n settings = settings || {};\r\n if(settings.closeFunction){\r\n settings.closeFunction();\r\n }\r\n teamOID = null;\r\n searchText = null;\r\n selectedTeams = [];\r\n selectedUsers = [];\r\n\r\n $userPicker.addClass('hide');\r\n $overflow.addClass('hide');\r\n }\r\n\r\n function initLanguage() {\r\n $search.attr('placeholder', i18next.t('userPicker.enterSearchTerm'));\r\n $save.text(i18next.t('userPicker.save'));\r\n $abort.text(i18next.t('userPicker.abort'));\r\n $selectAllItemsRow.find('.btn .text').text(i18next.t('userPicker.selectAll'));\r\n $unselectAllItemsRow.find('.btn .text').text(i18next.t('userPicker.unselectAll'));\r\n }\r\n\r\n function initSelectableItems() {\r\n var prefiltered = {};\r\n var filterLocation;\r\n\r\n function getUserRoles(oid) {\r\n var userRoles = [];\r\n\r\n $.each(datasource.teams || [], function (_, team) {\r\n (team.Users || []).forEach(function (teamUser) {\r\n if (teamUser.OID === oid) {\r\n (teamUser.Roles || []).forEach(function (role) {\r\n userRoles = Tools.addUnique(userRoles, role);\r\n });\r\n }\r\n });\r\n });\r\n\r\n return userRoles;\r\n }\r\n\r\n function getPrefilter(location) {\r\n $.each(location.Teams || [], function (_, elemTeam) {\r\n var team = datasource.teams[elemTeam.OID];\r\n\r\n prefiltered.Teams = Tools.addUnique(prefiltered.Teams, team.OID);\r\n\r\n (team.Users || []).forEach(function (teamUser) {\r\n prefiltered.Users = Tools.addUnique(prefiltered.Users, teamUser.OID);\r\n });\r\n });\r\n }\r\n\r\n selectableUsers = [];\r\n selectableTeams = [];\r\n\r\n if (currentHierarchyType !== hierarchy.Global) {\r\n filterLocation = DataManager.OrganizationUnitLoader.Data.DataMap[locationOID] || CurrentEntity;\r\n }\r\n\r\n if (filterLocation) {\r\n if (currentHierarchyType === hierarchy.Current) {\r\n if ((filterLocation.Teams || []).length) {\r\n getPrefilter(filterLocation);\r\n }\r\n } else {\r\n while (filterLocation) {\r\n getPrefilter(filterLocation);\r\n filterLocation = filterLocation.Parent;\r\n }\r\n }\r\n }\r\n\r\n if (currentHierarchyType === hierarchy.Global || (prefiltered.Users || []).length) {\r\n if (Tools.contains(allowedTypes, 0)) {\r\n $.each(datasource.users || {}, function (_, user) {\r\n var userRoles = getUserRoles(user.OID);\r\n\r\n if (!(filters || {}).ShowLockedUsers && user.IsLocked) {\r\n return;\r\n }\r\n\r\n if (!(filters || {}).ShowSystemUsers && (user.IsSystemUser || user.IsExternalUser)) {\r\n return;\r\n }\r\n\r\n if (typeof (filters || {}).users === 'function' && !filters.users(user)) {\r\n return;\r\n }\r\n\r\n if ((prefiltered || {}).hasOwnProperty('Users') &&\r\n !Tools.contains(prefiltered.Users, user.OID)) {\r\n return;\r\n }\r\n\r\n if ((filters || {}).hasOwnProperty('Users') &&\r\n !Tools.contains(filters.Users, user.OID)) {\r\n return;\r\n }\r\n\r\n if ((filters || {}).hasOwnProperty('Roles') && !Tools.any(userRoles, filters.Roles)) {\r\n return;\r\n }\r\n\r\n selectableUsers.push(user);\r\n });\r\n\r\n $userPicker.find('.header-item[data-mode=\"users\"]').removeAttr('disabled');\r\n } else {\r\n $userPicker.find('.header-item[data-mode=\"users\"]').attr('disabled', 'disabled');\r\n }\r\n }\r\n\r\n if (currentHierarchyType === hierarchy.Global || (prefiltered.Teams || []).length) {\r\n if (Tools.contains(allowedTypes, 1)) {\r\n $.each(datasource.teams || {}, function (_, team) {\r\n if (typeof (filters || {}).teams === 'function' && !filters.teams(team)) {\r\n return;\r\n }\r\n\r\n if ((prefiltered.Teams || []).length &&\r\n !Tools.contains(prefiltered.Teams, team.OID)) {\r\n return;\r\n }\r\n\r\n if ((filters || {}).hasOwnProperty('Teams') &&\r\n !Tools.contains(filters.Teams, team.OID)) {\r\n return;\r\n }\r\n\r\n selectableTeams.push(team);\r\n });\r\n\r\n $userPicker.find('.header-item[data-mode=\"teams\"]').removeAttr('disabled');\r\n } else {\r\n $userPicker.find('.header-item[data-mode=\"teams\"]').attr('disabled', 'disabled');\r\n }\r\n }\r\n }\r\n\r\n function pickerGenerateUserView(closeSearch) {\r\n var html = [];\r\n var users = [];\r\n var tmpSelectedUsers = [];\r\n var tmpSelectedTeams = [];\r\n var selectedTeam = teamOID ? datasource.teams[teamOID] : null;\r\n var regEx;\r\n\r\n if (!teamOID) {\r\n $currentType\r\n .removeClass('teams')\r\n .addClass('users')\r\n .text(i18next.t('userPicker.users'));\r\n $userPicker.find('.header-item[data-mode=\"users\"]')\r\n .addClass('hide')\r\n .siblings()\r\n .removeClass('hide');\r\n }\r\n\r\n if (closeSearch) {\r\n $nav.addClass('hide');\r\n $search.addClass('hide').val('');\r\n searchText = null;\r\n }\r\n\r\n regEx = searchText ? new RegExp(Tools.escRegExp(searchText), 'ig') : null;\r\n\r\n if (selectedTeam) {\r\n $nav.removeClass('hide');\r\n\r\n if ($search.hasClass('hide')) {\r\n $navTitle.html(Tools.escapeHtml(selectedTeam.Title)).show();\r\n } else {\r\n $navTitle.html(Tools.escapeHtml(selectedTeam.Title)).hide();\r\n $search.removeClass('hide').css({ top: -4, width: 270 });\r\n }\r\n\r\n $navPrev.show();\r\n\r\n $.each(selectedTeam.Users || [], function (_, teamUser) {\r\n var userOID = teamUser.OID;\r\n\r\n if (!Tools.contains(selectableUsers, userOID, 'OID')) {\r\n return;\r\n }\r\n\r\n if (datasource.users.hasOwnProperty(userOID) &&\r\n !Tools.contains(selectedUsers, userOID)) {\r\n users.push(datasource.users[userOID]);\r\n }\r\n });\r\n } else {\r\n $.each(selectableUsers || [], function (_, user) {\r\n if (!Tools.contains(selectedUsers, user.OID)) {\r\n users.push(user);\r\n }\r\n });\r\n }\r\n\r\n $.each(selectedTeams || [], function (_, oid) {\r\n if (datasource.teams.hasOwnProperty(oid)) {\r\n tmpSelectedTeams.push(datasource.teams[oid]);\r\n }\r\n });\r\n\r\n $.each(selectedUsers || [], function (_, oid) {\r\n if (datasource.users.hasOwnProperty(oid)) {\r\n tmpSelectedUsers.push(datasource.users[oid]);\r\n }\r\n });\r\n\r\n users.sort(Tools.SortByFirstnameThenLastname);\r\n tmpSelectedTeams.sort(Tools.SortByTitle);\r\n tmpSelectedUsers.sort(Tools.SortByTitle);\r\n\r\n $.each(users || [], function (_, user) {\r\n var title = user.Title;\r\n var icon = Files[user.ImageOID];\r\n\r\n if (regEx) {\r\n if (regEx.test(user.Title)) {\r\n title = title.replace(regEx, function (match) {\r\n return '{0}'.format(Tools.escapeHtml(match));\r\n });\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n var iconPath = icon ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename) : './img/user.svg';\r\n\r\n html.push('
  • '.format(user.OID));\r\n html.push('
    '.format(iconPath));\r\n html.push('{0}{1}'.format(title, user.IsLocked\r\n ? ''\r\n : ''));\r\n\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n\r\n html.push('
  • ');\r\n });\r\n\r\n if (!html.length) {\r\n $selectAllItemsRow.addClass('hide');\r\n\r\n html.push('
  • ');\r\n html.push(i18next.t('userPicker.noUserAvailable'));\r\n html.push('
  • ');\r\n } else if (!readOnly) {\r\n $selectAllItemsRow.removeClass('hide');\r\n }\r\n\r\n $items\r\n .html(html.join(''))\r\n .removeClass('hide');\r\n\r\n html = [];\r\n $.each(tmpSelectedTeams || [], function (_, team) {\r\n var icon = Files[team.ImageOID];\r\n var iconPath = icon ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename) : './img/team.svg';\r\n\r\n html.push('
  • '.format(team.OID));\r\n html.push('
    '.format(iconPath));\r\n html.push('{0}'.format(Tools.escapeHtml(team.Title)));\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n html.push('
  • ');\r\n });\r\n\r\n $.each(tmpSelectedUsers || [], function (_, user) {\r\n var icon = Files[user.ImageOID];\r\n var iconPath = icon ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename) : './img/user.svg';\r\n\r\n html.push('
  • '.format(user.OID));\r\n html.push('
    '.format(iconPath));\r\n html.push('{0}{1}'.format(Tools.escapeHtml(user.Title), user.IsLocked\r\n ? ''\r\n : ''));\r\n\r\n if (user.IsLocked) {\r\n html.push();\r\n }\r\n\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n\r\n html.push('
  • ');\r\n });\r\n\r\n if (!html.length) {\r\n $selectedItems.addClass('hide');\r\n $unselectAllItemsRow.addClass('hide');\r\n $items.css('border-bottom', 'none');\r\n } else {\r\n $selectedItems.html(html.join(''));\r\n $selectedItems.removeClass('hide');\r\n\r\n if (!readOnly) {\r\n $unselectAllItemsRow.removeClass('hide');\r\n }\r\n\r\n $items.css('border-bottom', 'none');\r\n }\r\n\r\n var navHeight = $nav.hasClass('hide') ? 0 : $nav.outerHeight(false);\r\n var selectAllItemsRowHeight = $selectAllItemsRow.hasClass('hide') ? 0 : $selectAllItemsRow.outerHeight();\r\n var unselectAllItemsRowHeight = $unselectAllItemsRow.hasClass('hide') ? 0 : $unselectAllItemsRow.outerHeight();\r\n\r\n if (!$items.hasClass('hide') && !$selectedItems.hasClass('hide')) {\r\n $selectedItems.css({\r\n 'max-height': 225 - unselectAllItemsRowHeight,\r\n bottom: unselectAllItemsRowHeight ? 65 : 41\r\n });\r\n\r\n $items.css('height', 397 + (unselectAllItemsRowHeight ? 0 : 22) - selectAllItemsRowHeight - $selectedItems.height() - 3 - navHeight);\r\n } else if ($selectedItems.hasClass('hide')) {\r\n $items.css('height', 419 - selectAllItemsRowHeight - navHeight);\r\n } else if ($items.hasClass('hide')) {\r\n $selectedItems.css({\r\n 'max-height': 392 - unselectAllItemsRowHeight - navHeight,\r\n bottom: unselectAllItemsRowHeight ? 65 : 41\r\n });\r\n }\r\n }\r\n\r\n function pickerGenerateTeamView(type, closeSearch) {\r\n var html = [];\r\n var teams = [];\r\n var tmpSelectedUsers = [];\r\n var tmpSelectedTeams = [];\r\n var regEx;\r\n\r\n teamOID = null;\r\n\r\n if (closeSearch) {\r\n $nav.addClass('hide');\r\n $('.nav input', $userPicker).val('');\r\n searchText = null;\r\n }\r\n\r\n regEx = searchText ? new RegExp(Tools.escRegExp(searchText), 'ig') : null;\r\n\r\n if (type === 0) {\r\n $currentType\r\n .removeClass('users')\r\n .addClass('teams')\r\n .text(i18next.t('userPicker.teams'));\r\n\r\n $userPicker.find('.header-item[data-mode=\"teams\"]')\r\n .addClass('hide')\r\n .siblings()\r\n .removeClass('hide');\r\n\r\n $.each(selectableTeams || [], function (_, team) {\r\n if (!team.hasOwnProperty('ParentOID')) {\r\n return;\r\n }\r\n\r\n if (!Tools.contains(selectedTeams, team.OID)) {\r\n teams.push(team);\r\n }\r\n });\r\n }\r\n\r\n $.each(selectedUsers || [], function (_, oid) {\r\n if (datasource.users.hasOwnProperty(oid)) {\r\n tmpSelectedUsers.push(datasource.users[oid]);\r\n }\r\n });\r\n\r\n $.each(selectedTeams || [], function (_, oid) {\r\n if (datasource.teams.hasOwnProperty(oid)) {\r\n tmpSelectedTeams.push(datasource.teams[oid]);\r\n }\r\n });\r\n\r\n teams.sort(Tools.SortByTitle);\r\n tmpSelectedTeams.sort(Tools.SortByTitle);\r\n tmpSelectedUsers.sort(Tools.SortByTitle);\r\n\r\n $.each(teams || [], function (_, team) {\r\n var title = team.Title;\r\n var icon = Files[team.ImageOID];\r\n var iconPath;\r\n\r\n if (regEx) {\r\n if (regEx.test(team.Title)) {\r\n title = title.replace(regEx, function (match) {\r\n return '{0}'.format(Tools.escapeHtml(match));\r\n });\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n iconPath = icon ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename) : './img/team.svg';\r\n\r\n html.push('
  • '.format(team.OID));\r\n html.push('
    '.format(iconPath));\r\n\r\n if (Tools.contains(allowedTypes, 0)) {\r\n html.push('
    ');\r\n }\r\n\r\n html.push('{0}'.format(title));\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n html.push('
  • ');\r\n });\r\n\r\n if (!html.length) {\r\n $selectAllItemsRow.addClass('hide');\r\n\r\n html.push('
  • ');\r\n html.push(i18next.t('userPicker.noTeamAvailable'));\r\n html.push('
  • ');\r\n } else if (!readOnly) {\r\n $selectAllItemsRow.removeClass('hide');\r\n }\r\n\r\n $items\r\n .html(html.join(''))\r\n .removeClass('hide');\r\n\r\n html = [];\r\n $.each(tmpSelectedTeams || [], function (_, team) {\r\n var icon = Files[team.ImageOID];\r\n var iconPath = icon ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename) : './img/team.svg';\r\n\r\n html.push('
  • '.format(team.OID));\r\n html.push('
    '.format(iconPath));\r\n html.push('{0}'.format(team.Title));\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n html.push('
  • ');\r\n });\r\n\r\n $.each(tmpSelectedUsers || [], function (_, user) {\r\n var icon = Files[user.ImageOID];\r\n var iconPath = icon\r\n ? '{0}images/s/{1}'.format(Config.BaseUri, icon.Filename)\r\n : './img/user.svg';\r\n\r\n html.push('
  • '.format(user.OID));\r\n html.push('
    '.format(iconPath));\r\n html.push('{0}{1}'.format(Tools.escapeHtml(user.Title), user.IsLocked\r\n ? ''\r\n : ''));\r\n\r\n if (!readOnly) {\r\n html.push('
    ');\r\n }\r\n\r\n html.push('
  • ');\r\n });\r\n\r\n if (!html.length) {\r\n $selectedItems.addClass('hide');\r\n $unselectAllItemsRow.addClass('hide');\r\n $items.css('border-bottom', 'none');\r\n } else {\r\n $selectedItems.html(html.join(''));\r\n $selectedItems.removeClass('hide');\r\n\r\n if (!readOnly) {\r\n $unselectAllItemsRow.removeClass('hide');\r\n }\r\n\r\n $items.css('border-bottom', 'none');\r\n }\r\n\r\n var navHeight = $nav.hasClass('hide') ? 0 : $nav.outerHeight(false);\r\n var selectAllItemsRowHeight = $selectAllItemsRow.hasClass('hide') ? 0 : $selectAllItemsRow.outerHeight();\r\n var unselectAllItemsRowHeight = $unselectAllItemsRow.hasClass('hide') ? 0 : $unselectAllItemsRow.outerHeight();\r\n\r\n if (!$items.hasClass('hide') && !$selectedItems.hasClass('hide')) {\r\n $selectedItems.css({\r\n 'max-height': 225 - unselectAllItemsRowHeight,\r\n bottom: unselectAllItemsRowHeight ? 65 : 41\r\n });\r\n\r\n $items.css('height', 397 + (unselectAllItemsRowHeight ? 0 : 22) - selectAllItemsRowHeight - $selectedItems.height() - navHeight - 3);\r\n } else if ($selectedItems.hasClass('hide')) {\r\n $items.css('height', 419 - selectAllItemsRowHeight - navHeight);\r\n } else if ($items.hasClass('hide')) {\r\n $selectedItems.css({\r\n 'max-height': 392 - unselectAllItemsRowHeight - navHeight,\r\n bottom: unselectAllItemsRowHeight ? 65 : 41\r\n });\r\n }\r\n }\r\n\r\n $userPicker.on('click', '.add', function () {\r\n if (selectedUsers.length + selectedTeams.length >= maximumSelectionCount) {\r\n return;\r\n }\r\n\r\n var oid = $(this).parent().data('oid');\r\n\r\n if (mode === 'users' || teamOID) {\r\n selectedUsers.push(oid);\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n selectedTeams.push(oid);\r\n pickerGenerateTeamView(0);\r\n }\r\n });\r\n\r\n $userPicker.on('click', '.stepinto', function () {\r\n if (mode === 'teams') {\r\n searchText = null;\r\n teamOID = $(this).parent().data('oid');\r\n pickerGenerateUserView(true);\r\n }\r\n });\r\n\r\n $userPicker.on('click', '.remove', function () {\r\n var $this = $(this);\r\n var oid = $this.parent().data('oid');\r\n var type = $this.parent().data('type');\r\n\r\n if (type === 'user') {\r\n selectedUsers.splice($.inArray(oid, selectedUsers), 1);\r\n } else if (type === 'team') {\r\n selectedTeams.splice($.inArray(oid, selectedTeams), 1);\r\n }\r\n\r\n if (mode === 'users' || teamOID) {\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n pickerGenerateTeamView(0);\r\n }\r\n });\r\n\r\n $userPicker.on('click', '.prev', function () {\r\n if (datasource.teams[teamOID]) {\r\n pickerGenerateTeamView(0, true);\r\n }\r\n\r\n teamOID = null;\r\n });\r\n\r\n $userPicker.on('click', '.header-item[data-mode]', function () {\r\n var $this = $(this);\r\n\r\n if ($this.attr('disabled')) {\r\n return;\r\n }\r\n\r\n searchText = null;\r\n\r\n switch ($this.data('mode')) {\r\n case 'users':\r\n $nav.addClass('hide');\r\n\r\n teamOID = null;\r\n mode = 'users';\r\n\r\n pickerGenerateUserView(true);\r\n break;\r\n case 'teams':\r\n $nav.addClass('hide');\r\n\r\n teamOID = null;\r\n mode = 'teams';\r\n\r\n pickerGenerateTeamView(0, true);\r\n break;\r\n case 'search':\r\n if (!teamOID) {\r\n $nav.toggleClass('hide');\r\n\r\n if (!$nav.hasClass('hide')) {\r\n $search\r\n .removeClass('hide')\r\n .css({ top: 0, width: 300 });\r\n $search.focus();\r\n } else {\r\n $search.addClass('hide');\r\n }\r\n\r\n $navTitle.hide();\r\n $navPrev.hide();\r\n } else {\r\n if ($search.hasClass('hide')) {\r\n $search\r\n .removeClass('hide')\r\n .css({ top: -4, width: 270 });\r\n $search.focus();\r\n $navTitle.hide();\r\n } else {\r\n $search.addClass('hide');\r\n $navTitle.show();\r\n }\r\n }\r\n\r\n var navHeight = $nav.hasClass('hide') ? 0 : $nav.outerHeight(false);\r\n var selectAllItemsRowHeight = $selectAllItemsRow.hasClass('hide') ? 0 : $selectAllItemsRow.outerHeight();\r\n var unselectAllItemsRowHeight = $unselectAllItemsRow.hasClass('hide') ? 0 : $unselectAllItemsRow.outerHeight();\r\n\r\n if (!$items.hasClass('hide') && !$selectedItems.hasClass('hide')) {\r\n $items.css('height', 397 - $selectedItems.height() - selectAllItemsRowHeight - 3 - navHeight);\r\n $selectedItems.css('max-height', 225 - unselectAllItemsRowHeight);\r\n } else if ($selectedItems.hasClass('hide')) {\r\n $items.css('height', 419 - selectAllItemsRowHeight - navHeight);\r\n } else if ($items.hasClass('hide')) {\r\n $selectedItems.css('max-height', 391 - unselectAllItemsRowHeight - navHeight);\r\n }\r\n break;\r\n case 'hierarchy':\r\n switch (currentHierarchyType) {\r\n case hierarchy.Global:\r\n currentHierarchyType = hierarchy.Current;\r\n\r\n $userPicker.find('.header-item[data-mode=\"hierarchy\"]')\r\n .removeClass('global root')\r\n .addClass('current');\r\n break;\r\n case hierarchy.Current:\r\n currentHierarchyType = hierarchy.Root;\r\n\r\n $userPicker.find('.header-item[data-mode=\"hierarchy\"]')\r\n .removeClass('global current')\r\n .addClass('root');\r\n break;\r\n case hierarchy.Root:\r\n currentHierarchyType = Client.Settings.ShowGlobalUsersAndTeams ? hierarchy.Global : hierarchy.Current;\r\n\r\n $userPicker.find('.header-item[data-mode=\"hierarchy\"]')\r\n .removeClass('global current root')\r\n .addClass(Client.Settings.ShowGlobalUsersAndTeams ? 'global' : 'current');\r\n break;\r\n }\r\n\r\n initSelectableItems();\r\n\r\n if (mode === 'users' || teamOID) {\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n pickerGenerateTeamView(0);\r\n }\r\n break;\r\n }\r\n });\r\n\r\n $userPicker.on('keyup', 'input[type=text]', function () {\r\n var val = $.trim($(this).val());\r\n\r\n if (val.length) {\r\n searchText = Tools.escapeHtml(val);\r\n } else {\r\n searchText = null;\r\n }\r\n\r\n if (mode === 'users' || teamOID) {\r\n pickerGenerateUserView();\r\n } else if (mode === 'teams') {\r\n pickerGenerateTeamView(0);\r\n }\r\n });\r\n\r\n return { Show: show, Close: close };\r\n })();\r\n\r\n tools.EstimatedEffortEditor = (function () {\r\n var $estimatedEffortEditor = $('#estimatedEffortEditor');\r\n var $overflow = $('#overflowTools');\r\n var $close = $estimatedEffortEditor.find('.close');\r\n var $btnStandardEfforts = $estimatedEffortEditor.find('.default-efforts li > div');\r\n var $effortCreator = $estimatedEffortEditor.find('.effort-creator');\r\n var $cbConsecutiveNumbers = $('#cbConsecutiveNumbers');\r\n var $btnAbort = $estimatedEffortEditor.find('.btn-abort');\r\n var $btnApply = $estimatedEffortEditor.find('.btn-apply');\r\n var $consecutiveNumbers = $effortCreator.find('.consecutiveNumbers');\r\n var $customNumbers = $effortCreator.find('.customNumbers');\r\n var $unitPickerBtn = $estimatedEffortEditor.find('.unitPicker > .button-steal');\r\n var $startInput = $('#estimatedEffortEditor .consecutiveNumbers .start');\r\n var $endInput = $('#estimatedEffortEditor .consecutiveNumbers .end');\r\n var $clearListBtn = $('#estimatedEffortEditor .clear-list');\r\n var selectedUnit, onApply;\r\n var estimatedEffortSettings;\r\n var customItem =\r\n '
  • ' +\r\n '' +\r\n '
    ' +\r\n '' +\r\n '' +\r\n '
    ' +\r\n '
  • ';\r\n\r\n function initLanguage(saveButtonEnabled) {\r\n $unitPickerBtn.text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.selectUnit'));\r\n $estimatedEffortEditor.find('h1 > .title').text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.defaultTitle'));\r\n $estimatedEffortEditor.find('.default-efforts > .content-title').text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.standardList'));\r\n $estimatedEffortEditor.find('.effort-creator > .content-title').text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.createEffort'));\r\n $effortCreator.find('.start').attr('placeholder', i18next.t('changeMode.panels.properties.from'));\r\n $effortCreator.find('.end').attr('placeholder', i18next.t('changeMode.panels.properties.to'));\r\n $effortCreator.find('.cbTitle').text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.withConsecutiveNumber'));\r\n $effortCreator.find('.customNumberInput').attr('placeholder', i18next.t('changeMode.panels.properties.number'));\r\n $clearListBtn.text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.clearList'));\r\n\r\n if (saveButtonEnabled) {\r\n $btnAbort.text(i18next.t('treePicker.abort'));\r\n $btnApply.text(i18next.t('treePicker.apply'));\r\n } else {\r\n $btnAbort.text(i18next.t('treePicker.close'));\r\n }\r\n }\r\n\r\n function unbindEvents() {\r\n $close.off('click');\r\n $btnAbort.off('click');\r\n $btnApply.off('click');\r\n $unitPickerBtn.off('click');\r\n $cbConsecutiveNumbers.off('change');\r\n $endInput.off('keyup.valueChanged');\r\n $clearListBtn.off('click.clearList');\r\n $startInput.off('keyup.valueChanged');\r\n $btnStandardEfforts.off('click.applyStandardEfforts');\r\n $customNumbers.find('input').off('keyup.valueChanged');\r\n }\r\n\r\n function bindEvents() {\r\n $close.on('click', hide);\r\n $btnAbort.on('click', hide);\r\n $btnApply.on('click', validateInputsOnApply);\r\n $unitPickerBtn.on('click', openUnitPicker);\r\n $clearListBtn.on('click.clearList', onClearListClick);\r\n $cbConsecutiveNumbers.on('change', onCheckboxChanged);\r\n $endInput.on('keyup.valueChanged', onInputValueChange);\r\n $startInput.on('keyup.valueChanged', onInputValueChange);\r\n $btnStandardEfforts.on('click.applyStandardEfforts', onStandardEffortsClick);\r\n }\r\n\r\n function show(settings) {\r\n onApply = settings.onApply;\r\n estimatedEffortSettings = settings.estimatedEffortSettings;\r\n var isFunction = onApply instanceof Function;\r\n\r\n initLanguage(isFunction);\r\n\r\n unbindEvents();\r\n bindEvents();\r\n\r\n if (isFunction) {\r\n $btnAbort.css('margin-right', '');\r\n $btnAbort.parent().css('justify-content', '');\r\n $btnApply.removeClass('hide');\r\n } else {\r\n $btnAbort.css('margin-right', 0);\r\n $btnAbort.parent().css('justify-content', 'flex-end');\r\n $btnApply.addClass('hide');\r\n }\r\n\r\n buildEstimatedEffortEditor();\r\n\r\n $estimatedEffortEditor.removeClass('hide');\r\n $overflow.removeClass('hide');\r\n $overflow.on('click.hideTreePicker', hide);\r\n }\r\n\r\n function hide() {\r\n $estimatedEffortEditor.addClass('hide');\r\n $overflow.addClass('hide');\r\n\r\n $overflow.off('click.hideTreePicker');\r\n }\r\n\r\n function buildEstimatedEffortEditor() {\r\n if (!estimatedEffortSettings) {\r\n estimatedEffortSettings = content.CurrentEntity.Settings.EstimatedEffortSettings || changemode.Client.Settings.EstimatedEffortSettings;\r\n\r\n if (!estimatedEffortSettings) {\r\n clearInputs();\r\n resetUnit();\r\n return;\r\n }\r\n }\r\n\r\n var range = estimatedEffortSettings.Range || [];\r\n var rangeLength = range.length;\r\n\r\n selectedUnit = changemode.Properties[estimatedEffortSettings.UnitOID];\r\n\r\n if (selectedUnit) {\r\n $unitPickerBtn.html(i18next.t('misc.unit') + ': ' + selectedUnit.Title);\r\n $unitPickerBtn.data('oid', estimatedEffortSettings.UnitOID);\r\n }\r\n\r\n clearInputs();\r\n\r\n if (estimatedEffortSettings && rangeLength > 0) {\r\n if (estimatedEffortSettings.ConsecutiveNumbers) {\r\n changeConsecutiveNumbersCheckboxValue(true);\r\n\r\n $startInput.val(range[0]);\r\n\r\n if (rangeLength > 1) {\r\n $endInput.val(range[rangeLength - 1]);\r\n }\r\n } else if (estimatedEffortSettings.CustomItems) {\r\n changeConsecutiveNumbersCheckboxValue(false);\r\n\r\n $customNumbers.empty();\r\n\r\n for (var i = 0; i < rangeLength; i++) {\r\n addEstimatedEffort(range[i]);\r\n }\r\n }\r\n }\r\n\r\n var $customNumberInputs = $customNumbers.find('li');\r\n var customNumberInputsLength = $customNumberInputs.length;\r\n\r\n if (customNumberInputsLength > 1 && customNumberInputsHasValues()) {\r\n for (var i = 0; i < customNumberInputsLength; i++) {\r\n var $listItem = $customNumberInputs.eq(i);\r\n\r\n if (!$listItem.find('input').val()) {\r\n $customNumberInputs.eq(i).remove();\r\n }\r\n }\r\n }\r\n\r\n if (estimatedEffortSettings.CustomItems) {\r\n changeConsecutiveNumbersCheckboxValue(false);\r\n }\r\n }\r\n\r\n function onClearListClick() {\r\n clearInputs();\r\n }\r\n\r\n function changeConsecutiveNumbersCheckboxValue(value) {\r\n $cbConsecutiveNumbers.prop('checked', value);\r\n $cbConsecutiveNumbers.trigger('change');\r\n }\r\n\r\n function onStandardEffortsClick() {\r\n var $btn = $(this);\r\n var effortID = $btn.data('id');\r\n var effort = changemode.Client.EstimatedEffortList[effortID];\r\n var defaultRangeString = (effort.Title || '').replace(/\\s/g, \"\");\r\n var range = defaultRangeString.split(/[-;]/);\r\n\r\n for (var i = 0; i < (range || []).length; i++) {\r\n range[i] = parseInt(range[i], 10);\r\n }\r\n\r\n clearInputs();\r\n\r\n if (range.length === 2) {\r\n changeConsecutiveNumbersCheckboxValue(true);\r\n\r\n $startInput.val(range[0]);\r\n $endInput.val(range[1]);\r\n\r\n return;\r\n }\r\n\r\n $customNumbers.empty();\r\n changeConsecutiveNumbersCheckboxValue(false);\r\n\r\n for (var j = 0; j < (range || []).length; j++) {\r\n addEstimatedEffort(range[j]);\r\n }\r\n }\r\n\r\n function clearInputs() {\r\n $startInput.val('');\r\n $endInput.val('');\r\n $startInput.removeClass(\"input-required\");\r\n $endInput.removeClass(\"input-required\");\r\n $customNumbers.empty();\r\n addEstimatedEffort();\r\n }\r\n\r\n function validateInputsOnApply() {\r\n if (!$cbConsecutiveNumbers.prop('checked')) {\r\n validateCustomNumbers();\r\n return;\r\n }\r\n\r\n var startValue = $startInput.val();\r\n var endValue = $endInput.val();\r\n\r\n $startInput.toggleClass('input-required', !startValue);\r\n $endInput.toggleClass('input-required', !endValue);\r\n\r\n if (endValue && startValue) {\r\n onApply();\r\n }\r\n }\r\n\r\n function validateCustomNumbers() {\r\n var listHasValues = false;\r\n\r\n if ($customNumbers.find('li input').length >= 1) {\r\n listHasValues = customNumberInputsHasValues();\r\n }\r\n\r\n var $customNumber = $customNumbers.find('li input');\r\n\r\n if (!listHasValues) {\r\n $customNumber.addClass('input-required');\r\n return;\r\n }\r\n\r\n $customNumber.removeClass('input-required');\r\n\r\n onApply();\r\n }\r\n\r\n function customNumberInputsHasValues() {\r\n var listLength = $customNumbers.find('li input').length;\r\n var value, hasInputs = false;\r\n\r\n for (var i = 0; i < listLength; i++) {\r\n value = $customNumbers.find('li input').eq(i).val();\r\n\r\n if (!value) {\r\n continue;\r\n }\r\n\r\n hasInputs = true;\r\n }\r\n\r\n return hasInputs;\r\n }\r\n\r\n function addEstimatedEffort(value, that) {\r\n var $this = $(that);\r\n\r\n if ($this.hasClass('customNumberInput')) {\r\n $this.parent().after(customItem);\r\n $this.parent().next().find('input').focus();\r\n } else if ($(this).hasClass('btn-add')) {\r\n $(this).parent().parent().after(customItem);\r\n } else {\r\n $customNumbers.append(customItem);\r\n\r\n if (value || value === 0) {\r\n $customNumbers.find('li').last().find('input').val(value);\r\n }\r\n }\r\n\r\n $customNumbers.find('.btn-delete').toggleClass('hide', $customNumbers.find('li').length === 1);\r\n\r\n $customNumbers.find('input').off('keyup.enterPressed');\r\n $customNumbers.find('input').off('keyup.valueChanged');\r\n $customNumbers.find('.btn-add').off('click.addItem');\r\n $customNumbers.find('.btn-delete').off('click.deleteItem');\r\n $customNumbers.find('input').on('keyup.valueChanged', onInputValueChange);\r\n $customNumbers.find('.btn-add').on('click.addItem', addEstimatedEffort);\r\n $customNumbers.find('.btn-delete').on('click.deleteItem', deleteEstimatedEffortItem);\r\n $customNumbers.find('input').on('keyup.enterPressed', onAfterEnterPressed);\r\n $effortCreator.find('.customNumberInput').attr('placeholder', i18next.t('changeMode.panels.properties.number'));\r\n }\r\n\r\n function onAfterEnterPressed(evt) {\r\n var $input = $(this);\r\n var $nextInput = $input.parent().next().find('.customNumberInput');\r\n\r\n if ($nextInput.length > 0 && !$nextInput.val()) {\r\n return;\r\n }\r\n\r\n if ($input.val() && evt.keyCode === 13) {\r\n addEstimatedEffort('', this);\r\n } else {\r\n $input.removeClass('input-required');\r\n }\r\n }\r\n\r\n function onInputValueChange() {\r\n $(this).removeClass('input-required');\r\n }\r\n\r\n function deleteEstimatedEffortItem() {\r\n var $btn = $(this);\r\n var $item = $btn.parent().parent();\r\n\r\n if ($item.siblings().length === 0) {\r\n return;\r\n } else if ($item.siblings().length === 1) {\r\n $item.siblings().find('.btn-delete').addClass('hide');\r\n }\r\n\r\n $item.remove();\r\n }\r\n\r\n function openUnitPicker() {\r\n var $btn = $(this);\r\n var propertyOID = $btn.data('oid');\r\n var options;\r\n\r\n options = {\r\n title: i18next.t('changeMode.panels.properties.estimatedEffortEditor.selectUnit'),\r\n selectMultiple: false,\r\n onSelect: function (propertyOID) {\r\n var unit = changemode.Properties[propertyOID] || {};\r\n var unitTitle = unit.Title || '';\r\n\r\n $unitPickerBtn.html(i18next.t('misc.unit') + ': ' + unitTitle);\r\n $unitPickerBtn.data('oid', propertyOID);\r\n selectedUnit = unit;\r\n },\r\n treeOptions: {\r\n schema: { id: 'OID', children: 'Children', text: 'Title'},\r\n opened: true,\r\n selectable: true,\r\n selected: propertyOID\r\n }\r\n };\r\n\r\n options.customActionButton = {\r\n title: i18next.t('changeMode.panels.properties.estimatedEffortEditor.noUnit'),\r\n onClick: function () {\r\n resetUnit();\r\n\r\n TreePicker.Close();\r\n }\r\n };\r\n\r\n TreePicker.Show(changemode.Units, options);\r\n }\r\n\r\n function resetUnit() {\r\n $unitPickerBtn.text(i18next.t('changeMode.panels.properties.estimatedEffortEditor.selectUnit'));\r\n $unitPickerBtn.data('oid', '');\r\n selectedUnit = null;\r\n }\r\n\r\n function onCheckboxChanged() {\r\n var cb = $(this);\r\n\r\n if (cb == null) {\r\n return;\r\n }\r\n\r\n var isChecked = cb.prop('checked');\r\n\r\n $consecutiveNumbers.toggleClass('hide', !isChecked);\r\n $customNumbers.toggleClass('hide', isChecked);\r\n }\r\n\r\n function getUnit() {\r\n return selectedUnit;\r\n }\r\n\r\n function getEstimatedEffort() {\r\n var withConsecutiveNumbers = !$consecutiveNumbers.hasClass('hide');\r\n var withCustomNumbers = !$customNumbers.hasClass('hide');\r\n var $inputs, inputValue, values = [];\r\n var unit = getUnit();\r\n var unitOID = (unit || {}).OID;\r\n\r\n function iterateInputs() {\r\n for (var i = 0; i < $inputs.length; i++) {\r\n inputValue = parseInt($inputs.eq(i).val(), 10);\r\n\r\n if (isNaN(inputValue)) {\r\n continue;\r\n }\r\n\r\n if (Tools.contains(values, inputValue)) {\r\n continue;\r\n }\r\n\r\n values.push(inputValue);\r\n }\r\n }\r\n\r\n if (withConsecutiveNumbers) {\r\n $inputs = $consecutiveNumbers.find('input');\r\n\r\n iterateInputs();\r\n\r\n return {\r\n Range: values,\r\n ConsecutiveNumbers: withConsecutiveNumbers,\r\n UnitOID: unitOID\r\n };\r\n }\r\n\r\n if (withCustomNumbers) {\r\n $inputs = $customNumbers.find('input');\r\n\r\n iterateInputs();\r\n\r\n return {\r\n Range: values,\r\n CustomItems: withCustomNumbers,\r\n UnitOID: unitOID\r\n };\r\n }\r\n }\r\n\r\n return {\r\n Show: show,\r\n Hide: hide,\r\n GetUnit: getUnit,\r\n GetCustomEstimatedEffort: getEstimatedEffort\r\n };\r\n })();\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ../tools.js\r\n */\r\n(function (tools) {\r\n /**\r\n * @typedef ApexChartsOptionsWrapper\r\n * @property {HTMLElement} element Der Container, in welchem das Diagramm gezeichnet werden soll.\r\n * @property {number[]} series Enthält die Daten für das jeweilige Diagramm.\r\n * @property {string[]} labels Die Bezeichner der Datensätze.\r\n * @property {string[]|null} colors Die Hintergrundfarben der Datensätze.\r\n * @property {string[]|null} labelFontColors Die Schriftfarben der Labels. Müssen in der selben Reihenfolge angegeben werden.\r\n * @property {string|null} chartTitle Der Titel des Diagramms.\r\n * @property {number|null} height Die Höhe des Diagramms.\r\n * @property {number|null} width Die Breite des Diagramms.\r\n * @property {ApexSeriesContext[]|null} xAxisCategories\r\n * @property {boolean|null} showLegend Gibt an, ob die Farb-Legende zum Diagramm angezeigt werden soll.\r\n * @property {'top'|'right'|'bottom'|'left'|null} legendPosition Gibt die Position der Legende an.\r\n * @property {boolean|null} showLabels Gibt an, ob die Labels zu den jeweiligen Datenpunkten angezeigt werden sollen.\r\n * @property {Function|null} onDataPointClick Click-Handler für das Klicken auf einen Datenpunkt.\r\n * @property {Function|null} valueFormatter Funktion zum Formatieren der angezeigten Werte.\r\n * @property {string|null} yAxisCaption Wird nur bei Line-Charts unterstützt\r\n * @property {number|null} yAxisTicks Gibt die Anzahl der Labels auf der y-Achse an. Die Abstände werden automatisch berechnet.\r\n * @property {YAxisAnnotations[]|null} yAxisAnnotations Wird nur bei Line-Charts unterstützt\r\n * @property {number|null} yAxisMaxValue\r\n */\r\n\r\n /**\r\n * @typedef ApexSeriesContext\r\n * @property {string|null} Identifier\r\n * @property {string|null} Color\r\n * @property {string|null} Title\r\n */\r\n\r\n /**\r\n * @typedef ApexChartType Enum zur Auswahl einer der vom Wrapper unterstützten Diagrammtypen.\r\n * @type {string}\r\n */\r\n var apexChartType = {\r\n /**\r\n * Tortendiagramm\r\n */\r\n Pie: 'pie',\r\n /**\r\n * Balkendiagramm\r\n */\r\n Bar: 'bar',\r\n /**\r\n * Balkendiagramm mit mehreren Y-Werten pro X-Wert\r\n */\r\n StackedBar: 'stacked-bar',\r\n /**\r\n * Liniendiagramm\r\n */\r\n Line: 'line',\r\n };\r\n\r\n /**\r\n * Muss beim Start der Anwendung bzw. beim Wechsel der Sprache aufgerufen werden.\r\n */\r\n function initLanguage() {\r\n /**\r\n * @type {ApexChart}\r\n */\r\n Apex.chart = {\r\n locales: [{\r\n name: User.Language,\r\n options: {\r\n months: [\r\n i18next.t('months.january'),\r\n i18next.t('months.february'),\r\n i18next.t('months.march'),\r\n i18next.t('months.april'),\r\n i18next.t('months.may'),\r\n i18next.t('months.june'),\r\n i18next.t('months.july'),\r\n i18next.t('months.august'),\r\n i18next.t('months.september'),\r\n i18next.t('months.october'),\r\n i18next.t('months.november'),\r\n i18next.t('months.december')\r\n ],\r\n shortMonths: [\r\n i18next.t('months.january_abbreviation'),\r\n i18next.t('months.february_abbreviation'),\r\n i18next.t('months.march_abbreviation'),\r\n i18next.t('months.april_abbreviation'),\r\n i18next.t('months.may_abbreviation'),\r\n i18next.t('months.june_abbreviation'),\r\n i18next.t('months.july_abbreviation'),\r\n i18next.t('months.august_abbreviation'),\r\n i18next.t('months.september_abbreviation'),\r\n i18next.t('months.october_abbreviation'),\r\n i18next.t('months.november_abbreviation'),\r\n i18next.t('months.december_abbreviation')\r\n ],\r\n days: [\r\n i18next.t('weekdays.sunday'),\r\n i18next.t('weekdays.monday'),\r\n i18next.t('weekdays.tuesday'),\r\n i18next.t('weekdays.wednesday'),\r\n i18next.t('weekdays.thursday'),\r\n i18next.t('weekdays.friday'),\r\n i18next.t('weekdays.saturday')\r\n ],\r\n shortDays: [\r\n i18next.t('weekdays.sunday_abbreviation'),\r\n i18next.t('weekdays.monday_abbreviation'),\r\n i18next.t('weekdays.tuesday_abbreviation'),\r\n i18next.t('weekdays.wednesday_abbreviation'),\r\n i18next.t('weekdays.thursday_abbreviation'),\r\n i18next.t('weekdays.friday_abbreviation'),\r\n i18next.t('weekdays.saturday_abbreviation')\r\n ],\r\n toolbar: {\r\n exportToSVG: i18next.t('misc.apexCharts.toolbar.exportToSVG'),\r\n exportToPNG: i18next.t('misc.apexCharts.toolbar.exportToPNG'),\r\n exportToCSV: i18next.t('misc.apexCharts.toolbar.exportToCSV'),\r\n menu: i18next.t('misc.apexCharts.toolbar.menu'),\r\n selection: i18next.t('misc.apexCharts.toolbar.selection'),\r\n selectionZoom: i18next.t('misc.apexCharts.toolbar.selectionZoom'),\r\n zoomIn: i18next.t('misc.apexCharts.toolbar.zoomIn'),\r\n zoomOut: i18next.t('misc.apexCharts.toolbar.zoomOut'),\r\n pan: i18next.t('misc.apexCharts.toolbar.pan'),\r\n reset: i18next.t('misc.apexCharts.toolbar.reset')\r\n }\r\n }\r\n }],\r\n defaultLocale: User.Language\r\n };\r\n }\r\n\r\n /**\r\n * @param {string|null} title\r\n * @returns {ApexTitleSubtitle}\r\n */\r\n function getTitleConfiguration(title) {\r\n return {\r\n text: title,\r\n align: 'center',\r\n margin: 30,\r\n floating: true,\r\n offsetY: 10,\r\n style: {\r\n fontSize: '1.5rem',\r\n fontFamily: '\"Titillium Web\", Verdana, Arial, Helvetica, sans-serif'\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @param {boolean|null} showLegend\r\n * @param {'top'|'right'|'bottom'|'left'} legendPosition\r\n * @returns {ApexLegend}\r\n */\r\n function getLegendConfiguration(showLegend, legendPosition) {\r\n return {\r\n show: showLegend || false,\r\n position: legendPosition || 'bottom',\r\n horizontalAlign: 'center',\r\n markers: {\r\n radius: 2\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @param {string|null} header\r\n * @param {string|null} content\r\n * @returns {string}\r\n */\r\n function createCustomTooltip(header, content) {\r\n var html = ['
    '];\r\n\r\n if (!!header) {\r\n html.push('
    ', header, '
    ');\r\n }\r\n\r\n if (!!content) {\r\n html.push('
    ', content, '
    ');\r\n }\r\n\r\n return html.join('');\r\n }\r\n\r\n /**\r\n * @param {ApexSeriesContext|null} context\r\n * @returns {string|null}\r\n */\r\n function createCustomTooltipHeader(context) {\r\n if (!context) {\r\n return null;\r\n }\r\n\r\n var html = [];\r\n\r\n if (context.Color) {\r\n html.push(' ');\r\n }\r\n\r\n if (context.Title) {\r\n html.push(Tools.escapeHtml(context.Title));\r\n }\r\n\r\n return html.length ? html.join('') : null;\r\n }\r\n\r\n /**\r\n * @param {number[]} chartContext.series\r\n * @param {object} chartContext.w\r\n * @param {number} chartContext.seriesIndex\r\n * @param {Function|null} valueFormatter\r\n * @returns {string|null}\r\n */\r\n function handleCustomPieChartTooltip(chartContext, valueFormatter) {\r\n if (!chartContext) {\r\n return null;\r\n }\r\n\r\n var sumTotal = chartContext.series.reduce(function (sum, val) {\r\n return sum + val;\r\n }, 0);\r\n\r\n var pointValue = chartContext.series[chartContext.seriesIndex];\r\n var percentage = (pointValue / sumTotal * 100).toFixed(2);\r\n\r\n /**\r\n * @type {ApexSeriesContext|null}\r\n */\r\n var context = chartContext.w.config.xAxis.categories instanceof Array ?\r\n chartContext.w.config.xAxis.categories[chartContext.seriesIndex] :\r\n { Title: chartContext.w.config.labels[chartContext.seriesIndex] };\r\n\r\n var header = createCustomTooltipHeader(context);\r\n\r\n if (valueFormatter instanceof Function) {\r\n sumTotal = valueFormatter(sumTotal);\r\n }\r\n\r\n return createCustomTooltip(\r\n header,\r\n '' + pointValue + ' / ' + sumTotal + '
    ' + percentage + ' %'\r\n );\r\n }\r\n\r\n /**\r\n * @param chartContext\r\n * @param {number[][]} chartContext.series\r\n * @param {object} chartContext.w\r\n * @param {number} chartContext.seriesIndex\r\n * @param {number} chartContext.dataPointIndex\r\n * @param {Function|null} valueFormatter\r\n * @returns {string|null}\r\n */\r\n function handleCustomBarChartTooltip(chartContext, valueFormatter) {\r\n if (!chartContext) {\r\n return null;\r\n }\r\n\r\n var series = chartContext.w.config.series[chartContext.seriesIndex];\r\n\r\n if (!series) {\r\n return null;\r\n }\r\n\r\n var data = series.data[chartContext.dataPointIndex];\r\n\r\n if (!data) {\r\n return null;\r\n }\r\n\r\n var header = createCustomTooltipHeader({\r\n Title: data.Title,\r\n Color: data.Color\r\n });\r\n\r\n var pointValue = data.y;\r\n\r\n if (valueFormatter instanceof Function) {\r\n pointValue = valueFormatter(pointValue, data);\r\n }\r\n\r\n return createCustomTooltip(\r\n header,\r\n '' + pointValue + ''\r\n );\r\n }\r\n\r\n /**\r\n * @param chartContext\r\n * @param {number[][]} chartContext.series\r\n * @param {object} chartContext.w\r\n * @param {number} chartContext.seriesIndex\r\n * @param {number} chartContext.dataPointIndex\r\n * @param {Function|null} valueFormatter\r\n * @returns {string|null}\r\n */\r\n function handleCustomStackedBarChartTooltip(chartContext, valueFormatter) {\r\n if (!chartContext) {\r\n return null;\r\n }\r\n\r\n var sumTotal = chartContext.series.reduce(function (sum, series) {\r\n return sum + series[chartContext.dataPointIndex];\r\n }, 0);\r\n\r\n var pointValue = chartContext.series[chartContext.seriesIndex][chartContext.dataPointIndex];\r\n var percentage = (pointValue / sumTotal * 100).toFixed(2);\r\n\r\n /**\r\n * @type {ApexSeriesContext}\r\n */\r\n var xCaption = chartContext.w.config.xaxis.categories[chartContext.dataPointIndex];\r\n var yCaption = chartContext.w.config.series[chartContext.seriesIndex].name;\r\n var header = createCustomTooltipHeader({\r\n Title: xCaption + ' - ' + yCaption\r\n });\r\n\r\n if (valueFormatter instanceof Function) {\r\n sumTotal = valueFormatter(sumTotal);\r\n }\r\n\r\n return createCustomTooltip(\r\n header,\r\n '' + pointValue + ' / ' + sumTotal + '
    ' + percentage + ' %'\r\n );\r\n }\r\n\r\n /**\r\n * @param chartContext\r\n * @param {number[][]} chartContext.series\r\n * @param {object} chartContext.w\r\n * @param {number} chartContext.seriesIndex\r\n * @param {number} chartContext.dataPointIndex\r\n * @param {Function|null} valueFormatter\r\n * @returns {string|null}\r\n */\r\n function handleCustomLineChartTooltip(chartContext, valueFormatter) {\r\n if (!chartContext) {\r\n return null;\r\n }\r\n\r\n var pointData = chartContext.w.config.series[chartContext.seriesIndex].data[chartContext.dataPointIndex];\r\n\r\n /**\r\n * @type {ApexSeriesContext}\r\n */\r\n var header = createCustomTooltipHeader({\r\n Title: Tools.dateTime.dateTimeToString(new Date(pointData[0]))\r\n });\r\n\r\n var pointValue = pointData[1];\r\n\r\n if (valueFormatter instanceof Function) {\r\n pointValue = valueFormatter(pointValue);\r\n }\r\n\r\n return createCustomTooltip(\r\n header,\r\n '' + pointValue + ''\r\n );\r\n }\r\n\r\n /**\r\n * @param {ApexChartsOptionsWrapper} chartOptions\r\n * @returns {ApexCharts|null}\r\n */\r\n function createPieChart(chartOptions) {\r\n /**\r\n * @type {ApexOptions}\r\n */\r\n var options = {\r\n chart: {\r\n type: 'pie',\r\n height: 400,\r\n events: {\r\n dataPointSelection: chartOptions.onDataPointClick\r\n }\r\n },\r\n title: getTitleConfiguration(chartOptions.chartTitle),\r\n series: chartOptions.series,\r\n labels: chartOptions.labels,\r\n dataLabels: {\r\n enabled: chartOptions.showLabels || false\r\n },\r\n legend: getLegendConfiguration(chartOptions.showLegend, chartOptions.legendPosition),\r\n colors: chartOptions.colors,\r\n xAxis: {\r\n categories: chartOptions.xAxisCategories\r\n },\r\n tooltip: {\r\n custom: function (chartContext) {\r\n return handleCustomPieChartTooltip(chartContext, chartOptions.valueFormatter);\r\n }\r\n }\r\n };\r\n\r\n if (chartOptions.height) {\r\n options.chart.height = chartOptions.height;\r\n }\r\n\r\n if (chartOptions.width) {\r\n options.chart.width = chartOptions.width;\r\n }\r\n\r\n return new ApexCharts(chartOptions.element, options);\r\n }\r\n\r\n /**\r\n * @param {ApexChartsOptionsWrapper} chartOptions\r\n * @returns {ApexCharts|null}\r\n */\r\n function createLineChart(chartOptions) {\r\n /**\r\n * @type {ApexOptions}\r\n */\r\n var options = {\r\n chart: {\r\n type: 'line',\r\n offsetX: 25,\r\n toolbar: {\r\n tools: {\r\n download: false\r\n }\r\n },\r\n events: {\r\n dataPointSelection: chartOptions.onDataPointClick\r\n }\r\n },\r\n zoom: {\r\n autoScaleYaxis: true\r\n },\r\n stroke: {\r\n curve: 'smooth',\r\n width: 2\r\n },\r\n grid: {\r\n borderColor: '#e7e7e7',\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'],\r\n opacity: 0.5\r\n },\r\n },\r\n markers: {\r\n size: 6\r\n },\r\n title: getTitleConfiguration(chartOptions.chartTitle),\r\n series: chartOptions.series,\r\n dataLabels: {\r\n enabled: chartOptions.showLabels || false\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n labels: {\r\n datetimeUTC: false\r\n }\r\n },\r\n yaxis: {\r\n title: {\r\n text: chartOptions.yAxisCaption\r\n }\r\n },\r\n legend: getLegendConfiguration(chartOptions.showLegend, chartOptions.legendPosition),\r\n tooltip: {\r\n intersect: true,\r\n shared: false,\r\n custom: function (chartContext) {\r\n return handleCustomLineChartTooltip(chartContext, chartOptions.valueFormatter);\r\n }\r\n }\r\n };\r\n\r\n if (chartOptions.yAxisAnnotations instanceof Array) {\r\n options.annotations = {\r\n yaxis: chartOptions.yAxisAnnotations\r\n };\r\n }\r\n\r\n if (chartOptions.height) {\r\n options.chart.height = chartOptions.height;\r\n }\r\n\r\n if (chartOptions.width) {\r\n options.chart.width = chartOptions.width;\r\n }\r\n\r\n return new ApexCharts(chartOptions.element, options);\r\n }\r\n\r\n /**\r\n * @param {ApexChartsOptionsWrapper} chartOptions\r\n * @param {boolean} isStacked\r\n * @returns {ApexCharts|null}\r\n */\r\n function createBarChart(chartOptions, isStacked) {\r\n var height = isStacked ?\r\n 35 * chartOptions.xAxisCategories.length + 150 :\r\n chartOptions.height;\r\n\r\n /**\r\n * @type {ApexOptions}\r\n */\r\n var options = {\r\n chart: {\r\n type: 'bar',\r\n stacked: true,\r\n toolbar: {\r\n show: false\r\n },\r\n events: {\r\n dataPointSelection: chartOptions.onDataPointClick\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: isStacked\r\n }\r\n },\r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n title: getTitleConfiguration(chartOptions.chartTitle),\r\n series: chartOptions.series,\r\n dataLabels: {\r\n enabled: chartOptions.showLabels || false\r\n },\r\n yaxis: {\r\n title: {\r\n text: chartOptions.yAxisCaption\r\n }\r\n },\r\n legend: getLegendConfiguration(chartOptions.showLegend, chartOptions.legendPosition),\r\n tooltip: {\r\n custom: function (chartContext) {\r\n return isStacked ?\r\n handleCustomStackedBarChartTooltip(chartContext, chartOptions.valueFormatter) :\r\n handleCustomBarChartTooltip(chartContext, chartOptions.valueFormatter);\r\n }\r\n }\r\n };\r\n\r\n if (chartOptions.series.length > 1) {\r\n options.colors = chartOptions.colors;\r\n } else if (chartOptions.series.length === 1) {\r\n options.fill = {\r\n colors: chartOptions.colors\r\n };\r\n }\r\n\r\n if (chartOptions.yAxisAnnotations instanceof Array) {\r\n options.annotations = {\r\n yaxis: chartOptions.yAxisAnnotations\r\n };\r\n }\r\n\r\n if (chartOptions.yAxisTicks) {\r\n options.yaxis.tickAmount = chartOptions.yAxisTicks;\r\n }\r\n\r\n if (chartOptions.xAxisCategories instanceof Array &&\r\n chartOptions.xAxisCategories.length > 0) {\r\n options.xaxis = {\r\n categories: chartOptions.xAxisCategories,\r\n labels: {\r\n show: true\r\n }\r\n };\r\n }\r\n\r\n if (isStacked) {\r\n options.plotOptions.bar.dataLabels = {\r\n total: {\r\n enabled: true,\r\n offsetY: 6,\r\n offsetX: 5,\r\n formatter: function (val, opts) {\r\n if (chartOptions.valueFormatter instanceof Function) {\r\n return chartOptions.valueFormatter(val);\r\n }\r\n\r\n return val;\r\n }\r\n }\r\n };\r\n } else {\r\n options.labels = chartOptions.labels;\r\n\r\n if (typeof chartOptions.yAxisMaxValue === 'number') {\r\n options.yaxis.max = chartOptions.yAxisMaxValue;\r\n options.yaxis.decimalsInFloat = 0;\r\n }\r\n }\r\n\r\n if (height) {\r\n options.chart.height = height;\r\n }\r\n\r\n if (chartOptions.width) {\r\n options.chart.width = chartOptions.width;\r\n }\r\n\r\n return new ApexCharts(chartOptions.element, options);\r\n }\r\n\r\n /**\r\n * @param {ApexChartsOptionsWrapper} chartOptions\r\n * @returns {ApexChartsOptionsWrapper|null}\r\n */\r\n function validateChartOptions(chartOptions) {\r\n if (!chartOptions) {\r\n return null;\r\n }\r\n\r\n if (isNaN(chartOptions.yAxisTicks) || chartOptions.yAxisTicks < 1) {\r\n delete chartOptions.yAxisTicks;\r\n }\r\n\r\n if (!(chartOptions.yAxisAnnotations instanceof Array) ||\r\n chartOptions.yAxisAnnotations.length === 0) {\r\n delete chartOptions.yAxisAnnotations;\r\n }\r\n\r\n if (chartOptions.valueFormatter && !(chartOptions.valueFormatter instanceof Function)) {\r\n delete chartOptions.valueFormatter;\r\n }\r\n\r\n if (chartOptions.onDataPointClick && !(chartOptions.onDataPointClick instanceof Function)) {\r\n delete chartOptions.onDataPointClick;\r\n }\r\n\r\n return chartOptions;\r\n }\r\n\r\n /**\r\n * Erstellt eine @see ApexCharts-Instanz entsprechend der angegebenen Optionen. Muss im Anschluss mit `.render` gezeichnet werden.\r\n * @param {ApexChartType} type\r\n * @param {ApexChartsOptionsWrapper} chartOptions\r\n * @returns {ApexCharts|null}\r\n */\r\n function createChart(type, chartOptions) {\r\n if (!chartOptions) {\r\n return null;\r\n }\r\n\r\n if (!chartOptions.element) {\r\n return null;\r\n }\r\n\r\n validateChartOptions(chartOptions);\r\n\r\n switch (type) {\r\n case apexChartType.Pie:\r\n return createPieChart(chartOptions);\r\n case apexChartType.Line:\r\n return createLineChart(chartOptions);\r\n case apexChartType.Bar:\r\n case apexChartType.StackedBar:\r\n return createBarChart(chartOptions, type === apexChartType.StackedBar);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n tools.charts = {\r\n initLanguage: initLanguage,\r\n createChart: createChart,\r\n chartType: apexChartType\r\n };\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./tools.charts.js\r\n */\r\n(function (chartTools) {\r\n /**\r\n *\r\n * @param {number} from\r\n * @param {number} to\r\n * @param {string} bgColor Must be a hex value\r\n * @param {string} text\r\n * @returns {YAxisAnnotations|null}\r\n */\r\n function createYAxisAnnotation(from, to, bgColor, text) {\r\n if (typeof from !== 'number') {\r\n return null;\r\n }\r\n\r\n if (typeof to !== 'number') {\r\n return null;\r\n }\r\n\r\n if (typeof bgColor !== 'string') {\r\n return null;\r\n }\r\n\r\n if (typeof text !== 'string') {\r\n return null;\r\n }\r\n\r\n return {\r\n y: from,\r\n y2: to,\r\n fillColor: bgColor,\r\n opacity: 0.4\r\n };\r\n }\r\n\r\n /**\r\n * Erstellt die Annotations für ein Liniendiagramm an Hand der Werteklassendefinition eines Prüfpunkts.\r\n * @param {Enums.elementType} cpType\r\n * @param {object[]} evaluation\r\n * @returns {YAxisAnnotations[]|null}\r\n */\r\n function createLineChartAnnotationsFromElementEvaluation(cpType, evaluation) {\r\n if (!cpType || !(typeof cpType === 'number') || cpType < 100) {\r\n return null;\r\n }\r\n\r\n if (!(evaluation instanceof Array)) {\r\n return null;\r\n }\r\n\r\n var annotations = [];\r\n var minValue = -1636448;\r\n var maxValue = 1636448;\r\n\r\n evaluation\r\n .filter(function (e) {\r\n return e.Type === cpType && Properties.hasOwnProperty(e.CategoryOID);\r\n })\r\n .forEach(function (e) {\r\n var category = Properties[e.CategoryOID];\r\n var from, to;\r\n\r\n if (e.Linking === Enums.linking.And) {\r\n switch (e.FirstOperator) {\r\n case Enums.operators.Unequal.Value:\r\n from = minValue;\r\n to = maxValue;\r\n break;\r\n case Enums.operators.Less.Value:\r\n case Enums.operators.LessOrEqual.Value:\r\n from = typeof e.SecondValue === 'number' ? e.SecondValue : minValue;\r\n to = e.FirstValue;\r\n break;\r\n case Enums.operators.Greater.Value:\r\n case Enums.operators.GreaterOrEqual.Value:\r\n from = e.FirstValue;\r\n to = typeof e.SecondValue === 'number' ? e.SecondValue : maxValue;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n annotations.push(createYAxisAnnotation(from, to, category.Color, category.Title));\r\n\r\n return;\r\n }\r\n\r\n switch (e.FirstOperator) {\r\n case Enums.operators.Unequal.Value:\r\n from = minValue;\r\n to = maxValue;\r\n break;\r\n case Enums.operators.Less.Value:\r\n case Enums.operators.LessOrEqual.Value:\r\n from = minValue;\r\n to = e.FirstValue;\r\n break;\r\n case Enums.operators.Greater.Value:\r\n case Enums.operators.GreaterOrEqual.Value:\r\n from = e.FirstValue;\r\n to = maxValue;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n annotations.push(createYAxisAnnotation(from, to, category.Color, category.Title));\r\n\r\n switch (e.SecondOperator) {\r\n case Enums.operators.Unequal.Value:\r\n from = minValue;\r\n to = maxValue;\r\n break;\r\n case Enums.operators.Less.Value:\r\n case Enums.operators.LessOrEqual.Value:\r\n from = minValue;\r\n to = e.SecondValue;\r\n break;\r\n case Enums.operators.Greater.Value:\r\n case Enums.operators.GreaterOrEqual.Value:\r\n from = e.SecondValue;\r\n to = maxValue;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n annotations.push(createYAxisAnnotation(from, to, category.Color, category.Title));\r\n });\r\n\r\n return annotations;\r\n }\r\n\r\n function createColumnChartAnnotationsFromGradingScale(gradingScale) {\r\n if (!gradingScale) {\r\n return null;\r\n }\r\n\r\n var annotations = [];\r\n\r\n if (!gradingScale || !(gradingScale.Gradings || []).length) {\r\n return null;\r\n }\r\n\r\n for (var eCnt = 0, eLen = gradingScale.Gradings.length; eCnt < eLen; eCnt++) {\r\n var grading = gradingScale.Gradings[eCnt];\r\n var annotation = createYAxisAnnotation(\r\n grading.From || 0,\r\n grading.To || 100,\r\n grading.Color || '#FFF',\r\n grading.Text\r\n );\r\n\r\n annotations.push(annotation);\r\n }\r\n\r\n return annotations;\r\n }\r\n\r\n chartTools.annotations = {\r\n line: {\r\n fromElementEvaluation: createLineChartAnnotationsFromElementEvaluation\r\n },\r\n column: {\r\n fromGradingScale: createColumnChartAnnotationsFromGradingScale\r\n }\r\n };\r\n})(window.Tools.charts);","/**\r\n * @require ./tools.charts.js\r\n */\r\n(function (chartTools) {\r\n function createNumberChartSeriesFromRecorditems(recorditems, sortBy) {\r\n if (!(recorditems instanceof Array) || recorditems.length === 0) {\r\n return null;\r\n }\r\n\r\n var chartData = [];\r\n\r\n var regEx = /(^[<>][+-]?\\d+(\\.\\d+)?$)|(^[<>]?[+-]?\\d+(\\.\\d+)?e[+-]?\\d+(\\.\\d+)?$)/;\r\n var regExNotMeasurable = /(^n{2}$)|(^ni$)|(^n\\.(n\\.|i\\.)$)/;\r\n\r\n recorditems.forEach(function (recorditem) {\r\n var value = recorditem.Value || 0;\r\n var tmp, tmpIdx;\r\n\r\n var timestamp = sortBy === 'deadlineTimestamp' ? recorditem.DeadlineTimestamp : null;\r\n\r\n if (!timestamp) {\r\n timestamp = recorditem.CreationTimestamp;\r\n }\r\n\r\n if (regEx.test(value)) {\r\n if (/^[<>]/.test(value)) {\r\n value = value.substr(1);\r\n }\r\n\r\n if ((tmpIdx = value.indexOf('e')) > 0) {\r\n tmp = value.substr(tmpIdx).substr(1);\r\n value = value.substr(0, tmpIdx);\r\n }\r\n\r\n value = parseFloat(value);\r\n\r\n if (!isNaN(value)) {\r\n if (tmp) {\r\n value *= Math.pow(10, tmp);\r\n }\r\n\r\n chartData.push([ timestamp.getTime(), value, recorditem.OID ]);\r\n }\r\n } else if (value === 0 || regExNotMeasurable.test(value)) {\r\n chartData.push([ timestamp.getTime(), 0, recorditem.OID ]);\r\n } else if (!isNaN(parseInt(recorditem.Value, 10))) {\r\n chartData.push([ timestamp.getTime(), typeof recorditem.Value === 'undefined' ? null : recorditem.Value, recorditem.OID ]);\r\n }\r\n });\r\n\r\n return chartData;\r\n }\r\n\r\n chartTools.series = {\r\n fromRecorditems: {\r\n createNumberChartSeries: createNumberChartSeriesFromRecorditems\r\n }\r\n };\r\n})(window.Tools.charts);","/**\r\n * @require ../tools.js\r\n */\r\n(function (global) {\r\n /**\r\n * @abstract\r\n * @constructor\r\n */\r\n var DataLoaderBase = function () {\r\n if (this.constructor === DataLoaderBase) {\r\n throw new Error('This class cannot be instanciated.')\r\n }\r\n };\r\n\r\n DataLoaderBase.prototype.constructor = DataLoaderBase;\r\n\r\n /**\r\n * Lädt die angeforderten Daten vom Server und cached diese.\r\n */\r\n DataLoaderBase.prototype.LoadAll = function () {\r\n var deferred = $.Deferred();\r\n var me = this;\r\n\r\n Tools.http.get(this.Method, function (data) {\r\n me.Data = {\r\n Timestamp: new Date(),\r\n Data: data,\r\n DataMap: {}\r\n };\r\n\r\n if (data instanceof Array) {\r\n /**\r\n * @type {object}\r\n */\r\n me.Data.DataMap = data.reduce(function (map, elem) {\r\n map[elem.OID] = elem;\r\n\r\n return map;\r\n }, {});\r\n\r\n me.Data.Data = me.Prepare();\r\n }\r\n\r\n var response = createResponse.call(me, me.Data, true);\r\n\r\n deferred.resolve(response);\r\n }, function (xhr) {\r\n me.Data = {\r\n Timestamp: new Date(),\r\n Data: null,\r\n DataMap: {}\r\n };\r\n\r\n deferred.reject(xhr);\r\n });\r\n\r\n return deferred.promise();\r\n };\r\n\r\n /**\r\n * Prüft, ob die Daten bereits geladen wurden und greift ggf. auf den eigenen Cache zurück.\r\n */\r\n DataLoaderBase.prototype.GetAll = function () {\r\n var deferred = $.Deferred();\r\n\r\n if (this.Data != null) {\r\n deferred.resolve(createResponse.call(this, this.Data, false));\r\n } else {\r\n this.LoadAll()\r\n .then(deferred.resolve, deferred.reject);\r\n }\r\n\r\n return deferred.promise();\r\n };\r\n\r\n /**\r\n * Entfernt die gecachten Daten des DataLoaders.\r\n */\r\n DataLoaderBase.prototype.Reset = function () {\r\n delete this.Data;\r\n };\r\n\r\n /**\r\n * @param {object} data\r\n * @param {boolean} loadedFromServer\r\n * @returns {{Data: Object[], Map: Object, Root: (Object|null), Timestamp: Date, LoadedFromServer: Boolean}|null}\r\n */\r\n function createResponse(data, loadedFromServer) {\r\n if (!data) {\r\n return null;\r\n }\r\n\r\n var response = {\r\n Data: data.Data,\r\n Map: data.DataMap,\r\n Timestamp: data.Timestamp,\r\n LoadedFromServer: loadedFromServer\r\n };\r\n\r\n if (data.Root) {\r\n response.Root = data.Root;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n DataLoaderBase.prototype.Prepare = $.noop;\r\n\r\n global.DataLoaderBase = DataLoaderBase;\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./_base.js\r\n */\r\n(function (global) {\r\n /**\r\n * @param {number[]} options.Types\r\n * @param {boolean} options.WithDescendants\r\n * @param {boolean} options.WithPrototypes\r\n * @augments {DataLoaderBase}\r\n * @constructor\r\n */\r\n var ElementLoader = function (options) {\r\n var me = this;\r\n\r\n me.Method = 'elements?withDeactivatedElements=true';\r\n\r\n if (!options) {\r\n return;\r\n }\r\n\r\n if (options.WithPrototypes) {\r\n me.Method += '&withPrototypes=true'\r\n }\r\n\r\n if (options.WithDescendants) {\r\n me.Method += '&withDescendants=true'\r\n }\r\n\r\n if (options.Types instanceof Array) {\r\n options.Types.forEach(function (type) {\r\n me.Method += '&types=' + type;\r\n });\r\n }\r\n };\r\n\r\n ElementLoader.prototype = Object.create(global.DataLoaderBase.prototype, {\r\n constructor: ElementLoader\r\n });\r\n\r\n ElementLoader.prototype.Prepare = function () {\r\n var me = this;\r\n\r\n me.Data.Data = me.Data.Data.map(function (element) {\r\n return prepareElement.call(me, element);\r\n });\r\n\r\n return me.Data.Data;\r\n };\r\n\r\n function prepareElement(elem) {\r\n if (!elem) {\r\n return;\r\n }\r\n\r\n elem = Tools.Escape.Element(elem);\r\n\r\n var parentElement = this.Data.DataMap[elem.ParentOID];\r\n\r\n if (elem.ParentOID && !parentElement) {\r\n delete elem.ParentOID;\r\n }\r\n\r\n if (elem.Type !== Enums.elementType.Location && elem.Type < 100 &&\r\n parentElement && parentElement.Type === Enums.elementType.Root) {\r\n delete elem.ParentOID;\r\n parentElement = null;\r\n }\r\n\r\n if (!elem.ParentOID) {\r\n this.Data.Root = elem;\r\n\r\n return elem;\r\n }\r\n\r\n if (elem.Type >= Enums.elementType.Checkbox) {\r\n elem.Evaluation = (elem.Evaluation || []).map(prepareValueRange);\r\n elem.Evaluation.sort(Tools.SortByOrder);\r\n\r\n elem.Actions = (elem.Actions || []).map(prepareWorkflow);\r\n elem.Actions.sort(Tools.SortByOrder);\r\n }\r\n\r\n if (parentElement) {\r\n elem.Parent = parentElement;\r\n\r\n if (elem.Type >= Enums.elementType.Checkbox) {\r\n updateCheckpointRelations(elem, parentElement);\r\n } else if (Tools.contains(Enums.elementType.AllGroups, elem.Type)) {\r\n updateCheckpointGroupRelations(elem, parentElement);\r\n } else if (elem.Type !== Enums.elementType.Root) {\r\n updateGenericRelations(elem, parentElement);\r\n }\r\n }\r\n\r\n return elem;\r\n }\r\n\r\n function prepareValueRange(valueRange) {\r\n if (!valueRange.CategoryOID) {\r\n return;\r\n }\r\n\r\n valueRange.OID = valueRange.OID || uuid();\r\n valueRange.CategoryOID = valueRange.CategoryOID.toLowerCase();\r\n valueRange.Order = valueRange.Order || 0;\r\n\r\n return valueRange;\r\n }\r\n\r\n function prepareWorkflow(workflow) {\r\n if (!workflow.CategoryOID &&\r\n workflow.Type !== Enums.elementActionType.OverdueNotification) {\r\n return;\r\n }\r\n\r\n workflow.OID = workflow.OID || uuid();\r\n workflow.Order = workflow.Order || 0;\r\n\r\n if (workflow.CategoryOID) {\r\n workflow.CategoryOID = workflow.CategoryOID.toLowerCase();\r\n }\r\n\r\n return workflow;\r\n }\r\n\r\n function updateCheckpointRelations(checkpoint, group) {\r\n if (!(checkpoint && group)) {\r\n return;\r\n }\r\n\r\n group.Parameters = group.Parameters || [];\r\n group.Parameters.push(checkpoint);\r\n group.Parameters.sort(Tools.SortByPosition);\r\n }\r\n\r\n function updateCheckpointGroupRelations(group, parent) {\r\n if (!(group && parent)) {\r\n return;\r\n }\r\n\r\n group.Collapsed = false;\r\n parent.Parametergroups = parent.Parametergroups || [];\r\n parent.Parametergroups.push(group);\r\n parent.Parametergroups.sort(Tools.SortByPosition);\r\n }\r\n\r\n function updateGenericRelations(elem, parent) {\r\n if (!(elem && parent)) {\r\n return;\r\n }\r\n\r\n parent.Children = parent.Children || [];\r\n parent.Children.push(elem);\r\n parent.Children.sort(Tools.SortByPosition);\r\n }\r\n\r\n global.ElementLoader = ElementLoader;\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ./_base.js\r\n */\r\n(function (global) {\r\n /**\r\n * @augments {DataLoaderBase}\r\n * @constructor\r\n */\r\n var SchedulingLoader = function () {\r\n var me = this;\r\n\r\n me.Method = 'scheduling';\r\n };\r\n\r\n SchedulingLoader.prototype = Object.create(global.DataLoaderBase.prototype, {\r\n constructor: SchedulingLoader\r\n });\r\n\r\n SchedulingLoader.prototype.Prepare = function () {\r\n var me = this;\r\n\r\n me.Data.Data = me.Data.Data.map(function (scheduling) {\r\n return prepare.call(me, scheduling);\r\n });\r\n\r\n return me.Data.Data;\r\n };\r\n\r\n function prepare(scheduling) {\r\n if (!scheduling) {\r\n return;\r\n }\r\n\r\n scheduling = Tools.Escape.Scheduling(scheduling);\r\n\r\n var parent = this.Data.DataMap[scheduling.ParentOID];\r\n\r\n if (scheduling.ParentOID && !parent) {\r\n delete scheduling.ParentOID;\r\n }\r\n\r\n if (!scheduling.ParentOID) {\r\n this.Data.Root = scheduling;\r\n\r\n return scheduling;\r\n }\r\n\r\n if (parent) {\r\n scheduling.Parent = parent;\r\n\r\n parent.Children = parent.Children || [];\r\n parent.Children.push(scheduling);\r\n parent.Children.sort(Tools.SortByPosition);\r\n }\r\n\r\n return scheduling;\r\n }\r\n\r\n global.SchedulingLoader = SchedulingLoader;\r\n})(window.Tools || (window.Tools = {}));","(function (global) {\r\n var Enums = {};\r\n\r\n Enums.LicensingModel = {\r\n awenko360: 0,\r\n awenkoSTART: 1,\r\n awenkoCHECKIN: 2\r\n };\r\n\r\n Enums.LicenseType = {\r\n Limited: 0,\r\n Full: 1,\r\n ViewRight: 2\r\n };\r\n\r\n Enums.elementType = {\r\n Root: 0,\r\n Location: 1,\r\n ObjectTemplate: 2,\r\n Form: 3,\r\n CheckpointGroupTemplate: 4,\r\n MasterdataTemplate: 5,\r\n PropertyTemplate: 6,\r\n FormTemplate: 7,\r\n Sensor: 10,\r\n CashRegister: 11,\r\n SingletonFormRow: 93,\r\n MasterdataGroup: 94,\r\n FormHeader: 95,\r\n FormFooter: 96,\r\n SubsampleFormRow: 97,\r\n Parametergroup: 99,\r\n AllGroups: [93, 94, 95, 96, 97, 99],\r\n Checkbox: 100,\r\n Number: 101,\r\n Line: 102,\r\n Memo: 103,\r\n Date: 104,\r\n Time: 105,\r\n Photo: 106,\r\n Scancode: 107,\r\n LocationCode: 108,\r\n ListBox: 109,\r\n MultiListBox: 110,\r\n Info: 111,\r\n Signature: 112,\r\n UsersAndTeams: 113,\r\n IndividualData: 114,\r\n PhoneNumber: 115,\r\n EMailAddresses: 116,\r\n Files: 117,\r\n AllowedItemsForAdHocParameters: [0, 1, 2, 4, 5],\r\n Print: 130\r\n };\r\n\r\n Enums.IndividualdataSchemaPropertyType = {\r\n Bool: 0,\r\n Number: 1,\r\n Text: 2,\r\n Date: 3,\r\n Time: 4,\r\n Image: 5,\r\n File: 6,\r\n Memo: 7,\r\n RichText: 8\r\n };\r\n\r\n Enums.FileType = {\r\n File: 0,\r\n Link: 1,\r\n YoutubeVideo: 2,\r\n VimeoPrivateVideo: 3,\r\n VimeoPublicVideo: 4\r\n };\r\n\r\n Enums.additionalPropertyType = {\r\n Group: 1,\r\n Checkbox: 2,\r\n Number: 3,\r\n Text: 4,\r\n Date: 5,\r\n Time: 6,\r\n Image: 7,\r\n Info: 8,\r\n PhoneNumber: 9,\r\n IndividualData: 10\r\n };\r\n\r\n Enums.propertyType = {\r\n Status: 1,\r\n Classification: 2,\r\n Priority: 3,\r\n Keyword: 4,\r\n ValueCategory: 5,\r\n Unit: 6\r\n };\r\n\r\n Enums.QueryType = {\r\n SCHEDULING: 0,\r\n FORM: 1,\r\n ADHOC: 2,\r\n ISSUES: 3,\r\n TUEVAUDITINVOICE: 4,\r\n OUMasterDataAndProperties: 5\r\n };\r\n\r\n Enums.PeriodType = {\r\n MANUALLY: 0,\r\n MANUALLYSHIFTS: 1,\r\n UNLIMITED: 2,\r\n TODAY: 3,\r\n YESTERDAY: 4,\r\n CURRENTWEEK: 5,\r\n CURRENTMONTH: 6,\r\n CURRENTYEAR: 7\r\n };\r\n\r\n Enums.FormReportType = {\r\n STANDARD: 0,\r\n WEIGHTED: 1,\r\n IFS: 2,\r\n WEIGHTEDFRANCHISE: 3,\r\n SURVEY: 4,\r\n QKZ: 5,\r\n TUEVAudit: 6,\r\n TUEVFoodservice: 7,\r\n TUEVSamples: 8,\r\n TrendAnalysis: 9,\r\n TUEVDirectContactTest: 10\r\n };\r\n\r\n Enums.issueType = {\r\n /**\r\n * Einzelaufgabe\r\n */\r\n Incident: 1,\r\n /**\r\n * Geplanter Rundgang\r\n */\r\n Resubmission: 2,\r\n /**\r\n * Formular\r\n */\r\n Form: 3,\r\n /**\r\n * Notiz\r\n */\r\n Note: 4,\r\n /**\r\n * Störmeldung\r\n */\r\n Disturbance: 5,\r\n /**\r\n * Begehung\r\n */\r\n Inspection: 6,\r\n /**\r\n * Umfrage\r\n */\r\n Survey: 7,\r\n /**\r\n * Externer Auftrag\r\n */\r\n Investigation: 8,\r\n /**\r\n * Abgeschlossene Störungen\r\n */\r\n DisturbancesCompleted: 9\r\n };\r\n\r\n Enums.elementActionType = {\r\n Notification: 0,\r\n Form: 1,\r\n Measure: 2,\r\n Comment: 3,\r\n OverdueNotification: 4,\r\n Photo: 5,\r\n ModifyParentIssue: 6\r\n };\r\n\r\n Enums.elementActionIndicator = {\r\n Always: 0,\r\n OnCategoryChanged: 1,\r\n OnValueChanged: 2\r\n };\r\n\r\n Enums.elementRequirementsType = {\r\n Any: 1,\r\n All: 2,\r\n None: 3\r\n };\r\n\r\n Enums.recorditemType = {\r\n Normal: 1,\r\n Deviation: 2,\r\n Unrecorded: 3,\r\n Calculated: 4,\r\n CalculatedDeviation: 5\r\n };\r\n\r\n Enums.commentType = {\r\n IssueComment: 0,\r\n IssueChangeComment: 1,\r\n RecorditemComment: 2,\r\n RecorditemChangeComment: 3\r\n };\r\n\r\n Enums.disturbanceType = {\r\n Issue: 1,\r\n Deviation: 2,\r\n Unrecorded: 3\r\n };\r\n\r\n Enums.AnalysisMode = {\r\n QUERYLIST: 'query-list',\r\n QUERYSETTINGS: 'query-settings',\r\n SUMMARY: 'summary',\r\n MATRIX: 'matrix',\r\n CHART: 'chart',\r\n WEIGHTEDISSUESELECTION: 'weighted-issue-selection',\r\n WEIGHTEDISSUERATING: 'weighted-issue-rating',\r\n WEIGHTEDISSUECORRECTIVEACTIONS: 'weighted-issue-corrective-actions',\r\n WEIGHTEDISSUECOMPARISON: 'weighted-issue-comparison',\r\n TUEVAUDITINVOICE: 'tuev-audit-invoice',\r\n OUMasterDataAndProperties: 'ou-masterdata-and-properties'\r\n };\r\n\r\n Enums.linking = {\r\n And: 0,\r\n Or: 1\r\n };\r\n\r\n Enums.operators = {\r\n Equal: { Value: 0, Text: '=' },\r\n Unequal: { Value: 1, Text: '≠' },\r\n Less: { Value: 2, Text: '<' },\r\n LessOrEqual: { Value: 3, Text: '≤' },\r\n Greater: { Value: 4, Text: '>' },\r\n GreaterOrEqual: { Value: 5, Text: '≥' }\r\n };\r\n\r\n Enums.CorrectiveActionsGrouping = {\r\n None: 0,\r\n Rating: 1,\r\n Responsibility: 2,\r\n State: 3,\r\n Accountability: 4,\r\n Consultability: 5,\r\n Informed: 6\r\n };\r\n\r\n Enums.PrintOptionsGroups = {\r\n CoveringPage: 0,\r\n RecordData: 1,\r\n Formatting: 2,\r\n WeightedForms: 3,\r\n CorrectiveActions: 4\r\n };\r\n\r\n Enums.DatePickerTypes = {\r\n Creation: 0,\r\n Modification: 1,\r\n Deadline: 2\r\n };\r\n\r\n Enums.KeyCodes = {\r\n Backspace: 8,\r\n Tab: 9,\r\n Enter: 13,\r\n Shift: 16,\r\n Ctrl: 17,\r\n Alt: 18,\r\n Pause: 19,\r\n CapsLock: 20,\r\n Escape: 27,\r\n Space: 32,\r\n PageUp: 33,\r\n PageDown: 34,\r\n End: 35,\r\n Home: 36,\r\n Left: 37,\r\n Up: 38,\r\n Right: 39,\r\n Down: 40,\r\n LeftWindowKey: 91,\r\n RightWindowKey: 92,\r\n SelectKey: 93,\r\n F1: 112,\r\n F2: 113,\r\n F3: 114,\r\n F4: 115,\r\n F5: 116,\r\n F6: 117,\r\n F7: 118,\r\n F8: 119,\r\n F9: 120,\r\n F10: 121,\r\n F11: 122,\r\n F12: 123,\r\n NumLock: 144,\r\n ScrollLock: 145,\r\n Semicolon: 186,\r\n Comma: 188,\r\n A: 65,\r\n C: 67\r\n };\r\n\r\n Enums.SearchTypes = {\r\n Searchfilter: 'Searchfilter',\r\n Issues: 'Issues',\r\n CreatedBy: 'CreatedBy',\r\n ModifiedBy: 'ModifiedBy',\r\n Title: 'Title',\r\n Description: 'Description',\r\n Ident: 'Ident',\r\n CustomIdent: 'CustomIdent',\r\n ElementCodings: 'ElementCodings',\r\n IssueTypes: 'IssueTypes',\r\n Tasks: 'Tasks',\r\n Forms: 'Forms',\r\n Resubmissions: 'Resubmissions',\r\n Notes: 'Notes',\r\n Disturbances: 'Disturbances',\r\n Inspections: 'Inspections',\r\n Comments: 'Comments',\r\n Investigations: 'Investigation',\r\n Cached: 'Cached',\r\n Cached_Title: 'Cached_Title',\r\n Cached_Descriptions: 'Cached_Descriptions',\r\n Cached_ElementCodings: 'Cached_ElementDescriptions',\r\n CachedTypes: 'CachedTypes',\r\n Rooms: 'Rooms',\r\n Analysis: 'Analysis',\r\n Changemode: 'Changemode',\r\n Changemode_Rooms: 'Changemode_Rooms',\r\n Changemode_Resubmissions: 'Changemode_Resubmissions',\r\n Changemode_Items: 'Changemode_Items',\r\n Changemode_Groups: 'Changemode_Groups',\r\n Changemode_Forms: 'Changemode_Forms',\r\n Changemode_FormTemplates: 'Changemode_FormTemplates',\r\n Changemode_Files: 'Changemode_Files',\r\n Changemode_System: 'System',\r\n Changemode_Schedules: 'Changemode_Schedules',\r\n Changemode_Priorities: 'Changemode_Priorities',\r\n Changemode_Categories: 'Changemode_Categories',\r\n Changemode_Classifications: 'Changemode_Classifications',\r\n Changemode_Keywords: 'Changemode_Keywords',\r\n Changemode_Status: 'Changemode_Status',\r\n ExactIdent: 'ExactIdent',\r\n Recorditems: 'Recorditems'\r\n };\r\n\r\n Enums.IssueProcessingStatus = {\r\n OK: 0,\r\n Warning: 1,\r\n Overdue: 2,\r\n };\r\n\r\n /* bitwise options x^2 */\r\n Enums.FrequencySubdayTypes = {\r\n OnceADay: 1,\r\n RepeatedMinutely: 4,\r\n RepeatedHourly: 8,\r\n RepeatOnStateChange: 16\r\n };\r\n\r\n /* bitwise options x^2 */\r\n Enums.FrequencyTypes = {\r\n Daily: 4,\r\n Weekly: 8,\r\n Monthly: 16,\r\n MonthlyRelative: 32,\r\n Yearly: 64,\r\n YearlyRelative: 128\r\n };\r\n\r\n Enums.Weekdays = {\r\n Sunday: 1,\r\n Monday: 2,\r\n Tuesday: 3,\r\n Wednesday: 4,\r\n Thursday: 5,\r\n Friday: 6,\r\n Saturday: 7\r\n };\r\n\r\n Enums.Months = {\r\n January: 1,\r\n February: 2,\r\n March: 3,\r\n April: 4,\r\n May: 5,\r\n June: 6,\r\n July: 7,\r\n August: 8,\r\n September: 9,\r\n October: 10,\r\n November: 11,\r\n December: 12\r\n };\r\n\r\n Enums.PeriodTarget = {\r\n Recording: 0,\r\n IssueCreation: 1,\r\n IssueModification: 2,\r\n IssueDeadline: 3\r\n };\r\n\r\n Enums.FontSizeType = {\r\n Small: 0,\r\n Medium: 1,\r\n Large: 2\r\n };\r\n\r\n Enums.Orientation = {\r\n Automatic: 0,\r\n Potrait: 1,\r\n Landscape: 2\r\n };\r\n\r\n Enums.CustomMenuItemActionType = {\r\n ShowCalendar: 0,\r\n ShowIssueReport: 1,\r\n ShowCheckpoints: 2,\r\n OpenSchedulingWindow: 3,\r\n OpenFormWindow: 4,\r\n ShowInformation: 5,\r\n ShowFloorPlan: 6,\r\n ShowBluetoothSettings: 7,\r\n Link: 8,\r\n ShowIndividualData: 9,\r\n ShowScaleSettings: 10,\r\n ShowDisturbancesFromRecordings: 11,\r\n ShowSchedulingOverview: 12,\r\n ShowRecordedFiles: 13,\r\n ShowNews: 14,\r\n ShowDashboardOffice: 15,\r\n ShowIssueArchive: 16\r\n };\r\n\r\n Enums.CustomMenuItemSystemID = {\r\n DashboardOffice: 'DashboardOffice',\r\n Information: 'Information',\r\n Parameters: 'Parameters',\r\n IssueReport: 'IssueReport',\r\n DisturbancesFromRecordings: 'DisturbancesFromRecordings',\r\n IssueArchive: 'IssueArchive',\r\n SchedulingOverview: 'SchedulingOverview',\r\n RecordedFiles: 'RecordedFilesOverview',\r\n News: 'News'\r\n };\r\n\r\n Enums.ImageSize = {\r\n Small: 0,\r\n Normal: 1,\r\n Large: 2\r\n };\r\n\r\n Enums.TemporaryDeviationOffsetType = {\r\n Minute: 0,\r\n Hour: 1,\r\n Day: 2\r\n };\r\n\r\n Enums.HttpActionType = {\r\n Read: 'read',\r\n Write: 'write',\r\n Delete: 'delete',\r\n SendMails: 'send-mails'\r\n };\r\n\r\n Enums.ModificationType = {\r\n NotModified: 0,\r\n Added: 1,\r\n Edited: 2,\r\n Deleted: 3,\r\n Moved: 4,\r\n EditedAndMoved: 5\r\n };\r\n\r\n Enums.StatusState = {\r\n All: 0,\r\n Open: 1,\r\n Closed: 2\r\n };\r\n\r\n Enums.HttpStatusCode = {\r\n Accepted: 202,\r\n Bad_Gateway: 502,\r\n Bad_Request: 400,\r\n Conflict: 409,\r\n Continue: 100,\r\n Created: 201,\r\n Expectation_Failed: 417,\r\n Failed_Dependency: 424,\r\n Forbidden: 403,\r\n Gateway_Timeout: 504,\r\n Gone: 410,\r\n Http_Version_Not_Supported: 505,\r\n Insufficient_Space_On_Resource: 419,\r\n Insufficient_Storage: 507,\r\n Internal_Server_Error: 500,\r\n Length_Required: 411,\r\n Locked: 423,\r\n Method_Failure: 420,\r\n Method_Not_Allowed: 405,\r\n Moved_Permanently: 301,\r\n Moved_Temporarily: 302,\r\n Multi_Status: 207,\r\n Multiple_Choices: 300,\r\n Network_Authentication_Required: 511,\r\n No_Content: 204,\r\n Non_Authoritative_Information: 203,\r\n Not_Acceptable: 406,\r\n Not_Found: 404,\r\n Not_Implemented: 501,\r\n Not_Modified: 304,\r\n Ok: 200,\r\n Partial_Content: 206,\r\n Payment_Required: 402,\r\n Precondition_Failed: 412,\r\n Precondition_Required: 428,\r\n Processing: 102,\r\n Proxy_Authentication_Required: 407,\r\n Request_Header_Fields_Too_Large: 431,\r\n Request_Timeout: 408,\r\n Request_Too_Long: 413,\r\n Request_Uri_Too_Long: 414,\r\n Requested_Range_Not_Satisfiable: 416,\r\n Reset_Content: 205,\r\n See_Other: 303,\r\n Service_Unavailable: 503,\r\n Switching_Protocols: 101,\r\n Temporary_Redirect: 307,\r\n Too_Many_Requests: 429,\r\n Unauthorized: 401,\r\n Unprocessable_Entity: 422,\r\n Unsupported_Media_Type: 415,\r\n Use_Proxy: 305\r\n }\r\n\r\n Enums.processType = {\r\n Custom: 0,\r\n Created: 1,\r\n Edited: 2\r\n };\r\n\r\n Enums.processActionType = {\r\n Email: 0,\r\n PDF: 1,\r\n Responsibilities: 2,\r\n ShareCorrectiveActions: 3\r\n };\r\n\r\n Enums.notificationType = {\r\n IssueCreated: 1,\r\n IssueModified: 2,\r\n IssueCommented: 3,\r\n IssueReminder: 4,\r\n IssueArchived: 5,\r\n IssueExpired: 6,\r\n RecorditemCreated: 7,\r\n FormIssueModified: 8,\r\n RecorditemOverdue: 9,\r\n FormIssueArchived: 10\r\n };\r\n\r\n Enums.UserImport = {\r\n Errors: {\r\n AlreadyExist: 'already exists',\r\n AlreadyExistsInFile: 'already exists in file',\r\n DoesNotExist: 'does not exist',\r\n IsInvalid: 'is invalid',\r\n ContainsInvalidLetters: 'contains invalid letters',\r\n WrongLicenseCombination: 'wrong Role/User license combination',\r\n IsNotGiven: 'is not given',\r\n PasswordPolicyNotApplied: 'Password policy is not applied',\r\n },\r\n Username: 'Username',\r\n Password: 'Password',\r\n FirstName: 'FirstName',\r\n LastName: 'LastName',\r\n EmailAddress: 'EmailAddress',\r\n UserLicenseType: 'UserLicenseType',\r\n LicenseType: 'LicenseType',\r\n Role: 'Role',\r\n OrganisationUnit: 'OrganisationUnit'\r\n };\r\n\r\n Enums.ChangeCommentRequiredType = {\r\n No: 0,\r\n OnChange: 1,\r\n OnSet: 2,\r\n OnChangeOrSet: 3\r\n };\r\n\r\n Enums.StatusChangeTiming = {\r\n Offset: 0,\r\n Time: 1\r\n };\r\n\r\n Enums.AutomaticStatusChangeOffsetType = {\r\n Minutes: 0,\r\n Hours: 1,\r\n Days: 2,\r\n Months: 3,\r\n Years: 4\r\n };\r\n\r\n /**\r\n * Stellt Konstanten bereit, welche den ErrorCode bei einem Forbidden-Response repräsentieren.\r\n */\r\n Enums.ForbiddenResponseErrorCode = {\r\n /**\r\n * Gibt an, dass der Nutzer nicht über die benötigten Rechte verfügt.\r\n */\r\n InsufficientRights: 0,\r\n /**\r\n * Gibt an, dass der Typ der hochgeladenen Datei nicht erlaubt war.\r\n */\r\n FileType: 1,\r\n /**\r\n * Gibt an, dass der Request auf Grund fehlender Lizenzen nicht erlaubt ist.\r\n */\r\n MissingLicense: 2,\r\n /**\r\n * Gibt an, dass der Request auf Grund fehlendem Root-Element nicht erlaubt ist.\r\n */\r\n MissingRootElement: 3\r\n };\r\n\r\n /**\r\n * Stellt Konstanten für die vom System vorgebenen Rollenrechte bereit.\r\n */\r\n Enums.Rights = {\r\n /**\r\n * Stellt Rechte für die Durchführung von Erfassungen bereit.\r\n */\r\n RecordingRights: {\r\n /**\r\n * Daten adhoc erfassen\r\n */\r\n AdhocRecording: 'ADHOCERF',\r\n /**\r\n * Erfasste Werte ändern\r\n */\r\n ModifyRecordedValues: 'EBE',\r\n /**\r\n * Dateien an Erfassungen löschen\r\n */\r\n DeleteAdditionalRecorditemFiles: 'DRF',\r\n /**\r\n * Stammdaten bearbeiten\r\n */\r\n ModifyMasterdata: 'EMD',\r\n /**\r\n * Prüfgruppen entsperren\r\n */\r\n UnlockRecordings: 'ULR',\r\n /**\r\n * Erfassungen löschen\r\n */\r\n DeleteRecorditems: 'REC-DELETE'\r\n },\r\n /**\r\n * Stellt Rechte für die Kommentar-/Dokumentionsfunktion bereit.\r\n */\r\n DocumentationRights: {\r\n /**\r\n * Kommentare erstellen / bearbeiten / löschen\r\n */\r\n CreateAndModifyIssueComments: 'CMC',\r\n /**\r\n * Maßnahmen am Prüfpunkt erstellen / bearbeiten\r\n */\r\n CreateAndModifyActionIssue: 'CMC-ISSUE',\r\n /**\r\n * Dateien an Erfassungen erstellen / bearbeiten\r\n */\r\n CreateAndModifyAdditionalRecordingFiles: 'CMC-PHOTO',\r\n /**\r\n * Kommentare am Prüfpunkt erstellen / bearbeiten\r\n */\r\n CreateAndModifyRecordingComments: 'CMC-COMMENT',\r\n /**\r\n * Kommentare anderer Benutzer bearbeiten und löschen\r\n */\r\n ModifyOrDeleteCommentsOfOtherUsers: 'CMC-COMMENT-DELETE-OTHERS',\r\n /**\r\n * Dateien an Erfassungen löschen\r\n */\r\n DeleteAdditionalRecordingFiles: 'DRF'\r\n },\r\n /**\r\n * Stellt Rechte für den Aktuell-Modus im Office bereit.\r\n */\r\n CurrentModeRights: {\r\n /**\r\n * Auswertungen erstellen / bearbeiten / löschen\r\n */\r\n ReportQueryModifications: 'CMSQ',\r\n /**\r\n * Synchronisationsübersicht anzeigen\r\n */\r\n ShowSyncOverview: 'SSO',\r\n /**\r\n * Stammdaten exportieren\r\n */\r\n ExportMasterData: 'EXMD',\r\n /**\r\n * Alle Pläne anzeigen lassen\r\n */\r\n ShowAllSchedulings: 'SAS',\r\n /**\r\n * Darf alle Formulare sehen\r\n */\r\n CreateAnyForm: 'MCUF',\r\n /**\r\n * Darf seine Sitzungen verwalten\r\n */\r\n ManageSessions: 'MS'\r\n },\r\n /**\r\n * Stellt Rechte für den Änderungsmodus im Office bereit.\r\n */\r\n ModificationModeRights: {\r\n /**\r\n * Umschalten in den Änderungsmodus\r\n */\r\n AccessEditMode: 'AEM',\r\n /**\r\n * Berechtigungen setzen\r\n */\r\n ModifyPermissions: 'CMU'\r\n },\r\n /**\r\n * Stellt Rechte für die Bearbeitung von Vorgängen bereit.\r\n */\r\n IssueRights: {\r\n /**\r\n * Statuswechsel bei unvollständigen Erfassungen\r\n */\r\n ChangeStateOfIncompleteIssues: 'CET',\r\n /**\r\n * Alle Vorgänge anzeigen lassen\r\n */\r\n ShowAllIssues: 'SAI',\r\n /**\r\n * Selbst erstellte / bearbeitete Vorgänge anzeigen lassen\r\n */\r\n ShowSelfCreatedOrModifiedIssues: 'SCMI',\r\n /**\r\n * Vorgänge allen Benutzern und Teams zuweisen\r\n */\r\n AllowAssigningAllUsersToIssues: 'AAUAR',\r\n /**\r\n * Nicht erfasste Teilproben löschen\r\n */\r\n DeleteSubsamples: 'DSS',\r\n /**\r\n * Vorgänge erstellen / bearbeiten\r\n */\r\n Issues_CreateOrModifyIssues: 'TMFT',\r\n /**\r\n * Einzelaufgaben\r\n */\r\n Issues_CreateOrModifyTasks: 'TMFT-TASKS',\r\n /**\r\n * Formulare\r\n */\r\n Issues_CreateOrModifyForms: 'TMFT-FORMS',\r\n /**\r\n * Notizen\r\n */\r\n Issues_CreateOrModifyNotes: 'TMFT-NOTES',\r\n /**\r\n * Störmeldungen\r\n */\r\n Issues_CreateOrModifyDisturbances: 'TMFT-DISTURBANCES',\r\n /**\r\n * Begehungen\r\n */\r\n Issues_CreateOrModifyInspections: 'TMFT-INSPECTIONS',\r\n /**\r\n * Externe Aufträge\r\n */\r\n Issues_CreateOrModifyInvestigations: 'TMFT-INVESTIGATIONS',\r\n /**\r\n * Geplante Aufgaben\r\n */\r\n Issues_CreateOrModifySchedulings: 'TMFT-SCHEDULINGS',\r\n /**\r\n * In Störmeldung wandeln\r\n */\r\n Issues_ConvertTaskToDisturbance: 'TMFT-CONVERT-TO-DISTURBANCE',\r\n /**\r\n * In Aufgabe wandeln\r\n */\r\n Issues_ConvertIssueToTask: 'TMFT-CONVERT-TO-TASK',\r\n /**\r\n * Notiz aktivieren\r\n */\r\n IssueProperties_ActivateNote: 'TMFT-ACTIVATE',\r\n /**\r\n * Klassifizierungen bearbeiten\r\n */\r\n IssueProperties_Classifications: 'TMFT-CLASSIFICATIONS',\r\n /**\r\n * Kontakte bearbeiten\r\n */\r\n IssueProperties_Contacts: 'TMFT-CONTACTS',\r\n /**\r\n * Kontakte bearbeiten\r\n */\r\n IssueProperties_ContactGroups: 'TMFT-CONTACTGROUPS',\r\n /**\r\n * Indiv. ID bearbeiten\r\n */\r\n IssueProperties_CustomId: 'TMFT-CUSTOMID',\r\n /**\r\n * Notiz deaktivieren\r\n */\r\n IssueProperties_DeactivateNote: 'TMFT-DEACTIVATE',\r\n /**\r\n * Termin bearbeiten\r\n */\r\n IssueProperties_Deadline: 'TMFT-DEADLINE',\r\n /**\r\n * Beschreibung bearbeiten\r\n */\r\n IssueProperties_Description: 'TMFT-DESCRIPTION',\r\n /**\r\n * Aufwandsschätzung bearbeiten\r\n */\r\n IssueProperties_EstimatedEffort: 'TMFT-ESTIMATEDEFFORT',\r\n /**\r\n * Dateien bearbeiten\r\n */\r\n IssueProperties_Files: 'TMFT-FILES',\r\n /**\r\n * Schlagwörter bearbeiten\r\n */\r\n IssueProperties_Keywords: 'TMFT-KEYWORDS',\r\n /**\r\n * Organisationseinheit bearbeiten\r\n */\r\n IssueProperties_Location: 'TMFT-LOCATION',\r\n /**\r\n * Priorität bearbeiten\r\n */\r\n IssueProperties_Priority: 'TMFT-PRIORITY',\r\n /**\r\n * Erinnerung bearbeiten\r\n */\r\n IssueProperties_Reminding: 'TMFT-REMINDING',\r\n /**\r\n * Benutzer & Teams bearbeiten\r\n */\r\n IssueProperties_Responsibilities: 'TMFT-RESPONSIBILITIES',\r\n /**\r\n * Status bearbeiten\r\n */\r\n IssueProperties_State: 'TMFT-STATE',\r\n /**\r\n * Bezeichnung bearbeiten\r\n */\r\n IssueProperties_Title: 'TMFT-TITLE'\r\n }\r\n };\r\n\r\n Enums.Investigations = {\r\n /**\r\n * Gibt an, in welchem Zustand sich ein externer Auftrag aktuell befindet.\r\n */\r\n Status: {\r\n /**\r\n * Offen für die Bearbeitung\r\n */\r\n Open: 0,\r\n /**\r\n * Abgeschlossen, aber Daten noch nicht zurücksynchronisiert\r\n */\r\n Finished: 1,\r\n /**\r\n * Erfasste Daten wurden mit dem Mandanten synchronisiert\r\n */\r\n Pulled: 2,\r\n /**\r\n * Neuer Auftrag wurde noch nicht zum Trustservice synchronisiert\r\n */\r\n Unsynced: 3,\r\n /**\r\n * Ein Löschen des Auftrags wurde angefordert\r\n */\r\n CancellationRequested: 4,\r\n /**\r\n * Der Auftrag wurde vom Trustservice entfernt\r\n */\r\n Cancelled: 5,\r\n /**\r\n * Bei der Übertragung des Auftrags trat ein Fehler auf\r\n */\r\n Error: 6\r\n },\r\n /**\r\n * Treten Fehler bei der Synchronisation auf, lassen diese sich hierüber näher bestimmen.\r\n */\r\n Error: {\r\n /**\r\n * Die am Formular hinterlegte Eigenschaft für die Bestimmung der E-Mail-Empfänger fehlt\r\n */\r\n MissingAdditionalProperty: 0,\r\n /**\r\n * Dem externen Auftrag wurde kein Plan zugeordnet\r\n */\r\n MissingScheduling: 1,\r\n /**\r\n * Es wurden keine Empfänger für den externen Auftrag festgelegt\r\n */\r\n NoRecipients: 2,\r\n /**\r\n * Beim Hochladen des externen Auftrags kam es zu einem Fehler\r\n */\r\n UploadError: 3,\r\n /**\r\n * Beim Herunterladen des externen Auftrags kam es zu einem Fehler\r\n */\r\n DownloadError: 4,\r\n /**\r\n * In der Konfiguration des externen Auftrags wurde kein E-Mail-Template angegeben\r\n */\r\n NoMailTemplateConfigured: 5\r\n }\r\n };\r\n\r\n Enums.UpdateNotificationAction = {\r\n MarkAsRead: 0,\r\n MarkAllAsRead: 1\r\n };\r\n\r\n Enums.CenterTreeSearchResultsRepresentation = {\r\n Tree: 'tree',\r\n ResultsOnlyList: 'results-only-list'\r\n };\r\n\r\n return (global.Enums = Enums);\r\n})(window);","/**\r\n * @require ./elements.js\r\n * @require ./scheduling.js\r\n * @require ../misc/enums.js\r\n */\r\n(function (global) {\r\n /**\r\n * @property {ElementLoader} DataManager.OrganizationUnitLoader\r\n * @property {ElementLoader} DataManager.FormLoader\r\n * @property {ElementLoader} DataManager.ObjectTemplateLoader\r\n * @property {ElementLoader} DataManager.CheckpointGroupTemplateLoader\r\n * @property {ElementLoader} DataManager.MasterdataTemplateLoader\r\n * @property {SchedulingLoader} DataManager.SchedulingLoader\r\n * @constructor\r\n */\r\n var DataManager = function () {\r\n this.OrganizationUnitLoader = new Tools.ElementLoader({\r\n Types: [Enums.elementType.Root, Enums.elementType.Location]\r\n });\r\n\r\n this.FormLoader = new Tools.ElementLoader({\r\n Types: [Enums.elementType.Form]\r\n });\r\n\r\n this.ObjectTemplateLoader = new Tools.ElementLoader({\r\n Types: [Enums.elementType.ObjectTemplate],\r\n WithPrototypes: true,\r\n WithDescendants: true\r\n });\r\n\r\n this.CheckpointGroupTemplateLoader = new Tools.ElementLoader({\r\n Types: [Enums.elementType.CheckpointGroupTemplate],\r\n WithPrototypes: true,\r\n WithDescendants: true\r\n });\r\n\r\n this.MasterdataTemplateLoader = new Tools.ElementLoader({\r\n Types: [Enums.elementType.MasterdataTemplate],\r\n WithPrototypes: true,\r\n WithDescendants: true\r\n });\r\n\r\n this.SchedulingLoader = new Tools.SchedulingLoader();\r\n };\r\n\r\n /**\r\n * Setzt die Daten sämtlicher Loader zurück.\r\n */\r\n DataManager.prototype.Reset = function () {\r\n this.OrganizationUnitLoader.Reset();\r\n this.FormLoader.Reset();\r\n this.ObjectTemplateLoader.Reset();\r\n this.CheckpointGroupTemplateLoader.Reset();\r\n this.MasterdataTemplateLoader.Reset();\r\n this.SchedulingLoader.Reset();\r\n };\r\n\r\n global.DataManager = new DataManager();\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ../tools.js\r\n */\r\n(function (global) {\r\n /**\r\n * @typedef ContextOptions\r\n * @property {object} issue\r\n * @property {object} form\r\n * @property {string} ouIdentifier\r\n * @property {object} additionalInformation\r\n */\r\n\r\n /**\r\n * @param {ContextOptions} options\r\n * @constructor\r\n */\r\n var FormulaFunctions = function (options) {\r\n if (!options) {\r\n throw new Error('options missing');\r\n }\r\n\r\n this.Context = {};\r\n this.UpdateContext(options);\r\n };\r\n\r\n /**** Öffentliche Methoden ****/\r\n\r\n /**\r\n * @param {ContextOptions} options\r\n */\r\n FormulaFunctions.prototype.UpdateContext = function (options) {\r\n if (!options) {\r\n return;\r\n }\r\n\r\n if (options.issue) {\r\n this.Context.Issue = options.issue;\r\n }\r\n\r\n if (options.form) {\r\n this.Context.Form = options.form;\r\n }\r\n\r\n if (!!options.ouIdentifier) {\r\n this.Context.OuIdentifier = options.ouIdentifier;\r\n }\r\n\r\n if (options.additionalInformation) {\r\n this.Context.AdditionalInformation = options.additionalInformation;\r\n }\r\n };\r\n\r\n FormulaFunctions.prototype.GetFunction = function (key) {\r\n var me = this;\r\n\r\n if (!this.keyMap) {\r\n this.keyMap = Tools.reduce(Object.keys(this), function (key, dict) {\r\n dict[key.toLowerCase()] = me[key];\r\n\r\n return dict;\r\n }, {});\r\n }\r\n\r\n return this.keyMap[key.toLowerCase()];\r\n };\r\n\r\n /**** Helper-Methoden ****/\r\n\r\n var filenameRegex = /[~\"#%&*:<>?\\/\\\\{|}]/gi;\r\n\r\n function getResubmissionitemForElement(oid, subsamplenumber) {\r\n if (!this.Context.Issue || !(this.Context.Issue.Resubmissionitems instanceof Array)) {\r\n return null;\r\n }\r\n\r\n if (Tools.isNumber(subsamplenumber) && subsamplenumber > 1) {\r\n return Tools.getFirst(this.Context.Issue.Resubmissionitems, function (resubmissionitem) {\r\n return resubmissionitem.ElementOID === oid && (resubmissionitem.Row || 1) === subsamplenumber;\r\n });\r\n }\r\n\r\n return Tools.getFirst(this.Context.Issue.Resubmissionitems, oid, 'ElementOID');\r\n }\r\n\r\n function getCurrentOrganizationUnit() {\r\n if (!!this.Context.OuIdentifier) {\r\n return DataManager.OrganizationUnitLoader.Data.DataMap[this.Context.OuIdentifier];\r\n }\r\n\r\n var currentIssue = this.Context.Issue;\r\n var isAdhoc = currentIssue == null ||\r\n currentIssue.AssignedElementOID == null ||\r\n currentIssue.Type === Enums.IssueType.Scheduling;\r\n\r\n if (!isAdhoc && !currentIssue) {\r\n return null;\r\n }\r\n\r\n return DataManager.OrganizationUnitLoader.Data.DataMap[isAdhoc ?\r\n CurrentEntity.OID :\r\n currentIssue.AssignedElementOID\r\n ];\r\n }\r\n\r\n /**** Implementierte Formelfunktionen ****/\r\n\r\n FormulaFunctions.prototype.Functions = {};\r\n\r\n FormulaFunctions.prototype.Functions.Value = function () {\r\n var resubmissionitem = (this.Context.AdditionalInformation || {}).Resubmissionitem;\r\n\r\n if (!resubmissionitem) {\r\n return null;\r\n }\r\n\r\n var element = resubmissionitem.Element;\r\n\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n var recorditem = getRecorditemForResubmissionitem(resubmissionitem.OID);\r\n\r\n if (!recorditem) {\r\n return null;\r\n }\r\n\r\n if (element.Type === Enums.elementType.ListBox) {\r\n return element.Structure && element.Structure.hasOwnProperty(recorditem.Value) ?\r\n element.Structure[recorditem.Value] :\r\n null;\r\n }\r\n\r\n return recorditem ? recorditem.Value : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.LastValue = function (oid) {\r\n throw 'Function not supported.';\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.SubsampleValue = function (oid, subsamplenumber) {\r\n var resubmissionitem = getResubmissionitemForElement.call(this, oid, subsamplenumber);\r\n\r\n if (!resubmissionitem) {\r\n throw 'Element does not exist.';\r\n }\r\n\r\n var recorditem = getRecorditemForResubmissionitem(resubmissionitem.OID);\r\n\r\n return recorditem ? recorditem.Value : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Subsamplenumber = function () {\r\n return (this.Context.AdditionalInformation || {}).Subsamplenumber || 1;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.MasterdataValue = function (groupTitle, cpTitle, locationIdentifier) {\r\n if (!groupTitle || !cpTitle) {\r\n return null;\r\n }\r\n\r\n var masterdataLocationIdentifier = !!locationIdentifier ? locationIdentifier : this.Context.OuIdentifier;\r\n var masterdataLocation = this.Context.AdditionalInformation && this.Context.AdditionalInformation.OusWithMasterdata ?\r\n this.Context.AdditionalInformation.OusWithMasterdata[masterdataLocationIdentifier] :\r\n null;\r\n\r\n if (masterdataLocation == null) {\r\n return null;\r\n }\r\n\r\n if (!(masterdataLocation.Parametergroups || []).length) {\r\n return null;\r\n }\r\n\r\n groupTitle = groupTitle.toLowerCase();\r\n cpTitle = cpTitle.toLowerCase();\r\n\r\n for (var gCnt = 0, gLen = masterdataLocation.Parametergroups.length; gCnt < gLen; gCnt++) {\r\n var group = masterdataLocation.Parametergroups[gCnt];\r\n\r\n if (group.Type !== Enums.elementType.MasterdataGroup) {\r\n continue;\r\n }\r\n\r\n if (!(group.Parameters || []).length) {\r\n continue;\r\n }\r\n\r\n if (group.Title.toLowerCase() !== groupTitle) {\r\n continue;\r\n }\r\n\r\n for (var pCnt = 0, pLen = group.Parameters.length; pCnt < pLen; pCnt++) {\r\n var cp = group.Parameters[pCnt];\r\n\r\n if (cp.Title.toLowerCase() !== cpTitle) {\r\n continue;\r\n }\r\n\r\n return cp.LastRecorditem ? cp.LastRecorditem.Value : null;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.ParentOrganizationUnit = function () {\r\n var currentOU = DataManager.OrganizationUnitLoader.Data.DataMap[this.Context.OuIdentifier];\r\n\r\n return currentOU && !!currentOU.ParentOID ? currentOU.ParentOID : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.DayDif = function (dateA, dateB) {\r\n if (!Tools.dateTime.isDate(dateA) || !Tools.dateTime.isDate(dateB)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return Math.ceil((dateB - dateA) / 1000 / 60 / 60 / 24);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.MonthDif = function (dateA, dateB) {\r\n if (!Tools.dateTime.isDate(dateA) || !Tools.dateTime.isDate(dateB)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n var months = (dateB.getFullYear() - dateA.getFullYear()) * 12;\r\n months -= dateA.getMonth();\r\n months += dateB.getMonth();\r\n\r\n var dayA = dateA.getDate();\r\n var dayB = dateB.getDate();\r\n\r\n if (dateA < dateB && dayA > dayB) {\r\n months -= 1;\r\n } else if (dateA > dateB && dayA < dayB) {\r\n months += 1;\r\n }\r\n\r\n return months;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.YearDif = function (dateA, dateB) {\r\n if (!Tools.dateTime.isDate(dateA) || !Tools.dateTime.isDate(dateB)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n var years = dateB.getFullYear() - dateA.getFullYear();\r\n var monthA = dateA.getMonth();\r\n var monthB = dateB.getMonth();\r\n var dayA = dateA.getDate();\r\n var dayB = dateB.getDate();\r\n\r\n if (dateA < dateB && (monthA > monthB || monthA === monthB && dayA > dayB)) {\r\n years -= 1;\r\n } else if (dateA > dateB && (monthA < monthB || monthA === monthB && dayA < dayB)) {\r\n years += 1;\r\n }\r\n\r\n return years;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.DayAdd = function (date, days) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n if (!Tools.isNumber(days)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.MonthAdd = function (date, months) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n if (!Tools.isNumber(months)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(date.getFullYear(), date.getMonth() + months, date.getDate());\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.YearAdd = function (date, years) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n if (!Tools.isNumber(years)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(date.getFullYear() + years, date.getMonth(), date.getDate());\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.EndOfMonth = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Date = function (year, month, day) {\r\n if (!Tools.isNumber(year) ||\r\n !Tools.isNumber(month) ||\r\n !Tools.isNumber(day)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(year, month - 1, day);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Today = function () {\r\n var now = new Date();\r\n\r\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Day = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return date.getDate();\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Month = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return date.getMonth() + 1;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Year = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return date.getFullYear();\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Time = function (hour, minute) {\r\n if (!Tools.isNumber(hour) ||\r\n !Tools.isNumber(minute)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n var date = new Date();\r\n date.setHours(hour);\r\n date.setMinutes(minute);\r\n\r\n return date.toLocaleTimeString().slice(0, -3);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Now = function () {\r\n return new Date();\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Hour = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return date.getHours();\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Minute = function (date) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n return date.getMinutes();\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.MinuteDif = function (dateA, dateB) {\r\n if (!Tools.dateTime.isDate(dateA) ||\r\n !Tools.dateTime.isDate(dateB)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n var hourA = dateA.getHours();\r\n var hourB = dateB.getHours();\r\n var minuteA = dateA.getMinutes();\r\n var minuteB = dateB.getMinutes();\r\n\r\n var minutes = (hourB - hourA) * 60;\r\n minutes += (minuteB - minuteA);\r\n\r\n return minutes >= 0 ? minutes : minutes + 24 * 60;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.HourDif = function (dateA, dateB) {\r\n if (!Tools.dateTime.isDate(dateA) ||\r\n !Tools.dateTime.isDate(dateB)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n var hourA = dateA.getHours();\r\n var hourB = dateB.getHours();\r\n var minuteA = dateA.getMinutes();\r\n var minuteB = dateB.getMinutes();\r\n var hours = hourB - hourA;\r\n\r\n if (minuteA > minuteB) {\r\n hours -= 1;\r\n }\r\n\r\n return hours >= 0 ? hours : hours + 24;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.MinuteAdd = function (date, minutes) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n if (!Tools.isNumber(minutes)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes() + minutes\r\n );\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.HourAdd = function (date, hours) {\r\n if (!Tools.dateTime.isDate(date)) {\r\n throw 'Invalid date.';\r\n }\r\n\r\n if (!Tools.isNumber(hours)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours() + hours,\r\n date.getMinutes()\r\n );\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.True = function () {\r\n return true;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.False = function () {\r\n return false;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.If = function (condition, trueValue, falseValue) {\r\n if (!Tools.isBool(condition)) {\r\n throw 'Invalid boolean.';\r\n }\r\n\r\n return condition ? trueValue : falseValue;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IsBlank = function (value) {\r\n return value === null || value === '';\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IfBlank = function (value, defaultValue) {\r\n return value === null || value === '' ? defaultValue : value;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Abs = function (value) {\r\n if (!Tools.isNumber(value)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return Math.abs(number);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Sqrt = function (value) {\r\n if (!Tools.isNumber(value) || value < 0) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return Math.sqrt(value);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Round = function (value, decimals) {\r\n if (!Tools.isNumber(value) ||\r\n !Tools.isNumber(decimals) ||\r\n decimals < 0) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Rounddown = function (value, decimals) {\r\n if (!Tools.isNumber(value) ||\r\n !Tools.isNumber(decimals) ||\r\n decimals < 0) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return Number(Math.floor(value + 'e' + decimals) + 'e-' + decimals);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Roundup = function (value, decimals) {\r\n if (!Tools.isNumber(value) ||\r\n !Tools.isNumber(decimals) ||\r\n decimals < 0) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n return Number(Math.ceil(value + 'e' + decimals) + 'e-' + decimals);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.FormTitle = function () {\r\n if (!Tools.IsSet(this.Context.Issue) || !Tools.IsSet(this.Context.Form)) {\r\n throw 'Issue or Form does not exist';\r\n }\r\n\r\n var title, issueForm;\r\n\r\n if (this.Context.Issue.AssignedFormOID && this.Context.Form.OID === this.Context.Issue.AssignedFormOID) {\r\n issueForm = this.Context.Form;\r\n\r\n if (Tools.IsSet(issueForm)) {\r\n title = issueForm.Title || i18next.t('misc.untitled');\r\n title.replace(filenameRegex, ''); // Unerlaubte Zeichen entfernen\r\n }\r\n }\r\n\r\n return Tools.IsSet(title) ? title : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueTypeAbbreviation = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n return Tools.GetIssueAbbreviation(this.Context.Issue);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueID = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n return this.Context.Issue.ID;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueRevision = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n return this.Context.Issue.Revision;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueCreationtimestamp = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n var date = this.Context.Issue.CreationTimestamp;\r\n\r\n if (!Tools.dateTime.isDate(this.Context.Issue.CreationTimestamp)) {\r\n try {\r\n date = new Date(date);\r\n } catch (e) {\r\n throw 'Invalid date.';\r\n }\r\n }\r\n\r\n return date;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueLastModificationtimestamp = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n var date = this.Context.Issue.ModificationTimestamp;\r\n\r\n if (!Tools.dateTime.isDate(this.Context.Issue.ModificationTimestamp)) {\r\n try {\r\n date = new Date(date);\r\n } catch (e) {\r\n throw 'Invalid date.';\r\n }\r\n }\r\n\r\n return date;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IssueTitle = function () {\r\n if (!Tools.IsSet(this.Context.Issue)) {\r\n throw 'Issue does not exist';\r\n }\r\n\r\n var title = this.Context.Issue.Title || i18next.t('misc.untitled');\r\n\r\n title = title.replace(filenameRegex, '');\r\n\r\n return Tools.IsSet(title) ? title : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.IndividualDataProperty = function (oid, propertyName) {\r\n var foreignValue = this.Value();\r\n\r\n if (!foreignValue) {\r\n return null;\r\n }\r\n\r\n var row = (this.Context.AdditionalInformation || {}).Row;\r\n var element = getResubmissionitemForElement.call(this, oid, row);\r\n\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n var schemaName = ((element.AdditionalSettings || {}).Types || [])[0] || '';\r\n\r\n if (!foreignValue.hasOwnProperty(schemaName)) {\r\n return null;\r\n }\r\n\r\n var selectedDataRecord = (foreignValue[schemaName] || [])[0];\r\n var dataRecord = IndividualData.GetEntity(schemaName, selectedDataRecord);\r\n\r\n if (!dataRecord) {\r\n return null;\r\n }\r\n\r\n var schema = IndividualData.GetSchema(schemaName);\r\n var propertyDefinition = Tools.getFirst(schema.Properties || [], propertyName, 'Name');\r\n\r\n if (propertyDefinition && propertyDefinition.Type === Enums.IndividualdataSchemaPropertyType.RichText) {\r\n return null;\r\n }\r\n\r\n return dataRecord.hasOwnProperty(propertyName) ? dataRecord[propertyName] : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.ReplaceCharacter = function (data, char, replacement) {\r\n if (!Tools.IsSet(data) || char == null || replacement == null) {\r\n return;\r\n }\r\n\r\n var metaCharRegex = new RegExp(/[\\[\\^\\$\\.\\?\\*\\+\\(\\)]/, '\\gi');\r\n var replaceRegex = new RegExp(char, '\\gi');\r\n\r\n if (char.match(metaCharRegex)) {\r\n replaceRegex = new RegExp(\"\\\\\" + char, '\\gi');\r\n }\r\n\r\n if (data instanceof Date) {\r\n var date = data;\r\n var isTimeNull = Tools.dateTime.isTimeOfDateNull(date);\r\n var dateString = Tools.dateTime.dateToString(date);\r\n\r\n data = isTimeNull ? dateString : (dateString + \" \" + date.toLocaleTimeString()).slice(0, -3);\r\n }\r\n\r\n if (!Tools.IsSet(replacement) || typeof replacement !== 'string') {\r\n replacement = '';\r\n }\r\n\r\n data = data.toString();\r\n data = data.replace(/\\s+/gi, ' ');\r\n\r\n return data.replace(replaceRegex, Tools.IsSet(replacement) ? replacement : '');\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.EntityProperty = function (propertyName, entity) {\r\n if (!propertyName || !entity) {\r\n return null;\r\n }\r\n\r\n return entity[propertyName];\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.OuPropertyValue = function (groupTitle, propertyTitle) {\r\n if (!propertyTitle) {\r\n return null;\r\n }\r\n\r\n var currentLocation = getCurrentOrganizationUnit.call(this);\r\n\r\n if (currentLocation == null) {\r\n return null;\r\n }\r\n\r\n if (!Tools.IsSet(currentLocation.AdditionalProperties)) {\r\n return null;\r\n }\r\n\r\n var resubmissionitem = (this.Context.AdditionalInformation || {}).Resubmissionitem;\r\n var element = resubmissionitem ? resubmissionitem.Element : { Type: Enums.elementType.Line };\r\n\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n var additionalProperties = currentLocation.AdditionalProperties || [];\r\n var group = {};\r\n\r\n if (groupTitle && typeof groupTitle === 'string') {\r\n group = Tools.getFirst(additionalProperties, function (property) {\r\n return property.Type === Enums.additionalPropertyType.Group &&\r\n (property.Title || '').toLowerCase() === groupTitle.toLowerCase();\r\n });\r\n }\r\n\r\n var properties = group != null && group.hasOwnProperty('Children') ?\r\n (group.Children || []) :\r\n additionalProperties;\r\n\r\n var additionalProperty = Tools.getFirst(properties, function (property) {\r\n return property.Type !== Enums.additionalPropertyType.Group &&\r\n (property.Title || '').toLowerCase() === propertyTitle.toLowerCase();\r\n });\r\n\r\n if (additionalProperty == null ||\r\n additionalProperty.Value == null ||\r\n additionalProperty.Value === '-/-') {\r\n return null;\r\n }\r\n\r\n var rawValue = additionalProperty.Value;\r\n\r\n if (additionalProperty.Type === Enums.additionalPropertyType.IndividualData) {\r\n if (typeof rawValue === 'object' && rawValue.hasOwnProperty(additionalProperty.SubType)) {\r\n var selectedEntities = rawValue[additionalProperty.SubType];\r\n\r\n if (selectedEntities instanceof Array && selectedEntities.length) {\r\n rawValue = selectedEntities\r\n .filter(function (id) {\r\n return IndividualData.GetEntity(additionalProperty.SubType, id) != null;\r\n });\r\n\r\n if (!rawValue.length) {\r\n rawValue = null;\r\n }\r\n } else {\r\n rawValue = null;\r\n }\r\n } else {\r\n rawValue = null;\r\n }\r\n }\r\n\r\n switch (element.Type) {\r\n case Enums.elementType.Line:\r\n case Enums.elementType.Memo:\r\n if (rawValue !== null) {\r\n if (additionalProperty.Type === Enums.additionalPropertyType.Text) {\r\n rawValue = Tools.unescapeHtml(rawValue);\r\n }\r\n\r\n if (additionalProperty.Type === Enums.additionalPropertyType.IndividualData) {\r\n var selectedIndividualdataEntities = $.map(rawValue, function (id) {\r\n return IndividualData.GetEntity(additionalProperty.SubType, id);\r\n }).filter(function (entity) {\r\n return entity != null;\r\n });\r\n\r\n var entityTitles = {};\r\n\r\n selectedIndividualdataEntities.sort(function (a, b) {\r\n if (!entityTitles.hasOwnProperty(a.ID)) {\r\n entityTitles[a.ID] = IndividualData.GetEntityTitle(additionalProperty.SubType, a.ID);\r\n }\r\n\r\n if (!entityTitles.hasOwnProperty(b.ID)) {\r\n entityTitles[b.ID] = IndividualData.GetEntityTitle(additionalProperty.SubType, b.ID);\r\n }\r\n\r\n var titleA = entityTitles[a.ID].toLowerCase();\r\n var titleB = entityTitles[b.ID].toLowerCase();\r\n\r\n if (titleA === titleB) {\r\n return 0;\r\n }\r\n\r\n return titleA > titleB ? 1 : -1;\r\n });\r\n\r\n selectedIndividualdataEntities = selectedIndividualdataEntities.map(function (item) {\r\n return IndividualData.GetEntityTitle(additionalProperty.SubType, item.ID);\r\n });\r\n\r\n return selectedIndividualdataEntities.join(', ');\r\n }\r\n }\r\n break;\r\n case Enums.elementType.Checkbox:\r\n case Enums.elementType.Time:\r\n return rawValue;\r\n case Enums.elementType.Date:\r\n if (rawValue instanceof Date) {\r\n return rawValue;\r\n }\r\n\r\n if (typeof rawValue === 'string') {\r\n return new Date(rawValue);\r\n }\r\n\r\n break;\r\n case Enums.elementType.Number:\r\n if (isNaN(rawValue)) {\r\n return null;\r\n }\r\n break;\r\n case Enums.elementType.IndividualData:\r\n if (rawValue !== null && additionalProperty.Type === Enums.additionalPropertyType.IndividualData) {\r\n var individualdataResult = {};\r\n\r\n individualdataResult[additionalProperty.SubType] = rawValue.map(function (item) {\r\n return item.ID;\r\n });\r\n\r\n return individualdataResult;\r\n }\r\n\r\n break;\r\n case Enums.elementType.EMailAddresses:\r\n var emailAddresses = typeof rawValue === 'string' ? rawValue.trim() : null;\r\n\r\n if (emailAddresses == null) {\r\n return null;\r\n }\r\n\r\n emailAddresses = emailAddresses.split(/[;,]+/);\r\n\r\n for (var i = 0; i < emailAddresses.length; i++) {\r\n emailAddresses[i] = emailAddresses[i].trim();\r\n }\r\n\r\n // doppelte Einträge und ungültige Email-Adressen entfernen\r\n emailAddresses = emailAddresses.filter(function (mail, index) {\r\n return Tools.IsValidMailAddress(mail) && emailAddresses.indexOf(mail) === index;\r\n });\r\n\r\n if ((emailAddresses || []).length === 0) {\r\n return null;\r\n }\r\n\r\n return emailAddresses;\r\n }\r\n\r\n return rawValue;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.OuIdentCode = function () {\r\n var currentLocation = getCurrentOrganizationUnit.call(this);\r\n var identcode = currentLocation ? currentLocation.Identcode : null;\r\n\r\n return identcode || null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.OuInternalIdentifier = function () {\r\n var currentLocation = getCurrentOrganizationUnit.call(this);\r\n\r\n return currentLocation ? currentLocation.OID : null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Contains = function (collection, value) {\r\n if (!(collection instanceof Array) || collection.length === 0) {\r\n return false;\r\n }\r\n\r\n if (value == null || value === '') {\r\n return false;\r\n }\r\n\r\n return collection.indexOf(value) > -1;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Length = function (value) {\r\n if (value == null || typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n return value.length;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Substring = function (value, startIndex, length) {\r\n if (value == null || typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n if (isNaN(startIndex) || startIndex < 0 || startIndex > (value.length - 1)) {\r\n return null;\r\n }\r\n\r\n if (isNaN(length) || length < 1) {\r\n return null;\r\n }\r\n\r\n return value.substr(startIndex, length);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.Split = function (value, separator) {\r\n if (value == null || typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n if (separator == null || typeof separator !== 'string') {\r\n return value;\r\n }\r\n\r\n if (value.indexOf('\\n') >= 0 || value.indexOf('\\t') >= 0) {\r\n // Aufteilung mit RegEx Erweiterung durchführen für \\n und \\t Applikation\r\n\r\n // besondere Zeichen escapen\r\n var specialChars = '\\\\^$*+?.()|{}[]';\r\n var rxText = [];\r\n for (var i = 0; i < separator.length; i++) {\r\n var ch = separator[i];\r\n\r\n // prüfen auf \\n und \\t und diese behalten\r\n if (ch == '\\\\' && separator.length > i + 1) {\r\n var nextCh = separator[i + 1];\r\n\r\n switch (nextCh) {\r\n case '\\\\':\r\n // \\ escape Character vorsetzen\r\n rxText.push('\\\\');\r\n // überspringe nächstes '\\' Zeichen\r\n i++;\r\n break;\r\n case 'n':\r\n // optionales \\r? für \\r?\\n vorsetzen\r\n rxText.push('\\\\');\r\n rxText.push('r');\r\n rxText.push('?');\r\n break;\r\n case 't':\r\n // keine weitere Aktion um \\t beizubehalten\r\n break;\r\n default:\r\n // \\ escape Character vorsetzen\r\n rxText.push('\\\\');\r\n }\r\n } else if (specialChars.indexOf(ch) >= 0) {\r\n // \\ escape Character vorsetzen\r\n rxText.push('\\\\');\r\n }\r\n\r\n rxText.push(ch);\r\n }\r\n\r\n // trennen mit RegEx\r\n return value.split(new RegExp(rxText.join('')));\r\n }\r\n\r\n // Text-Trennung ohne RegEx\r\n return value.split(separator);\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.ItemFromArray = function (value, index) {\r\n if (!(value instanceof Array)) {\r\n return null;\r\n }\r\n\r\n if (isNaN(index) || index < 0 || index > (value.length - 1)) {\r\n return null;\r\n }\r\n\r\n return value[index];\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.StructureValue = function (elementOID, valueIdentifier) {\r\n if (!Tools.IsValidGuid(elementOID)) {\r\n return null;\r\n }\r\n\r\n if (valueIdentifier == null) {\r\n return null;\r\n }\r\n\r\n var resubmissionitem = getResubmissionitemForElement.call(this, oid);\r\n\r\n if (!resubmissionitem) {\r\n throw 'Resubmissionitem does not exist.';\r\n }\r\n\r\n var element = resubmissionitem.Element;\r\n\r\n if (!element || !element.Structure) {\r\n return null;\r\n }\r\n\r\n if (valueIdentifier instanceof Array) {\r\n return valueIdentifier\r\n .map(function (identifier) {\r\n return element.Structure.hasOwnProperty(identifier) ?\r\n element.Structure[identifier] :\r\n null;\r\n })\r\n .filter(function (v) {\r\n return v != null;\r\n })\r\n .join(', ');\r\n }\r\n\r\n return element.Structure.hasOwnProperty(valueIdentifier) ?\r\n element.Structure[valueIdentifier] :\r\n null;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.RandomNumber = function (minimum, maximum) {\r\n if (isNaN(minimum) || isNaN(maximum)) {\r\n return null;\r\n }\r\n\r\n if (minimum >= maximum) {\r\n return null;\r\n }\r\n\r\n minimum = Math.ceil(minimum);\r\n maximum = Math.floor(maximum);\r\n\r\n return Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.WeekDay = function (date, returnType) {\r\n if (!Tools.dateTime.isValidDate(date) || isNaN(returnType) || returnType < 1 || returnType > 2) {\r\n return null;\r\n }\r\n\r\n var weekDay = date.getDay();\r\n\r\n if (returnType === 1) {\r\n return weekDay;\r\n }\r\n\r\n return weekDay === 0 ? 7 : weekDay;\r\n };\r\n\r\n FormulaFunctions.prototype.Functions.ParseToNumber = function (value) {\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n value = value.toString().replace(',', '.');\r\n\r\n if (isNaN(value)) {\r\n return null;\r\n }\r\n\r\n var result = parseFloat(value);\r\n\r\n return isNaN(result) ? null : result;\r\n };\r\n\r\n return (global.FormulaFunctions = FormulaFunctions);\r\n})(window.Tools || (window.Tools = {}));","/**\r\n * @require ../tools.js\r\n * @require tools.formula-methods.js\r\n */\r\n(function (global) {\r\n function Stack() {\r\n this._values = [];\r\n }\r\n\r\n Stack.prototype.isEmpty = function () {\r\n return this._values.length === 0;\r\n };\r\n\r\n Stack.prototype.push = function (value) {\r\n this._values.push(value);\r\n return this;\r\n };\r\n\r\n Stack.prototype.pop = function () {\r\n return this._values.pop();\r\n };\r\n\r\n Stack.prototype.peek = function () {\r\n return this.isEmpty() ? undefined : this._values[this._values.length - 1];\r\n };\r\n\r\n\r\n function OperatorToken(symbol, isUnary) {\r\n this._symbol = symbol;\r\n this._isUnary = isUnary || false;\r\n\r\n switch (symbol) {\r\n case '!':\r\n this._rightAssociative = true;\r\n this._precedence = 7;\r\n break;\r\n case '^':\r\n this._rightAssociative = true;\r\n this._precedence = 7;\r\n break;\r\n case '*':\r\n case '/':\r\n case '%':\r\n this._rightAssociative = false;\r\n this._precedence = 6;\r\n break;\r\n case '+':\r\n case '-':\r\n if (isUnary) {\r\n this._rightAssociative = true;\r\n this._precedence = 7;\r\n } else {\r\n this._rightAssociative = false;\r\n this._precedence = 5;\r\n }\r\n break;\r\n case '<':\r\n case '<=':\r\n case '>':\r\n case '>=':\r\n this._rightAssociative = false;\r\n this._precedence = 4;\r\n break;\r\n case '==':\r\n case '!=':\r\n this._rightAssociative = false;\r\n this._precedence = 3;\r\n break;\r\n case '&&':\r\n case '&':\r\n this._rightAssociative = false;\r\n this._precedence = 2;\r\n break;\r\n case '||':\r\n case '|':\r\n this._rightAssociative = false;\r\n this._precedence = 1;\r\n break;\r\n default:\r\n throw 'Unknown operator \"' + symbol + '\"';\r\n }\r\n }\r\n\r\n OperatorToken.prototype.getSymbol = function () {\r\n return this._symbol;\r\n };\r\n\r\n OperatorToken.prototype.isLeftAssociative = function () {\r\n return !this._rightAssociative;\r\n };\r\n\r\n OperatorToken.prototype.isRightAssociative = function () {\r\n return this._rightAssociative;\r\n };\r\n\r\n OperatorToken.prototype.isUnary = function () {\r\n return this._isUnary;\r\n };\r\n\r\n OperatorToken.prototype.isBinary = function () {\r\n return !this._isUnary;\r\n };\r\n\r\n OperatorToken.prototype.comparePrecedence = function (other) {\r\n return this._precedence - other._precedence;\r\n };\r\n\r\n OperatorToken.prototype.toString = function () {\r\n return this._symbol;\r\n };\r\n\r\n\r\n function FunctionToken(name, arity) {\r\n this._name = name;\r\n this._arity = arity || 0;\r\n }\r\n\r\n FunctionToken.prototype.getName = function () {\r\n return this._name;\r\n };\r\n\r\n FunctionToken.prototype.setName = function (name) {\r\n this._name = name;\r\n return this;\r\n };\r\n\r\n FunctionToken.prototype.getArity = function () {\r\n return this._arity;\r\n };\r\n\r\n FunctionToken.prototype.setArity = function (arity) {\r\n this._arity = arity;\r\n return this;\r\n };\r\n\r\n FunctionToken.prototype.toString = function () {\r\n return this._name;\r\n };\r\n\r\n\r\n function FunctionLeftParenthesisToken() {\r\n }\r\n\r\n FunctionLeftParenthesisToken.prototype.toString = function () {\r\n return '(';\r\n };\r\n\r\n\r\n function FunctionRightParenthesisToken() {\r\n }\r\n\r\n FunctionRightParenthesisToken.prototype.toString = function () {\r\n return ')';\r\n };\r\n\r\n\r\n function LeftParenthesisToken() {\r\n }\r\n\r\n LeftParenthesisToken.prototype.toString = function () {\r\n return '(';\r\n };\r\n\r\n\r\n function RightParenthesisToken() {\r\n }\r\n\r\n RightParenthesisToken.prototype.toString = function () {\r\n return ')';\r\n };\r\n\r\n\r\n function CommaToken() {\r\n }\r\n\r\n CommaToken.prototype.toString = function () {\r\n return ',';\r\n };\r\n\r\n\r\n function NumberToken(value) {\r\n this._value = value;\r\n }\r\n\r\n NumberToken.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n\r\n NumberToken.prototype.toString = function () {\r\n return this._value.toString();\r\n };\r\n\r\n\r\n function StringToken(value) {\r\n this._value = value || '';\r\n }\r\n\r\n StringToken.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n\r\n StringToken.prototype.toString = function () {\r\n return '\"' + this._value + '\"';\r\n };\r\n\r\n\r\n function PartialStringToken(value) {\r\n this._value = value || '';\r\n }\r\n\r\n PartialStringToken.prototype.getValue = function () {\r\n return this._value;\r\n };\r\n\r\n PartialStringToken.prototype.toString = function () {\r\n return '\"' + this._value;\r\n };\r\n\r\n\r\n function ReferenceToken(type, id) {\r\n this._type = type;\r\n this._id = id;\r\n }\r\n\r\n ReferenceToken.prototype.getType = function () {\r\n return this._type;\r\n };\r\n\r\n ReferenceToken.prototype.getId = function () {\r\n return this._id;\r\n };\r\n\r\n ReferenceToken.prototype.toString = function () {\r\n return '#' + this._type + '<' + this._id + '>';\r\n };\r\n\r\n ReferenceToken.prototype.getValue = function () {\r\n return this._id;\r\n };\r\n\r\n\r\n function WhitespaceToken() {\r\n }\r\n\r\n WhitespaceToken.prototype.toString = function () {\r\n return ' ';\r\n };\r\n\r\n\r\n function UnknownToken(value) {\r\n this._value = value;\r\n }\r\n\r\n UnknownToken.prototype.toString = function () {\r\n return this._value;\r\n };\r\n\r\n\r\n var _numberRegex = /[\\d.]/;\r\n var _alphaRegex = /[a-z]/i;\r\n var _alphanumericRegex = /[\\da-z_]/i;\r\n var _referenceRegex = /^#([\\a-z]+)<([\\da-z_-]+)>$/i;\r\n var dot = '.';\r\n\r\n\r\n /**\r\n * Filtert, bis auf den ersten, alle Punkte einer eingegebenen Zahl heraus, um die Gültigkeit der Eingabe sicherzustellen\r\n * @param value\r\n * @return {string}\r\n */\r\n function filterRedundantDots(value) {\r\n var newValue = value;\r\n\r\n if (value && value.contains('.') &&\r\n value.split('').filter(function (char) {\r\n return char === dot;\r\n }).length >= 2) {\r\n var pointCounter = 0;\r\n\r\n newValue = value.split('').filter(function (char) {\r\n if (char === dot) {\r\n pointCounter++;\r\n\r\n if (pointCounter > 1) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }).join('');\r\n }\r\n\r\n return newValue;\r\n }\r\n\r\n function tokenize(expression) {\r\n var tokens = [];\r\n var parenthesesStack = new Stack();\r\n var idx = 0;\r\n var lastIdx = expression.length - 1;\r\n var state = null;\r\n var remember = null;\r\n var char, nextChar, j, otherToken, match;\r\n\r\n while (idx <= lastIdx) {\r\n char = expression[idx];\r\n\r\n switch (state) {\r\n case 'WithinReference':\r\n if (char === '>') {\r\n match = _referenceRegex.exec(remember + char);\r\n\r\n if (match) {\r\n tokens.push(new ReferenceToken(match[1], match[2]));\r\n } else {\r\n tokens.push(new UnknownToken(remember + char));\r\n }\r\n\r\n state = null;\r\n remember = null;\r\n } else if (idx === lastIdx) {\r\n tokens.push(new UnknownToken(remember + char));\r\n state = null;\r\n remember = null;\r\n } else {\r\n remember += char;\r\n }\r\n break;\r\n case 'WithinString':\r\n if (char === '\"') {\r\n tokens.push(new StringToken(remember));\r\n state = null;\r\n remember = null;\r\n } else if (idx === lastIdx) {\r\n tokens.push(new PartialStringToken(remember + char));\r\n state = null;\r\n remember = null;\r\n } else {\r\n remember += char;\r\n }\r\n break;\r\n case 'WithinNumber':\r\n var fixDecimals = false;\r\n var isNumber = _numberRegex.test(char); // '.' ist erlaubt\r\n\r\n remember = filterRedundantDots(remember);\r\n\r\n if (isNumber) {\r\n if (idx !== lastIdx) {\r\n // Zeichen merken, da das Ende noch nicht erreicht ist\r\n remember += char;\r\n break;\r\n }\r\n\r\n if (char === dot || char === '0') {\r\n // Wenn das letzte Zeichen ein Punkt oder eine Null ist -> nicht entfernen! Eingabe merken\r\n fixDecimals = true;\r\n remember += char;\r\n } else {\r\n tokens.push(new NumberToken(Number(remember + char)));\r\n }\r\n\r\n if (!fixDecimals) {\r\n remember = null;\r\n state = null;\r\n break;\r\n }\r\n }\r\n\r\n if (!isNumber || char === dot || char === '0') {\r\n var floatTokens = [];\r\n remember = filterRedundantDots(remember);\r\n var numberValue = Number(remember);\r\n var hasDecimals = (numberValue - Math.floor(numberValue)) !== 0;\r\n\r\n if (remember && remember.contains(dot)) {\r\n if (remember[remember.length - 1] === dot) {\r\n // Wenn das letzte Zeichen vom remember ein Punkt ist, UnknownToken hinzufügen.\r\n floatTokens.push(new UnknownToken(dot));\r\n } else if (remember.length >= 3) {\r\n var decimalPart = remember.split(dot)[1];\r\n\r\n if (!hasDecimals) {\r\n // Für den Fall das z.B. \"4.0\" eingegeben wurde, damit die 0 und der Punkt nicht entfernt werden\r\n floatTokens.push(new UnknownToken(dot));\r\n }\r\n\r\n // Alle Nullen hinzufügen, die hinter der eingegebenen Kommazahl hinzugefügt wurden z.B. \"4.0100\".\r\n // Erklärung: die Zahl \"4.01\" wird als NumberToken hinzugefügt und alle Nullen dahinter werden als UnknownToken hinzugefügt.\r\n // Dadurch sind im Nachhinein z. B. Eingaben wie \"4.012300123\" möglich.\r\n for (var i = decimalPart.length - 1; i >= 0; i--) {\r\n var number = decimalPart[i];\r\n\r\n if (number !== '0') {\r\n break;\r\n }\r\n\r\n floatTokens.push(new UnknownToken(number));\r\n }\r\n }\r\n }\r\n\r\n tokens.push(new NumberToken(numberValue));\r\n tokens = tokens.concat(floatTokens);\r\n\r\n state = null;\r\n remember = null;\r\n\r\n if (!fixDecimals) {\r\n idx--;\r\n }\r\n }\r\n break;\r\n case 'WithinFunction':\r\n if (char === '(') {\r\n tokens.push(new FunctionToken(remember));\r\n tokens.push(new FunctionLeftParenthesisToken());\r\n parenthesesStack.push(new FunctionLeftParenthesisToken());\r\n state = null;\r\n } else if (!_alphanumericRegex.test(char)) {\r\n tokens.push(new FunctionToken(remember));\r\n state = null;\r\n remember = null;\r\n idx--;\r\n } else {\r\n remember += char;\r\n\r\n if (idx === lastIdx) {\r\n tokens.push(new FunctionToken(remember));\r\n state = null;\r\n remember = null;\r\n }\r\n }\r\n break;\r\n default:\r\n switch (char) {\r\n case ' ':\r\n tokens.push(new WhitespaceToken());\r\n break;\r\n case ',':\r\n tokens.push(new CommaToken());\r\n break;\r\n case '(':\r\n tokens.push(new LeftParenthesisToken());\r\n parenthesesStack.push(new LeftParenthesisToken());\r\n break;\r\n case ')':\r\n if (parenthesesStack.pop() instanceof FunctionLeftParenthesisToken) {\r\n tokens.push(new FunctionRightParenthesisToken());\r\n } else {\r\n tokens.push(new RightParenthesisToken());\r\n }\r\n break;\r\n case '#':\r\n state = 'WithinReference';\r\n remember = '';\r\n idx--;\r\n break;\r\n case '\"':\r\n if (idx === lastIdx) {\r\n tokens.push(new PartialStringToken());\r\n } else {\r\n state = 'WithinString';\r\n remember = '';\r\n }\r\n break;\r\n case '=':\r\n nextChar = idx < lastIdx ? expression[idx + 1] : null;\r\n\r\n if (nextChar === '=') {\r\n tokens.push(new OperatorToken('=='));\r\n idx++;\r\n } else {\r\n tokens.push(new UnknownToken(char));\r\n }\r\n break;\r\n case '!':\r\n nextChar = idx < lastIdx ? expression[idx + 1] : null;\r\n\r\n if (nextChar === '=') {\r\n tokens.push(new OperatorToken('!='));\r\n idx++;\r\n } else {\r\n tokens.push(new OperatorToken('!', true));\r\n }\r\n break;\r\n case '<':\r\n case '>':\r\n nextChar = idx < lastIdx ? expression[idx + 1] : null;\r\n\r\n if (nextChar === '=') {\r\n tokens.push(new OperatorToken(char + '='));\r\n idx++;\r\n } else {\r\n tokens.push(new OperatorToken(char));\r\n }\r\n break;\r\n case '&':\r\n nextChar = idx < lastIdx ? expression[idx + 1] : null;\r\n\r\n if (nextChar === '&') {\r\n tokens.push(new OperatorToken('&&'));\r\n idx++;\r\n } else {\r\n tokens.push(new OperatorToken('&'));\r\n }\r\n break;\r\n case '|':\r\n nextChar = idx < lastIdx ? expression[idx + 1] : null;\r\n\r\n if (nextChar === '|') {\r\n tokens.push(new OperatorToken('||'));\r\n idx++;\r\n } else {\r\n tokens.push(new OperatorToken('|'));\r\n }\r\n break;\r\n case '^':\r\n case '*':\r\n case '/':\r\n case '%':\r\n tokens.push(new OperatorToken(char));\r\n break;\r\n case '+':\r\n case '-':\r\n otherToken = null;\r\n j = tokens.length - 1;\r\n\r\n while (j >= 0) {\r\n if (!(tokens[j] instanceof WhitespaceToken)) {\r\n otherToken = tokens[j];\r\n break;\r\n }\r\n\r\n j--;\r\n }\r\n\r\n if (otherToken instanceof OperatorToken ||\r\n otherToken instanceof FunctionLeftParenthesisToken ||\r\n otherToken instanceof LeftParenthesisToken ||\r\n otherToken instanceof CommaToken) {\r\n tokens.push(new OperatorToken(char, true));\r\n } else {\r\n tokens.push(new OperatorToken(char));\r\n }\r\n break;\r\n case '0':\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n state = 'WithinNumber';\r\n remember = '';\r\n idx--;\r\n break;\r\n default:\r\n if (_alphaRegex.test(char)) {\r\n state = 'WithinFunction';\r\n remember = '';\r\n idx--;\r\n }\r\n break;\r\n }\r\n break;\r\n }\r\n\r\n idx++;\r\n }\r\n\r\n return tokens;\r\n }\r\n\r\n function stringify(tokens) {\r\n return tokens\r\n .map(function (token) {\r\n return token.toString();\r\n })\r\n .join('');\r\n }\r\n\r\n function convertInfixToRpn(tokens) {\r\n var output = [];\r\n var idx = 0;\r\n var lastIdx = tokens.length - 1;\r\n var tokenStack = new Stack();\r\n var arityStack = new Stack();\r\n var token, otherToken, arity;\r\n\r\n while (idx <= lastIdx) {\r\n token = tokens[idx];\r\n\r\n if (token instanceof OperatorToken) {\r\n while (true) {\r\n otherToken = tokenStack.peek();\r\n\r\n if (otherToken instanceof OperatorToken &&\r\n (otherToken.comparePrecedence(token) > 0 ||\r\n otherToken.comparePrecedence(token) === 0 &&\r\n otherToken.isLeftAssociative())) {\r\n output.push(tokenStack.pop());\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n tokenStack.push(token);\r\n } else if (token instanceof FunctionToken) {\r\n if (idx + 2 > lastIdx) {\r\n throw 'Unexpected end of input';\r\n }\r\n\r\n if (tokens[idx + 2] instanceof RightParenthesisToken ||\r\n tokens[idx + 2] instanceof FunctionRightParenthesisToken) {\r\n output.push(token);\r\n idx += 2;\r\n } else {\r\n arityStack.push(1);\r\n tokenStack.push(token);\r\n }\r\n } else if (token instanceof LeftParenthesisToken ||\r\n token instanceof FunctionLeftParenthesisToken) {\r\n tokenStack.push(token);\r\n } else if (token instanceof RightParenthesisToken ||\r\n token instanceof FunctionRightParenthesisToken) {\r\n while (true) {\r\n otherToken = tokenStack.pop();\r\n\r\n if (!otherToken) {\r\n throw 'Unbalanced parentheses';\r\n }\r\n\r\n if (otherToken instanceof LeftParenthesisToken ||\r\n otherToken instanceof FunctionLeftParenthesisToken) {\r\n if (tokenStack.peek() instanceof FunctionToken) {\r\n arity = arityStack.pop();\r\n output.push(tokenStack.pop().setArity(arity));\r\n }\r\n break;\r\n }\r\n\r\n output.push(otherToken);\r\n }\r\n } else if (token instanceof CommaToken) {\r\n arity = arityStack.pop();\r\n\r\n if (!arity) {\r\n throw 'Unexpected token ,';\r\n }\r\n\r\n arityStack.push(arity + 1);\r\n\r\n while (true) {\r\n otherToken = tokenStack.peek();\r\n\r\n if (!otherToken) {\r\n throw 'Invalid formula';\r\n }\r\n\r\n if (otherToken instanceof LeftParenthesisToken ||\r\n otherToken instanceof FunctionLeftParenthesisToken) {\r\n break;\r\n }\r\n\r\n output.push(tokenStack.pop());\r\n }\r\n } else if (token instanceof NumberToken ||\r\n token instanceof StringToken ||\r\n token instanceof ReferenceToken) {\r\n output.push(token);\r\n } else if (token instanceof PartialStringToken) {\r\n throw 'Unexpected end of input';\r\n } else if (token instanceof UnknownToken) {\r\n throw 'Unexpected token ' + token.toString();\r\n }\r\n\r\n idx++;\r\n }\r\n\r\n while (true) {\r\n token = tokenStack.pop();\r\n\r\n if (!token) {\r\n break;\r\n }\r\n\r\n if (token instanceof LeftParenthesisToken ||\r\n token instanceof FunctionLeftParenthesisToken) {\r\n throw 'Unbalanced parentheses';\r\n }\r\n\r\n output.push(token);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n function isNumber(value) {\r\n return typeof value === 'number' && !isNaN(value);\r\n }\r\n\r\n function isString(value) {\r\n return typeof value === 'string';\r\n }\r\n\r\n function isDate(value) {\r\n return value instanceof Date;\r\n }\r\n\r\n function isNumberOrStringOrDate(value) {\r\n return isNumber(value) || isString(value) || isDate(value);\r\n }\r\n\r\n function Formula(options) {\r\n options = options || {};\r\n\r\n this._functions = {};\r\n\r\n Object\r\n .keys((options.functions || {}).Functions || {})\r\n .map(function (key) {\r\n var name = key.toLowerCase();\r\n var fn = ((options || {}).functions || {}).Functions[key];\r\n\r\n this._functions[name] = fn;\r\n }, this);\r\n\r\n this._functions['Context'] = (options.functions || {}).Context;\r\n this._functions['GetFunction'] = (options.functions || {}).__proto__.GetFunction;\r\n this._functions['UpdateContext'] = (options.functions || {}).__proto__.UpdateContext;\r\n }\r\n\r\n Formula.prototype.evaluate = function (expression) {\r\n var infixTokens, rpnTokens, idx, lastIdx;\r\n var resultStack, token, i, arity, parameterArray, fnName, fn, result, symbol;\r\n\r\n expression = expression.replace(/\\s/g, ' ');\r\n\r\n infixTokens = tokenize(expression);\r\n rpnTokens = convertInfixToRpn(infixTokens);\r\n idx = 0;\r\n lastIdx = rpnTokens.length - 1;\r\n resultStack = new Stack();\r\n\r\n while (idx <= lastIdx) {\r\n token = rpnTokens[idx];\r\n\r\n if (token instanceof OperatorToken) {\r\n parameterArray = [];\r\n\r\n if (token.isUnary()) {\r\n if (resultStack.isEmpty()) {\r\n throw 'Operator ' + token.getSymbol() + ' expected 1 parameter.';\r\n }\r\n\r\n parameterArray.push(resultStack.pop());\r\n } else {\r\n for (i = 0; i < 2; i++) {\r\n if (resultStack.isEmpty()) {\r\n throw 'Operator ' + token.getSymbol() + ' expected 2 parameters.';\r\n }\r\n\r\n parameterArray.push(resultStack.pop());\r\n }\r\n }\r\n\r\n symbol = token.getSymbol();\r\n\r\n if ((symbol === '+' || symbol === '==') && token.isBinary()) {\r\n if (!parameterArray.every(isNumberOrStringOrDate)) {\r\n throw 'Invalid number or string.';\r\n }\r\n } else if (!parameterArray.every(isNumber)) {\r\n throw 'Invalid number.';\r\n }\r\n\r\n switch (symbol) {\r\n case '!':\r\n resultStack.push(!parameterArray[0]);\r\n break;\r\n case '^':\r\n resultStack.push(parameterArray[1], parameterArray[0]);\r\n break;\r\n case '*':\r\n resultStack.push(parameterArray[1] * parameterArray[0]);\r\n break;\r\n case '/':\r\n if (parameterArray[0] === 0) {\r\n throw 'Invalid argument.';\r\n }\r\n\r\n resultStack.push(parameterArray[1] / parameterArray[0]);\r\n break;\r\n case '%':\r\n if (parameterArray[0] === 0) {\r\n throw 'Invalid argument.';\r\n }\r\n\r\n resultStack.push(parameterArray[1] % parameterArray[0]);\r\n break;\r\n case '+':\r\n if (token.isUnary()) {\r\n resultStack.push(+parameterArray[0]);\r\n } else {\r\n var firstParameter = parameterArray[0];\r\n var secondParameter = parameterArray[1];\r\n var date, dateString, isTimeNull;\r\n\r\n if (firstParameter instanceof Date) {\r\n date = firstParameter;\r\n isTimeNull = Tools.dateTime.isTimeOfDateNull(date);\r\n dateString = Tools.dateTime.getDateString(date);\r\n firstParameter = isTimeNull\r\n ? dateString\r\n : (dateString + ' ' + date.toLocaleTimeString()).slice(0, -2); // damit die Sekunden nicht angezeigt werden\r\n }\r\n\r\n if (secondParameter instanceof Date) {\r\n date = secondParameter;\r\n isTimeNull = Tools.dateTime.isTimeOfDateNull(date);\r\n dateString = Tools.dateTime.getDateString(date);\r\n secondParameter = isTimeNull\r\n ? dateString\r\n : (dateString + ' ' + date.toLocaleTimeString()).slice(0, -2);\r\n }\r\n\r\n resultStack.push(secondParameter + firstParameter);\r\n }\r\n break;\r\n case '-':\r\n if (token.isUnary()) {\r\n resultStack.push(-parameterArray[0]);\r\n } else {\r\n resultStack.push(parameterArray[1] - parameterArray[0]);\r\n }\r\n break;\r\n case '<':\r\n resultStack.push(parameterArray[1] < parameterArray[0]);\r\n break;\r\n case '<=':\r\n resultStack.push(parameterArray[1] <= parameterArray[0]);\r\n break;\r\n case '>':\r\n resultStack.push(parameterArray[1] > parameterArray[0]);\r\n break;\r\n case '>=':\r\n resultStack.push(parameterArray[1] >= parameterArray[0]);\r\n break;\r\n case '==':\r\n resultStack.push(parameterArray[1] === parameterArray[0]);\r\n break;\r\n case '!=':\r\n resultStack.push(parameterArray[1] !== parameterArray[0]);\r\n break;\r\n case '&&':\r\n resultStack.push(parameterArray[1] && parameterArray[0]);\r\n break;\r\n case '&':\r\n resultStack.push(parameterArray[1] & parameterArray[0]);\r\n break;\r\n case '||':\r\n resultStack.push(parameterArray[1] || parameterArray[0]);\r\n break;\r\n case '|':\r\n resultStack.push(parameterArray[1] | parameterArray[0]);\r\n break;\r\n }\r\n } else if (token instanceof FunctionToken) {\r\n fnName = token.getName();\r\n fn = this._functions['GetFunction'](fnName);\r\n\r\n if (typeof fn !== 'function') {\r\n throw 'Function ' + token.getName() + ' does not exist.';\r\n }\r\n\r\n parameterArray = [];\r\n\r\n for (i = 0, arity = token.getArity(); i < arity; i++) {\r\n if (resultStack.isEmpty()) {\r\n throw 'Function ' + token.getName() + ' expected ' + arity + ' parameters.';\r\n }\r\n\r\n parameterArray.push(resultStack.pop());\r\n }\r\n\r\n resultStack.push(fn.apply(this._functions, parameterArray.reverse()));\r\n } else {\r\n resultStack.push(token.getValue());\r\n }\r\n\r\n idx++;\r\n }\r\n\r\n if (resultStack.isEmpty()) {\r\n throw 'Invalid expression';\r\n }\r\n\r\n result = resultStack.pop();\r\n\r\n if (!resultStack.isEmpty()) {\r\n throw 'Invalid expression';\r\n }\r\n\r\n return result;\r\n };\r\n\r\n Formula.containsFormulaFunctions = function (str) {\r\n return /\\w*\\(.*\\)/.test(str || '');\r\n };\r\n\r\n Formula.tokenize = tokenize;\r\n Formula.stringify = stringify;\r\n Formula.OperatorToken = OperatorToken;\r\n Formula.FunctionToken = FunctionToken;\r\n Formula.FunctionLeftParenthesisToken = FunctionLeftParenthesisToken;\r\n Formula.FunctionRightParenthesisToken = FunctionRightParenthesisToken;\r\n Formula.LeftParenthesisToken = LeftParenthesisToken;\r\n Formula.RightParenthesisToken = RightParenthesisToken;\r\n Formula.CommaToken = CommaToken;\r\n Formula.NumberToken = NumberToken;\r\n Formula.StringToken = StringToken;\r\n Formula.PartialStringToken = PartialStringToken;\r\n Formula.ReferenceToken = ReferenceToken;\r\n Formula.WhitespaceToken = WhitespaceToken;\r\n Formula.UnknownToken = UnknownToken;\r\n\r\n return (global.Formula = Formula);\r\n})(window);","(function (global) {\r\n var Center = {};\r\n var $center = $('#center');\r\n var $centerTop = $('#center-top');\r\n var $search = $('#center-search');\r\n var $tree = $('#center-tree');\r\n var $focusCurrentEntity = $center.find('.focus-entity');\r\n var $actionDropdownButton = $center.find('.action-dropdown-button');\r\n var $depthChooser = $('#center-depth-chooser');\r\n var _tree, _search, _maxDepth, _currentDepth;\r\n\r\n var treeNodeChangedByCenterNavigation = false;\r\n\r\n function show() {\r\n initActionDropdownButton();\r\n initTree();\r\n initSearch();\r\n initDepthChooser();\r\n\r\n bindEvents();\r\n initLanguage();\r\n\r\n $center.removeClass('hide');\r\n\r\n return this;\r\n }\r\n\r\n function initActionDropdownButton() {\r\n var showButton = showActionDropdownButton();\r\n\r\n $centerTop.toggleClass('padding-right', !showButton);\r\n $actionDropdownButton.toggleClass('hide', !showButton);\r\n }\r\n\r\n function showActionDropdownButton() {\r\n if (Mode === 'individual-data') {\r\n var schema = IndividualData.GetCurrentSchema();\r\n\r\n return !schema.IsReadonly;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function select(entity) {\r\n _tree\r\n .openAncestorNodes(entity)\r\n .selectNode(entity);\r\n\r\n if (!treeNodeChangedByCenterNavigation) {\r\n _tree\r\n .scrollToNode(entity);\r\n }\r\n\r\n treeNodeChangedByCenterNavigation = false;\r\n\r\n return this;\r\n }\r\n\r\n function add(entity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.add(entity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function addTo(entity, parentEntity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.addTo(entity, parentEntity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function addBefore(entity, parentEntity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.addBefore(entity, parentEntity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function addAfter(entity, parentEntity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.addAfter(entity, parentEntity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function moveTo(entity, parentEntity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.moveTo(entity, parentEntity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function addClassToEntityNode(entity, cssClass) {\r\n if (!_tree || !entity) {\r\n return;\r\n }\r\n\r\n _tree.addClassToNode(entity, cssClass)\r\n }\r\n\r\n function removeClassFromEntityNode(entity, cssClass) {\r\n if (!_tree || !entity) {\r\n return;\r\n }\r\n\r\n _tree.removeClassFromNode(entity, cssClass)\r\n }\r\n\r\n function remove(entity) {\r\n if (!_tree) {\r\n return;\r\n }\r\n\r\n _tree.removeNode(entity);\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function resetSearch() {\r\n _tree.search('');\r\n\r\n initSearch();\r\n\r\n return this;\r\n }\r\n\r\n function resetDepthChooser() {\r\n initDepthChooser();\r\n\r\n return this;\r\n }\r\n\r\n function initTree() {\r\n var entities = getTreeEntities();\r\n var options = getTreeOptions();\r\n\r\n _tree = $tree\r\n .tree(entities, options)\r\n .tree(true);\r\n\r\n _tree\r\n .openAncestorNodes(CurrentEntity)\r\n .selectNode(CurrentEntity)\r\n .scrollToNode(CurrentEntity);\r\n }\r\n\r\n function initSearch() {\r\n var options = {};\r\n\r\n switch (Mode) {\r\n case 'explorer':\r\n options.placeholder = i18next.t('explorer.search');\r\n break;\r\n case 'calendar':\r\n options.placeholder = i18next.t('calendar.search');\r\n break;\r\n case 'explorerchangemode':\r\n options.placeholder = i18next.t('changeMode.rooms.search');\r\n break;\r\n case 'forms':\r\n options.placeholder = i18next.t('changeMode.forms.search');\r\n break;\r\n case 'events':\r\n options.placeholder = i18next.t('changeMode.schedulings.search');\r\n break;\r\n case 'schedules':\r\n options.placeholder = i18next.t('changeMode.schedules.search');\r\n break;\r\n case 'items':\r\n options.placeholder = i18next.t('changeMode.items.search');\r\n break;\r\n case 'form-templates':\r\n options.placeholder = i18next.t('changeMode.formTemplates.search');\r\n break;\r\n case 'testgroup-templates':\r\n options.placeholder = i18next.t('changeMode.testgroups.search');\r\n break;\r\n case 'master-data-templates':\r\n options.placeholder = i18next.t('changeMode.masterData.search');\r\n break;\r\n case 'property-templates':\r\n options.placeholder = i18next.t('changeMode.properties.search');\r\n break;\r\n case 'categories':\r\n options.placeholder = i18next.t('changeMode.categories.search');\r\n break;\r\n case 'priorities':\r\n options.placeholder = i18next.t('changeMode.priorities.search');\r\n break;\r\n case 'keywords':\r\n options.placeholder = i18next.t('changeMode.keywords.search');\r\n break;\r\n case 'classifications':\r\n options.placeholder = i18next.t('changeMode.classifications.search');\r\n break;\r\n case 'status':\r\n options.placeholder = i18next.t('changeMode.status.search');\r\n break;\r\n case 'units':\r\n options.placeholder = i18next.t('changeMode.units.search');\r\n break;\r\n case 'teams':\r\n options.placeholder = i18next.t('changeMode.teams.search');\r\n break;\r\n case 'roles':\r\n options.placeholder = i18next.t('changeMode.roles.search');\r\n break;\r\n case 'contacts':\r\n options.placeholder = i18next.t('changeMode.contacts.search');\r\n break;\r\n case 'contact-groups':\r\n options.placeholder = i18next.t('changeMode.contactGroups.search');\r\n break;\r\n case 'custom-menu-items':\r\n options.placeholder = i18next.t('changeMode.customMenuItems.search');\r\n break;\r\n case 'users':\r\n options.placeholder = i18next.t('changeMode.users.search');\r\n break;\r\n case 'files':\r\n options.placeholder = i18next.t('changeMode.files.search');\r\n break;\r\n case 'individual-data':\r\n options.placeholder = i18next.t('changeMode.individualData.search');\r\n break;\r\n case 'mail-templates':\r\n options.placeholder = i18next.t('changeMode.mailTemplates.search');\r\n break;\r\n case 'element-codings':\r\n options.placeholder = i18next.t('changeMode.elementCodings.search');\r\n break;\r\n }\r\n\r\n _search = $search\r\n .search(options)\r\n .search(true);\r\n }\r\n\r\n function initDepthChooser() {\r\n var html = [];\r\n var i;\r\n\r\n _maxDepth = _tree.getMaxDepth() - 1;\r\n _currentDepth = _currentDepth || 1;\r\n _currentDepth = Math.min(_currentDepth, _maxDepth);\r\n\r\n if (_maxDepth) {\r\n html.push('
    -
    ');\r\n\r\n for (i = 1; i <= _maxDepth && i <= 6; i++) {\r\n if (i === _currentDepth) {\r\n html.push('
    {0}
    '.format(i));\r\n } else {\r\n html.push('
    {0}
    '.format(i));\r\n }\r\n }\r\n\r\n html.push('
    +
    ');\r\n }\r\n\r\n $depthChooser.html(html.join(''));\r\n }\r\n\r\n function bindEvents() {\r\n $tree.off('.tree');\r\n $search.off('.search');\r\n $depthChooser.off('click');\r\n $focusCurrentEntity.off('click');\r\n $actionDropdownButton.off('click');\r\n\r\n var isTree = !_tree.options.schema.isList;\r\n\r\n $tree\r\n .on('select-node.tree', onSelectNode)\r\n .on('move-node.tree', isTree ? onMoveTreeNode : moveListNode)\r\n .on('drop-node.tree', onDropTreeNode);\r\n\r\n $search\r\n .on('search.search', onSearch)\r\n .on('select-previous-result.search', onSelectPreviousSearchResult)\r\n .on('select-next-result.search', onSelectNextSearchResult);\r\n\r\n $depthChooser.on('click', '.depth-choice:not(.active)', onSelectDepth);\r\n\r\n $focusCurrentEntity.on('click', onFocusCurrentEntity);\r\n\r\n if ($actionDropdownButton.is(':visible')) {\r\n $actionDropdownButton.on('click', onActionDropdownButtonClick);\r\n }\r\n }\r\n\r\n function initLanguage() {\r\n $focusCurrentEntity.attr('title', i18next.t('treeNavigation.focusEntity'));\r\n $actionDropdownButton.attr('title', i18next.t('treeNavigation.showActions'));\r\n }\r\n\r\n function getTreeEntities() {\r\n switch (Mode) {\r\n case 'explorer':\r\n return DataManager.OrganizationUnitLoader.Data.Root;\r\n case 'calendar':\r\n return DataManager.OrganizationUnitLoader.Data.Root;\r\n case 'events':\r\n return changemode.RootScheduling;\r\n case 'schedules':\r\n return ChangeMode.Schedules.GetPrototypeSchedules();\r\n case 'roles':\r\n return Object\r\n .keys(changemode.Roles)\r\n .map(function (oid) {\r\n return changemode.Roles[oid];\r\n })\r\n .sort(function (a, b) {\r\n var titleA = a.Title.toLowerCase();\r\n var titleB = b.Title.toLowerCase();\r\n\r\n if (titleA === titleB) {\r\n return 0;\r\n }\r\n\r\n return titleA > titleB ? 1 : -1;\r\n });\r\n case 'contacts':\r\n return Object\r\n .keys(changemode.Contacts)\r\n .map(function (oid) {\r\n return changemode.Contacts[oid];\r\n })\r\n .sort(function (a, b) {\r\n var titleA = a.Fullname.toLowerCase();\r\n var titleB = b.Fullname.toLowerCase();\r\n\r\n if (titleA === titleB) {\r\n return 0;\r\n }\r\n\r\n return titleA > titleB ? 1 : -1;\r\n });\r\n case 'contact-groups':\r\n return Object\r\n .keys(changemode.ContactGroups)\r\n .map(function (oid) {\r\n return changemode.ContactGroups[oid];\r\n })\r\n .sort(function (a, b) {\r\n var fullnameA = a.Title.toLowerCase();\r\n var fullnameB = b.Title.toLowerCase();\r\n\r\n if (fullnameA === fullnameB) {\r\n return 0;\r\n }\r\n\r\n return fullnameA > fullnameB ? 1 : -1;\r\n });\r\n case 'users':\r\n return Object\r\n .keys(changemode.Users)\r\n .map(function (oid) {\r\n return changemode.Users[oid];\r\n })\r\n .sort(Tools.SortByFullname);\r\n case 'individual-data':\r\n entities = IndividualData.GetCurrentEntities() || [];\r\n\r\n return entities.sort(function (a, b) {\r\n var titleA = a.Title.toLowerCase();\r\n var titleB = b.Title.toLowerCase();\r\n\r\n if (titleA === titleB) {\r\n return 0;\r\n }\r\n\r\n return titleA > titleB ? 1 : -1;\r\n });\r\n case 'explorerchangemode':\r\n return changemode.Root;\r\n case 'forms':\r\n return changemode.Forms;\r\n case 'items':\r\n return changemode.Items;\r\n case 'form-templates':\r\n return changemode.FormTemplates;\r\n case 'testgroup-templates':\r\n return changemode.Templates;\r\n case 'master-data-templates':\r\n return changemode.Masterdata;\r\n case 'property-templates':\r\n return changemode.PropertyTemplates;\r\n case 'categories':\r\n return changemode.Categories;\r\n case 'priorities':\r\n return changemode.Priorities;\r\n case 'keywords':\r\n return changemode.Keywords;\r\n case 'classifications':\r\n return changemode.Classifications;\r\n case 'status':\r\n return changemode.Status;\r\n case 'units':\r\n return changemode.Units;\r\n case 'teams':\r\n return changemode.RootTeam;\r\n case 'files':\r\n return changemode.RootFolder.Children[0];\r\n case 'custom-menu-items':\r\n return Object\r\n .keys(changemode.CustomMenuItems)\r\n .map(function (oid) {\r\n return changemode.CustomMenuItems[oid];\r\n })\r\n .sort(function (a, b) {\r\n return a.Position - b.Position;\r\n });\r\n case 'mail-templates':\r\n return changemode.MailTemplatesRoot;\r\n case 'element-codings':\r\n return Object\r\n .keys(changemode.ElementCodings)\r\n .map(function (oid) {\r\n return changemode.ElementCodings[oid];\r\n })\r\n .sort(function (a, b) {\r\n return Tools.SortStringArray(a.Prefix, b.Prefix);\r\n });\r\n }\r\n }\r\n\r\n function getTreeOptions() {\r\n var options = {\r\n schema: {\r\n id: 'OID',\r\n children: 'Children',\r\n text: 'Title',\r\n color: 'Color'\r\n },\r\n opened: 1,\r\n selectable: true,\r\n searchResultsRepresentation: Tools.GetOfficeSettingValue('CenterTreeSearchResultsRepresentation'),\r\n filter: function (entity) {\r\n return entity.ModificationType !== Enums.ModificationType.Deleted;\r\n }\r\n };\r\n\r\n switch (Mode) {\r\n case 'explorer':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ?\r\n 'jquery-tree-node-marker' :\r\n 'jquery-tree-node-marker jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, false);\r\n };\r\n\r\n if (Explorer.GetWithDeactivatedElements()) {\r\n options.filter = function (entity) {\r\n return entity.Type === Enums.elementType.Root ||\r\n entity.Type === Enums.elementType.Location;\r\n };\r\n } else {\r\n options.filter = function (entity) {\r\n return entity.Enabled &&\r\n (entity.Type === Enums.elementType.Root ||\r\n entity.Type === Enums.elementType.Location);\r\n };\r\n }\r\n\r\n break;\r\n case 'calendar':\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, false);\r\n };\r\n\r\n options.filter = function (entity) {\r\n return entity.Enabled &&\r\n (entity.Type === Enums.elementType.Root ||\r\n entity.Type === Enums.elementType.Location);\r\n };\r\n break;\r\n case 'events':\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n\r\n options.droppable = {\r\n dropBefore: false,\r\n dropAfter: false,\r\n accept: function (data) {\r\n return changemode.Schedules.hasOwnProperty(data.node.id);\r\n }\r\n };\r\n break;\r\n case 'schedules':\r\n options.schema = {id: 'OID', text: 'Title'};\r\n break;\r\n case 'explorerchangemode':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ? null : 'jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, true);\r\n };\r\n\r\n options.filter = function (entity) {\r\n if (entity.ModificationType === Enums.ModificationType.Deleted) {\r\n return false;\r\n }\r\n\r\n return entity.Type === Enums.elementType.Root ||\r\n entity.Type === Enums.elementType.Location;\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n\r\n options.droppable = {};\r\n options.droppable.dropBefore =\r\n options.droppable.dropAfter =\r\n function (targetNode, data) {\r\n var targetEntity = targetNode.entity;\r\n var sourceEntity = data.node.entity;\r\n\r\n if (targetEntity.Type === Enums.elementType.Root) {\r\n return false;\r\n }\r\n\r\n return sourceEntity.Type === Enums.elementType.ObjectTemplate ||\r\n sourceEntity.Type === Enums.elementType.Sensor ||\r\n sourceEntity.Type === Enums.elementType.CashRegister;\r\n };\r\n break;\r\n case 'forms':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ? null : 'jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, true);\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n\r\n options.droppable = {};\r\n options.droppable.dropBefore =\r\n options.droppable.dropAfter =\r\n function (targetNode, data) {\r\n var targetEntity = targetNode.entity;\r\n var sourceEntity = data.node.entity;\r\n\r\n return targetEntity.OID !== changemode.Forms.OID &&\r\n sourceEntity.Type === Enums.elementType.FormTemplate;\r\n };\r\n break;\r\n case 'items':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ? null : 'jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, false);\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n\r\n options.droppable = {dropBefore: false, dropAfter: false};\r\n break;\r\n case 'form-templates':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ? null : 'jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, false);\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n\r\n options.droppable = {dropBefore: false, dropAfter: false};\r\n break;\r\n case 'testgroup-templates':\r\n case 'master-data-templates':\r\n case 'property-templates':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Title,\r\n color: entity.Color,\r\n children: entity.Children,\r\n classes: entity.Enabled ? null : 'jquery-tree-node-disabled'\r\n };\r\n };\r\n\r\n options.onDetailedSearch = function (searchRegExp, entity) {\r\n return onDetailedElementSearch(searchRegExp, entity, false);\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'categories':\r\n case 'priorities':\r\n case 'status':\r\n case 'teams':\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'custom-menu-items':\r\n options.schema.isList = true;\r\n options.schema.children = null;\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth === 1;\r\n };\r\n options.moveable.moveTo = false;\r\n\r\n options.droppable = {dropBefore: true, dropAfter: true, dropTo: false};\r\n break;\r\n case 'keywords':\r\n case 'classifications':\r\n delete options.schema.color;\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'units':\r\n options.schema = function (entity) {\r\n var text = entity.Description ?\r\n entity.Title + ' (' + entity.Description + ')' :\r\n entity.Title;\r\n\r\n return {\r\n id: entity.OID,\r\n text: text,\r\n children: entity.Children\r\n };\r\n };\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'files':\r\n options.icon = 'jquery-tree-node-icon-folder';\r\n\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'users':\r\n options.schema = function (entity) {\r\n return {\r\n id: entity.OID,\r\n text: entity.Fullname,\r\n classes: entity.IsLocked ? 'jquery-tree-node-disabled' : null\r\n };\r\n };\r\n break;\r\n case 'contacts':\r\n options.schema.text = 'Fullname'\r\n break;\r\n case 'individual-data':\r\n options.schema = {id: 'ID', text: 'SingleLineTitle'};\r\n break;\r\n case 'mail-templates':\r\n options.moveable = {};\r\n options.moveable.moveBefore =\r\n options.moveable.moveAfter =\r\n function (targetNode) {\r\n return targetNode.depth > 1;\r\n };\r\n break;\r\n case 'element-codings':\r\n options.schema.text = 'Prefix';\r\n break;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n function onDetailedElementSearch(searchRegExp, entity, isChangemode) {\r\n if (!searchRegExp) {\r\n return false;\r\n }\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n if (!(entity.Properties || []).length && !(entity.AdditionalProperties || []).length) {\r\n return false;\r\n }\r\n\r\n var keywordsMatch = (entity.Properties || []).some(function (identifier) {\r\n var property = isChangemode ? changemode.Properties[identifier] : Properties[identifier];\r\n\r\n if (!property) {\r\n return false;\r\n }\r\n\r\n return searchRegExp.test(property.Title);\r\n });\r\n\r\n if (keywordsMatch) {\r\n return true;\r\n }\r\n\r\n var additionalPropertiesMatch = (entity.AdditionalProperties || []).some(function (property) {\r\n if (!property.IsSearchable) {\r\n return false;\r\n }\r\n\r\n if (property.Value == null) {\r\n return false;\r\n }\r\n\r\n var searchableValue;\r\n\r\n switch (property.Type) {\r\n case Enums.additionalPropertyType.Number:\r\n searchableValue = property.Value.toString();\r\n break;\r\n case Enums.additionalPropertyType.Text:\r\n case Enums.additionalPropertyType.Info:\r\n case Enums.additionalPropertyType.PhoneNumber:\r\n searchableValue = property.Value;\r\n break;\r\n case Enums.additionalPropertyType.Date:\r\n var date = property.Value instanceof Date ? property.Value : new Date(property.Value);\r\n searchableValue = Tools.dateTime.dateToString(date);\r\n break;\r\n case Enums.additionalPropertyType.Time:\r\n var time = property.Value instanceof Date ? property.Value : new Date(property.Value);\r\n searchableValue = Tools.dateTime.timeToString(time);\r\n break;\r\n case Enums.additionalPropertyType.IndividualData:\r\n var selectedEntities = typeof property.Value === 'object' ?\r\n property.Value[property.SubType] || [] :\r\n [];\r\n\r\n searchableValue = $.map(selectedEntities, function (id) {\r\n return IndividualData.GetEntityTitle(property.SubType, id);\r\n }).filter(function (title) {\r\n return title != null;\r\n });\r\n\r\n break;\r\n }\r\n\r\n return searchRegExp.test(searchableValue);\r\n });\r\n\r\n return additionalPropertiesMatch;\r\n }\r\n\r\n function onSelectNode(_event, data) {\r\n treeNodeChangedByCenterNavigation = true;\r\n\r\n if (Mode === 'individual-data') {\r\n location.hash = '#{0}/{1}'.format(IndividualData.GetCurrentMode(), data.node.id);\r\n } else {\r\n var locationHash = '#{0}/{1}'.format(Mode, data.node.id);\r\n\r\n if (Mode === 'explorer') {\r\n var currentTab = Explorer.GetCurrentTab();\r\n\r\n if (currentTab) {\r\n locationHash = '#{0}/{1}/{2}'.format(Mode, currentTab.OID, data.node.id);\r\n }\r\n }\r\n\r\n location.hash = locationHash;\r\n }\r\n }\r\n\r\n function onMoveTreeNode(_event, data) {\r\n var entity = data.node.entity;\r\n var oldParentEntity = entity.Parent;\r\n var newParentEntity = data.parentNode.entity;\r\n var previousEntity = data.previousNode ? data.previousNode.entity : null;\r\n var nextEntity = data.nextNode ? data.nextNode.entity : null;\r\n var updateList = [entity];\r\n var idx, pos, oldLayout, oldAncestor, newAncestor, isDescendantOf;\r\n\r\n\r\n // zu neuen Parent hinzufügen\r\n entity.ParentOID = newParentEntity.OID;\r\n entity.Parent = newParentEntity;\r\n oldParentEntity.Children = Tools.remove(oldParentEntity.Children, entity.OID, 'OID');\r\n newParentEntity.Children = newParentEntity.Children || [];\r\n\r\n if (previousEntity) {\r\n idx = Tools.indexOf(newParentEntity.Children, previousEntity.OID, 'OID');\r\n idx = !!~idx ? idx + 1 : newParentEntity.Children.length;\r\n } else if (nextEntity) {\r\n idx = Tools.indexOf(newParentEntity.Children, nextEntity.OID, 'OID');\r\n idx = !!~idx ? idx : newParentEntity.Children.length;\r\n } else {\r\n idx = newParentEntity.Children.length;\r\n }\r\n\r\n newParentEntity.Children.splice(idx, 0, entity);\r\n\r\n\r\n // ggf. Position anpassen\r\n newParentEntity.Children.forEach(function (entity) {\r\n if (entity.ModificationType === Enums.ModificationType.Deleted) {\r\n return;\r\n }\r\n\r\n if (entity.Position <= pos) {\r\n entity.Position = pos + 1;\r\n updateList = Tools.addUnique(updateList, entity);\r\n }\r\n\r\n pos = entity.Position;\r\n });\r\n\r\n\r\n // ggf. deaktivieren\r\n if (!newParentEntity.Enabled &&\r\n Tools.contains(['forms', 'items', 'explorerchangemode', 'form-templates', 'testgroup-templates', 'master-data-templates'], Mode)) {\r\n (function traverse(entity) {\r\n if (entity.ModificationType === Enums.ModificationType.Deleted || !entity.Enabled) {\r\n return;\r\n }\r\n\r\n entity.Enabled = false;\r\n\r\n updateList = Tools.addUnique(updateList, entity);\r\n\r\n (entity.Children || []).forEach(traverse);\r\n (entity.Parametergroups || []).forEach(traverse);\r\n (entity.Parameters || []).forEach(traverse);\r\n })(entity);\r\n }\r\n\r\n\r\n // ggf. Layout anpassen\r\n if (Mode === 'explorerchangemode') {\r\n if (oldParentEntity !== newParentEntity) {\r\n oldLayout = oldParentEntity.Layout;\r\n oldAncestor = oldParentEntity;\r\n\r\n if (!oldLayout) {\r\n while ((oldAncestor = oldAncestor.Parent)) {\r\n if (oldAncestor.Layout) {\r\n oldLayout = oldAncestor.Layout;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (oldLayout) {\r\n isDescendantOf = false;\r\n newAncestor = entity;\r\n\r\n while (((newAncestor = newAncestor.Parent))) {\r\n if (newAncestor === oldAncestor) {\r\n isDescendantOf = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!isDescendantOf) {\r\n (function walk(entity) {\r\n if (entity.ModificationType === Enums.ModificationType.Deleted) {\r\n return;\r\n }\r\n\r\n oldAncestor.Layout = FloorPlan.DeleteLocationFromLayout(oldAncestor.Layout, entity.OID);\r\n\r\n (entity.Children || []).forEach(walk);\r\n }(entity));\r\n\r\n if (oldAncestor.Layout !== oldLayout) {\r\n updateList = Tools.addUnique(updateList, oldAncestor);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n switch (Mode) {\r\n case 'events':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingScheduling'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n scheduling.put(entity).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function () {\r\n Tools.Progressbar.StopProgress();\r\n });\r\n }\r\n }());\r\n break;\r\n case 'forms':\r\n case 'items':\r\n case 'explorerchangemode':\r\n case 'form-templates':\r\n case 'testgroup-templates':\r\n case 'master-data-templates':\r\n case 'property-templates':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingElement'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n putElement(entity, true).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function () {\r\n Tools.Progressbar.StopProgress();\r\n });\r\n }\r\n }());\r\n break;\r\n case 'categories':\r\n case 'priorities':\r\n case 'keywords':\r\n case 'classifications':\r\n case 'status':\r\n case 'units':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingProperty'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n putProperty(entity, true).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function () {\r\n Tools.Progressbar.StopProgress();\r\n });\r\n }\r\n }());\r\n break;\r\n case 'teams':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingTeam'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n teams.put(entity).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function () {\r\n Tools.Progressbar.StopProgress();\r\n });\r\n }\r\n }());\r\n break;\r\n case 'files':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingFolder'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n putFolder(entity, true).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function () {\r\n Tools.Progressbar.StopProgress();\r\n });\r\n }\r\n }());\r\n break;\r\n case 'mail-templates':\r\n Tools.Progressbar.Start(updateList.length, i18next.t('progressbar.movingMailTemplate'), null, true);\r\n\r\n (function loop() {\r\n var entity = updateList.pop();\r\n\r\n if (entity) {\r\n Tools.Progressbar.StartProgress();\r\n\r\n MailTemplates.Save(entity).then(function () {\r\n loop();\r\n\r\n Tools.Progressbar.StopProgress();\r\n }, function (xhr) {\r\n Tools.Progressbar.StopProgress();\r\n return Tools.handleHttpError(Enums.HttpActionType.Write, xhr);\r\n });\r\n }\r\n }());\r\n }\r\n\r\n\r\n resetSearch();\r\n resetDepthChooser();\r\n }\r\n\r\n function moveListNode(_event, data) {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n var entity = data.node.entity;\r\n var newParentEntityChildren = data.parentNode.children;\r\n var menuItem;\r\n\r\n switch (Mode) {\r\n case 'custom-menu-items':\r\n var newMenuitemPosition = Tools.indexOf(newParentEntityChildren, function (node) {\r\n if (node.entity.OID === entity.OID) {\r\n return true;\r\n }\r\n });\r\n\r\n if (newMenuitemPosition === -1) {\r\n break;\r\n }\r\n\r\n for (var i = newMenuitemPosition; i < (newParentEntityChildren || []).length; i++) {\r\n if (!entity.OID) {\r\n continue;\r\n }\r\n\r\n menuItem = newParentEntityChildren[i].entity;\r\n\r\n if (menuItem == null) {\r\n continue;\r\n }\r\n\r\n menuItemOID = menuItem.OID;\r\n\r\n if (changemode.CustomMenuItems[menuItemOID] == null) {\r\n continue;\r\n }\r\n\r\n changemode.CustomMenuItems[menuItemOID].Position = i;\r\n\r\n CustomMenuItems.SaveMenuItem(changemode.CustomMenuItems[menuItemOID], true);\r\n }\r\n\r\n break;\r\n }\r\n\r\n }\r\n\r\n function onDropTreeNode(_event, data) {\r\n var entity = data.node.entity;\r\n var parentEntity = data.parentNode.entity;\r\n var previousEntity = data.previousNode ? data.previousNode.entity : null;\r\n var nextEntity = data.nextNode ? data.nextNode.entity : null;\r\n var prototype, parent, ancestor, previous, next, selectedOID, selected, addFn;\r\n\r\n if (Mode === 'events') {\r\n prototype = changemode.Schedules[entity.OID];\r\n parent = changemode.Scheduling[parentEntity.OID];\r\n\r\n ChangeMode.Schedules\r\n .AddPrototype(prototype, parent)\r\n .done(function () {\r\n Commit.setChanged(true);\r\n\r\n scheduling.createScheduleList();\r\n setChangeModeTabCounter();\r\n });\r\n } else {\r\n switch (entity.Type) {\r\n case Enums.elementType.ObjectTemplate:\r\n case Enums.elementType.FormTemplate:\r\n prototype = changemode.Elements[entity.OID];\r\n parent = changemode.Elements[parentEntity.OID];\r\n previous = previousEntity ? changemode.Elements[previousEntity.OID] : null;\r\n next = nextEntity ? changemode.Elements[nextEntity.OID] : null;\r\n addFn = entity.Type === Enums.elementType.ObjectTemplate ? ChangeMode.Elements.AddItem : ChangeMode.Elements.AddFormTemplate;\r\n\r\n addFn(prototype, parent, previous, next, function (entity) {\r\n if (previous) {\r\n addAfter(entity, previous);\r\n } else if (next) {\r\n addBefore(entity, next);\r\n } else {\r\n addTo(entity, parent);\r\n }\r\n });\r\n break;\r\n case Enums.elementType.Sensor:\r\n case Enums.elementType.CashRegister:\r\n prototype = changemode.Elements[entity.OID];\r\n parent = changemode.Elements[parentEntity.OID];\r\n previous = previousEntity ? changemode.Elements[previousEntity.OID] : null;\r\n next = nextEntity ? changemode.Elements[nextEntity.OID] : null;\r\n\r\n ChangeMode.Elements.AddExternalDataSource(prototype, parent, previous, next, function (entity) {\r\n ChangeMode.Catalog.Remove(prototype);\r\n\r\n if (previous) {\r\n addAfter(entity, previous);\r\n } else if (next) {\r\n addBefore(entity, next);\r\n } else {\r\n addTo(entity, parent);\r\n }\r\n });\r\n break;\r\n case Enums.elementType.PropertyTemplate:\r\n prototype = changemode.Elements[entity.OID];\r\n parent = changemode.Elements[parentEntity.OID];\r\n\r\n if (parent === CurrentEntity && content.Mode === 'properties') {\r\n AdditionalProperties.AddPropertyFromCatalog(prototype);\r\n } else {\r\n ChangeMode.Elements.AddPropertyTemplate(prototype, parent, function () {\r\n if (parent === CurrentEntity) {\r\n if (content.Mode === 'properties') {\r\n AdditionalProperties.Init();\r\n } else {\r\n $('#change-mode-tab-menu .tab-view-tab[data-tab-id=\"properties\"]').trigger('click');\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case Enums.elementType.CheckpointGroupTemplate:\r\n prototype = changemode.Elements[entity.OID];\r\n parent = changemode.Elements[parentEntity.OID];\r\n\r\n if (content.Mode === 'checkpoints' && content.parameters.$domTree) {\r\n selectedOID = content.parameters.$domTree.find('.selected').data('oid');\r\n selected = changemode.Elements[selectedOID];\r\n\r\n if (selected && Tools.contains(Enums.elementType.AllGroups, selected.Type)) {\r\n previous = selected;\r\n } else if (selected && selected.Parent && Tools.contains(Enums.elementType.AllGroups, selected.Parent.Type)) {\r\n previous = selected.Parent;\r\n }\r\n }\r\n\r\n ChangeMode.Elements.AddGroupTemplate(prototype, parent, previous, next, function () {\r\n if (CurrentEntity.OID === parentEntity.OID) {\r\n if (content.Mode !== 'checkpoints') {\r\n $('#change-mode-tab-menu .tab-view-tab[data-tab-id=\"checkpoints\"]').trigger('click');\r\n } else {\r\n content.parameters.createList(parent, 1);\r\n }\r\n }\r\n\r\n setChangeModeTabCounter();\r\n });\r\n break;\r\n case Enums.elementType.MasterdataTemplate:\r\n prototype = changemode.Elements[entity.OID];\r\n parent = changemode.Elements[parentEntity.OID];\r\n\r\n if (content.Mode === 'info' && content.parameters.$domTree) {\r\n selectedOID = content.parameters.$domTree.find('.selected').data('oid');\r\n selected = changemode.Elements[selectedOID];\r\n\r\n if (selected && selected.Type === Enums.elementType.MasterdataGroup) {\r\n previous = selected;\r\n } else if (selected && selected.Parent && selected.Parent.Type === Enums.elementType.MasterdataGroup) {\r\n previous = selected.Parent;\r\n }\r\n }\r\n\r\n ChangeMode.Elements.AddMasterdataTemplate(prototype, parent, previous, next, function () {\r\n var html;\r\n\r\n if (CurrentEntity.OID === parentEntity.OID) {\r\n if (content.Mode !== 'info') {\r\n $('#change-mode-tab-menu .tab-view-tab[data-tab-id=\"info\"]').trigger('click');\r\n } else if ($('#tbl-content-masterdata').length) {\r\n content.parameters.createList(parent, 2);\r\n } else {\r\n html = content.views.InfoTab.masterdata.show(CurrentEntity);\r\n $('#showInfoMasterdata').html(html);\r\n }\r\n }\r\n\r\n setChangeModeTabCounter();\r\n });\r\n break;\r\n default:\r\n prototype = changemode.Elements[entity.OID];\r\n\r\n if (prototype.Parent.Type === Enums.elementType.CheckpointGroupTemplate) {\r\n if (content.Mode === 'checkpoints' && content.parameters.$domTree) {\r\n selectedOID = content.parameters.$domTree.find('.selected').data('oid');\r\n selected = changemode.Elements[selectedOID];\r\n\r\n if (selected && Tools.contains(Enums.elementType.AllGroups, selected.Type)) {\r\n ancestor = selected;\r\n } else if (selected && selected.Parent && Tools.contains(Enums.elementType.AllGroups, selected.Parent.Type)) {\r\n ancestor = selected.Parent;\r\n previous = selected;\r\n }\r\n }\r\n\r\n ancestor = ancestor || changemode.Elements[parentEntity.OID];\r\n\r\n ChangeMode.Elements.AddGroupParameterTemplate(prototype, ancestor, previous, next, function () {\r\n if (CurrentEntity.OID === parentEntity.OID) {\r\n if (content.Mode !== 'checkpoints') {\r\n $('#change-mode-tab-menu .tab-view-tab[data-tab-id=\"checkpoints\"]').trigger('click');\r\n } else {\r\n content.parameters.createList(parent, 1);\r\n }\r\n }\r\n\r\n setChangeModeTabCounter();\r\n });\r\n } else if (prototype.Parent.Type === Enums.elementType.MasterdataTemplate) {\r\n if (content.Mode === 'info' && content.parameters.$domTree) {\r\n selectedOID = content.parameters.$domTree.find('.selected').data('oid');\r\n selected = changemode.Elements[selectedOID];\r\n\r\n if (selected && selected.Type === Enums.elementType.MasterdataGroup) {\r\n ancestor = selected;\r\n } else if (selected && selected.Parent && selected.Parent.Type === Enums.elementType.MasterdataGroup) {\r\n ancestor = selected.Parent;\r\n previous = selected;\r\n }\r\n }\r\n\r\n ancestor = ancestor || changemode.Elements[parentEntity.OID];\r\n\r\n ChangeMode.Elements.AddMasterdataParameterTemplate(prototype, ancestor, previous, next, function () {\r\n var html;\r\n\r\n if (CurrentEntity.OID === parentEntity.OID) {\r\n if (content.Mode !== 'info') {\r\n $('#change-mode-tab-menu .tab-view-tab[data-tab-id=\"info\"]').trigger('click');\r\n } else if ($('#tbl-content-masterdata').length) {\r\n content.parameters.createList(parent, 2);\r\n } else {\r\n html = content.views.InfoTab.masterdata.show(CurrentEntity);\r\n $('#showInfoMasterdata').html(html);\r\n }\r\n }\r\n\r\n setChangeModeTabCounter();\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function onSearch(_event, data) {\r\n var resultCount = _tree\r\n .search(Tools.escapeHtml(data.input))\r\n .getSearchResultCount();\r\n\r\n _search.setResultCount(resultCount);\r\n }\r\n\r\n function onSelectPreviousSearchResult() {\r\n _tree.selectPreviousSearchResult();\r\n }\r\n\r\n function onSelectNextSearchResult() {\r\n _tree.selectNextSearchResult();\r\n }\r\n\r\n function onSelectDepth() {\r\n var $this = $(this);\r\n\r\n if ($this.hasClass('previous-depth')) {\r\n if (_currentDepth <= 1) {\r\n return;\r\n }\r\n\r\n _currentDepth--;\r\n } else if ($this.hasClass('next-depth')) {\r\n if (_currentDepth >= _maxDepth) {\r\n return;\r\n }\r\n\r\n _currentDepth++;\r\n } else {\r\n _currentDepth = $this.data('depth');\r\n }\r\n\r\n $depthChooser\r\n .children('.active')\r\n .removeClass('active');\r\n\r\n $depthChooser\r\n .children('.depth-choice[data-depth=\"{0}\"]'.format(_currentDepth))\r\n .addClass('active');\r\n\r\n _tree.openDepth(_currentDepth);\r\n }\r\n\r\n function onFocusCurrentEntity() {\r\n select(CurrentEntity);\r\n }\r\n\r\n function onActionDropdownButtonClick(evt) {\r\n evt.stopPropagation();\r\n\r\n var $this = $(this);\r\n\r\n $this.toggleClass('active');\r\n\r\n if ($this.hasClass('active')) {\r\n Tools.createActionDropdown(getActionDropdownItems(), $this);\r\n\r\n $('body').on('click.closeActionWindow', function () {\r\n $this.removeClass('active');\r\n $this\r\n .find('.action-dropdown')\r\n .removeClass('is-visible')\r\n .css('max-height', 0);\r\n\r\n $actionDropdownButton.attr('title', i18next.t('treeNavigation.showActions'));\r\n });\r\n\r\n initDataImport($this);\r\n $actionDropdownButton.attr('title', i18next.t('treeNavigation.hideActions'));\r\n } else {\r\n $this\r\n .find('.action-dropdown')\r\n .removeClass('is-visible')\r\n .css('max-height', 0);\r\n\r\n $actionDropdownButton.attr('title', i18next.t('treeNavigation.showActions'));\r\n }\r\n }\r\n\r\n function getActionDropdownItems() {\r\n if (Mode === 'explorer') {\r\n return getExplorerActionDropdownItems();\r\n } else if (Mode === 'calendar') {\r\n return getGenericTreeDropdownItems();\r\n } else if (Mode === 'individual-data') {\r\n var schema = IndividualData.GetCurrentSchema();\r\n\r\n if (schema && schema.IsReadonly) {\r\n return getGenericTreeDropdownItems();\r\n }\r\n }\r\n\r\n var items = [{\r\n Caption: getAddEntityCaption(),\r\n ID: 'add-room',\r\n Icon: getActionDropdownAddEntityIconPath(),\r\n OnClick: function () {\r\n content.add(content.CurrentEntity);\r\n }\r\n }];\r\n\r\n items = items.concat(getGenericTreeDropdownItems());\r\n\r\n if (showCatalogButton()) {\r\n items.push({\r\n Caption: i18next.t('changeMode.openCatalog'),\r\n ID: 'open-catalog',\r\n Icon: './img/menu/katalog.svg',\r\n OnClick: ChangeMode.Catalog.Show\r\n });\r\n }\r\n\r\n if (showExportButtons()) {\r\n if (Mode !== 'users') {\r\n items.push({\r\n Caption: i18next.t('changeMode.export.all'),\r\n ID: 'export-all',\r\n Icon: './img/menu/alle-exportieren.svg',\r\n OnClick: function () {\r\n onExportClick(false);\r\n }\r\n }, {\r\n Caption: i18next.t('changeMode.export.onlyActive'),\r\n ID: 'export-active',\r\n Icon: './img/menu/nur-aktive-exportieren.svg',\r\n OnClick: function () {\r\n onExportClick(true);\r\n }\r\n });\r\n } else {\r\n items.push({\r\n Caption: i18next.t('changeMode.export.exampleFile'),\r\n ID: 'export-user-example',\r\n Icon: './img/menu/alle-exportieren.svg',\r\n OnClick: onUserExampleExportClick\r\n });\r\n }\r\n\r\n if ((Client.Settings || {}).ShowTUEVAuditAnalysis && (CurrentEntity.AdditionalSettings || {}).IsStoreRegion) {\r\n items.push({\r\n Caption: i18next.t('changeMode.export.storeRegion'),\r\n ID: 'export-store-region',\r\n Icon: './img/menu/alle-exportieren.svg',\r\n OnClick: onTUEVStoreExportClick\r\n });\r\n }\r\n }\r\n\r\n if (showImportButton()) {\r\n items.push({\r\n Caption: i18next.t('changeMode.import'),\r\n ID: 'import',\r\n Icon: './img/menu/importieren.svg',\r\n FileInput: {\r\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n function getGenericTreeDropdownItems() {\r\n var centerTreeSearchResultsRepresentation = Tools.GetOfficeSettingValue('CenterTreeSearchResultsRepresentation');\r\n\r\n return [{\r\n Caption: i18next.t('treeNavigation.searchResultsRepresentation.nodeCaption'),\r\n ID: 'search-results-settings',\r\n Icon: './img/magnifier.svg',\r\n Children: [{\r\n Caption: i18next.t('treeNavigation.searchResultsRepresentation.tree'),\r\n Icon: './img/hierarchy.svg',\r\n ID: 'show-search-results-as-tree',\r\n Checked: !centerTreeSearchResultsRepresentation || centerTreeSearchResultsRepresentation === Enums.CenterTreeSearchResultsRepresentation.Tree,\r\n OnClick: function () {\r\n var representationType = Enums.CenterTreeSearchResultsRepresentation.Tree;\r\n\r\n _tree\r\n .setSearchResultsRepresentation(representationType)\r\n .refresh();\r\n\r\n Tools.UpdateOfficeUserSettings('CenterTreeSearchResultsRepresentation', representationType);\r\n }\r\n }, {\r\n Caption: i18next.t('treeNavigation.searchResultsRepresentation.resultsOnlyList'),\r\n Icon: './img/list.svg',\r\n ID: 'show-search-results-as-list',\r\n Checked: centerTreeSearchResultsRepresentation === Enums.CenterTreeSearchResultsRepresentation.ResultsOnlyList,\r\n OnClick: function () {\r\n var representationType = Enums.CenterTreeSearchResultsRepresentation.ResultsOnlyList;\r\n\r\n _tree\r\n .setSearchResultsRepresentation(representationType)\r\n .refresh();\r\n\r\n Tools.UpdateOfficeUserSettings('CenterTreeSearchResultsRepresentation', representationType);\r\n }\r\n }]\r\n }];\r\n }\r\n\r\n function getExplorerActionDropdownItems() {\r\n var items = getGenericTreeDropdownItems();\r\n\r\n if (!(ressources.users.hasRight('EXMD') && showExportButtons())) {\r\n return items;\r\n }\r\n\r\n return items.concat([{\r\n Caption: i18next.t('explorer.export.masterdata.nodeCaption'),\r\n Icon: './img/menu/alle-exportieren.svg',\r\n ID: 'masterdata-export-actions',\r\n Children: [{\r\n Caption: i18next.t('explorer.export.masterdata.completeHierarchy'),\r\n ID: 'export-masterdata-all',\r\n Icon: './img/menu/alle-exportieren.svg',\r\n OnClick: onExportMasterdataOfCompleteHierarchyClick\r\n }, {\r\n Caption: i18next.t('explorer.export.masterdata.currentRoom'),\r\n ID: 'export-masterdata-current-room',\r\n Icon: './img/menu/alle-exportieren.svg',\r\n OnClick: onExportMasterdataOfCurrentLocationClick\r\n }]\r\n }]);\r\n }\r\n\r\n function getAddEntityCaption() {\r\n switch (Mode) {\r\n case 'forms':\r\n return i18next.t('changeMode.forms.newForm');\r\n case 'schedules':\r\n return i18next.t('changeMode.schedules.newSchedule');\r\n case 'events':\r\n return i18next.t('changeMode.schedulings.newScheduling');\r\n case 'files':\r\n return i18next.t('changeMode.files.newFolder');\r\n case 'items':\r\n return i18next.t('changeMode.items.newItem');\r\n case 'custom-menu-items':\r\n return i18next.t('changeMode.customMenuItems.newCustomMenuItem');\r\n case 'form-templates':\r\n return i18next.t('changeMode.formTemplates.newFormTemplate');\r\n case 'explorerchangemode':\r\n return i18next.t('changeMode.rooms.newRoom');\r\n case 'keywords':\r\n return i18next.t('changeMode.keywords.newKeyword');\r\n case 'classifications':\r\n return i18next.t('changeMode.classifications.newClassification');\r\n case 'priorities':\r\n return i18next.t('changeMode.priorities.newPriority');\r\n case 'categories':\r\n return i18next.t('changeMode.categories.newCategory');\r\n case 'status':\r\n return i18next.t('changeMode.status.newStatus');\r\n case 'units':\r\n return i18next.t('changeMode.units.newUnit');\r\n case 'roles':\r\n return i18next.t('changeMode.roles.newRole');\r\n case 'contacts':\r\n return i18next.t('changeMode.contacts.newContact');\r\n case 'contact-groups':\r\n return i18next.t('changeMode.contactGroups.newContactGroup');\r\n case 'users':\r\n return i18next.t('changeMode.users.newUser');\r\n case 'teams':\r\n return i18next.t('changeMode.teams.newTeam');\r\n case 'testgroup-templates':\r\n return i18next.t('changeMode.testgroups.newTestgroup');\r\n case 'master-data-templates':\r\n return i18next.t('changeMode.masterData.newMasterDataTemplate');\r\n case 'property-templates':\r\n return i18next.t('changeMode.properties.newPropertyTemplate');\r\n case 'mail-templates':\r\n return i18next.t('changeMode.mailTemplates.newMailTemplate');\r\n case 'element-codings':\r\n return i18next.t('changeMode.elementCodings.newElementCoding');\r\n default:\r\n var urlHash = window.location.hash;\r\n\r\n if (!!urlHash && urlHash.contains('-modifications')) {\r\n var schemaLength = urlHash.indexOf('-modifications');\r\n var schemaName = urlHash.substr(1, schemaLength - 1);\r\n var schema = IndividualData.GetSchema(schemaName);\r\n\r\n if (schema) {\r\n return '+ ' + schema.NameSingular;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function showCatalogButton() {\r\n if (!(Client.Licenses && Client.Licenses.Catalog)) {\r\n return false;\r\n }\r\n\r\n var availableInModes = ['explorerchangemode', 'forms', 'items', 'form-templates'];\r\n\r\n return Tools.indexOf(availableInModes, Mode) > -1;\r\n }\r\n\r\n function showExportButtons() {\r\n if (!(Client.Licenses && Client.Licenses.AllowExcelExport && CurrentEntity)) {\r\n return false;\r\n }\r\n\r\n var availableInModes = ['explorer', 'explorerchangemode', 'forms', 'items', 'form-templates', 'users'];\r\n\r\n return Tools.indexOf(availableInModes, Mode) > -1;\r\n }\r\n\r\n function showImportButton() {\r\n var availableInModes = ['explorerchangemode', 'forms', 'items', 'form-templates', 'users'];\r\n\r\n return Tools.indexOf(availableInModes, Mode) > -1;\r\n }\r\n\r\n function onExportClick(onlyActive) {\r\n var exportType;\r\n\r\n switch (Mode) {\r\n case 'explorerchangemode':\r\n exportType = 'Locations';\r\n break;\r\n case 'items':\r\n exportType = 'Items';\r\n break;\r\n case 'forms':\r\n exportType = 'Forms';\r\n break;\r\n case 'form-templates':\r\n exportType = 'FormTemplates';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n exportElements({\r\n ElementOID: CurrentEntity.OID,\r\n ExportType: exportType,\r\n OnlyActive: !!onlyActive\r\n });\r\n }\r\n\r\n function onTUEVStoreExportClick() {\r\n if (!Client || !Client.Settings || !Client.Settings.ShowTUEVAuditAnalysis ||\r\n !CurrentEntity || !CurrentEntity.AdditionalSettings || !CurrentEntity.AdditionalSettings.IsStoreRegion) {\r\n return;\r\n }\r\n\r\n exportElements({\r\n ElementOID: CurrentEntity.OID,\r\n ExportType: 'StoreRegion',\r\n OnlyActive: false\r\n });\r\n }\r\n\r\n function exportElements(config) {\r\n if (!config) {\r\n return;\r\n }\r\n\r\n Tools.Spinner.show();\r\n\r\n Tools.http.post('export/elements/', config)\r\n .then(onExportSuccess)\r\n .fail(function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n }\r\n\r\n function onExportMasterdataOfCompleteHierarchyClick() {\r\n if (!DataManager.OrganizationUnitLoader.Data.Root) {\r\n return;\r\n }\r\n\r\n exportMasterdata({\r\n LocationOID: DataManager.OrganizationUnitLoader.Data.Root.OID,\r\n WithChildLocations: true,\r\n OnlyActive: Explorer.GetWithDeactivatedElements() === false\r\n });\r\n }\r\n\r\n function onExportMasterdataOfCurrentLocationClick() {\r\n if (!CurrentEntity) {\r\n return;\r\n }\r\n\r\n exportMasterdata({\r\n LocationOID: CurrentEntity.OID,\r\n WithChildLocations: false,\r\n OnlyActive: Explorer.GetWithDeactivatedElements() === false\r\n });\r\n }\r\n\r\n function exportMasterdata(config) {\r\n if (!config) {\r\n return;\r\n }\r\n\r\n Tools.Spinner.show();\r\n\r\n Tools.http.post('export/masterdata/', config)\r\n .then(onExportSuccess)\r\n .fail(function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n }\r\n\r\n function onUserExampleExportClick() {\r\n Tools.Spinner.show();\r\n\r\n var data = {\r\n InvalidRows: [],\r\n ExportType: 'Example'\r\n };\r\n\r\n Tools.http.post('export/users', data)\r\n .then(function (filename) {\r\n return onExportSuccess(filename, 'user-import-example');\r\n })\r\n .fail(function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n }\r\n\r\n function onExportSuccess(filename, type) {\r\n var friendlyDownloadName;\r\n\r\n switch (type) {\r\n case 'user-import-example':\r\n friendlyDownloadName = i18next.t('userImport.filenames.exampleFile') + '.xlsx';\r\n break;\r\n case 'user-import-errors':\r\n friendlyDownloadName = i18next.t('userImport.filenames.errorFile') + '.xlsx';\r\n break;\r\n }\r\n\r\n var url = '{0}export/users/{1}'.format(Config.BaseUri, filename);\r\n\r\n if (!!friendlyDownloadName) {\r\n url += '?friendlyDownloadName=' + friendlyDownloadName;\r\n }\r\n\r\n window.location = url;\r\n\r\n Tools.Spinner.hide();\r\n }\r\n\r\n function getActionDropdownAddEntityIconPath() {\r\n switch (Mode) {\r\n case 'forms':\r\n return './img/menu/formulare.svg';\r\n case 'schedules':\r\n return './img/menu/zeitplaene.svg';\r\n case 'events':\r\n return './img/menu/plaene.svg';\r\n case 'files':\r\n return './img/menu/ordner.svg';\r\n case 'items':\r\n return './img/menu/objekte.svg';\r\n case 'custom-menu-items':\r\n return './img/menu/menuepunkte-app.svg';\r\n case 'form-templates':\r\n return './img/menu/formularvorlagen.svg';\r\n case 'explorerchangemode':\r\n return './img/menu/raeume.svg';\r\n case 'keywords':\r\n return './img/menu/schlagwoerter.svg';\r\n case 'classifications':\r\n return './img/menu/klassifizierungen.svg';\r\n case 'priorities':\r\n return './img/menu/prioritaeten.svg';\r\n case 'categories':\r\n return './img/menu/werteklassen.svg';\r\n case 'status':\r\n return './img/menu/status.svg';\r\n case 'units':\r\n return './img/menu/einheiten.svg';\r\n case 'roles':\r\n return './img/menu/rollen.svg';\r\n case 'contacts':\r\n return './img/menu/kontakte.svg';\r\n case 'contact-groups':\r\n return './img/menu/kontaktgruppen.svg';\r\n case 'users':\r\n return './img/menu/benutzer.svg';\r\n case 'teams':\r\n return './img/menu/teams.svg';\r\n case 'testgroup-templates':\r\n return './img/menu/pruefgruppen.svg';\r\n case 'master-data-templates':\r\n return './img/menu/stammdaten.svg';\r\n case 'property-templates':\r\n return './img/menu/eigenschaften.svg';\r\n case 'mail-templates':\r\n return './img/menu/mail-templates.svg';\r\n case 'element-codings':\r\n return './img/menu/codierungen.svg';\r\n default:\r\n var urlHash = window.location.hash;\r\n\r\n if (!!urlHash && urlHash.contains('-modifications')) {\r\n var schemaLength = urlHash.indexOf('-modifications');\r\n var schemaName = urlHash.substr(1, schemaLength - 1);\r\n var schema = IndividualData.GetSchema(schemaName);\r\n\r\n if (schema) {\r\n return './img/menu/allgemein.svg';\r\n }\r\n }\r\n }\r\n }\r\n\r\n function initDataImport($container) {\r\n var usersMode = Mode === 'users';\r\n\r\n var options = {\r\n url: Config.BaseUri + 'import/' + (usersMode ? 'users' : 'elements'),\r\n params: function () {\r\n if (!usersMode) {\r\n return { ImportType: 'Items' };\r\n }\r\n }\r\n };\r\n\r\n var $upload = $container.find('.file-upload');\r\n\r\n $upload.upload(options);\r\n\r\n $upload\r\n .on('start.upload', Tools.Spinner.show)\r\n .on('uploaded.upload', usersMode ? onUserExcelImportUploaded : onElementExcelImportUploaded)\r\n .on('error.upload', Tools.OnUploadError);\r\n }\r\n\r\n function onUserExcelImportUploaded(_event, data) {\r\n // Überprüfen, ob überhaupt Lizenzen frei sind\r\n var assignedLicenses = Tools.GetAssignedUserLicensesCount();\r\n\r\n var userLicenses = Client.Licenses && Client.Licenses.UserLicenses ?\r\n Client.Licenses.UserLicenses :\r\n null;\r\n\r\n if (!userLicenses || (userLicenses.FullLicenses <= assignedLicenses.FullLicensesAssigned &&\r\n userLicenses.LimitedLicenses <= assignedLicenses.LimitedLicensesAssigned &&\r\n userLicenses.ViewRightLicenses <= assignedLicenses.ViewRightLicensesAssigned)) {\r\n Tools.Spinner.hide();\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.noLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.noLicensesAvailable.text'),\r\n ok: true\r\n });\r\n return;\r\n }\r\n\r\n var newUsers = {}; // Benutzer die importiert werden sollen\r\n\r\n var modifiedElements = [];\r\n var modifiedRoles = [];\r\n var modifiedTeams = [];\r\n\r\n // für die Überprüfüng, ob der Benutzername/Emailadresse mehrfach in der Datei vorkommt\r\n var usernames = [];\r\n var emailAddresses = [];\r\n\r\n var invalidRows = {}; // Key: userOID Value: fehlerhafte Zeile\r\n var validRows = {}; // Key: userOID Value: { User, Role, Team, Element, Item (Daten der Zeile) }\r\n\r\n Tools.Spinner.hide();\r\n\r\n var result = JSON.parse(data.response);\r\n\r\n if (result.Error === 'Invalid file format') {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.invalidFileFormat.title'),\r\n text: i18next.t('changeMode.messages.invalidFileFormat.text'),\r\n ok: true\r\n });\r\n } else if (result.Error) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.importError.title'),\r\n text: i18next.t('changeMode.messages.importError.text'),\r\n ok: true\r\n });\r\n } else if ((result.Data || []).length) {\r\n Tools.Spinner.show();\r\n\r\n var teamParent = changemode.RootTeam;\r\n\r\n result.Data.forEach(function (rowData) {\r\n if (rowData == null) {\r\n return;\r\n }\r\n\r\n var existingRole = null;\r\n var existingTeam = null;\r\n var existingOU = null;\r\n var licenseAndRoleCombinationIsInvalid = false;\r\n var newTeam = null;\r\n var licenseType = null;\r\n\r\n var item = Tools.Escape.ExcelImportUserItem(rowData);\r\n\r\n if (item.Errors == null) {\r\n item.Errors = {};\r\n }\r\n\r\n var newUser = {\r\n OID: uuid(),\r\n EnforcePasswordPolicy: true,\r\n ChangePassword: false,\r\n Language: User.Language,\r\n ModificationType: Enums.ModificationType.Added\r\n };\r\n\r\n if (item.Username) {\r\n var trimmedUsername = item.Username.trim();\r\n var usernameIsInvalid = (trimmedUsername.match(new RegExp('[:<>\"]', 'g')) || []).length > 0;\r\n var usernameExistsInClient = Tools.contains(Object.values(changemode.Users), function(user) {\r\n return !user.Deleted &&\r\n user.ModificationType !== Enums.ModificationType.Deleted &&\r\n user.Username === trimmedUsername;\r\n });\r\n\r\n if (usernameIsInvalid) {\r\n item.Errors[Enums.UserImport.Username] = Enums.UserImport.Errors.ContainsInvalidLetters;\r\n } else if (usernameExistsInClient) {\r\n item.Errors[Enums.UserImport.Username] = Enums.UserImport.Errors.AlreadyExist;\r\n } else if (Tools.contains(usernames, trimmedUsername)) {\r\n item.Errors[Enums.UserImport.Username] = Enums.UserImport.Errors.AlreadyExistsInFile;\r\n } else {\r\n usernames.push(trimmedUsername);\r\n newUser.Username = trimmedUsername;\r\n }\r\n }\r\n\r\n if (item.Password) {\r\n newUser.Password = item.Password;\r\n }\r\n\r\n if (item.FirstName) {\r\n newUser.Firstname = item.FirstName.trim();\r\n }\r\n\r\n if (item.LastName) {\r\n newUser.Lastname = item.LastName.trim();\r\n }\r\n\r\n newUser.Fullname = newUser.Lastname && newUser.Firstname ?\r\n newUser.Lastname + ', ' + newUser.Firstname :\r\n newUser.Lastname || newUser.Firstname || newUser.Username;\r\n\r\n if (item.EmailAddress) {\r\n var emailExistsInClient = Tools.contains(Object.values(changemode.Users), function(user) {\r\n return !user.Deleted &&\r\n user.ModificationType !== Enums.ModificationType.Deleted &&\r\n user.EmailAddress &&\r\n user.EmailAddress === item.EmailAddress;\r\n });\r\n\r\n if (emailExistsInClient) {\r\n item.Errors[Enums.UserImport.EmailAddress] = Enums.UserImport.Errors.AlreadyExist;\r\n } else if (Tools.contains(emailAddresses, item.EmailAddress)) {\r\n item.Errors[Enums.UserImport.EmailAddress] = Enums.UserImport.Errors.AlreadyExistsInFile;\r\n } else {\r\n emailAddresses.push(item.EmailAddress);\r\n newUser.EmailAddress = item.EmailAddress;\r\n }\r\n }\r\n\r\n if (item.LicenseType) {\r\n switch (item.LicenseType.trim().toLowerCase()) {\r\n case 'volllizenz':\r\n licenseType = Enums.LicenseType.Full;\r\n break;\r\n case 'eingeschränkt':\r\n licenseType = Enums.LicenseType.Limited;\r\n break;\r\n case 'sichtrecht':\r\n licenseType = Enums.LicenseType.ViewRight;\r\n break;\r\n default:\r\n item.Errors[Enums.UserImport.UserLicenseType] = Enums.UserImport.Errors.IsInvalid;\r\n break;\r\n }\r\n }\r\n\r\n if (licenseType >= 0) {\r\n newUser.LicenseType = licenseType;\r\n }\r\n\r\n if (item.Role) {\r\n existingRole = Tools.getFirst(Object.values(changemode.Roles), function(role) {\r\n return role.ModificationType !== Enums.ModificationType.Deleted && role.Title === item.Role;\r\n });\r\n\r\n if (existingRole == null) {\r\n item.Errors[Enums.UserImport.Role] = Enums.UserImport.Errors.DoesNotExist;\r\n } else if (licenseType != null) {\r\n // Volllizenz-Rollen dürfen nicht mit eingeschränkte und Sichtrechtbenutzer verknüpft werden\r\n switch (licenseType) {\r\n case Enums.LicenseType.Full:\r\n break;\r\n case Enums.LicenseType.Limited:\r\n if (existingRole.LicenseType === Enums.LicenseType.Full) {\r\n licenseAndRoleCombinationIsInvalid = true;\r\n }\r\n break;\r\n case Enums.LicenseType.ViewRight:\r\n if (existingRole.LicenseType !== Enums.LicenseType.ViewRight) {\r\n licenseAndRoleCombinationIsInvalid = true;\r\n }\r\n break;\r\n default:\r\n licenseAndRoleCombinationIsInvalid = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (licenseAndRoleCombinationIsInvalid) {\r\n item.Errors[Enums.UserImport.LicenseType] = Enums.UserImport.Errors.WrongLicenseCombination;\r\n }\r\n\r\n if (existingRole && !licenseAndRoleCombinationIsInvalid) {\r\n modifiedRoles = Tools.addUnique(modifiedRoles, existingRole, 'OID');\r\n }\r\n\r\n if (item.Team) {\r\n existingTeam = Tools.getFirst(Object.values(changemode.Teams), function(team) {\r\n return team.ModificationType !== Enums.ModificationType.Deleted && team.Title === item.Team;\r\n });\r\n\r\n if (existingRole != null && !licenseAndRoleCombinationIsInvalid) {\r\n if (existingTeam) {\r\n modifiedTeams.push(existingTeam);\r\n } else if ((newTeam = Tools.getFirst(modifiedTeams, item.Team, 'Title')) == null) { // damit ein Team nicht mehrfach erstellt wird\r\n newTeam = {\r\n OID: uuid(),\r\n Color: '#7E1210',\r\n ParentOID: teamParent.OID,\r\n Parent: teamParent,\r\n Title: item.Team,\r\n Position: getMaxPosition(teamParent.Children) + 1\r\n };\r\n\r\n modifiedTeams.push(newTeam);\r\n }\r\n }\r\n }\r\n\r\n if (item.OrganisationUnit) {\r\n existingOU = Tools.getFirst(Object.values(changemode.Elements), function(elem) {\r\n return elem.ModificationType !== 3 &&\r\n (elem.Type === Enums.elementType.Location || elem.Type === Enums.elementType.Root) &&\r\n elem.Title === item.OrganisationUnit;\r\n });\r\n\r\n if (existingOU == null) {\r\n item.Errors[Enums.UserImport.OrganisationUnit] = Enums.UserImport.Errors.DoesNotExist;\r\n } else {\r\n var elementIndex = Tools.indexOf(modifiedElements, existingOU, 'OID');\r\n\r\n if (elementIndex >= 0) {\r\n existingOU = modifiedElements[elementIndex];\r\n }\r\n\r\n var teamOID = (existingTeam || newTeam || {}).OID;\r\n if (teamOID && !Tools.contains(existingOU.Teams, teamOID, 'OID')) {\r\n if (existingOU.Teams == null) {\r\n existingOU.Teams = [];\r\n }\r\n\r\n existingOU.Teams.push({ OID: teamOID });\r\n }\r\n\r\n modifiedElements = Tools.addUnique(modifiedElements, existingOU, 'OID');\r\n }\r\n }\r\n\r\n if (Tools.hasProperties(item.Errors)) {\r\n invalidRows[newUser.OID] = item;\r\n } else {\r\n newUsers[newUser.OID] = newUser;\r\n\r\n validRows[newUser.OID] = {\r\n Role: existingRole,\r\n Team: Tools.Escape.Team(existingTeam || newTeam),\r\n User: Tools.Escape.User(newUser),\r\n Element: existingOU,\r\n Item: item\r\n };\r\n }\r\n });\r\n\r\n var invalidRowsArray = Object.values(invalidRows || {});\r\n\r\n if (!Tools.hasProperties(newUsers)) {\r\n if (invalidRowsArray.length === 0) {\r\n showUserImportIsEmptyMessage();\r\n Tools.Spinner.hide();\r\n return;\r\n }\r\n\r\n showUserImportErrors(invalidRowsArray);\r\n\r\n Tools.Spinner.hide();\r\n return;\r\n }\r\n\r\n var newUsersList = Object.values(newUsers);\r\n\r\n var newFullLicensesCount = newUsersList.filter(function(newUser) {\r\n return newUser.LicenseType === Enums.LicenseType.Full;\r\n }).length + assignedLicenses.FullLicensesAssigned;\r\n\r\n var newLimitedLicensesCount = newUsersList.filter(function(newUser) {\r\n return newUser.LicenseType === Enums.LicenseType.Limited;\r\n }).length + assignedLicenses.LimitedLicensesAssigned;\r\n\r\n var newViewRightLicensesCount = newUsersList.filter(function(newUser) {\r\n return newUser.LicenseType === Enums.LicenseType.ViewRight;\r\n }).length + assignedLicenses.ViewRightLicensesAssigned;\r\n\r\n var hasEnoughFullLicenses = userLicenses.FullLicenses == null\r\n ? true\r\n : userLicenses.FullLicenses >= newFullLicensesCount;\r\n var hasEnoughLimitedLicenses = userLicenses.LimitedLicenses == null\r\n ? true\r\n : userLicenses.LimitedLicenses >= newLimitedLicensesCount;\r\n var hasEnoughViewRightLicenses = userLicenses.ViewRightLicenses == null\r\n ? true\r\n : userLicenses.ViewRightLicenses >= newViewRightLicensesCount;\r\n\r\n var licenses = [];\r\n\r\n if (!hasEnoughFullLicenses) {\r\n licenses.push(i18next.t('changeMode.panels.properties.fullLicense'));\r\n }\r\n\r\n if (!hasEnoughLimitedLicenses) {\r\n licenses.push(i18next.t('changeMode.panels.properties.limitedLicense'));\r\n }\r\n\r\n if (!hasEnoughViewRightLicenses) {\r\n licenses.push(i18next.t('changeMode.panels.properties.viewRightLicense'));\r\n }\r\n\r\n if (licenses.length > 0) {\r\n Tools.Spinner.hide();\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.notEnoughLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.notEnoughLicensesAvailable.text', { licenses: licenses.join(', ')}),\r\n ok: true\r\n });\r\n return;\r\n }\r\n\r\n checkUsernameAndEmailAddressAvailability(newUsers, validRows, invalidRows)\r\n .then(function (validRows, invalidRows) {\r\n var validRowsList = Object.values(validRows);\r\n\r\n if (validRowsList.length === 0) {\r\n if (Object.keys(invalidRows).length === 0) {\r\n Tools.Spinner.hide();\r\n showUserImportIsEmptyMessage();\r\n\r\n return $.Deferred().reject();\r\n }\r\n\r\n return $.Deferred().resolve(invalidRows);\r\n }\r\n\r\n return importNewUsers(validRowsList);\r\n })\r\n .then(function (){\r\n if (invalidRows) {\r\n showUserImportErrors(invalidRowsArray, Object.values(newUsers));\r\n }\r\n })\r\n .always(Tools.Spinner.hide);\r\n } else {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.importNoData.title'),\r\n text: i18next.t('changeMode.messages.importNoData.text'),\r\n ok: true\r\n });\r\n }\r\n }\r\n\r\n function showUserImportIsEmptyMessage() {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.importNoData.title'),\r\n text: i18next.t('changeMode.messages.importNoData.text'),\r\n ok: true\r\n });\r\n }\r\n\r\n function checkUsernameAndEmailAddressAvailability(newUsers, validRows, invalidRows) {\r\n var newUsersArray = Object.values(newUsers);\r\n\r\n function availabilityCheckForUser(user) {\r\n var availabilityDeferred = $.Deferred();\r\n var doNotImport = false;\r\n\r\n if (user == null) {\r\n return availabilityDeferred.resolve().promise();\r\n }\r\n\r\n function usernameIsNotAvailable() {\r\n var row = validRows[user.OID];\r\n\r\n if (row && row.Item) {\r\n if (row.Item.Errors == null) {\r\n row.Item.Errors = {};\r\n }\r\n\r\n row.Item.Errors[Enums.UserImport.Username] = Enums.UserImport.Errors.AlreadyExist;\r\n }\r\n\r\n doNotImport = true;\r\n\r\n return checkEmailAddressAvailability();\r\n }\r\n\r\n function checkEmailAddressAvailability() {\r\n var emailAddressCheckDeferred = $.Deferred();\r\n\r\n function onFail() {\r\n emailIsNotAvailable();\r\n emailAddressCheckDeferred.resolve();\r\n }\r\n\r\n if (user.EmailAddress) {\r\n Tools.CheckAvailability(\r\n user.EmailAddress,\r\n { email: user.EmailAddress, type: 2 },\r\n function () {\r\n if (doNotImport) {\r\n removeFromImport();\r\n }\r\n\r\n emailAddressCheckDeferred.resolve();\r\n },\r\n onFail\r\n );\r\n } else {\r\n removeFromImport();\r\n emailAddressCheckDeferred.resolve();\r\n }\r\n\r\n return emailAddressCheckDeferred.promise()\r\n .then(function() {\r\n availabilityDeferred.resolve();\r\n });\r\n }\r\n\r\n function emailIsNotAvailable() {\r\n var row = validRows[user.OID];\r\n\r\n if (row && row.Item) {\r\n if (row.Item.Errors == null) {\r\n row.Item.Errors = {};\r\n }\r\n\r\n row.Item.Errors[Enums.UserImport.EmailAddress] = Enums.UserImport.Errors.AlreadyExist;\r\n }\r\n\r\n doNotImport = true;\r\n removeFromImport();\r\n }\r\n\r\n function removeFromImport() {\r\n if (!doNotImport) {\r\n return;\r\n }\r\n\r\n var importItem = validRows[user.OID].Item;\r\n\r\n delete validRows[user.OID];\r\n delete newUsers[user.OID];\r\n\r\n invalidRows[user.OID] = importItem;\r\n }\r\n\r\n Tools.CheckAvailability(\r\n user.Username,\r\n { username: user.Username, type: 1 },\r\n checkEmailAddressAvailability,\r\n usernameIsNotAvailable\r\n );\r\n\r\n return availabilityDeferred.promise();\r\n }\r\n\r\n return Tools.ForEachDeferredAction(\r\n newUsersArray,\r\n availabilityCheckForUser,\r\n {\r\n Visible: true,\r\n Text: i18next.t('progressbar.checkingUserAndEmailAvailability'),\r\n ScreenBlock: true\r\n })\r\n .then(function() {\r\n return $.Deferred().resolve(validRows, invalidRows);\r\n });\r\n }\r\n\r\n function importNewUsers(validRowsList) {\r\n function createNewUser(userRow) {\r\n var userImportDeferred = $.Deferred();\r\n\r\n ressources.users.put(userRow.User, function () {\r\n changemode.Users[userRow.User.OID] = userRow.User;\r\n add(userRow.User);\r\n\r\n if (userRow.Team.Users == null) {\r\n userRow.Team.Users = [];\r\n }\r\n\r\n var teamUser = Tools.getFirst(userRow.Team.Users, userRow.User.OID, 'OID');\r\n\r\n if (teamUser) {\r\n teamUser.Roles = Tools.addUnique(teamUser.Roles, userRow.Role.OID);\r\n } else {\r\n userRow.Team.Users.push(\r\n {OID: userRow.User.OID, Roles: [userRow.Role.OID]}\r\n );\r\n }\r\n\r\n teams.put(userRow.Team)\r\n .then(function () {\r\n changemode.Teams[userRow.Team.OID] = userRow.Team;\r\n\r\n var teamParent = changemode.RootTeam;\r\n\r\n if (teamParent) {\r\n teamParent.Children = teamParent.Children || [];\r\n teamParent.Children.push(userRow.Team);\r\n teamParent.Children.sort(Tools.SortByPosition);\r\n }\r\n\r\n if (userRow.Element.Teams == null) {\r\n userRow.Element.Teams = [];\r\n }\r\n\r\n // Teamzuordnung zur OE\r\n if (!Tools.contains(userRow.Element.Teams, userRow.Team.OID, 'OID')) {\r\n userRow.Element.Teams.push({ OID: userRow.Team.OID });\r\n }\r\n\r\n return putElement(userRow.Element)\r\n .then(userImportDeferred.resolve)\r\n .fail(userImportDeferred.reject);\r\n }).fail(userImportDeferred.reject);\r\n }).fail(userImportDeferred.reject);\r\n\r\n return userImportDeferred.promise();\r\n }\r\n\r\n return Tools.ForEachDeferredAction(\r\n validRowsList,\r\n createNewUser,\r\n { Visible: true, Text: i18next.t('progressbar.addingUsers'), ScreenBlock: true }\r\n );\r\n }\r\n\r\n function showUserImportErrors(errorRows, newUsers) {\r\n if ((errorRows || []).length === 0) {\r\n return;\r\n }\r\n\r\n var options = {\r\n NewUsers: newUsers,\r\n InvalidRows: errorRows,\r\n Buttons: {\r\n CustomAction: {\r\n Caption: i18next.t('userImport.popup.downloadFile'),\r\n OnClick: downloadErrorRowsExcel,\r\n Data: errorRows\r\n },\r\n Close: {\r\n Caption: i18next.t('misc.close'),\r\n OnClick: $.noop\r\n }\r\n }\r\n };\r\n\r\n new Tools.Popups.UserImportErrors(options).Show();\r\n }\r\n\r\n function downloadErrorRowsExcel(invalidRows) {\r\n var data = {\r\n InvalidRows: Object.values(invalidRows),\r\n ExportType: 'HighlightErrors'\r\n };\r\n\r\n Tools.Spinner.show();\r\n\r\n Tools.http.post('export/users', data)\r\n .then(function (filename) {\r\n return onExportSuccess(filename, 'user-import-errors');\r\n })\r\n .fail(function (xhr) {\r\n Tools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n Tools.Spinner.hide();\r\n });\r\n }\r\n\r\n function onElementExcelImportUploaded(_event, data) {\r\n var newElements = [];\r\n var modifiedElements = [];\r\n var licensesAssigned, result, progressbarText;\r\n\r\n function createElements(item, parent, idx) {\r\n var newElement;\r\n\r\n item = Tools.Escape.ExcelImportElementItem(item);\r\n\r\n newElement = {\r\n OID: uuid(),\r\n ParentOID: parent.OID,\r\n Title: item.Title,\r\n Color: '#7E1210',\r\n Enabled: parent.Enabled,\r\n Required: true,\r\n Position: getMaxPosition(parent.Children) + idx + 1\r\n };\r\n\r\n switch (Mode) {\r\n case 'explorerchangemode':\r\n newElement.Type = Enums.elementType.Location;\r\n newElement.Attribute = 1;\r\n newElement.Address = {};\r\n break;\r\n case 'items':\r\n newElement.Type = Enums.elementType.ObjectTemplate;\r\n newElement.Attribute = 2;\r\n break;\r\n case 'forms':\r\n newElement.Type = Enums.elementType.Form;\r\n break;\r\n case 'form-templates':\r\n newElement.Type = Enums.elementType.FormTemplate;\r\n break;\r\n }\r\n\r\n modifiedElements.push(newElement);\r\n\r\n (item.Children || []).forEach(function (item, idx) {\r\n createElements(item, newElement, idx);\r\n });\r\n\r\n return newElement;\r\n }\r\n\r\n Tools.Spinner.hide();\r\n\r\n result = JSON.parse(data.response);\r\n\r\n if (result.Error === 'Invalid file format') {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.invalidFileFormat.title'),\r\n text: i18next.t('changeMode.messages.invalidFileFormat.text'),\r\n ok: true\r\n });\r\n } else if (result.Error) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.importError.title'),\r\n text: i18next.t('changeMode.messages.importError.text'),\r\n ok: true\r\n });\r\n } else if ((result.Data || []).length) {\r\n result.Data.forEach(function (item, idx) {\r\n newElements.push(createElements(item, CurrentEntity, idx));\r\n });\r\n\r\n if (!newElements.length) {\r\n return;\r\n }\r\n\r\n switch (Mode) {\r\n case 'explorerchangemode':\r\n if (Client.Licenses && Tools.isNumber(Client.Licenses.Rooms)) {\r\n licensesAssigned = Object\r\n .keys(changemode.Elements)\r\n .map(function (oid) {\r\n return changemode.Elements[oid];\r\n })\r\n .filter(function (element) {\r\n return (element.Type === Enums.elementType.Root ||\r\n element.Type === Enums.elementType.Location) &&\r\n element.ModificationType !== Enums.ModificationType.Deleted;\r\n })\r\n .length;\r\n\r\n if (licensesAssigned + modifiedElements.length > Client.Licenses.Rooms) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.noLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.noLicensesAvailable.text'),\r\n ok: true\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n progressbarText = i18next.t('progressbar.addingRoom_plural');\r\n break;\r\n case 'items':\r\n progressbarText = i18next.t('progressbar.addingItem_plural');\r\n break;\r\n case 'forms':\r\n if (Client.Licenses && Tools.isNumber(Client.Licenses.Forms)) {\r\n licensesAssigned = Object\r\n .keys(changemode.Elements)\r\n .map(function (oid) {\r\n return changemode.Elements[oid];\r\n })\r\n .filter(function (element) {\r\n return element.Type === Enums.elementType.Form &&\r\n element.ModificationType !== Enums.ModificationType.Deleted;\r\n })\r\n .length;\r\n\r\n if (licensesAssigned + modifiedElements.length > Client.Licenses.Forms) {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.noLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.noLicensesAvailable.text'),\r\n ok: true\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n progressbarText = i18next.t('progressbar.addingForm_plural');\r\n break;\r\n case 'form-templates':\r\n progressbarText = i18next.t('progressbar.addingFormTemplate_plural');\r\n break;\r\n }\r\n\r\n Tools.Progressbar.Start(modifiedElements.length, progressbarText, function () {\r\n newElements.forEach(function (newElement) {\r\n Center.AddTo(newElement, CurrentEntity);\r\n });\r\n }, true);\r\n\r\n (function loop() {\r\n var element = modifiedElements.shift();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n Tools.Progressbar.StartProgress();\r\n\r\n putElement(element)\r\n .done(function () {\r\n element.Parent = changemode.Elements[element.ParentOID];\r\n element.Parent.Children = element.Parent.Children || [];\r\n element.Parent.Children.push(element);\r\n\r\n changemode.Elements[element.OID] = element;\r\n\r\n loop();\r\n Tools.Progressbar.StopProgress();\r\n })\r\n .fail(function (rsp) {\r\n Tools.Progressbar.Stop();\r\n\r\n if (rsp.status === 409 && rsp.responseText === 'No licenses available') {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.noLicensesAvailable.title'),\r\n text: i18next.t('changeMode.messages.noLicensesAvailable.text'),\r\n ok: true\r\n });\r\n }\r\n });\r\n }());\r\n } else {\r\n Tools.Message.Show({\r\n title: i18next.t('changeMode.messages.importNoData.title'),\r\n text: i18next.t('changeMode.messages.importNoData.text'),\r\n ok: true\r\n });\r\n }\r\n }\r\n\r\n function isVisible() {\r\n return $center.is(':visible') && !$center.hasClass('center-resized');\r\n }\r\n\r\n Center.Show = show;\r\n Center.IsVisible = isVisible;\r\n Center.Select = select;\r\n Center.Add = add;\r\n Center.AddTo = addTo;\r\n Center.AddBefore = addBefore;\r\n Center.AddAfter = addAfter;\r\n Center.MoveTo = moveTo;\r\n Center.Remove = remove;\r\n Center.ResetSearch = resetSearch;\r\n Center.ResetDepthChooser = resetDepthChooser;\r\n Center.AddClassToEntityNode = addClassToEntityNode;\r\n Center.RemoveClassFromEntityNode = removeClassFromEntityNode;\r\n\r\n return (global.Center = Center);\r\n})(window);","(function (global) {\r\n var ColorPicker = function(options) {\r\n this.options = options;\r\n\r\n if (!options || !options.$element || !options.$element.length) {\r\n return;\r\n }\r\n\r\n this.IsStatic = options.$staticContainer && options.$staticContainer.length;\r\n this.IsRenderTo = !!options.RenderTo;\r\n\r\n setInitialColor.call(this);\r\n\r\n this.picker = new CP(options.$element[0], this.IsStatic ? false : undefined, this.IsRenderTo);\r\n this.$picker = $(this.picker.picker);\r\n\r\n createColorWrapperColumn.call(this);\r\n createTextbox.call(this);\r\n updateButtons.call(this);\r\n setFitMethod.call(this);\r\n addAdditionalClass.call(this);\r\n\r\n bindEvents.call(this);\r\n };\r\n\r\n function onPickerChange(picker, options, color) {\r\n if (!color) {\r\n removeSelectedColor(options);\r\n\r\n return;\r\n }\r\n\r\n color = ('#' + color).toUpperCase();\r\n\r\n options.$element\r\n .val(color)\r\n .attr('value', color)\r\n .data('color', color)\r\n .attr('data-color', color);\r\n\r\n if (options.$textinput) {\r\n options.$textinput\r\n .val(color)\r\n .css({\r\n 'background-color': color,\r\n color: new Color(color).getContrastTextColor()\r\n })\r\n .attr('value', color)\r\n .data('color', color)\r\n .attr('data-color', color);\r\n\r\n if (!options.$element !== options.$textinput) {\r\n options.$textinput.trigger('change');\r\n }\r\n }\r\n\r\n if (options.SetBackgroundColor) {\r\n options.$element.css({\r\n backgroundColor: color\r\n });\r\n }\r\n\r\n if (options.buttons) {\r\n if (options.buttons.remove) {\r\n $(options.buttons.remove.selector).removeAttr('disabled');\r\n }\r\n }\r\n\r\n options.$element.trigger('change');\r\n }\r\n\r\n function removeSelectedColor(options) {\r\n options.$element\r\n .val('')\r\n .removeAttr('value')\r\n .removeAttr('data-color')\r\n .data('color', '');\r\n\r\n if (options.$textinput) {\r\n options.$textinput\r\n .val('')\r\n .css({\r\n 'background-color': '',\r\n color: ''\r\n })\r\n .removeAttr('value')\r\n .removeAttr('data-color')\r\n .data('color', '');\r\n\r\n if (!options.$element !== options.$textinput) {\r\n options.$textinput.trigger('change');\r\n }\r\n }\r\n\r\n if (options.SetBackgroundColor) {\r\n options.$element.css({\r\n backgroundColor: '#fff'\r\n });\r\n }\r\n\r\n options.$element.trigger('change');\r\n }\r\n\r\n function setColor(hexCode) {\r\n this.picker.set(hexCode);\r\n this.picker.trigger('change', [!!hexCode ? hexCode.slice(1) : null], 'main-change');\r\n }\r\n\r\n function onDefaultColorClick(event, picker) {\r\n picker.set(this.title);\r\n picker.trigger('change', [this.title.slice(1)], 'main-change');\r\n }\r\n\r\n function updatePicker(picker) {\r\n if (this.value.length) {\r\n picker.set(this.value);\r\n picker.trigger('change', [this.value.slice(1)]);\r\n }\r\n }\r\n\r\n function unbindEvents() {\r\n var picker = this.picker;\r\n var options = this.options;\r\n\r\n picker.off('change', 'main-change');\r\n\r\n options.$element.find('color-picker-box').off('.colorPicker');\r\n $(picker.picker).find('.color-picker-box').off('.colorPicker');\r\n options.$textinput.off('.colorPicker');\r\n\r\n if (options.buttons) {\r\n if (options.buttons.remove) {\r\n this.$picker.find(options.buttons.remove.selector).off('click');\r\n }\r\n }\r\n }\r\n\r\n function bindEvents() {\r\n unbindEvents.call(this);\r\n\r\n var picker = this.picker;\r\n var options = this.options;\r\n var updateTimeout;\r\n var $defaultColors = $(picker.picker).find('.color-picker-box');\r\n\r\n picker.on('change', function(color) {\r\n onPickerChange(picker, options, color);\r\n }, 'main-change');\r\n\r\n $defaultColors.on('click.colorPicker', function(e) {\r\n onDefaultColorClick.call(this, e, picker);\r\n });\r\n\r\n if (options.$textinput) {\r\n options.$textinput.on('input.colorPicker', function() {\r\n var that = this;\r\n\r\n if (updateTimeout) {\r\n window.clearTimeout(updateTimeout);\r\n updateTimeout = null;\r\n }\r\n\r\n if ($(that).val().length <= 0 || $(that).is(':invalid')) {\r\n return;\r\n }\r\n\r\n updateTimeout = window.setTimeout(function() {\r\n if (!$(that).is(':invalid')) {\r\n updatePicker.call(that, picker);\r\n }\r\n\r\n window.clearTimeout(updateTimeout);\r\n updateTimeout = null;\r\n }, 500);\r\n });\r\n\r\n options.$textinput.on('mouseup.colorPicker', function(e) {\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n if (options.buttons) {\r\n if (options.IsOptional &&\r\n options.buttons.remove &&\r\n options.buttons.remove.onClick instanceof Function) {\r\n $(options.buttons.remove.selector).on('click', options.buttons.remove.onClick);\r\n }\r\n }\r\n }\r\n\r\n function createColorWrapperColumn() {\r\n var $picker = this.$picker;\r\n var $column = $('
    ');\r\n\r\n $column.append(createDefaultColorsContainer.call(this));\r\n\r\n $picker.append($column);\r\n\r\n $picker.find('.color-picker-control').prependTo($column);\r\n }\r\n\r\n function updateButtons() {\r\n var options = this.options;\r\n\r\n if (!options.buttons) {\r\n return;\r\n }\r\n\r\n if (options.IsOptional && options.buttons.remove && !!options.buttons.remove.selector) {\r\n var $btn = $(options.buttons.remove.selector);\r\n\r\n $btn.text(options.buttons.remove.caption);\r\n $btn.removeClass('hide');\r\n\r\n if (!options.InitialColor) {\r\n $btn.attr('disabled', 'disabled');\r\n }\r\n }\r\n }\r\n\r\n function createDefaultColorsContainer() {\r\n var options = this.options;\r\n var defaultColors = [];\r\n var $container, $box;\r\n\r\n if ((options.DefaultColors || []).length) {\r\n defaultColors = defaultColors.concat(options.DefaultColors);\r\n }\r\n\r\n if (!defaultColors.length) {\r\n return;\r\n }\r\n\r\n this.DefaultColors = true;\r\n\r\n $container = $('
    ');\r\n\r\n defaultColors.forEach(function(defaultColor) {\r\n $box = $('
    ');\r\n $box.attr('title', defaultColor)\r\n .css('backgroundColor', defaultColor);\r\n\r\n $container.append($box);\r\n });\r\n\r\n return $container;\r\n }\r\n\r\n function setInitialColor() {\r\n var options = this.options;\r\n var initialColor = options.InitialColor;\r\n\r\n if (!initialColor && !options.IsOptional) {\r\n initialColor = '#7E1210';\r\n }\r\n\r\n if (initialColor) {\r\n options.$element\r\n .val(initialColor)\r\n .attr('value', initialColor)\r\n .attr('data-color', initialColor)\r\n .data('color', initialColor);\r\n } else {\r\n options.$element\r\n .val('')\r\n .removeAttr('value')\r\n .removeAttr('data-color')\r\n .data('color', '');\r\n }\r\n }\r\n\r\n function createTextbox() {\r\n var options = this.options;\r\n var picker = this.picker;\r\n\r\n if (options.$element.attr('type') === 'text') {\r\n options.$textinput = options.$element;\r\n } else if (options.ShowTextbox) {\r\n var $container = $('
    ');\r\n var $textinput = $(''.format(CP.HSV2HEX(picker.get([0, 1, 1]))));\r\n options.$textinput = $textinput;\r\n\r\n $container.append($textinput);\r\n this.$picker.find('.color-picker-control').prepend($container);\r\n }\r\n\r\n if (options.$textinput) {\r\n options.$textinput[0].minLength = 4;\r\n options.$textinput[0].maxLength = 7;\r\n options.$textinput[0].pattern = '^#[A-Fa-f0-9]{4,6}$';\r\n options.$textinput[0].required = !options.IsOptional;\r\n\r\n if (options.$textinput.siblings('.button-steal')) {\r\n options.$textinput.siblings('.button-steal').addClass('hide');\r\n\r\n if (options.buttons && options.buttons.remove) {\r\n options.$textinput.removeClass('xlarge');\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setFitMethod() {\r\n var options = this.options;\r\n\r\n if (this.IsStatic) {\r\n this.picker.fit = function() {\r\n this.picker.style.left = this.picker.style.top = '';\r\n }\r\n } else if (this.IsRenderTo) {\r\n this.picker.fit = function() {\r\n var position = options.$element.position();\r\n var height = options.$element.outerHeight();\r\n var $picker = $(this.picker);\r\n\r\n $picker.css({\r\n top: position.top + height,\r\n left: position.left,\r\n width: $picker.outerWidth()\r\n });\r\n }\r\n }\r\n }\r\n\r\n function addAdditionalClass() {\r\n if (this.IsStatic) {\r\n this.$picker.addClass('static');\r\n }\r\n }\r\n\r\n function show() {\r\n if (this.picker.visible) {\r\n return;\r\n }\r\n\r\n var options = this.options;\r\n var picker = this.picker;\r\n\r\n if (this.IsStatic) {\r\n picker.enter(options.$staticContainer[0]);\r\n } else if (this.IsRenderTo) {\r\n picker.enter(options.RenderTo);\r\n } else {\r\n picker.enter();\r\n }\r\n }\r\n\r\n function hide() {\r\n if (!this.picker.visible) {\r\n return;\r\n }\r\n\r\n this.picker.exit();\r\n }\r\n\r\n\r\n ColorPicker.prototype.Show = show;\r\n ColorPicker.prototype.Hide = hide;\r\n ColorPicker.prototype.SetColor = setColor;\r\n\r\n return (global.ColorPicker = ColorPicker);\r\n})(window);","(function(global) {\r\n\tvar Comments = {};\r\n\r\n\tfunction get(id, types, type, skipRows, callback, errorHandler) {\r\n\t\tvar typeParam = '?types={0}&AssignedElementType={1}'.format(types.join('|'), type);\r\n\t\tif(skipRows && skipRows > 0) {\r\n\t\t\ttypeParam += '&skip={0}&take=1'.format(skip);\r\n\t\t}\r\n\r\n\t\tif (!errorHandler) {\r\n\t\t\terrorHandler = function (xhr) {\r\n\t\t\t\tTools.handleHttpError(Enums.HttpActionType.Read, xhr);\r\n\t\t\t\tTools.Spinner.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tTools.http.get('comments/' + id + typeParam, function(msg) {\r\n\t\t\t\tif (callback instanceof Function) {\r\n\t\t\t\t\tcallback(msg);\r\n\t\t\t\t}\r\n\t\t\t}, errorHandler);\r\n\t}\r\n\r\n\tfunction put(comment, callback, errorHandler) {\r\n\t\tif (!errorHandler) {\r\n\t\t\terrorHandler = function (xhr) {\r\n\t\t\t\tTools.handleHttpError(Enums.HttpActionType.Write, xhr);\r\n\t\t\t\tTools.Spinner.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tType: comment.Type,\r\n\t\t\tText: comment.Text || null,\r\n\t\t\tAssignmentOID: comment.AssignmentOID || null,\r\n\t\t\tAssignmentID: comment.AssignmentID || null,\r\n\t\t\tCreationTimestamp: Tools.dateTime.toGMTString(comment.CreationTimestamp ? comment.CreationTimestamp : new Date()),\r\n\t\t\tModificationTimestamp: Tools.dateTime.toGMTString(comment.ModificationTimestamp ? comment.ModificationTimestamp : new Date()),\r\n\t\t\tCreatorOID: comment.CreatorOID,\r\n\t\t\tEditorOID: comment.EditorOID\r\n\t\t};\r\n\r\n\t\tTools.UnEscape.Comment(data);\r\n\r\n\t\tTools.http.put('comments/' + comment.OID, data, function () {\r\n\t\t\tif (callback instanceof Function) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t}, errorHandler);\r\n\t}\r\n\r\n\tfunction del(oid, callback, errorHandler) {\r\n\t\tif (!errorHandler) {\r\n\t\t\terrorHandler = function (xhr) {\r\n\t\t\t\tTools.handleHttpError(Enums.HttpActionType.Delete, xhr);\r\n\t\t\t\tTools.Spinner.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tTools.http.del('comments/' + oid, function() {\r\n\t\t\t\tif (callback instanceof Function) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t}, errorHandler);\r\n\t}\r\n\r\n\tComments.get = get;\r\n\tComments.put = put;\r\n\tComments.del = del;\r\n\r\n\treturn (global.Comments = Comments);\r\n})(window);","$.fn.ContextMenu = function (options) {\r\n // options - Form --------------\r\n // selector : string (optional)\r\n // scrollableContainerSelector : string (optional)\r\n // click: function(element)\r\n // zIndex: number (optional)\r\n // structure : array[object]\r\n // [\r\n // {\r\n // type: int (1 = Button, 2 = Line)\r\n // title: string or string function()\r\n // icon: string(imageurl)\r\n // visible: boolean function($element)\r\n // disabled: boolean function($element)\r\n // click: function()\r\n // }\r\n //]\r\n // --------------------------\r\n if (this.length <= 0) {\r\n return;\r\n }\r\n\r\n var $this = $(this);\r\n\r\n if (options.selector) {\r\n $this.on('contextmenu', options.selector, function (event) {\r\n contextmenu.show(this, event, options);\r\n\r\n return false;\r\n });\r\n } else {\r\n $this.on('contextmenu', function (event) {\r\n contextmenu.show(this, event, options);\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (options.scrollableContainerSelector) {\r\n var $scrollableContainer = $this.parents(options.scrollableContainerSelector);\r\n\r\n if (!$scrollableContainer.length) {\r\n $scrollableContainer = $this.find(options.scrollableContainerSelector);\r\n }\r\n\r\n $scrollableContainer.on('scroll', function() {\r\n contextmenu.close();\r\n });\r\n } else {\r\n $this.on('scroll', function() {\r\n contextmenu.close();\r\n });\r\n }\r\n};\r\n\r\nvar contextmenu = {\r\n options: null,\r\n element: null,\r\n $element: null,\r\n clipboard: {},\r\n show: function (element, event, options) {\r\n var $contextmenu = $('#gfx-contextmenu');\r\n var $items = $('
    ');\r\n var position = { top: event.pageY, left: event.pageX };\r\n var height;\r\n var anyItemVisible = false;\r\n\r\n if (options.enabled === false ||\r\n typeof options.enabled === 'function' &&\r\n !options.enabled(element, event)) {\r\n return this;\r\n }\r\n\r\n this.options = options;\r\n this.element = element;\r\n this.$element = $(element);\r\n\r\n if (options.show) {\r\n options.show(element, event);\r\n }\r\n\r\n $('body').on('click.hideContextmenu contextmenu.hideContextmenu', this.close);\r\n\r\n var self = this;\r\n (options.items || []).forEach(function (item) {\r\n var isDisabled, title, $item;\r\n\r\n if (typeof item.visible === 'function' && !item.visible(self.$element)) {\r\n return;\r\n }\r\n\r\n if (item.type === 1) {\r\n isDisabled = typeof item.disabled === 'function' && item.disabled(self.$element);\r\n title = item.title instanceof Function ? item.title() : item.title;\r\n\r\n $item = $('
    {0}
    '.format(title, isDisabled ? ' disabled' : ''));\r\n\r\n if (item.icon) {\r\n $item.append('
    '.format(item.icon));\r\n }\r\n\r\n if (item.styles) {\r\n $item.find('.c-co-ic').css(item.styles);\r\n }\r\n\r\n\r\n if (!isDisabled) {\r\n $item.on('click.e', item.click);\r\n $item.on('click.c', contextmenu.close);\r\n }\r\n\r\n $items.append($item);\r\n anyItemVisible = true;\r\n } else if (item.type === 2) {\r\n $items.append('
    ');\r\n }\r\n });\r\n\r\n if (!anyItemVisible) {\r\n $contextmenu.addClass('hide');\r\n return this;\r\n }\r\n\r\n $contextmenu\r\n .empty()\r\n .append($items)\r\n .removeClass('hide');\r\n\r\n height = $contextmenu.height();\r\n\r\n if (position.top + height > window.innerHeight) {\r\n position.top -= height;\r\n }\r\n\r\n if (options.useSelectorAsContainer && event.target) {\r\n $contextmenu.detach();\r\n\r\n $(event.target)\r\n .css('position', 'relative')\r\n .append($contextmenu);\r\n\r\n $contextmenu.css({ top: event.offsetY, left: event.offsetX });\r\n } else if (!$contextmenu.parent().is('body')) {\r\n $contextmenu.detach();\r\n\r\n $('body').append($contextmenu);\r\n\r\n $contextmenu.css(position);\r\n } else {\r\n $contextmenu.css(position);\r\n }\r\n\r\n $contextmenu.css('zIndex', options.zIndex == null || isNaN(options.zIndex) ?\r\n '' :\r\n options.zIndex);\r\n\r\n return this;\r\n },\r\n close: function () {\r\n var $contextMenu = $('#gfx-contextmenu');\r\n\r\n $contextMenu.addClass('hide');\r\n\r\n if (contextmenu.options) {\r\n if (contextmenu.options.useSelectorAsContainer) {\r\n $contextMenu.parent().css('position', '');\r\n $contextMenu.detach();\r\n\r\n $('body').append($contextMenu);\r\n }\r\n\r\n if (contextmenu.options.hide) {\r\n contextmenu.options.hide();\r\n }\r\n }\r\n\r\n $('body').off('click.hideContextmenu contextmenu.hideContextmenu');\r\n\r\n return this;\r\n },\r\n setClipboardData: function (clipboardid, data) {\r\n // data - Form --------------\r\n // element : object (to copy or cut)\r\n // mode : int (example : 1 = copy, 2 = cut)\r\n // --------------------------\r\n this.clipboard[clipboardid] = data;\r\n\r\n return this;\r\n },\r\n getClipboardData: function (clipboardid) {\r\n return this.clipboard[clipboardid];\r\n },\r\n wipeClipboardData: function () {\r\n if (!this.clipboard) {\r\n return this;\r\n }\r\n\r\n for (var clipboardId in this.clipboard) {\r\n delete this.clipboard[clipboardId];\r\n }\r\n\r\n return this;\r\n }\r\n};\r\n\r\n$('#gfx-contextmenu').on('click.preventClose', function (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n return false;\r\n});","(function (global) {\r\n\r\n var $dropdownButton;\r\n var $dropdownPanel = $('#dropdownListPanel');\r\n var availableOptions = [];\r\n var selectedOptions = [];\r\n var isMultiselect;\r\n var allowNoSelection;\r\n var unselectOnSecondClick;\r\n var toggleAllOptionsButton;\r\n var updateButtonTitle;\r\n var defaultButtonTitle;\r\n var onChangeEvent;\r\n var onShowEvent;\r\n var onHideEvent;\r\n\r\n /**\r\n * @param {DropdownListData} data - Die Einstellungen der DropdownListe\r\n * @param {JQuery} data.Element - Der Button mit dem die DropdownListe geöffnet und geschlossen werden soll.\r\n * @param {Object[]=} data.Options - Die möglichen Optionen der DropdownListe.\r\n * @param {bool=false} data.Multiselect - Kann mehr als eine Option ausgewählt werden.\r\n * @param {bool=false} data.AllowNoSelection - Darf keine Option ausgewählt sein.\r\n * @param {bool=false} data.CheckAllButton - Button um alle Optionen an bzw. ab zu wählen.\r\n * @param {bool=false} data.UpdateButtonTitle - Soll der Button Title aktualisiert werden.\r\n * @param {bool=} data.DefaultButtonTitle - Text der angezeigt werden soll wenn nichts ausgewählt ist.\r\n * @param {bool=true} data.UnselectOnSecondClick - Soll eine Option abgewählt werden wenn diese zum zweiten Mal angeklickt wurde. (Nicht bei Mehrfachauswahl)\r\n * @param {function=} data.OnChangeEvent - Wird ausgelöst sobald eine Option angeklickt wurde.\r\n * @param {function=} data.OnShowEvent - Wird beim Einblenden der DropdownListe ausgelöst.\r\n * @param {function=} data.OnHideEvent - Wird beim Ausblenden der DropdownListe ausgelöst.\r\n */\r\n function DropdownList(data) {\r\n $dropdownButton = data.Element;\r\n addOptions(data.Options || []);\r\n isMultiselect = typeof data.Multiselect !== 'undefind' ? data.Multiselect : false;\r\n allowNoSelection = typeof data.AllowNoSelection !== 'undefind' ? data.AllowNoSelection : false;\r\n toggleAllOptionsButton = typeof data.ToggleAllOptionsButton !== 'undefind' ? data.ToggleAllOptionsButton : false;\r\n updateButtonTitle = typeof data.UpdateButtonTitle !== 'undefind' ? data.UpdateButtonTitle : false;\r\n defaultButtonTitle = data.DefaultButtonTitle || $dropdownButton.find('.btn-text').text();\r\n unselectOnSecondClick = typeof data.UnselectOnSecondClick !== 'undefind' ? data.UnselectOnSecondClick : true;\r\n onChangeEvent = data.OnChangeEvent;\r\n onShowEvent = data.OnShowEvent;\r\n onHideEvent = data.OnHideEvent;\r\n\r\n unbindEvents();\r\n bindEvents();\r\n\r\n updateButton();\r\n }\r\n\r\n function show() {\r\n renderOptions();\r\n $dropdownPanel.removeClass('hide');\r\n $dropdownButton.addClass('active');\r\n }\r\n\r\n function hide() {\r\n $dropdownPanel.addClass('hide');\r\n $dropdownButton.removeClass('active');\r\n }\r\n\r\n function setOptions(options) {\r\n var tmpOption;\r\n var cnt, len;\r\n\r\n availableOptions = options;\r\n selectedOptions = [];\r\n\r\n for (cnt = 0, len = options.length; cnt < len; cnt++) {\r\n tmpOption = options[cnt];\r\n\r\n if (tmpOption.IsSelected && (selectedOptions.length < 1 || isMultiselect)) {\r\n selectedOptions.push(tmpOption.Value);\r\n }\r\n }\r\n\r\n updateButton();\r\n }\r\n\r\n function addOptions(options) {\r\n var cnt, len;\r\n var option;\r\n\r\n for (cnt = 0, len = options.length; cnt < len; cnt++) {\r\n option = options[cnt];\r\n\r\n if (!Tools.contains(availableOptions, option.Value, 'Value')) {\r\n availableOptions.push(option);\r\n\r\n if (option.IsSelected) {\r\n selectedOptions.push(option.Value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function removeOptions(options) {\r\n var cnt, len;\r\n var option;\r\n\r\n for (cnt = 0, len = availableOptions.length; cnt < len; cnt++) {\r\n option = availableOptions[cnt];\r\n\r\n if (Tools.contains(options, option.Value)) {\r\n if (Tools.contains(selectedOptions, option.Value) && !allowNoSelection && len > 1) {\r\n selectOption(availableOptions[0].Value)\r\n }\r\n\r\n unselectOption(option.Value);\r\n\r\n availableOptions.splice(cnt, 1);\r\n cnt--;\r\n len--;\r\n }\r\n }\r\n\r\n if (updateButtonTitle) {\r\n updateButton();\r\n }\r\n }\r\n\r\n function getSelectedOptions() {\r\n return selectedOptions;\r\n }\r\n\r\n function bindEvents() {\r\n $dropdownButton.on('click.toggle', onToggleDropdownListClick);\r\n $dropdownPanel.on('click.preventPropagation', onStopPropagationClick);\r\n $dropdownPanel.on('click.option', '.element', onElementClick);\r\n $dropdownPanel.on('click.close', '.bottom .close', onCloseClick);\r\n $('body').on('click.close', onBodyClick);\r\n }\r\n\r\n function unbindEvents() {\r\n $dropdownButton.off('click.toggle');\r\n $dropdownPanel.off('click.option click.close');\r\n $('body').off('click.close')\r\n }\r\n\r\n function renderOptions() {\r\n var html = [];\r\n var tmpOption;\r\n var cnt;\r\n var len;\r\n var selected;\r\n\r\n $dropdownPanel.empty();\r\n html.push('
    ');\r\n\r\n for (cnt = 0, len = availableOptions.length; cnt < len; cnt++) {\r\n tmpOption = availableOptions[cnt];\r\n selected = Tools.contains(selectedOptions, tmpOption.Value);\r\n\r\n html.push('
    {2}
    '\r\n .format(selected ? ' isChecked' : '', tmpOption.Value, tmpOption.Title))\r\n }\r\n\r\n html.push('
    ');\r\n\r\n $dropdownPanel.html(html.join(''));\r\n\r\n var position = determinePosition();\r\n\r\n $dropdownPanel.css({\r\n top: position.top,\r\n left: position.left,\r\n 'min-width': $dropdownButton.outerWidth()\r\n });\r\n\r\n $dropdownPanel.removeClass('left center right');\r\n $dropdownPanel.addClass(position.vertical)\r\n }\r\n\r\n function selectOption(option) {\r\n var optionValue;\r\n var $element;\r\n\r\n if (typeof option === 'string') {\r\n optionValue = option;\r\n $element = $dropdownPanel.find('.element[data-selection=\"{0}\"]'.format(optionValue));\r\n } else {\r\n $element = option;\r\n optionValue = $element.attr('data-selection');\r\n }\r\n\r\n if (!Tools.contains(selectedOptions, optionValue)) {\r\n selectedOptions.push(optionValue);\r\n $element.addClass('isChecked');\r\n }\r\n }\r\n\r\n function unselectOption(option) {\r\n var cnt, len;\r\n var optionValue;\r\n var $element;\r\n\r\n if (typeof option === 'string') {\r\n optionValue = option;\r\n $element = $dropdownPanel.find('.element[data-selection=\"{0}\"]'.format(optionValue));\r\n } else {\r\n $element = option;\r\n optionValue = $element.attr('data-selection');\r\n }\r\n\r\n\r\n for (cnt = 0, len = selectedOptions.length; cnt < len; cnt++) {\r\n if (optionValue === selectedOptions[cnt]) {\r\n selectedOptions.splice(cnt, 1);\r\n cnt--;\r\n len--;\r\n $element.removeClass('isChecked');\r\n }\r\n }\r\n }\r\n\r\n function toggleDropdownList() {\r\n if ($dropdownPanel.hasClass('hide')) {\r\n show()\r\n } else {\r\n hide()\r\n }\r\n }\r\n\r\n function resetOptions() {\r\n selectedOptions = [];\r\n $dropdownPanel.find('.element.isChecked').removeClass('isChecked');\r\n updateButton();\r\n }\r\n\r\n function updateButton() {\r\n var cnt, len;\r\n var text = '';\r\n var option;\r\n\r\n if ((selectedOptions || []).length) {\r\n for (cnt = 0, len = selectedOptions.length; cnt < len; cnt++) {\r\n option = Tools.getFirst(availableOptions, selectedOptions[cnt], 'Value');\r\n\r\n if (cnt === 0) {\r\n text = option.Title;\r\n } else {\r\n text += ', {0}'.format(option.Title);\r\n }\r\n }\r\n } else {\r\n text = defaultButtonTitle;\r\n }\r\n\r\n $dropdownButton.find('.btn-steal').html(text);\r\n }\r\n\r\n function determinePosition() {\r\n var $parent = $dropdownPanel.parent();\r\n\r\n var targetOffset = $dropdownButton.offset();\r\n var containerOffset = $parent.offset();\r\n var targetWidth = $dropdownButton.outerWidth(false);\r\n var targetHeight = $dropdownButton.outerHeight(false);\r\n var containerWidth = $parent.innerWidth();\r\n var containerHeight = $parent.innerHeight() || window.innerHeight;\r\n var popoverWidth = $dropdownPanel.outerWidth(false);\r\n var popoverHeight = $dropdownPanel.outerHeight(false);\r\n var scrollTop = $parent.scrollTop();\r\n var targetPosition = {};\r\n var targetCenter = {};\r\n var position = {};\r\n\r\n var offsetY = 5;\r\n\r\n\r\n targetPosition.left = targetOffset.left - containerOffset.left;\r\n targetPosition.top = targetOffset.top - containerOffset.top;\r\n\r\n targetCenter.left = targetPosition.left + targetWidth / 2;\r\n targetCenter.top = targetPosition.top + targetHeight + offsetY;\r\n\r\n if ((targetCenter.left - popoverWidth / 2) < 0) {\r\n position.vertical = 'left';\r\n position.left = targetCenter.left - 30;\r\n } else if ((targetCenter.left + popoverWidth / 2) > (containerWidth - 0)) {\r\n position.vertical = 'right';\r\n position.left = targetCenter.left - popoverWidth + 40;\r\n } else {\r\n position.vertical = 'center';\r\n position.left = targetCenter.left - popoverWidth / 2;\r\n }\r\n\r\n if (targetCenter.top + popoverHeight - scrollTop + 20 > containerHeight &&\r\n targetCenter.top - popoverHeight - scrollTop > 20) {\r\n position.horizontal = 'bottom';\r\n position.top = targetCenter.top - popoverHeight;\r\n } else {\r\n position.horizontal = 'top';\r\n position.top = targetCenter.top;\r\n }\r\n\r\n return position;\r\n }\r\n\r\n function onToggleDropdownListClick(evt) {\r\n evt.stopPropagation();\r\n toggleDropdownList();\r\n }\r\n\r\n function onElementClick(evt) {\r\n var $this = $(this);\r\n var selected = !$this.hasClass('isChecked');\r\n var $selectedOptions = $dropdownPanel.find('.element.isChecked');\r\n\r\n if (!isMultiselect) {\r\n resetOptions();\r\n hide();\r\n\r\n if (!selected && !unselectOnSecondClick) {\r\n selected = true;\r\n }\r\n }\r\n\r\n if ($selectedOptions.length === 1 && !selected && !allowNoSelection) {\r\n selected = true;\r\n }\r\n\r\n if (selected) {\r\n selectOption($this)\r\n } else {\r\n unselectOption($this)\r\n }\r\n\r\n if (updateButtonTitle) {\r\n updateButton();\r\n }\r\n\r\n\r\n\r\n if (onChangeEvent) {\r\n onChangeEvent(selectedOptions);\r\n }\r\n\r\n evt.stopPropagation();\r\n }\r\n\r\n function onCloseClick() {\r\n hide();\r\n }\r\n\r\n function onBodyClick() {\r\n hide();\r\n }\r\n\r\n function onStopPropagationClick(evt) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n }\r\n\r\n DropdownList.prototype.constructor = DropdownList;\r\n DropdownList.prototype.Show = show;\r\n DropdownList.prototype.Hide = hide;\r\n DropdownList.prototype.SetOptions = setOptions;\r\n DropdownList.prototype.AddOptions = addOptions;\r\n DropdownList.prototype.RemoveOptions = removeOptions;\r\n DropdownList.prototype.GetSelectedOptions = getSelectedOptions;\r\n DropdownList.prototype.ResetOptions = resetOptions;\r\n\r\n return (global.DropdownList = DropdownList);\r\n})(window);","(function (global) {\r\n var Nav = {};\r\n\r\n var $nav;\r\n var $navMain;\r\n var availableNavigationItems = {};\r\n var navigationIsResized = false;\r\n\r\n function getHeader(path) {\r\n var titles = [];\r\n var nav, splittedPath, pathSegment;\r\n\r\n if (!path || !Client) {\r\n return '';\r\n }\r\n\r\n nav = getNav();\r\n splittedPath = path.split('.');\r\n\r\n while (true) {\r\n pathSegment = splittedPath.shift();\r\n\r\n if (!pathSegment) {\r\n break;\r\n }\r\n\r\n nav = Tools.getFirst(nav.Children, pathSegment, 'ID');\r\n\r\n if (!nav) {\r\n break;\r\n }\r\n\r\n if (nav.Title) {\r\n titles.push(nav.Title);\r\n }\r\n }\r\n\r\n return titles.join(' › ');\r\n }\r\n\r\n function getTitle(path) {\r\n var nav, splittedPath, pathSegment, title;\r\n\r\n if (!Client) {\r\n return '';\r\n }\r\n\r\n nav = getNav();\r\n splittedPath = path.split('.');\r\n\r\n while (true) {\r\n pathSegment = splittedPath.shift();\r\n\r\n if (!pathSegment) {\r\n break;\r\n }\r\n\r\n nav = Tools.getFirst(nav.Children, pathSegment, 'ID');\r\n\r\n if (!nav) {\r\n break;\r\n }\r\n\r\n title = nav.Title || title;\r\n }\r\n\r\n return title || '';\r\n }\r\n\r\n function generate() {\r\n if (!Client) {\r\n return;\r\n }\r\n\r\n $nav = $('#nav');\r\n $navMain = $nav.find('.nav-main');\r\n\r\n var nav = getNav();\r\n var html = renderNav(nav);\r\n\r\n $navMain.html(html);\r\n initScrollbar();\r\n bindEvents();\r\n }\r\n\r\n function getNav(withoutChangemode) {\r\n var clientNavigation = Tools.getFirst(Client.UI, 'nav', 'ID');\r\n var defaultNav = {\r\n ID: 'nav',\r\n Children: [ getCurrentModeNav() ]\r\n };\r\n\r\n if (!withoutChangemode) {\r\n defaultNav.Children.push(getChangemodeNav());\r\n }\r\n\r\n clientNavigation = clientNavigation ?\r\n getClientNavigationItems(defaultNav, clientNavigation, withoutChangemode) :\r\n setPathOnNavigation(defaultNav);\r\n\r\n var userRoles = Tools.getAllRolesOfUser(User.OID);\r\n\r\n (function traverse(navItem) {\r\n if (!!navItem.Hash) {\r\n availableNavigationItems[navItem.Hash] = Tools.clone(navItem, ['Children']);\r\n }\r\n\r\n navItem.Children = (navItem.Children || []).filter(function (navItem) {\r\n return filterNavigationItems(navItem, userRoles);\r\n });\r\n\r\n navItem.Children.forEach(traverse);\r\n })(clientNavigation);\r\n\r\n return clientNavigation;\r\n }\r\n\r\n function filterNavigationItems(navItem, userRoles) {\r\n if (navItem.Path === 'current.info') {\r\n return true;\r\n }\r\n\r\n if (!Tools.contains(\r\n [ 'info', 'dashboard', 'news', 'issues', 'schedulings', 'main-analyses', 'calendar' ],\r\n navItem.ID\r\n )) {\r\n return true;\r\n }\r\n\r\n var officeConfiguration = Client.OfficeConfiguration || {};\r\n var enabledNavItems = (officeConfiguration.current || {}).EnabledTabs || [];\r\n\r\n if (!Tools.contains(enabledNavItems, navItem.ID)) {\r\n return false;\r\n }\r\n\r\n return userRoles.some(function (role) {\r\n var current = Tools.getFirst(role.OfficeUIRights, 'current', 'ID');\r\n\r\n if (!current || !(current.Children || []).length) {\r\n return false;\r\n }\r\n\r\n var navItemConfig = Tools.getFirst(current.Children, navItem.ID, 'ID');\r\n\r\n return navItemConfig && navItemConfig.IsEnabled;\r\n });\r\n }\r\n\r\n function getCurrentModeNav() {\r\n return {\r\n ID: 'current',\r\n Title: i18next.t('nav.current.title'),\r\n IconClass: 'uebersicht',\r\n Children: [\r\n {\r\n ID: 'info',\r\n Title: i18next.t('nav.current.info.title'),\r\n IconPath: './img/menu/raeume.svg',\r\n Hash: 'explorer'\r\n },\r\n {\r\n ID: 'main-analyses',\r\n Hash: 'analysis',\r\n Title: i18next.t('nav.current.mainAnalyses.title'),\r\n IconPath: './img/menu/auswertungen.svg'\r\n },\r\n {\r\n ID: 'calendar',\r\n Hash: 'calendar',\r\n Title: i18next.t('nav.current.calendar.title'),\r\n IconPath: './img/menu/kalender.svg'\r\n }\r\n ]\r\n };\r\n }\r\n\r\n function getChangemodeNav() {\r\n return {\r\n ID: 'editing',\r\n Title: i18next.t('nav.editing.title'),\r\n Changemode: true,\r\n IconClass: 'einstellungen',\r\n Children: [\r\n {\r\n ID: 'explorerchangemode',\r\n Hash: 'explorerchangemode',\r\n Title: i18next.t('nav.editing.rooms.title'),\r\n IconPath: './img/menu/raeume.svg'\r\n },\r\n {\r\n ID: 'forms',\r\n Hash: 'forms',\r\n Title: i18next.t('nav.editing.forms.title'),\r\n IconPath: './img/menu/formulare.svg'\r\n },\r\n {\r\n ID: 'events',\r\n Hash: 'events',\r\n Title: i18next.t('nav.editing.schedulings.title'),\r\n IconPath: './img/menu/plaene.svg'\r\n },\r\n {\r\n ID: 'files',\r\n Hash: 'files',\r\n Title: i18next.t('nav.editing.catalog.files.title'),\r\n IconPath: './img/menu/dateien.svg'\r\n },\r\n {\r\n ID: 'catalog',\r\n Title: i18next.t('nav.editing.catalog.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/katalog.svg',\r\n Children: [\r\n {\r\n ID: 'items',\r\n Hash: 'items',\r\n Title: i18next.t('nav.editing.catalog.items.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/objekte.svg'\r\n },\r\n {\r\n ID: 'form-templates',\r\n Hash: 'form-templates',\r\n Title: i18next.t('nav.editing.catalog.formTemplates.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/formularvorlagen.svg'\r\n },\r\n {\r\n ID: 'testgroups',\r\n Hash: 'testgroup-templates',\r\n Title: i18next.t('nav.editing.catalog.testgroups.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/pruefgruppen.svg'\r\n },\r\n {\r\n ID: 'masterData',\r\n Hash: 'master-data-templates',\r\n Title: i18next.t('nav.editing.catalog.masterData.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/stammdaten.svg'\r\n },\r\n {\r\n ID: 'properties',\r\n Hash: 'property-templates',\r\n Title: i18next.t('nav.editing.catalog.properties.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/eigenschaften.svg'\r\n },\r\n {\r\n ID: 'schedules',\r\n Hash: 'schedules',\r\n Title: i18next.t('nav.editing.catalog.schedules.title'),\r\n RequiredLicense: 'Catalog',\r\n IconPath: './img/menu/zeitplaene.svg'\r\n }\r\n ]\r\n },\r\n {\r\n ID: 'permissions',\r\n Title: i18next.t('nav.editing.permissions.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/berechtigungen.svg',\r\n Children: [\r\n {\r\n ID: 'users',\r\n Hash: 'users',\r\n Title: i18next.t('nav.editing.permissions.users.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/benutzer.svg'\r\n },\r\n {\r\n ID: 'teams',\r\n Hash: 'teams',\r\n Title: i18next.t('nav.editing.permissions.teams.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/teams.svg'\r\n },\r\n {\r\n ID: 'roles',\r\n Hash: 'roles',\r\n Title: i18next.t('nav.editing.permissions.roles.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/rollen.svg'\r\n },\r\n {\r\n ID: 'contacts',\r\n Hash: 'contacts',\r\n Title: i18next.t('nav.editing.permissions.contacts.title'),\r\n RequiredRight: 'CMU',\r\n RequiredLicense: 'Contacts',\r\n IconPath: './img/menu/kontakte.svg'\r\n },\r\n {\r\n ID: 'contact-groups',\r\n Hash: 'contact-groups',\r\n Title: i18next.t('nav.editing.permissions.contactGroups.title'),\r\n RequiredRight: 'CMU',\r\n RequiredLicense: 'Contacts',\r\n IconPath: './img/menu/kontaktgruppen.svg'\r\n }\r\n ]\r\n },\r\n {\r\n ID: 'system',\r\n Title: i18next.t('nav.editing.system.title'),\r\n IconPath: './img/menu/system.svg',\r\n Children: [\r\n {\r\n ID: 'categories',\r\n Hash: 'categories',\r\n Title: i18next.t('nav.editing.system.categories.title'),\r\n IconPath: './img/menu/werteklassen.svg'\r\n },\r\n {\r\n ID: 'priorities',\r\n Hash: 'priorities',\r\n Title: i18next.t('nav.editing.system.priorities.title'),\r\n IconPath: './img/menu/prioritaeten.svg'\r\n },\r\n {\r\n ID: 'keywords',\r\n Hash: 'keywords',\r\n Title: i18next.t('nav.editing.system.keywords.title'),\r\n IconPath: './img/menu/schlagwoerter.svg'\r\n },\r\n {\r\n ID: 'classifications',\r\n Hash: 'classifications',\r\n Title: i18next.t('nav.editing.system.classifications.title'),\r\n IconPath: './img/menu/klassifizierungen.svg'\r\n },\r\n {\r\n ID: 'status',\r\n Hash: 'status',\r\n Title: i18next.t('nav.editing.system.status.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/status.svg'\r\n },\r\n {\r\n ID: 'units',\r\n Hash: 'units',\r\n Title: i18next.t('nav.editing.system.units.title'),\r\n IconPath: './img/menu/einheiten.svg'\r\n },\r\n {\r\n ID: 'element-codings',\r\n Hash: 'element-codings',\r\n Title: i18next.t('nav.editing.system.elementCodings.title'),\r\n IconPath: './img/menu/codierungen.svg'\r\n },\r\n {\r\n ID: 'mail-templates',\r\n Hash: 'mail-templates',\r\n Title: i18next.t('nav.editing.system.mailTemplates.title'),\r\n IconPath: './img/menu/mail-templates.svg'\r\n },\r\n {\r\n ID: 'custommenuitems',\r\n Hash: 'custom-menu-items',\r\n Title: i18next.t('nav.editing.system.customMenuItems.title'),\r\n RequiredLicense: 'ShowMenuItemEditorInOffice',\r\n IconPath: './img/menu/menuepunkte-app.svg'\r\n },\r\n {\r\n ID: 'company',\r\n Hash: 'company',\r\n Title: i18next.t('nav.editing.system.company.title'),\r\n IconPath: './img/menu/firma.svg'\r\n },\r\n {\r\n ID: 'settings',\r\n Hash: 'settings',\r\n Title: i18next.t('nav.editing.system.settings.title'),\r\n IconPath: './img/menu/einstellungen.svg'\r\n },\r\n {\r\n ID: 'usersettings',\r\n Hash: 'usersettings',\r\n Title: i18next.t('nav.editing.system.userSettings.title'),\r\n RequiredRight: 'CMU',\r\n IconPath: './img/menu/pers-einstellungen-app.svg'\r\n },\r\n {\r\n ID: 'licenses',\r\n Hash: 'licenses',\r\n Title: i18next.t('nav.editing.system.licenses.title'),\r\n IconPath: './img/menu/lizenzen.svg'\r\n }\r\n ]\r\n },\r\n {\r\n ID: 'commit',\r\n Title: i18next.t('nav.editing.commit.title'),\r\n Status: true,\r\n IconPath: './img/menu/freigeben.svg'\r\n }\r\n ]\r\n };\r\n }\r\n\r\n function setPathOnNavigation(navigation) {\r\n if (!navigation) {\r\n return;\r\n }\r\n\r\n (function traverse (navItem) {\r\n navItem.Children = navItem.Children || [];\r\n navItem.Children.forEach(function (childNavItem) {\r\n childNavItem.Path = (navItem.Path ? navItem.Path + '.' : '') + childNavItem.ID;\r\n\r\n traverse(childNavItem);\r\n });\r\n })(navigation);\r\n\r\n return navigation;\r\n }\r\n\r\n function getClientNavigationItems(defaultNavigation, clientNavigation, withoutChangemode) {\r\n var defaultNavigationMap = {};\r\n\r\n if (!defaultNavigation || !clientNavigation) {\r\n return null;\r\n }\r\n\r\n (function traverse (navItem) {\r\n defaultNavigationMap[navItem.ID] = navItem;\r\n\r\n navItem.Children = navItem.Children || [];\r\n navItem.Children.forEach(function (childNavItem) {\r\n childNavItem.Path = (navItem.Path ? navItem.Path + '.' : '') + childNavItem.ID;\r\n\r\n traverse(childNavItem);\r\n });\r\n })(defaultNavigation);\r\n\r\n (function traverse(navItem, changemode) {\r\n var defaultNavItem = defaultNavigationMap[navItem.ID];\r\n\r\n if (defaultNavItem) {\r\n navItem.Title = navItem.Title || defaultNavItem.Title;\r\n navItem.Hash = defaultNavItem.Hash;\r\n navItem.RequiredRight = defaultNavItem.RequiredRight;\r\n navItem.RequiredLicense = defaultNavItem.RequiredLicense;\r\n navItem.Changemode = defaultNavItem.Changemode;\r\n navItem.IconClass = defaultNavItem.IconClass;\r\n navItem.NoColl = defaultNavItem.NoColl;\r\n navItem.Status = defaultNavItem.Status;\r\n navItem.IconPath = navItem.IconPath || defaultNavItem.IconPath;\r\n\r\n if (defaultNavItem.Changemode) {\r\n changemode = defaultNavItem.Changemode;\r\n }\r\n } else {\r\n navItem.Title = navItem.Title || '';\r\n navItem.Hash = navItem.ID;\r\n navItem.Modifications = changemode;\r\n navItem.IconClass = navItem.IconClass || '';\r\n\r\n if (changemode) {\r\n ApplicationRoutes['^' + navItem.ID + '-modifications$'] = global.IndividualData.Show;\r\n ApplicationRoutes['^' + navItem.ID + '-modifications\\/(.*)$'] = global.IndividualData.Show;\r\n\r\n if (!navItem.IconPath) {\r\n navItem.IconPath = './img/menu/allgemein.svg';\r\n }\r\n }\r\n }\r\n\r\n navItem.Children = navItem.Children || [];\r\n\r\n if (withoutChangemode && navItem.ID === 'nav') {\r\n navItem.Children = navItem.Children.filter(function (childNavItem) {\r\n return childNavItem.ID !== 'editing';\r\n });\r\n }\r\n\r\n navItem.Children = navItem.Children.filter(function (childNavItem) {\r\n return (childNavItem.Children || []).length ||\r\n defaultNavigationMap.hasOwnProperty(childNavItem.ID) ||\r\n IndividualData.GetSchema(childNavItem.ID);\r\n });\r\n\r\n navItem.Children.forEach(function (childNavItem) {\r\n childNavItem.Path = (navItem.Path ? navItem.Path + '.' : '') + childNavItem.ID;\r\n\r\n traverse(childNavItem, changemode);\r\n });\r\n })(clientNavigation, false);\r\n\r\n if (clientNavigation.Children.length > 1) {\r\n clientNavigation.Children[1].Children = clientNavigation.Children[1].Children.filter(function (childNavItem) {\r\n return (childNavItem.Children || []).length ||\r\n defaultNavigationMap.hasOwnProperty(childNavItem.ID) ||\r\n IndividualData.GetSchema(childNavItem.ID);\r\n });\r\n }\r\n\r\n return clientNavigation;\r\n }\r\n\r\n function renderNav(nav) {\r\n var html = nav.Children.map(function (navItem) {\r\n return renderNavItem(navItem, 1);\r\n });\r\n\r\n return html.join('');\r\n }\r\n\r\n function renderNavItem(navItem, level) {\r\n var html = [];\r\n var href;\r\n\r\n if (navItem.RequiredLicense &&\r\n !(Client.Licenses && Client.Licenses[navItem.RequiredLicense])) {\r\n return '';\r\n }\r\n\r\n if (navItem.RequiredRight &&\r\n !ressources.users.hasRight(navItem.RequiredRight)) {\r\n return '';\r\n }\r\n\r\n if (navItem.Hash) {\r\n href = navItem.Modifications ?\r\n 'href=\"#{0}-modifications\"'.format(navItem.Hash) :\r\n 'href=\"#{0}\"'.format(navItem.Hash);\r\n } else {\r\n href = '';\r\n }\r\n\r\n switch (level) {\r\n case 1:\r\n if (navItem.Changemode) {\r\n html.push('
    ');\r\n } else {\r\n html.push('
    ');\r\n }\r\n\r\n html.push(\r\n '
    '.format(navItem.IconClass),\r\n '{0}
    '.format(navItem.Title)\r\n );\r\n\r\n if (navItem.Children.length) {\r\n html.push('
      ');\r\n\r\n html = html.concat(navItem.Children.map(function (navItem) {\r\n return renderNavItem(navItem, level + 1);\r\n }));\r\n\r\n html.push('
    ');\r\n }\r\n\r\n html.push('
    ');\r\n break;\r\n case 2:\r\n if (navItem.Children.length) {\r\n if (navItem.NoColl) {\r\n html.push(\r\n '
  • ',\r\n '{4}'\r\n .format(href, navItem.ID, navItem.Path, navItem.Status ? 'status' : '', navItem.Title)\r\n );\r\n } else {\r\n html.push(\r\n '
  • ',\r\n '
    ',\r\n '',\r\n !!navItem.IconPath ? ''.format(navItem.IconPath) : '',\r\n '
    ',\r\n '{0}'.format(navItem.Title),\r\n '
    ',\r\n '
    '\r\n );\r\n }\r\n\r\n html.push('
      ');\r\n\r\n html = html.concat(navItem.Children.map(function (navItem) {\r\n return renderNavItem(navItem, level + 1);\r\n }));\r\n\r\n html.push('
  • ');\r\n } else {\r\n if (navItem.Title === i18next.t('nav.editing.commit.title')) {\r\n html.push(\r\n '
  • ',\r\n ''\r\n .format(href, navItem.ID, navItem.Path, navItem.Status ? 'status' : '', navItem.Title),\r\n !!navItem.IconPath ? ''.format(navItem.IconPath) : '',\r\n '{0} '\r\n .format(navItem.Title),\r\n '',\r\n '
  • '\r\n );\r\n } else {\r\n html.push(\r\n '
  • ',\r\n ''\r\n .format(href, navItem.ID, navItem.Path, navItem.Status ? 'status' : '', navItem.Title),\r\n !!navItem.IconPath ? ''\r\n .format(navItem.IconPath) : '',\r\n '{0}'\r\n .format(navItem.Title),\r\n '',\r\n '
  • '\r\n );\r\n }\r\n }\r\n break;\r\n default:\r\n html.push(\r\n '
  • ',\r\n ''\r\n .format(href, navItem.ID, navItem.Path, navItem.Status ? 'status' : ''),\r\n !!navItem.IconPath ? ''.format(navItem.IconPath) : '',\r\n '',\r\n navItem.Title,\r\n '',\r\n '',\r\n '
  • '\r\n );\r\n break;\r\n }\r\n\r\n return html.join('');\r\n }\r\n\r\n function initScrollbar() {\r\n var instance = OverlayScrollbarsGlobal.OverlayScrollbars($navMain[0]);\r\n\r\n if (instance) {\r\n instance.destroy();\r\n }\r\n\r\n OverlayScrollbarsGlobal.OverlayScrollbars($navMain[0], {\r\n scrollbars: {\r\n theme: 'os-theme-light',\r\n autoHide: 'never'\r\n }\r\n });\r\n }\r\n\r\n function onToggleMenu(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n\r\n var $this = $(this);\r\n var $list = $this.next();\r\n var $parent = $this.parent();\r\n\r\n $parent.toggleClass('closed');\r\n\r\n $this.removeClass('coll');\r\n $list\r\n .removeClass('coll')\r\n .toggleClass('show');\r\n\r\n var scrollbarInstance = OverlayScrollbarsGlobal.OverlayScrollbars($navMain[0]);\r\n var animationDuration = parseFloat($list.css('animation-duration')) * 1000;\r\n\r\n setTimeout(function () {\r\n scrollbarInstance.update(true);\r\n }, animationDuration);\r\n }\r\n\r\n function onCommit() {\r\n var options = {};\r\n\r\n options.title = i18next.t('changeMode.messages.commitModifications.title');\r\n options.text = i18next.t('changeMode.messages.commitModifications.text');\r\n options.no = true;\r\n options.onYes = function () {\r\n Tools.Spinner.show();\r\n\r\n Commit.send(function () {\r\n Tools.Spinner.hide();\r\n Commit.changed = true;\r\n content.ReloadAccount = true;\r\n Commit.setChanged(false);\r\n });\r\n };\r\n\r\n Tools.Message.Show(options);\r\n }\r\n\r\n function onNavigationMouseEnter(evt) {\r\n var $tooltip = $('#gfx-tooltip');\r\n var $this = $(evt.currentTarget);\r\n\r\n if (!navigationIsResized) {\r\n return;\r\n }\r\n\r\n var offset = $this.offset();\r\n var caption = Tools.escapeHtml($this.find('.caption').text());\r\n\r\n $tooltip.html(caption);\r\n $tooltip.removeClass('hide');\r\n $tooltip.attr('arrow', 3);\r\n $tooltip.css({\r\n left: $this.outerWidth(false) + 8,\r\n top: offset.top + ($this.outerHeight(false) / 2) - ($tooltip.outerHeight(false) / 2)\r\n });\r\n }\r\n\r\n function onNavigationMouseLeave() {\r\n $('#gfx-tooltip').addClass('hide');\r\n }\r\n\r\n function updateCurrentAreaLinks() {\r\n var navigation = getNav(true);\r\n var navigationMarkup = renderNav(navigation);\r\n\r\n $nav.find('.dd[data-changemode=\"0\"]')\r\n .html(navigationMarkup);\r\n }\r\n\r\n function getNavItem(hash) {\r\n return availableNavigationItems[hash];\r\n }\r\n\r\n function unbindEvents() {\r\n $nav.off('click.toggleMenu');\r\n $nav.off('click.doCommit');\r\n $nav.off('mouseenter.showCaptionTooltip');\r\n $nav.off('mouseleave.hideCaptionTooltip');\r\n }\r\n\r\n function bindEvents() {\r\n unbindEvents();\r\n\r\n $nav.on('click.toggleMenu', 'div.pt, div.df', onToggleMenu);\r\n $nav.on('click.doCommit', '[data-id=\"commit\"]', onCommit);\r\n $nav.on('mouseenter.showCaptionTooltip', '.df, .pt', onNavigationMouseEnter);\r\n $nav.on('mouseleave.hideCaptionTooltip', '.df, .pt', onNavigationMouseLeave);\r\n }\r\n\r\n function setResized(resize) {\r\n navigationIsResized = resize;\r\n }\r\n\r\n Nav.GetHeader = getHeader;\r\n Nav.GetTitle = getTitle;\r\n Nav.Generate = generate;\r\n Nav.UpdateCurrentAreaLinks = updateCurrentAreaLinks;\r\n Nav.GetNavItem = getNavItem;\r\n Nav.SetResized = setResized;\r\n\r\n return (global.Nav = Nav);\r\n})(window);"],"sourceRoot":"js/tools"}