PageSourceSearch

https://cms.hfs-berlin.de/scripts/scripts.1d74c6be.js

js hfs-berlin.de collected 2026-10-02 10:17:27 UTC 1,558,468 bytes, 1 lines download raw bytes

1function PersonMemoController(e,t,i,n){function a(){e.applyConfiguration(t,i.getLandingPageWidgetProducer(n.view.contact.widget.memo.institution))}t.updateMemo=i.updateMemo,t.init=a,a()}function PersonMemoController(e,t,i,n){function a(){e.applyConfiguration(t,i.getLandingPageWidgetProducer(n.view.contact.widget.memo.person))}t.updateMemo=i.updateMemo,t.init=a,a()}PersonMemoController.$inject=["LandingPageService","$scope","ContactService","CMS_DATA"],function(){"use strict";const e=new BroadcastChannel("login"),t=window.location.hostname,i=window.location.origin+"/api/auth/result",n=document.getElementById("ccFrontend"),a=document.getElementById("ccLogin"),o=document.getElementById("ccAuth"),r=document.getElementById("waitForLoginInOtherWindow"),s=function(){return fetch("/.well-known/openid-configuration").then(e=>e.ok?e.json():Promise.reject(),()=>Promise.reject())}();let c=null;function l(e){return navigator.locks.request("loginLock",{ifAvailable:!0},t=>null==t?(function(){n&&(n.style.display="none");a.style.display="none",r.style.display="block"}(),navigator.locks.request("loginLock",t=>d(e))):d(e))}function d(l){return function(){r.style.display="none"}(),s.then(d=>{const p=u(32),v=u(32);return function(e){let t=(new TextEncoder).encode(e);return window.crypto.subtle.digest("SHA-256",t)}(v).then(g).then(u=>(function(l,d,u,g,p){const v=new URL(l.authorization_endpoint);return v.search=f({redirect_uri:i,client_id:t,response_type:"code",scope:"openid",code_challenge:d,code_challenge_method:"S256",state:u}),o.src=v,function(o,l){return new Promise(d=>{e.addEventListener("message",function u(g){const p=m(c);(function(e,n,a){if(e.data&&e.data.code&&e.data.state)return function(e,n,a){return e&&n&&a?s.then(n=>fetch(n.token_endpoint,{method:"POST",body:f({client_id:t,redirect_uri:i,grant_type:"authorization_code",code_verifier:a,code:e}),headers:new Headers({"Content-type":"application/x-www-form-urlencoded; charset=UTF-8"})}).then(e=>e.ok?e.json():Promise.reject()).then(e=>c=e,()=>Promise.reject())):Promise.reject()}(e.data.code,e.data.state,n).then(()=>Promise.resolve(),()=>a?Promise.reject():Promise.resolve());if(e.data&&e.data.showLogin)return a?Promise.reject():Promise.resolve();if(e.data&&e.data.showAnonymousPage)return Promise.resolve();throw new Error("Unknown login iframe message: "+e)})(g,o,l).then(()=>{const t=m(c);l&&t!==p?window.location.reload():(e.removeEventListener("message",u),function(){a.style.display="none",r.style.display="none",n&&(n.style.display="block")}(),d())},()=>{!function(e){n&&(n.style.display="none"),r.style.display="none",a.style.display="block"}()})})})}(g,p)})(d,u,p,v,l))})}function u(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let i=new Uint8Array(e);return window.crypto.getRandomValues(i),i=i.map(e=>t.charCodeAt(e%t.length)),String.fromCharCode(...i)}function g(e){const t=new Uint8Array(e);return function(e){const t={"+":"-","/":"_","=":""};return e.replace(/[+\/=]/g,e=>t[e])}(window.btoa(String.fromCharCode(...t)))}function f(e,t,i){const n=i||[];if("object"==typeof e)for(const i in e)e.hasOwnProperty(i)&&f(e[i],t?t+"["+i+"]":i,n);else n.push(t+"="+encodeURIComponent(e));return n.join("&")}function p(){return function(e){const t=e+"=",i=decodeURIComponent(document.cookie).split(";");for(let e of i){const i=e.trim();if(0===i.indexOf(t))return i.substring(t.length,i.length)}return""}("XSRF-TOKEN")}function m(e){return e?function(e){const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=decodeURIComponent(window.atob(t).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""));return JSON.parse(i)}(e.id_token).sub:null}window.AuthenticationHelper={init:function(){return l()},hasAuthentication:function(){return null!==c},getAuthorizationHeader:function(){if(null===c)return;return{Authorization:"Bearer "+c.access_token}},initiateLoginProcedure:l,getCsrfToken:p}}(),function(){"use strict";function e(e,t){e.info("Loading cc3 app module"),t.init()}function t(e,t,i,n,a,o,r,s,c,l,d,u,g,f){e.init(r.readReducedObjects(d.view.applicationInformation));
1const p=[l.init(),t.load(),f.init(),i.setup(),n.load(r.readReducedObjects([d.view.modelEntities,d.view.modelEnums,d.view.viewFieldDisplayTypes])),a.load(r.readObjects(d.view.reportRenderers)),s.init(),c.init(),g.init()];u.all(p).then(function(){return o.startup()}),function(){const e=Object.keys(localStorage),t=Object.keys(sessionStorage),i=["table_column_pinned_","table_column_size_","table_column_position_","campuscore_table_floating_filter_visibility_"],n=["campuscore_table_column_text_filter_","activefilters_","customfilters_"];for(let t of e)for(let e of i)t.startsWith(e)&&localStorage.removeItem(t);for(let e of t)for(let t of n)e.startsWith(t)&&sessionStorage.removeItem(e)}(),o.setContext("universityId",d.university,!0)}e.$inject=["LogServiceProvider","NavigationServiceProvider"],t.$inject=["ApplicationService","I18nInitService","ClientService","ModelService","WidgetService","NavigationService","ActionService","SystemSettingsService","FieldService","AuthService","CMS_DATA","$q","NavigationChangedService","ThemeService"],angular.module("cc3.app",["ccFrontend"]).config(e).run(t)}(),function(){"use strict";function e(e,t){e.info("Loading cc3 login module"),t.initCoreActions(["AccessHelperAction","CurrentUserHasUserStoriesAction","ExportObjectAsCsvAction","ExportObjectAsCsvWithBomAction","ExportObjectAsXmlAction","ExportObjectAsXmlDevAction","ExportObjectAsPdfAction","GetUserDetailsAction","ReadObjectAction","ReadReducedObjectAction","ReadViewDefinitionModelAction","RegisterPersonAction","RequestActivePasswordPolicySettingsAction","ResetPasswordAction","ResetPasswordAction","ValidateObjectAction"])}function t(e,t,i,n,a,o,r,s,c){a.clearStoredState();const l=[e.load(),r.init(),t.load(i.readReducedObjects([s.view.modelEntities,s.view.modelEnums,s.view.viewFieldDisplayTypes])),n.init(),o.init()];c.all(l)}e.$inject=["LogServiceProvider","ActionInvocationServiceProvider"],t.$inject=["I18nInitService","ModelService","ActionService","SystemSettingsService","NavigationService","AuthService","ThemeService","CMS_DATA","$q"],angular.module("cc3.login",["ccFrontend"]).config(e).run(t)}(),function(){"use strict";function e(e,t){e.info("Loading cc3 print module"),t.initCoreActions(["ReadObjectAction","ReadReducedObjectAction"])}function t(e,t,i){const n=[e.load(),t.init()];i.all(n)}e.$inject=["LogServiceProvider","ActionInvocationServiceProvider"],t.$inject=["I18nInitService","ThemeService","$q"],angular.module("cc3.print",["ccFrontend"]).config(e).run(t)}(),function(){"use strict";let e=null;window.FeatureHelper={init:function(){return fetch("/api/features").then(e=>e.ok?e.json():Promise.reject()).then(t=>e=t,()=>{throw new Error("Unable to fetch features.")})},getActiveFeatures:function(){return e}}}(),function(){"use strict";function e(e,t,i){e.decorator("$exceptionHandler",["$delegate","ExceptionHandler",function(e,t){return function(i,n){t.handle(i,n),e(i,n)}}]),e.decorator("$q",["$delegate",function(e){var t=function(e){return e&&angular.isFunction(e.then)};return e.allOrSerial=function(t,i){return i?function t(i){if(0===i.length)return e.when([]);var n=i.pop();return t(i).then(function(e){return n().then(function(t){return e.push(t),e})})}(t):function(t){var i=[];return angular.forEach(t,function(e){i.push(e())}),e.all(i)}(t)},e.chain=function(i){var n=null;return angular.forEach(i,function(e,i){var a;if(n)a=n.then(function(n){if(!e)return n;var a=e(n);if(!t(a))throw new Error("Task "+(i+1)+" did not return a promise.");return a});else if(a=e(),!t(a))throw new Error("Task "+(i+1)+" did not return a promise.");n=a}),n||e.when()},e}]),t.interceptors.push("Oauth2Service"),t.interceptors.push("NavigationChecksum"),t.interceptors.push("ReferenceItem"),t.interceptors.push("RequestTimestamp"),t.useApplyAsync(!0),i.hashPrefix("")}e.$inject=["$provide","$httpProvider","$locationProvider"],angular.module("ccFrontend",function(){return["ngRoute","ngSanitize","ngTouch","ui.router","ct.ui.router.extras.sticky","ui.bootstrap","angular-md5","matchMedia","agGrid","angular-cache","highcharts-ng","angularMoment","ui.tree","ui.bootstrap.datetimepicker","lr.upload","ngImgCrop","ui.mask","dndLists","ngCytoscape","angularSpectrumColorpicker"]}()).config(e)}(),function(){"use strict";let e=null;window.NavigationHelper={init:function(){return fetch("/api/navigation",{headers:AuthenticationHelper.getAuthorizationHeader()}).then(e=>e.ok?e.json():Promise.reject()).then(t=>e=t,()=>{throw new Error("Unable to fetch navigation.")})},consumeNavigationData:function(){const t=e;return e=null,t}}}(),function(){"use strict";angular.module("ccFrontend").constant("CMS_DATA",function(){return{calendar:{filter:{ACTIVITY_STATUS:"ACTIVITY_STATUS",ACTIVITY_IS_PUBLIC:"ACTIVITY_IS_PUBLIC",ACTIVITY_IS_PERFORMANCE:"ACTIVITY_IS_PERFORMANCE",ACTIVITY_IS_LECTURE:"ACTIVITY_IS_LECTURE",ACTIVITY_VISIBILITY_STATUS:"ACTIVITY_VISIBILITY_STATUS",ACTIVITYEVENT_PUBLIC:"ACTIVITYEVENT_PUBLIC",ACTIVITY_LECTURERS:"ACTIVITY_LECTURERS",ACTIVITY_ORGANIZERS:"ACTIVITY_ORGANIZERS",ACTIVITY_LABELS:"ACTIVITY_LABELS",ACTIVITY_TYPE:"ACTIVITY_TYPE",ACTIVITY_STUDY_PROGRAM:"ACTIVITY_STUDY_PROGRAM",ACTIVITY_EXAMINATION_REGULATION:"ACTIVITY_EXAMINATION_REGULATION",ACTIVITY_EXAMINATION_REGULATION_VERSION:"ACTIVITY_EXAMINATION_REGULATION_VERSION",ACTIVITY_RECOMMENDED_
1STUDY_PROGRESS_IN_TERMS:"ACTIVITY_RECOMMENDED_STUDY_PROGRESS_IN_TERMS",BOOKINGEVENT_PARTICIPANT_PERSON:"BOOKINGEVENT_PARTICIPANT_PERSON",BOOKINGEVENT_PARTICIPANT_ROLE:"BOOKINGEVENT_PARTICIPANT_ROLE",BOOKINGEVENT_STATUS:"BOOKINGEVENT_STATUS",PLACE:"PLACE",PLACE_ACCESSIBLE:"PLACE_ACCESSIBLE",PLACE_CAPACITY_MAX:"PLACE_CAPACITY_MAX",PLACE_CAPACITY_MIN:"PLACE_CAPACITY_MIN",PLACE_STATIONARY_RESOURCETYPE:"PLACE_STATIONARY_RESOURCETYPE",ROOM_BUILDING:"ROOM_BUILDING",ROOM_CAMPUS:"ROOM_CAMPUS",ROOM_GROUP:"ROOM_GROUP",ROOM_LOCATION:"ROOM_LOCATION",ROOM_TYPE:"ROOM_TYPE"},NO_ROOM_ID:"f44428fe-baed-4cbc-bcfa-515c6bc8b95b"},contact:{contactMemoStatus:{DONE:"b4a3fccc-df8f-4732-906e-bdb8ebc11649"}},emailsettings:{emailTransmissionSettingsObjectId:"755c1d20-2e5c-4571-a125-ce876cc2bc6d"},forest:{navigation:{forestViewId:"60dce849-2419-44d2-abab-c18ef6ef0702",forestId:"e9d278aa-2317-4e4a-9266-f0e463a1bc1d"},appRegTreeStructureDefinition:"34af5781-009e-4a2e-9737-78dcc195725f",examRegTreeStructureDefinition:"86c423a1-3bcf-4622-bc34-47e8ce66ecaf",moduleTemplateVersionTreeStructureDefinition:"282a40dd-5cfa-4b41-a51c-c51a6e93d35e",modulePartTemplateVersionTreeStructureDefinition:"6a0f8a57-dcdc-4317-9f3c-331d81020ba6"},fileContainer:{publicFileContainerId:"1ae71c9d-92de-4ecb-a3de-7fb72e29f775",systemFileContainerId:"3372abd4-7196-4c41-9715-670ed5c9152d"},view:{activeTheme:"35e7bb41-9895-473e-8786-950240758b76",adhocReportName:"2f58d9bb-729f-4d33-a26d-52b21ef80674",allFilters:"906dc187-4e5d-4337-b8b6-d4e4812515e9",applicationInformation:"30ca8bcf-c913-4226-96f0-12e76786c3aa",archivingLogEntry:"24e7d529-a5a3-47fc-99be-16ae679e1a62",archivingRule:"04c9f17e-2ebd-4c6c-82ca-c6728a89bd83",artisticName:"f5f102c8-7cfd-481c-b2d3-a2fb30bc17d6",baseSettingsObject:"2a6d1e39-52d6-4ade-b0fe-8889923428ae",calendarEventHasParentEvent:"63f81254-b642-43bd-b336-7abb66131c4e",checkBoxView:"28360d15-61ee-474d-a094-29f263010a1c",checklistDetails:"fba31ce1-bfb9-49c4-b12f-86bcbddf3eea",checklistsList:"198fc5f8-1d4f-42d1-a047-16503bacf45f",chooseProcessDefinition:"d726b00b-12cf-4f9d-9c93-678667bdcf34",contactInformation:"aa9368bf-3e5a-4ba1-b742-f52449243d4a",currencies:"f475c5e3-3ad0-4dfb-bfd7-9fbf0bae149c",duplicates:"7085aad4-4b1c-4f63-8d0d-f07410230433",durationUnits:"166253d0-3bfe-4b2a-b6ed-13f1d13abd64",emailAccountSettingsDomain:"cf80f3ed-10ba-4d76-ac30-89ef9ee7575b",emailTransmissionSettings:"611dbd58-c18d-47cc-a102-28237198e869",enrolmentFiles:"ba708e8c-0cb1-4fa1-b65b-041cda4795e0",fileContainerId:"1e19dbe4-5ac5-4248-848f-524ca0db57b4",filtersForEntity:"ad4825de-3c81-4cf7-b24e-75de43a6b5d9",filter:{FilterExists:"2e4595be-4532-4a79-bed6-5cc89c9a3bb8",FilterExistsInTree:"bf1edeb1-2851-4cf7-9435-9d1b017cbf6a",FilterDescendantExistsInTree:"fe74d8eb-a478-4098-bddc-ace0cd1225fb",FilterAscendantExistsInTree:"fbc6768d-8c0b-4547-87fe-ea202898a03c",FilterIsPartOf:"f2537fe1-99f9-4f7b-82e1-3983605f171c",FilterSizeEquals:"6a1a943e-6641-496b-b023-4b805d21dd89",FilterSizeEqualsOrGreaterThan:"de4626c1-2dca-4e64-befe-0b817864faa0",FilterSizeEqualsOrLessThan:"70ddc8b5-eb4c-4d42-86b6-8a1bbbb484f0",FilterSizeGreaterThan:"b2d5f212-32ef-4ebd-8c06-91a40ff5f98f",FilterSizeLessThan:"2607be15-2519-475a-af5c-3e799644b587"},gender:"e2d44815-73f0-4ec9-b918-ca7cbaa439db",homeAddress:"c9fdf433-7456-48f5-9806-6f7efd3678e0",importObjectMappings:"e299bfc5-e3a1-426f-8074-c9579cf15c55",locales:"a2519416-0d95-4dac-8bc2-f876c9279fe1",memberships:"9fea6de5-ed28-45f5-8f9e-0fc7680e7073",messageDetails:"50951a64-8cd7-4da9-942e-27ed213a92ce",messageDetailsUser:"372871f7-f4d1-4378-a80e-117c060a3c99",modelEntities:"a364ab95-0d62-4de7-b664-2eafaf35a553",modelEnums:"2fabdc0c-af08-4909-9a23-cd0a54724fb4",modelValueLists:"413beac7-67f3-4aca-934a-68c3856e6174",nationalities:"bf275bd9-8df6-47b9-b13b-6096fc8e903b",note:"399772fa-50a9-479c-ab0c-d9aab782bdb1",ownTopicAssessments:"8403c96d-58e8-4bc0-827c-574d8b424534",personDateOfBirth:"503c3540-f0fe-4b4a-b4a4-8d0af2ccaa33",personFileFolder:"d0afabd6-d251-41b5-ab4a-186a176c0e4a",personLink:"cb3464cc-c30d-43b7-ad85-fd14aa06f71f",personName:"ed6c80d2-45cc-4e3e-994e-6bb7776a7d17",personNumber:"c494111
15-bf3b-4e1e-9b14-63e55ff7e7c9",personalFileContainer:"1602825e-da0d-4386-ab7c-fb579f1d5995",photo:"4635c62f-84ed-4542-b3e7-06c126f46019",postalAddress:"d28ce66f-318a-47ce-aeb1-de604ffb541c",processDefinitionStatusUserGuide:"422d4044-e7e5-4925-9064-df9f828f9654",processTransitionName:"22e6a8df-9b89-4af5-9415-5094b4356ff1",publicFileContainerContents:"59f5530f-46df-43c8-98aa-681c34795459",relationship:"638a9bad-8045-4947-ab95-9489bd42f5f0",relationships:"49143f8c-34a5-4a26-973d-6458455a1a02",remoteProcesses:"ed3d4a2b-18e8-49d0-bd59-76c9eb44781c",reportRenderers:"494d829a-5b1a-48a4-bcdd-534473456feb",roletemplateuserstoryconstraintsvisibility:"48943d2a-06ed-4a27-a3de-818d9ce95c81",roleuserstoryconstraintsvisibility:"d00f5f70-1236-4a9d-afc3-d9d00e35b59f",sqlHelpField:"38640474-9427-41f0-9d82-9588f3982c9b",staticHelpField:"f547b5ea-a6b7-4bd6-b110-c32847153c84",studyProgramCoordinators:"984dcb80-0120-40d0-8c06-d48386234793",survey:"160564f9-aa46-4e50-b7b2-d04987410435",surveyAnswersOfCurrentUser:"55de8d31-c15f-4c24-b0dc-08f9c2bbba05",surveyAssessment:"34c696d8-6ac6-48f2-bf04-a94af8cb4dda",systemSettings:"6362582b-3954-40b4-9c4c-8dd4d4ecfa37",tasks:"145219de-21f7-46de-a126-7e78c8a25c82",tasksFull:"af8cc188-0b6a-4858-815d-a6f6212dd541",themeColorPaletteView:"f1343d70-07d4-436f-8b6a-0b716a37433c",themeCrudButtonsView:"4861e912-8443-4750-ac47-514f2f769a57",topicAssessment:"5d179f35-d554-4e33-8944-0c74f9ede72a",translationOverrides:"43e7b925-f8b0-480f-a24e-ec5858358c09",translations:"bb752c12-6f84-4724-96f8-268612332ffa",universityContacts:"b1fdbdcb-69a5-4edf-bea0-992ef2b768e8",unreadMessageCount:"29006512-86fb-4161-b682-a4b365fc7347",unreadNonPersonalMessageCount:"55222031-ebd6-4a8b-a7fe-d898a2d3684f",viewDefinition:"92c3b39b-b68c-4e16-8cb2-58749602e6b7",viewFieldDisplayTypes:"977487a3-3921-497b-8fee-5bb8947e4681",viewFields:"cccc3a08-1862-470d-9a91-294815272a1c",welcomeSettings:"91edca2a-ea30-4e81-a5c8-46f41e8679b4",rss:{item:"ffdb2454-c6cd-4f72-84b3-c1565c4c5244"},absenceTimes:"1b8e58b9-d2bc-4b5f-bd43-62f9a7b81ccd",achievementAttemptTypeRegular:"4e8d0369-92c1-401e-add5-01047dbee72c",achievementAttemptTypeAcknowledged:"dff0599c-1cad-43ff-b4df-3e97cbf98fec",achievementAttemptTypeExtraCurricular:"d0767d62-5cfd-4b18-b21b-181f0ec16aee",achievementAttemptsOfPersonForLandingPageWidget:"5cb42c9d-6124-400d-89e2-2039425f8a8b",acronym:"b985c3bc-86cd-48a3-8a31-9ab6462701b6",institution:"dd5f624f-36b9-4b5e-823f-cf3730fa5274",activity:"075c82e3-16a9-46d1-9533-dbe03bce2039",activityChecklist:"bafef27d-d864-4a08-9759-fa18ac0153b8",activityDirectory:"629f6368-c982-4986-a25c-5df613449371",activityNewFileContainerContents:"414359f8-f1b8-4d28-990a-cee881517d46",activityFactSheet:{registrationDeregistration:"950bea55-cd59-4945-a21f-3d673c77a1a0",academicTerms:"e8afae91-53d3-4138-8b6a-07a4fce14ec4",activityTitle:"593a54a0-1db1-4577-819a-b511d6af483c",modulePartClearances:"f0d2040d-3378-4e21-9ff4-e709f8efd78a"},activityRegistrationConfigurationPriorizationNoConfiguration:"83048825-2d07-4c72-aa57-bfd7f5d21c6c",activityRegistrationProcedurePriorizationNoConfiguration:"e663ed29-dc5c-4ba9-a786-d58f8aff166b",partialActivityFileContainerContents:"477c5ec4-15d9-4920-91f0-de17ccd081e1",applicantNumber:"d716c3ad-4144-471c-bbb9-a59598e4e5b3",activityRegistrationProcedure:"03b129f7-5fc8-4511-9e0a-bd202f7cc2eb",applicationAchievementAttemptStatus:"e567b721-62bf-451d-b796-600eb0ce972f",applicationAppRegRulesValid:"6eadf6af-e56d-4489-b15e-17db35f61b44",applicationForCreditTransferAchievementAttemptGradingSystem:"90085a9b-7ada-494c-a0c0-73222d5e6c2a",applicationForReEnrolment:{term:"10bc996e-4afc-4116-b90a-a49cc2b98b18"},applicationToUniversityApplicationFee:"ffde93cc-7857-4eaf-98d7-490d63b67efd",applicationToUniversityFileContainer:"cd3e9763-38e3-40a1-9619-651873bfdd07",applicationsToUniversity:"934a6eca-0a26-4652-974b-f2e2e6123ac8",applicationRegulationVersionContentsAccess:"3e01505b-496a-4272-b069-3fe88ab7b7d9",applicationRegulationVersionInApplicationProcess:{contents:"129fea97-bfaa-4ecf-9527-e8277ccf3e01",achievementAttemptAssessmentConfiguration:"e8483c5e-a3b7-45a6-8e85-31598b673682"},applicationRegulationVersionPeriodIndependentProcessConfiguration:"dc14d965-b91f-417c-b5ca-ef2d45d94f92",applicationPeriodDependentProcessConfiguration:"56e3bbb6-ec0d-4493-85e1-e8baa7fa1f43",appRegContainer:{details:"93310fe1-8ef3-46ad-93e8-5b4e9f9f2d75",studySpecifications:"5b9986b8-3b99-4e88-8515-20ab044f034c",rules:"2a18c5ca-b55e-4250-93b3-8ad4a75d262a"},appRegAchievement:{details:"1b8b53b8-1d64-4eae-832c-a3e8986f8c01",studySpecifications:"6802c373-0944
1-48f0-bb6f-8873b7b8bb24",rules:"92bb9b20-0005-442e-9c82-856ce7a2bee5"},changeTranscriptModulePartClearanceStatusInput:"96b13bf8-9116-4534-9ea3-6234278ca37c",contact:{institutionFileContainer:"411c356a-a2d9-49b4-9011-c8c5165ee4c6",widget:{name:"b11a082a-7191-4cb2-bca9-6908dc77d41c",contactData:"9dd89315-7b52-4ace-8635-ff17d4c3f08d",memo:{person:"9b962715-75d4-421a-aa41-0f8c7a7fc4c7",institution:"f293935c-3def-4c82-8ba2-ee6d0b0112f3"}}},curriculumVitae:"3cbc59e9-b70b-433a-9933-1f9c6846e8b7",disadvantageCompensationRights:"b6506935-fe77-4293-bf31-3e9402cfbd83",examinationRegulationForTranscript:"a9000a9e-5091-4f02-93b9-09bc6ee19022",examinationRegulationVersionContentsAccess:"f5bda0f0-8059-40f3-af1d-7e53f7189586",examinationRegulationVersionReportPeriod:"d4a3a127-6598-4181-8ca7-38a2fd495d88",examRegElementDetailViews:{examRegContainer:{details:"da470599-bc99-4ff5-9ce4-d946211c7670",description:"1d085e97-a6b3-4a9b-89ee-5ec2aa2cd16d",rules:"ce11ddaa-5bcf-4d9d-832f-938d3fdcbb4e",studySpecifications:"e68e6892-65e5-4f58-abc5-2849b19d44bc"},examRegModuleVersion:{details:"6af5e74a-b5b2-48d5-8d5d-0d12e289f803",description:"2d8b0a37-5cec-4607-8ade-e09e1b37c3be",rules:"3debb6e7-f2ff-46dd-8b32-551e156c377e",studySpecifications:"ba003e14-a7a5-49a2-9a53-5598f6002f46"},examRegModulePartVersion:{details:"6ef70ca0-e451-491d-a6d9-27a483bd6427",description:"a1fdfa26-d07c-4ec7-b59d-4f50dc81b88e",rules:"b502c6a8-74ba-4985-9435-5aab31897c95",studySpecifications:"043278f1-26c7-47b3-a0d1-0dbe9ddcfae3",enrolmentRestrictions:"4873a960-3152-4418-86db-271905825c85"},examRegAchievement:{details:"5710316f-147a-4ad7-ba4f-5dbdc58034f3",description:"33936667-aefc-46c1-a663-1b0d33856fb2",rules:"253d4ae2-a7a1-4fa1-9edc-93104ea5b86f",studySpecifications:"78e082ce-b207-4ecd-bdc3-98380a83d47f"},examRegElectiveModuleGroup:{details:"f31b9ffd-ca19-459b-a7b7-2e7b42134abe",description:"848035d6-15ff-489e-b2e2-2af80f6948d0",rules:"0ef3ca37-1484-4c00-87db-89da3b58bcdb",studySpecifications:"3aa66538-8972-4e8a-ba77-e70de53c0562"},examRegModulePlaceholder:{details:"28e23ab9-e494-46e3-8ca6-e259e8f22168",description:"71fa0c86-e88a-497d-91a5-083bebedfb6b",rules:"80520327-db66-4ccc-9673-20ef3b78eaf2",studySpecifications:"fe08f085-06c2-4732-88b1-9f2c7a41e9eb"}},examRegForestView:{examRegContainer:"94f21663-23ec-4c73-802c-d1a8ce715dcb",examRegModuleVersion:"459a57f6-1e13-4399-9244-c112f970e1f7",examRegModulePartVersion:"ecf5d5f9-7d16-4aca-bcd6-1ae9b02f7df1",examRegAchievement:"4df9ae9d-9e17-44e7-bebe-f86bcaf168de",examRegElectiveModuleGroup:"d9332808-370d-4bd5-82ba-d2b678df9647",examRegModulePlaceholder:"b3b738c7-d7f2-497d-9ce2-51343c8ee01f"},examRegVersionGradingSystem:"99363d2d-7562-4bbd-b405-2a82b91cd0a7",identityProvider:"d24ac612-ea32-4dd2-aaae-71123b02c7d1",inquiries:"d5827051-ddb6-43c2-adc7-b3d322255d3c",interimAchievementAttemptGradingSystem:"b78048d7-ea9e-4460-b5e1-dbc375cc61af",gradingSystem:"fe0ae607-12d9-4672-9fdf-88b3e55fbc4f",matriculationNumber:"f8cb39d5-6f7f-40f0-a8d5-bb934abd8b10",moduleGuides:"33eba23c-597c-49d8-bcff-c348e91547aa",moduleGuidesDownload:"d14ee441-07aa-4f21-974c-a0c14b78a181",modulePartVersionOfAchievementAttempt:"7adaf4c2-9773-449a-b769-b0560f2d98e9",moduleVersionOfAchievementAttempt:"c09247c7-49d8-496a-a429-b2fd7242eafe",newActivity:"50c1453b-d545-4caf-bcdc-cdfb8fb3fd14",officeHours:"3f1d61c8-f545-4227-a758-02ce30505cf7",obligations:"b5f24b27-66d8-4853-b2c8-c17b57d08294",obligationsFull:"1472cd70-f8c0-4f0c-b3df-ae16a2176804",paymentAddress:"a263a1e1-2346-413b-972b-ab132936bacd",paymentRecordBalance:"8d13c944-8ae3-4a89-b01f-4a0e0fa3d4a7",paymentTransaction:"890ea08e-5b9d-4952-9dbb-bb9fe0654eb1",personFileContainerByApplication:"d2e9792a-8733-474b-9f1d-028e6ec313e0",personLocations:"ed76460a-e707-4ade-8d4a-e5bb935917d8",personTraits:"add1d3ac-a0d7-4603-ad6e-866f7d941968",proceedings:"b8c3fbbf-76d6-4f2b-97e1-94dd9e4525f0",projectContent:"fbf2b267-f67a-44d8-b1ab-55e0a0cb1b42",projectFileContainer:"103448f8-eef5-4ccb-8b8c-ffa6947041b9",projects:"2a20f5f4-e00c-4fc5-b51a-e9e3691e0093",rightsToVoteFutureBallots:"191a0033-f253-485d-93a5-c6588fcd25a7",rules:{gradingSystem:{CONTAINER:"69cc05a0-3fdf-4fa2-97c0-353ef48dd6d9",MODULE:"92c6f982-a30a-4097-9a17-f5f7885e4354",MODULE_PART:"e05c513e-887b-4481-abe4-e033845a9cb2",ELECTIVE_MODULE_GROUP:"3aa1255b-45c5-4496-ae7d-2535322bf79d",MODULE_PLACEHOLDER:"858fb2a8-2dbc-4790-95cd-cf76b2aa72b6",ACHIEVEMENT:"b12d4077-9795-402b-9dab-8f60c9482842"}},appRegRules:{gradingSystem:{CONTAINER:"73369a67-ec4c-4543-9aa7-03cb2103acf6",ACHIEVEMENT:"8ef13eae-38d1-4ba7-9d3a-f82055c3d448"}}
1,studiesStatus:"bdcceedc-2066-463d-bff6-d6b0f7a7e24d",studiesJournal:"62109c14-bc36-4b38-ac8d-213ec40f2352",studyProgrammeReportPeriod:"bf855375-e4f8-4c4c-b45d-b17f6c4854e3",transcriptAchievementAttemptAssessmentConfiguration:"61be3ee1-e891-4e8e-ab90-e55620b47152",transcriptAchievementAttemptStatus:"cebafba0-1094-4f92-a469-65ec73f46513",transcriptsLandingPageWidget:"323f9dea-d747-47d6-8b8f-5f084297d8e2",transcriptTreeLandingPageWidget:"bea455bf-9d70-4eea-bd36-173fa2f62a4d",transcriptExamRegRulesValid:"b652a0f2-e08f-481e-a3c9-72ba9f2c3b3b",transcriptModuleGroupElections:"781dec9b-9cbf-46cb-8228-bd364d08e8fb",transcriptUsingPersonalAcademicTerms:"43281584-578a-4cd7-bdea-804ff2a1a973",unconfirmedAssessmentsExaminer:"fbb70ba9-73fa-40b6-93f3-bdafa07114ec",unconfirmedAssessmentsReviewer:"c73f3213-8acd-423a-968a-646f4f093522",universities:"b906247f-595a-4730-892c-04f64458f06a"},filter:{currentActivityRegistrations:"26e62b51-1259-4c07-b483-7efe3c3fd552",activitiesForGuestAuditors:"fa5c8926-6707-4615-a5f6-9620b45c7f78",activityEventsInCurrentAcademicPeriod:"9b73f15c-8c6f-4942-bd18-792f5524a2bd"},status:{degreeComplete:"65a912f5-4335-45f4-b1a6-31b68c406c66"},university:"86cf251b-fe69-4b56-a94c-4f826eff8575",completionRule:{individualConfigurationCompletionRule:"87375627-c4c7-4f9e-8c7c-5163688acf8c"},feature:{contacts:"c74de6d3-04e5-4ede-b4ce-2cd540efddbb",checklists:"8eb27b86-61b6-4709-8e08-6bc959492b2d",enableEditingMode:"ec829a3f-d433-4c67-a2f1-aed354809801",personSelfRegistration:"a21d7dc7-ea55-4cfa-8d98-3accace26e4d",guestAccess:"f5dad3d4-48be-4f1f-ac0a-293c2fdf21bb",navigationSearch:"a222a8cc-cd30-4c4e-90c1-d58f974dedcd",resetOwnPassword:"3f9cd11a-fbfe-48fc-b2ee-0f44799f0c48",transferValueLists:"f3774bb5-620b-48a7-95e0-5c1c581e16f4",defineMajorSubjects:"46863543-421d-4b97-9f1c-f17287196845",defineMinorSubjects:"66cb0a3a-2fa5-4378-8f3e-d9a611443f5e",defineStudyFocuses:"761b636b-a3d4-4f1e-a91e-d06b908478f9",defineInDepthSpecialisations:"68123d54-aceb-4362-be0d-1deae114dca0",manageModulePlaceholders:"714bcc62-34cb-42d4-864a-255fe2826035",manageChecklists:"889e17f5-5e46-44b1-b0cb-28792d0490b6",defineMajorSubjectsInApplicationProcedures:"4ca8ebb3-fff9-45c6-8020-03585842a6a0",defineMinorSubjectsInApplicationProcedures:"37fd0ef1-a2e7-4dc6-87ef-d644d89b24b4",generationStrategiesForIdentificationStrings:"01902478-0ce7-4d1e-a1b3-72411d5bd695"},user:{system:"345e964d-afde-4d88-8498-36c5c8641526"},userStory:{manageChecklists:"94783198-6c3e-4f6d-9373-65b890e7ca9b",manageTableViews:"5bcb8462-ec81-411c-a91c-da027dbe4ca2",managePublicFiles:"9678d99e-212b-463f-9986-70f07649f43e"},userStories:{selfRegisterForActivities:"379aca9e-1d21-4ab0-a4ea-245d12ffca3c",manageActivities:"9e17e9a7-bf7a-4df8-951b-93ec4fdaf739",manageAchievementAttemptsAsExaminerOrReviewer:"a630a7cf-cb00-479a-9b52-83e0b4ccb797",manageGhiniMessages:"10980049-5a2b-4eae-a59f-40292f3144d8"},processGroup:{applicationToUniversity:"b1506dc8-aca2-45b6-ae0f-4a37bf80b484"},placeAllocationStrategies:{firstComeFirstServe:"2473cc81-76be-48ab-82c2-6d07f30716bd"},empty:"<empty>",valueObjectProperties:["$create","$read","$write","$arrange","$insert","$remove","$oldValue","value","$displayName"],htmlRegExp:/((<[-a-zA-Z]+[^<>]*>)|(<\/[-a-zA-Z]+>))/g}}())}(),function(){"use strict";angular.module("ccFrontend").constant("FA_ICONS",function(){return["0","00","1","2","3","360-degrees","4","5","6","7","8","9","a","abacus","accent-grave","acorn","address-book","address-card","air-conditioner","airplay","alarm-clock","alarm-exclamation","alarm-plus","alarm-snooze","album-circle-plus","album-circle-user","album-collection-circle-plus","album-collection-circle-user","album-collection","album","alicorn","alien-8bit","alien","align-center","align-justify","align-left","align-right","align-slash","alt","amp-guitar","ampersand","anchor-circle-check","anchor-circle-exclamation","anchor-circle-xmark","anchor-lock","anchor","angel","angle-90","angle-down","angle-left","angle-right","angle-up","angle","angles-down","angles-left","angles-right","angles-up","ankh","apartment","aperture","apostrophe","apple-core","apple-whole","archway","arrow-down-1-9","arrow-down-9-1","arrow-down-a-z","arrow-down-arrow-up","arrow-down-big-small","arrow-down-from-dotted-line","arrow-down-from-line","arrow-down-left-and-arrow-up-right-to-center","arrow-down-left","arrow-down-long","arrow-down-right","arrow-down-short-wide","arrow-down-small-big","arrow-down-square-triangle","arrow-down-to-arc","arrow-down-to-bracket","arrow-down-to-dotted-line","arrow-down-to-line","arrow-down-to-square","arrow-down-triangle-square","arrow-down-up-across-line","arrow-down-up-lock","arrow-down-wide-short","arrow-down-z-a","arrow-down","arrow-left-from-line","arrow-left-long-to-line","arrow-left-long","arrow-left-to-line","arrow-left","arrow-pointer","arrow-right-arrow-left","arrow-right-from-arc","arrow-right-from-bracket","arrow-right-from-line","arrow-right-long-to-line","arrow-right-long","arrow-right-to-arc","arrow-right-to-bracket","arrow-right-to-city","arrow-right-to-line","arrow-right","arrow-rotate-left","arrow-rotate-right","arrow-trend-down","arrow-trend-up","arrow-tur
1n-down-left","arrow-turn-down-right","arrow-turn-down","arrow-turn-up","arrow-up-1-9","arrow-up-9-1","arrow-up-a-z","arrow-up-arrow-down","arrow-up-big-small","arrow-up-from-arc","arrow-up-from-bracket","arrow-up-from-dotted-line","arrow-up-from-ground-water","arrow-up-from-line","arrow-up-from-square","arrow-up-from-water-pump","arrow-up-left-from-circle","arrow-up-left","arrow-up-long","arrow-up-right-and-arrow-down-left-from-center","arrow-up-right-dots","arrow-up-right-from-square","arrow-up-right","arrow-up-short-wide","arrow-up-small-big","arrow-up-square-triangle","arrow-up-to-dotted-line","arrow-up-to-line","arrow-up-triangle-square","arrow-up-wide-short","arrow-up-z-a","arrow-up","arrows-cross","arrows-down-to-line","arrows-down-to-people","arrows-from-dotted-line","arrows-from-line","arrows-left-right-to-line","arrows-left-right","arrows-maximize","arrows-minimize","arrows-repeat-1","arrows-repeat","arrows-retweet","arrows-rotate","arrows-spin","arrows-split-up-and-left","arrows-to-circle","arrows-to-dot","arrows-to-dotted-line","arrows-to-eye","arrows-to-line","arrows-turn-right","arrows-turn-to-dots","arrows-up-down-left-right","arrows-up-down","arrows-up-to-line","asterisk","at","atom-simple","atom","audio-description-slash","audio-description","austral-sign","avocado","award-simple","award","axe-battle","axe","b","baby-carriage","baby","backpack","backward-fast","backward-step","backward","bacon","bacteria","bacterium","badge-check","badge-dollar","badge-percent","badge-sheriff","badge","badger-honey","badminton","bag-shopping","bagel","bags-shopping","baguette","bahai","baht-sign","ball-pile","balloon","balloons","ballot-check","ballot","ban-bug","ban-parking","ban-smoking","ban","banana","bandage","bangladeshi-taka-sign","banjo","barcode-read","barcode-scan","barcode","bars-filter","bars-progress","bars-sort","bars-staggered","bars","baseball-bat-ball","baseball","basket-shopping-simple","basket-shopping","basketball-hoop","basketball","bat","bath","battery-bolt","battery-empty","battery-exclamation","battery-full","battery-half","battery-low","battery-quarter","battery-slash","battery-three-quarters","bed-bunk","bed-empty","bed-front","bed-pulse","bed","bee","beer-mug-empty","beer-mug","bell-concierge","bell-exclamation","bell-on","bell-plus","bell-school-slash","bell-school","bell-slash","bell","bells","bench-tree","bezier-curve","bicycle","binary-circle-check","binary-lock","binary-slash","binary","binoculars","biohazard","bird","bitcoin-sign","blanket-fire","blanket","blender-phone","blender","blinds-open","blinds-raised","blinds","block-brick-fire","block-brick","block-question","block-quote","block","blog","blueberries","bluetooth","bold","bolt-auto","bolt-lightning","bolt-slash","bolt","bomb","bone-break","bone","bong","book-arrow-right","book-arrow-up","book-atlas","book-bible","book-blank","book-bookmark","book-circle-arrow-right","book-circle-arrow-up","book-copy","book-font","book-heart","book-journal-whills","book-medical","book-open-cover","book-open-reader","book-open","book-quran","book-section","book-skull","book-sparkles","book-tanakh","book-user","book","bookmark-slash","bookmark","books-medical","books","boombox","boot-heeled","boot","booth-curtain","border-all","border-bottom-right","border-bottom","border-center-h","border-center-v","border-inner","border-left","border-none","border-outer","border-right","border-top-left","border-top","bore-hole","bottle-droplet","bottle-water","bow-arrow","bowl-chopsticks-noodles","bowl-chopsticks","bowl-food","bowl-hot","bowl-rice","bowl-scoop","bowl-scoops","bowl-soft-serve","bowl-spoon","bowling-ball-pin","bowling-ball","bowling-pins","box-archive","box-ballot","box-check","box-circle-check","box-dollar","box-heart","box-open-full","box-open","box-taped","box-tissue","box","boxes-packing","boxes-stacked","boxing-glove","bracket-curly-right","bracket-curly","bracket-round-right","bracket-round","bracket-square-right","bracket-square","brackets-curly","brackets-round","brackets-square","braille","brain-arrow-curved-right","brain-circuit","brain","brake-warning","brazilian-real-sign","bread-loaf","bread-slice-butter","bread-slice","bridge-circle-check","bridge-circle-exclamation","bridge-circle-xmark","bridge-lock","bridge-suspension","bridge-water","bridge","briefcase-arrow-right","briefcase-blank","briefcase-medical","briefcase","brightness-low","brightness","bring-forward","bring-front","broccoli","broom-ball","broom","browser","browsers","brush","bucket","bug-slash","bug","bugs","building-circle-arrow-right","building-circle-check","building-circle-exclamation","building-circle-xmark","building-columns","building-flag","building-lock","building-ngo","building-shield","building-un","building-user","building-wheat","building","buildings","bullhorn","bullseye-arrow","bullseye-pointer","bullseye","burger-cheese","burger-fries","burger-glass","burger-lettuce","burger-soda","burger","burrito","burst","bus-school","bus-simple","bus","business-time","butter","c","cabin","cabinet-filing","cable-car","cactus","cake-candles","cake-slice","calculator-simple","calculator","calendar-arrow-down","calendar-arrow-up","calendar-check","calendar-circle-exclamation","calendar-circle-minus","calendar-circle-plus","calendar-circle-user","calendar-clock","calendar-day","calendar-days","calendar-exclamation","calendar-heart","calendar-image","calendar-lines-pen","calendar-lines","calendar-minus","calendar-pen","calendar-plus","calendar-range","calendar-star","calendar-week","calendar-xmark","calendar","calendars","camcorder","camera-cctv","camera-movie","camera-polaroid","camera-retro","camera-rotate","camera-security","camera-slash","camera-viewfinder","camera-web-slash","camera-web","camera","campfire","campground","can-food","candle-holder","candy-bar","candy-cane","candy-corn","candy","cannabis","capsules","car-battery","car-bolt","car-building","car-bump","car-burst","car-bus","car-circle-bolt","car-garage","car-mirrors","car-on","car-rear","car-side-bolt","car-side","car-tilt","car-tunnel","car-wash","car-wrench","car","caravan-simple","caravan","card-club","card-diamond","card-heart","card-spade","cards-blank","cards","caret-down","caret-left","caret-right","caret-up","carrot","cars","cart-arrow-down","cart-arrow-up","cart-circle-arrow-down","cart-circle-arrow-up","cart-circle-check","cart-circle-exclamation","cart-circle-plus","cart-circle-xmark","cart-flatbed-boxes","cart-flatbed-empty","cart-flatbed-suitcase","cart
1-flatbed","cart-minus","cart-plus","cart-shopping-fast","cart-shopping","cart-xmark","cash-register","cassette-betamax","cassette-tape","cassette-vhs","castle","cat-space","cat","cauldron","cedi-sign","cent-sign","certificate","chair-office","chair","chalkboard-user","chalkboard","champagne-glass","champagne-glasses","charging-station","chart-area","chart-bar","chart-bullet","chart-candlestick","chart-column","chart-gantt","chart-line-down","chart-line-up","chart-line","chart-mixed","chart-network","chart-pie-simple","chart-pie","chart-pyramid","chart-radar","chart-scatter-3d","chart-scatter-bubble","chart-scatter","chart-simple-horizontal","chart-simple","chart-tree-map","chart-user","chart-waterfall","check-double","check-to-slot","check","cheese-swiss","cheese","cherries","chess-bishop-piece","chess-bishop","chess-board","chess-clock-flip","chess-clock","chess-king-piece","chess-king","chess-knight-piece","chess-knight","chess-pawn-piece","chess-pawn","chess-queen-piece","chess-queen","chess-rook-piece","chess-rook","chess","chestnut","chevron-down","chevron-left","chevron-right","chevron-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up","child-dress","child-reaching","child-rifle","child","children","chimney","chopsticks","church","circle-0","circle-1","circle-2","circle-3","circle-4","circle-5","circle-6","circle-7","circle-8","circle-9","circle-a","circle-ampersand","circle-arrow-down-left","circle-arrow-down-right","circle-arrow-down","circle-arrow-left","circle-arrow-right","circle-arrow-up-left","circle-arrow-up-right","circle-arrow-up","circle-b","circle-bolt","circle-book-open","circle-bookmark","circle-c","circle-calendar","circle-camera","circle-caret-down","circle-caret-left","circle-caret-right","circle-caret-up","circle-check","circle-chevron-down","circle-chevron-left","circle-chevron-right","circle-chevron-up","circle-d","circle-dashed","circle-divide","circle-dollar-to-slot","circle-dollar","circle-dot","circle-down-left","circle-down-right","circle-down","circle-e","circle-ellipsis-vertical","circle-ellipsis","circle-envelope","circle-exclamation-check","circle-exclamation","circle-f","circle-g","circle-h","circle-half-stroke","circle-half","circle-heart","circle-i","circle-info","circle-j","circle-k","circle-l","circle-left","circle-location-arrow","circle-m","circle-microphone-lines","circle-microphone","circle-minus","circle-n","circle-nodes","circle-notch","circle-o","circle-p","circle-parking","circle-pause","circle-phone-flip","circle-phone-hangup","circle-phone","circle-play","circle-plus","circle-q","circle-quarter","circle-quarters","circle-question","circle-r","circle-radiation","circle-right","circle-s","circle-small","circle-sort-down","circle-sort-up","circle-sort","circle-star","circle-stop","circle-t","circle-three-quarters","circle-trash","circle-u","circle-up-left","circle-up-right","circle-up","circle-user","circle-v","circle-video","circle-w","circle-waveform-lines","circle-x","circle-xmark","circle-y","circle-z","circle","citrus-slice","citrus","city","clapperboard-play","clapperboard","clarinet","claw-marks","clipboard-check","clipboard-list-check","clipboard-list","clipboard-medical","clipboard-prescription","clipboard-question","clipboard-user","clipboard","clock-desk","clock-eight-thirty","clock-eight","clock-eleven-thirty","clock-eleven","clock-five-thirty","clock-five","clock-four-thirty","clock-nine-thirty","clock-nine","clock-one-thirty","clock-one","clock-rotate-left","clock-seven-thirty","clock-seven","clock-six-thirty","clock-six","clock-ten-thirty","clock-ten","clock-three-thirty","clock-three","clock-twelve-thirty","clock-twelve","clock-two-thirty","clock-two","clock","clone","closed-captioning-slash","closed-captioning","clothes-hanger","cloud-arrow-down","cloud-arrow-up","cloud-bolt-moon","cloud-bolt-sun","cloud-bolt","cloud-check","cloud-drizzle","cloud-exclamation","cloud-fog","cloud-hail-mixed","cloud-hail","cloud-meatball","cloud-minus","cloud-moon-rain","cloud-moon","cloud-music","cloud-plus","cloud-question","cloud-rain","cloud-rainbow","cloud-showers-heavy","cloud-showers-water","cloud-showers","cloud-slash","cloud-sleet","cloud-snow","cloud-sun-rain","cloud-sun","cloud-word","cloud-xmark","cloud","clouds-moon","clouds-sun","clouds","clover","club","coconut","code-branch","code-commit","code-compare","code-fork","code-merge","code-pull-request-closed","code-pull-request-draft","code-pull-request","code-simple","code","coffee-bean","coffee-beans","coffee-pot","coffin-cross","coffin","coin-blank","coin-front","coin-vertical","coin","coins","colon-sign","colon","columns-3","comet","comma","command","comment-arrow-down","comment-arrow-up-right","comment-arrow-up","comment-captions","comment-check","comment-code","comment-dollar","comment-dots","comment-exclamation","comment-image","comment-lines","comment-medical","comment-mid
1dle-top","comment-middle","comment-minus","comment-music","comment-pen","comment-plus","comment-question","comment-quote","comment-slash","comment-smile","comment-sms","comment-text","comment-xmark","comment","comments-dollar","comments-question-check","comments-question","comments","compact-disc","compass-drafting","compass-slash","compass","compress-wide","compress","computer-classic","computer-mouse-scrollwheel","computer-mouse","computer-speaker","computer","container-storage","conveyor-belt-boxes","conveyor-belt-empty","conveyor-belt","cookie-bite","cookie","copy","copyright","corn","corner","couch","cow","cowbell-circle-plus","cowbell","crab","crate-apple","crate-empty","credit-card-blank","credit-card-front","credit-card","cricket-bat-ball","croissant","crop-simple","crop","cross","crosshairs","crow","crown","crutch","crutches","cruzeiro-sign","crystal-ball","cube","cubes-stacked","cubes","cucumber","cup-straw-swoosh","cup-straw","cup-togo","cupcake","curling-stone","custard","d","dagger","dash","database","deer-rudolph","deer","delete-left","delete-right","democrat","desktop-arrow-down","desktop","dharmachakra","diagram-cells","diagram-lean-canvas","diagram-nested","diagram-next","diagram-predecessor","diagram-previous","diagram-project","diagram-sankey","diagram-subtask","diagram-successor","diagram-venn","dial-high","dial-low","dial-max","dial-med-low","dial-med","dial-min","dial-off","dial","diamond-exclamation","diamond-turn-right","diamond","dice-d10","dice-d12","dice-d20","dice-d4","dice-d6","dice-d8","dice-five","dice-four","dice-one","dice-six","dice-three","dice-two","dice","diploma","disc-drive","disease","display-arrow-down","display-code","display-medical","display-slash","display","distribute-spacing-horizontal","distribute-spacing-vertical","ditto","divide","dna","do-not-enter","dog-leashed","dog","dollar-sign","dolly-empty","dolly","dolphin","dong-sign","donut","door-closed","door-open","dove","down-from-dotted-line","down-from-line","down-left-and-up-right-to-center","down-left","down-long","down-right","down-to-bracket","down-to-dotted-line","down-to-line","down","download","dragon","draw-circle","draw-polygon","draw-square","dreidel","drone-front","drone","droplet-degree","droplet-percent","droplet-slash","droplet","drum-steelpan","drum","drumstick-bite","drumstick","dryer-heat","dryer","duck","dumbbell","dumpster-fire","dumpster","dungeon","e","ear-deaf","ear-listen","ear-muffs","ear","earth-africa","earth-americas","earth-asia","earth-europe","earth-oceania","eclipse","egg-fried","egg","eggplant","eject","elephant","elevator","ellipsis-stroke-vertical","ellipsis-stroke","ellipsis-vertical","ellipsis","empty-set","engine-warning","engine","envelope-circle-check","envelope-dot","envelope-open-dollar","envelope-open-text","envelope-open","envelope","envelopes-bulk","envelopes","equals","eraser","escalator","ethernet","euro-sign","exclamation","expand-wide","expand","explosion","eye-dropper-full","eye-dropper-half","eye-dropper","eye-evil","eye-low-vision","eye-slash","eye","eyes","f","face-angry-horns","face-angry","face-anguished","face-anxious-sweat","face-astonished","face-awesome","face-beam-hand-over-mouth","face-clouds","face-confounded","face-confused","face-cowboy-hat","face-diagonal-mouth","face-disappointed","face-disguise","face-dizzy","face-dotted","face-downcast-sweat","face-drooling","face-exhaling","face-explode","face-expressionless","face-eyes-xmarks","face-fearful","face-flushed","face-frown-open","face-frown-slight","face-frown","face-glasses","face-grimace","face-grin-beam-sweat","face-grin-beam","face-grin-hearts","face-grin-squint-tears","face-grin-squint","face-grin-stars","face-grin-tears","face-grin-tongue-squint","face-grin-tongue-wink","face-grin-tongue","face-grin-wide","face-grin-wink","face-grin","face-hand-over-mouth","face-hand-peeking","face-hand-yawn","face-head-bandage","face-holding-back-tears","face-hushed","face-icicles","face-kiss-beam","face-kiss-closed-eyes","face-kiss-wink-heart","face-kiss","face-laugh-beam","face-laugh-squint","face-laugh-wink","face-laugh","face-lying","face-mask","face-meh-blank","face-meh","face-melting","face-monocle","face-nauseated","face-nose-steam","face-party","face-pensive","face-persevering","face-pleading","face-pouting","face-raised-eyebrow","face-relieved","face-rolling-eyes","face-sad-cry","face-sad-sweat","face-sad-tear","face-saluting","face-scream","face-shush","face-sleeping","face-sleepy","face-smile-beam","face-smile-halo","face-smile-hearts","face-smile-horns","face-smile-plus","face-smile-relaxed","face-smile-tear","face-smile-tongue","face-smile-upside-down","face-smile-wink","face-smile","face-smiling-hands","face-smirking","face-spiral-eyes","face-sunglasses","face-surprise","face-swear","face-thermometer","face-thinking","face-tired","face-tissue","face-tongue-money","face-tongue-sweat","face-unamused","face-viewfinder","face-vomit","face-weary","face-woozy","face-worried","face-zany","face-zipper","falafel","family-dress","family-pants","family","fan-table","fan","farm","faucet-drip","faucet","fax","feather-pointed","feather","fence","ferris-wheel","ferry","field-hockey-stick-ball","file-arrow-down","file-arrow-up","file-audio","file-binary","file-certificate","file-chart-column","file-chart-pie","file-check","file-circle-check","file-circle-exclamation","file-circle-info","file-circle-minus","file-circle-plus","file-circle-question","file-circle-xmark","file-code","file-contract","file-csv","file-dashed-line","file-excel","file-exclamation","file-ex
1port","file-heart","file-image","file-import","file-invoice-dollar","file-invoice","file-lines","file-lock","file-magnifying-glass","file-medical","file-minus","file-music","file-pdf","file-pen","file-plus-minus","file-plus","file-powerpoint","file-prescription","file-shield","file-signature","file-slash","file-spreadsheet","file-user","file-video","file-waveform","file-word","file-xmark","file-zipper","file","files-medical","files","fill-drip","fill","film-canister","film-simple","film-slash","film","films","filter-circle-dollar","filter-circle-xmark","filter-list","filter-slash","filter","filters","fingerprint","fire-burner","fire-extinguisher","fire-flame-curved","fire-flame-simple","fire-flame","fire-hydrant","fire-smoke","fire","fireplace","fish-bones","fish-cooked","fish-fins","fish","fishing-rod","flag-checkered","flag-pennant","flag-swallowtail","flag-usa","flag","flashlight","flask-round-poison","flask-round-potion","flask-vial","flask","flatbread-stuffed","flatbread","floppy-disk-circle-arrow-right","floppy-disk-circle-xmark","floppy-disk-pen","floppy-disk","floppy-disks","florin-sign","flower-daffodil","flower-tulip","flower","flute","flux-capacitor","flying-disc","folder-arrow-down","folder-arrow-up","folder-bookmark","folder-closed","folder-gear","folder-grid","folder-heart","folder-image","folder-magnifying-glass","folder-medical","folder-minus","folder-music","folder-open","folder-plus","folder-tree","folder-user","folder-xmark","folder","folders","fondue-pot","font-awesome","font-case","font","football-helmet","football","fork-knife","fork","forklift","fort","forward-fast","forward-step","forward","frame","franc-sign","french-fries","frog","function","futbol","g","galaxy","gallery-thumbnails","game-board-simple","game-board","game-console-handheld","gamepad-modern","gamepad","garage-car","garage-open","garage","garlic","gas-pump-slash","gas-pump","gauge-circle-bolt","gauge-circle-minus","gauge-circle-plus","gauge-high","gauge-low","gauge-max","gauge-min","gauge-simple-high","gauge-simple-low","gauge-simple-max","gauge-simple-min","gauge-simple","gauge","gavel","gear","gears","gem","genderless","ghost","gif","gift-card","gift","gifts","gingerbread-man","glass-citrus","glass-empty","glass-half","glass-water-droplet","glass-water","glass","glasses-round","glasses","globe-snow","globe-stand","globe","goal-net","golf-ball-tee","golf-club","golf-flag-hole","gopuram","graduation-cap","gramophone","grapes","grate-droplet","grate","greater-than-equal","greater-than","grid-2-plus","grid-2","grid-4","grid-5","grid-dividers","grid-h
1orizontal","grid","grip-dots-vertical","grip-dots","grip-lines-vertical","grip-lines","grip-vertical","grip","group-arrows-rotate","guarani-sign","guitar-electric","guitar","guitars","gun-slash","gun-squirt","gun","h","h1","h2","h3","h4","h5","h6","hammer-crash","hammer-war","hammer","hamsa","hand-back-fist","hand-back-point-down","hand-back-point-left","hand-back-point-ribbon","hand-back-point-right","hand-back-point-up","hand-dots","hand-fingers-crossed","hand-fist","hand-heart","hand-holding-box","hand-holding-dollar","hand-holding-droplet","hand-holding-hand","hand-holding-heart","hand-holding-magic","hand-holding-medical","hand-holding-seedling","hand-holding-skull","hand-holding","hand-horns","hand-lizard","hand-love","hand-middle-finger","hand-peace","hand-point-down","hand-point-left","hand-point-ribbon","hand-point-right","hand-point-up","hand-pointer","hand-scissors","hand-sparkles","hand-spock","hand-wave","hand","handcuffs","hands-asl-interpreting","hands-bound","hands-bubbles","hands-clapping","hands-holding-child","hands-holding-circle","hands-holding-diamond","hands-holding-dollar","hands-holding-heart","hands-holding","hands-praying","hands","handshake-angle","handshake-simple-slash","handshake-simple","handshake-slash","handshake","hanukiah","hard-drive","hashtag-lock","hashtag","hat-chef","hat-cowboy-side","hat-cowboy","hat-santa","hat-winter","hat-witch","hat-wizard","head-side-brain","head-side-cough-slash","head-side-cough","head-side-goggles","head-side-headphones","head-side-heart","head-side-mask","head-side-medical","head-side-virus","head-side","heading","headphones-simple","headphones","headset","heart-circle-bolt","heart-circle-check","heart-circle-exclamation","heart-circle-minus","heart-circle-plus","heart-circle-xmark","heart-crack","heart-half-stroke","heart-half","heart-pulse","heart","heat","helicopter-symbol","helicopter","helmet-battle","helmet-safety","helmet-un","hexagon-check","hexagon-divide","hexagon-exclamation","hexagon-image","hexagon-minus","hexagon-plus","hexagon-vertical-nft-slanted","hexagon-vertical-nft","hexagon-xmark","hexagon","high-definition","highlighter-line","highlighter","hill-avalanche","hill-rockslide","hippo","hockey-mask","hockey-puck","hockey-stick-puck","hockey-sticks","holly-berry","honey-pot","hood-cloak","horizontal-rule","horse-head","horse-saddle","horse","hose-reel","hose","hospital-user","hospital","hospitals","hot-tub-person","hotdog","hotel","hourglass-clock","hourglass-empty","hourglass-end","hourglass-start","hourglass","house-blank","house-building","house-chimney-blank","house-chimney-crack","house-chimney-heart","house-chimney-medical","house-chimney-user","house-chimney-window","house-chimney","house-circle-check","house-circle-exclamation","house-circle-xmark","house-crack","house-day","house-fire","house-flag","house-flood-water-circle-arrow-right","house-flood-water","house-heart","house-laptop","house-lock","house-medical-circle-check","house-medical-circle-exclamation","house-medical-circle-xmark","house-medical-flag","house-medical","house-night","house-person-leave","house-person-return","house-signal","house-tree","house-tsunami","house-turret","house-user","house-water","house-window","house","hryvnia-sign","hundred-points","hurricane","hyphen","i-cursor","i","ice-cream","ice-skate","icicles","icons","id-badge","id-card-cl
1ip","id-card","igloo","image-landscape","image-polaroid-user","image-polaroid","image-portrait","image-slash","image-user","image","images-user","images","inbox-full","inbox-in","inbox-out","inbox","inboxes","indent","indian-rupee-sign","industry-windows","industry","infinity","info","inhaler","input-numeric","input-pipe","input-text","integral","intersection","island-tropical","italic","j","jack-o-lantern","jar-wheat","jar","jedi","jet-fighter-up","jet-fighter","joint","joystick","jug-detergent","jug","k","kaaba","kazoo","kerning","key-skeleton-left-right","key-skeleton","key","keyboard-brightness-low","keyboard-brightness","keyboard-down","keyboard-left","keyboard","keynote","khanda","kidneys","kip-sign","kit-medical","kitchen-set","kite","kiwi-bird","kiwi-fruit","knife-kitchen","knife","l","lacrosse-stick-ball","lacrosse-stick","lambda","lamp-desk","lamp-floor","lamp-street","lamp","land-mine-on","landmark-dome","landmark-flag","landmark","language","laptop-arrow-down","laptop-code","laptop-file","laptop-medical","laptop-mobile","laptop-slash","laptop","lari-sign","lasso-sparkles","lasso","layer-group","layer-minus","layer-plus","leaf-heart","leaf-maple","leaf-oak","leaf","leafy-green","left-from-line","left-long-to-line","left-long","left-right","left-to-line","left","lemon","less-than-equal","less-than","life-ring","light-ceiling","light-emergency-on","light-emergency","light-switch-off","light-switch-on","light-switch","lightbulb-dollar","lightbulb-exclamation-on","lightbulb-exclamation","lightbulb-on","lightbulb-slash","lightbulb","lights-holiday","line-columns","line-height","lines-leaning","link-horizontal-slash","link-horizontal","link-simple-slash","link-simple","link-slash","link","lips","lira-sign","list-check","list-dropdown","list-music","list-ol","list-radio","list-timeline","list-tree","list-ul","list","litecoin-sign","loader","lobster","location-arrow","location-check","location-crosshairs-slash","location-crosshairs","location-dot-slash","location-dot","location-exclamation","location-minus","location-pen","location-pin-lock","location-pin-slash","location-pin","location-plus","location-question","location-smile","location-xmark","lock-a","lock-hashtag","lock-keyhole-open","lock-keyhole","lock-open","lock","locust","lollipop","loveseat","luchador-mask","lungs-virus","lungs","m","mace","magnet","magnifying-glass-arrow-right","magnifying-glass-chart","magnifying-glass-dollar","magnifying-glass-location","magnifying-glass-minus","magnifying-glass-plus","magnifying-glass","mailbox","manat-sign","mandolin","mango","manhole","map-location-dot","map-location","map-pin","map","marker","mars-and-venus-burst","mars-and-venus","mars-double","mars-stroke-right","mars-stroke-up","mars-stroke","mars","martini-glass-citrus","martini-glass-empty","martini-glass","mask-face","mask-snorkel","mask-ventilator","mask","masks-theater","mattress-pillow","maximize","meat","medal","megaphone","melon-slice","melon","memo-circle-check","memo-circle-info","memo-pad","memo","memory","menorah","mercury","merge","message-arrow-down","message-arrow-up-right","message-arrow-up","message-bot","message-captions","message-check","message-code","message-dollar","message-dots","message-exclamation","message-image","message-lines","message-medical","message-middle-top","message-middle","message-minus","message-music","message-pen","message-plus","message-question","message-quote","message-slash","message-smile","message-sms","message-text","message-xmark","message","messages-dollar","messages-question","messages","meteor","meter-bolt","meter-droplet","meter-fire","meter","microchip-ai","microchip","microphone-lines-slash","microphone-lines","microphone-slash","microphone-stand","microphone","microscope","microwave","mill-sign","minimize","minus","mistletoe","mitten","mobile-button","mobile-notch","mobile-retro","mobile-screen-button","mobile-screen","mobile-signal-out","mobile-signal","mobile","money-bill-1-wave","money-bill-1","money-bill-simple-wave","money-bill-simple","money-bill-transfer","money-bill-trend-up","money-bill-wave","money-bill-wheat","money-bill","money-bills-simple","money-bills","money-check-dollar-pen","money-check-dollar","money-check-pen","money-check","money-from-bracket","money-simple-from-bracket","monitor-waveform","monkey","monument","moon-cloud","moon-over-sun","moon-stars","moon","moped","mortar-pestle","mosque","mosquito-net","mosquito","motorcycle","mound","mountain-city","mountain-sun","mountain","mountains","mp3-player","mug-hot","mug-marshmallows","mug-saucer","mug-tea-saucer","mug-tea","mug","mushroom","music-note-slash","music-note","music-slas
1h","music","n","naira-sign","narwhal","nesting-dolls","network-wired","neuter","newspaper","nfc-lock","nfc-magnifying-glass","nfc-pen","nfc-signal","nfc-slash","nfc-symbol","nfc-trash","nfc","not-equal","notdef","note-medical","note-sticky","note","notebook","notes-medical","notes","o","object-exclude","object-group","object-intersect","object-subtract","object-ungroup","object-union","objects-align-bottom","objects-align-center-horizontal","objects-align-center-vertical","objects-align-left","objects-align-right","objects-align-top","objects-column","octagon-check","octagon-divide","octagon-exclamation","octagon-minus","octagon-plus","octagon-xmark","octagon","oil-can-drip","oil-can","oil-temperature","oil-well","olive-branch","olive","om","omega","onion","option","ornament","otter","outdent","outlet","oven","overline","p","page-caret-down","page-caret-up","page","pager","paint-roller","paintbrush-fine","paintbrush-pencil","paintbrush","palette","pallet-box","pallet-boxes","pallet","pan-food","pan-frying","pancakes","panel-ews","panel-fire","panorama","paper-plane-top","paper-plane","paperclip-vertical","paperclip","parachute-box","paragraph-left","paragraph","party-bell","party-horn","passport","paste","pause","paw-claws","paw-simple","paw","peace","peach","peanut","peanuts","peapod","pear","pedestal","pegasus","pen-circle","pen-clip-slash","pen-clip","pen-fancy-slash","pen-fancy","pen-field","pen-line","pen-nib-slash","pen-nib","pen-paintbrush","pen-ruler","pen-slash","pen-swirl","pen-to-square","pen","pencil-slash","pencil","people-arrows-left-right","people-carry-box","people-dress-simple","people-dress","people-group","people-line","people-pants-simple","people-pants","people-pulling","people-robbery","people-roof","people-simple","people","pepper-hot","pepper","percent","period","person-arrow-down-to-line","person-arrow-up-from-line","person-biking-mountain","person-biking","person-booth","person-breastfeeding","person-burst","person-cane","person-carry-box","person-chalkboard","person-circle-check","person-circle-exclamation","person-circle-minus","person-circle-plus","person-circle-question","person-circle-xmark","person-digging","person-dolly-empty","person-dolly","person-dots-from-line","person-dress-bur
1st","person-dress-simple","person-dress","person-drowning","person-falling-burst","person-falling","person-from-portal","person-half-dress","person-harassing","person-hiking","person-military-pointing","person-military-rifle","person-military-to-person","person-pinball","person-praying","person-pregnant","person-rays","person-rifle","person-running","person-seat-reclined","person-seat","person-shelter","person-sign","person-simple","person-skating","person-ski-jumping","person-ski-lift","person-skiing-nordic","person-skiing","person-sledding","person-snowboarding","person-snowmobiling","person-swimming","person-through-window","person-to-door","person-to-portal","person-walking-arrow-loop-left","person-walking-arrow-right","person-walking-dashed-line-arrow-right","person-walking-luggage","person-walking-with-cane","person-walking","person","peseta-sign","peso-sign","phone-arrow-down-left","phone-arrow-up-right","phone-flip","phone-hangup","phone-intercom","phone-missed","phone-office","phone-plus","phone-rotary","phone-slash","phone-volume","phone-xmark","phone","photo-film-music","photo-film","pi","piano-keyboard","piano","pickleball","pie","pig","piggy-bank","pills","pinata","pinball","pineapple","pipe-circle-check","pipe-collar","pipe-section","pipe-smoking","pipe-valve","pipe","pizza-slice","pizza","place-of-worship","plane-arrival","plane-circle-check","plane-circle-exclamation","plane-circle-xmark","plane-departure","plane-engines","plane-lock","plane-prop","plane-slash","plane-tail","plane-up-slash","plane-up","plane","planet-moon","planet-ringed","plant-wilt","plate-utensils","plate-wheat","play-pause","play","plug-circle-bolt","plug-circle-check","plug-circle-exclamation","plug-circle-minus","plug-circle-plus","plug-circle-xmark","plug","plus-large","plus-minus","plus","podcast","podium-star","podium","police-box","poll-people","pompebled","poo-storm","poo","pool-8-ball","poop","popcorn","popsicle","pot-food","potato","power-off","prescription-bottle-medical","prescription-bottle","prescription","presentation-screen","pretzel","print-magnifying-glass","print-slash","print","projector","pump-medical","pump-soap","pump","pumpkin","puzzle-piece-simple","puzzle-piece","puzzle","q","qrcode","question","quote-left","quote-right","quotes","r","rabbit-running","rabbit","racquet","radar","radiation","radio-tuner","radio","rainbow","raindrops","ram","ramp-loading","ranking-star","raygun","receipt","record-vinyl","rectangle-ad","rectangle-barcode","rectangle-code","rectangle-history-circle-plus","rectangle-history-circle-user","rectangle-history","rectangle-list","rectangle-pro","rectangle-terminal","rectangle-vertical-history","rectangle-vertical","rectangle-wide","rectangle-xmark","rectangle","rectangles-mixed","recycle","reel","refrigerator","registered","repeat-1","repeat","reply-all","reply-clock","reply","republican","restroom-simple","restroom","retweet","rhombus","ribbon","right-from-bracket","right-from-line","right-left","right-long-to-line","right-long","right-to-bracket","right-to-line","right","ring","rings-wedding","road-barrier","road-bridge","road-circle-check","road-circle-exclamation","road-circle-xmark","road-lock","road-spikes","road","robot-astromech","robot","rocket-launch","rocket","roller-coaster","rotate-exclamation","rotate-left","rotate-right","rotate","route-highway","route-interstate","route","router","rss","ruble-sign","rug","rugby-ball","ruler-combined","ruler-horizontal","ruler-triangle","ruler-vertical","ruler","rupee-sign","rupiah-sign","rv","s","sack-dollar","sack-xmark","sack","sailboat","salad","salt-shaker","sandwich","satellite-dish","satellite","sausage","saxophone-fire","saxophone","scale-balanced","scale-unbalanced-flip","scale-unbalanced","scalpel-line-dashed","scalpel","scanner-gun","scanner-keyboard","scanner-touchscreen","scanner","scarecrow","scarf","school-circle-check","school-circle-exclamation","school-circle-xmark","school-flag","school-lock","school","scissors","screen-users","screencast","screwdriver-wrench","screwdriver","scribble","scroll-old","scroll-torah","scroll","scrubber","scythe","sd-card","sd-cards","seal-exclamation","seal-question","seal","seat-airline","section","seedling","semicolon","send-back","send-backward","sensor-cloud","sensor-fire","sensor-on","sensor-triangle-exclamation","sensor","server","shapes","share-all","share-from-square","share-nodes","share","sheep","sheet-plastic","shekel-sign","shelves-empty","shelves","shield-cat","shield-check","shield-cross","shield-dog","shield-exclamation","shield-halved","shield-heart","shield-keyhole","shield-minus","shield-plus","shield-quartered","shield-slas
1h","shield-virus","shield-xmark","shield","ship","shirt-long-sleeve","shirt-running","shirt-tank-top","shirt","shish-kebab","shoe-prints","shop-lock","shop-slash","shop","shovel-snow","shovel","shower-down","shower","shredder","shrimp","shuffle","shutters","shuttle-space","shuttlecock","sickle","sidebar-flip","sidebar","sigma","sign-hanging","signal-bars-fair","signal-bars-good","signal-bars-slash","signal-bars-weak","signal-bars","signal-fair","signal-good","signal-slash","signal-stream-slash","signal-stream","signal-strong","signal-weak","signal","signature-lock","signature-slash","signature","signs-post","sim-card","sim-cards","sink","siren-on","siren","sitemap","skeleton","ski-boot-ski","ski-boot","skull-cow","skull-crossbones","skull","slash-back","slash-forward","slash","sleigh","slider","sliders-simple","sliders-up","sliders","slot-machine","smog","smoke","smoking","snake","snooze","snow-blowing","snowflake","snowflakes","snowman-head","snowman","snowplow","soap","socks","soft-serve","solar-panel","solar-system","sort-down","sort-up","sort","spa","space-station-moon-construction","space-station-moon","spade","spaghetti-monster-flying","sparkles","speaker","speakers","spell-check","spider-black-widow","spider-web","spider","spinner-third","spinner","split","splotch","spoon","sportsball","spray-can-sparkles","spray-can","sprinkler-ceiling","sprinkler","square-0","square-1","square-2","square-3","square-4","square-5","square-6","square-7","square-8","square-9","square-a-lock","square-a","square-ampersand","square-arrow-down-left","square-arrow-down-right","square-arrow-down","square-arrow-left","square-arrow-right","square-arrow-up-left","square-arrow-up-right","square-arrow-up","square-b","square-bolt","square-c","square-caret-down","square-caret-left","square-caret-right","square-caret-up","square-check","square-chevron-down","square-chevron-left","square-chevron-right","square-chevron-up","square-code","square-d","square-dashed","square-divide","square-dollar","square-down-left","square-down-right","square-down","square-e","square-ellipsis-vertical","square-ellipsis","square-envelope","square-exclamation","square-f","square-fragile","square-full","square-g","square-h","square-heart","square-i","square-info","square-j","square-k","square-kanban","square-l","square-left","square-list","square-m","square-minus","square-n","square-nfi","square-o","square-p","square-parking-slash","square-parking","square-pen","square-person-confined","square-phone-flip","square-phone-hangup","square-phone","square-plus","square-poll-horizontal","square-poll-vertical","square-q","square-quarters","square-question","square-quote","square-r","square-right","square-ring","square-root-variable","square-root","square-rss","square-s","square-share-nodes","square-sliders-vertical","square-sliders","square-small","square-star","square-t","square-terminal","square-this-way-up","square-u","square-up-left","square-up-right","square-up","square-user","square-v","square-virus","square-w","square-x","square-xmark","square-y","square-z","square","squid","squirrel","staff-aesculapius","staff","stairs","stamp","standard-definition","star-and-crescent","star-christmas","star-exclamation","star-half-stroke","star-half","star-of-david","star-of-life","star-sharp-half-stroke","star-sharp-half","star-sharp","star-shooting","star","starfighter-twin-ion-engine-advanced","starfighter-twin-ion-engine","starfighter","stars","starship-freighter","starship","steak","steering-wheel","sterling-sign","stethoscope","stocking","stomach","stop","stopwatch-20","stopwatch","store-lock","store-slash","store","strawberry","street-view","stretcher","strikethrough","stroopwafel","subscript","suitcase-medical","suitcase-rolling","suitcase","sun-bright","sun-cloud","sun-dust","sun-haze","sun-plant-wilt","sun","sunglasses","sunrise","sunset","superscript","sushi-roll","sushi","swatchbook","sword-laser-alt","sword-laser","sword","swords-laser","swords","symbols","synagogue","syringe","t","table-cells-large","table-cells","table-columns","table-layout","table-list","table-picnic","table-pivot","table-rows","table-tennis-paddle-ball","table-tree","table","tablet-button","tablet-rugged","tablet-screen-button","tablet-screen","tablet","tablets","tachograph-digital","taco","tag","tags","tally-1","tally-2","tally-3","tally-4","tally","tamale","tank-water","tape","tarp-droplet","tarp","taxi-bus","taxi","teddy-bear","teeth-open","teeth","telescope","temperature-arrow-down","temperature-arrow-up","temperature-empty","temperature-full","temperature-half","temperature-high","temperature-list","temperature-low","temperature-quarter","temperature-snow","temperature-sun","temperature-three-quarters","tenge-sign","tennis-ball","tent-arrow-down-to-line","tent-arrow-left-right","tent-arrow-tur
1n-left","tent-arrows-down","tent","tents","terminal","text-height","text-size","text-slash","text-width","text","thermometer","theta","thought-bubble","thumbs-down","thumbs-up","thumbtack","tick","ticket-airline","ticket-simple","ticket","tickets-airline","tilde","timeline-arrow","timeline","timer","tire-flat","tire-pressure-warning","tire-rugged","tire","toggle-off","toggle-on","toilet-paper-blank-under","toilet-paper-blank","toilet-paper-slash","toilet-paper-under-slash","toilet-paper-under","toilet-paper","toilet-portable","toilet","toilets-portable","tomato","tombstone-blank","tombstone","toolbox","tooth","toothbrush","torii-gate","tornado","tower-broadcast","tower-cell","tower-control","tower-observation","tractor","trademark","traffic-cone","traffic-light-go","traffic-light-slow","traffic-light-stop","traffic-light","trailer","train-subway-tunnel","train-subway","train-track","train-tram","train-tunnel","train","transformer-bolt","transgender","transporter-1","transporter-2","transporter-3","transporter-4","transporter-5","transporter-6","transporter-7","transporter-empty","transporter","trash-arrow-up","trash-can-arrow-up","trash-can-check","trash-can-clock","trash-can-list","trash-can-plus","trash-can-slash","trash-can-undo","trash-can-xmark","trash-can","trash-check","trash-clock","trash-list","trash-plus","trash-slash","trash-undo","trash-xmark","trash","treasure-chest","tree-christmas","tree-city","tree-deciduous","tree-decorated","tree-large","tree-palm","tree","trees","triangle-exclamation","triangle-instrument","triangle-person-digging","triangle","trillium","trophy-star","trophy","trowel-bricks","trowel","truck-arrow-right","truck-bolt","truck-clock","truck-container-empty","truck-container","truck-droplet","truck-fast","truck-field-un","truck-field","truck-flatbed","truck-front","truck-medical","truck-monster","truck-moving","truck-pickup","truck-plane","truck-plow","truck-ramp-box","truck-ramp-couch","truck-ramp","truck-tow","truck","trumpet","tty-answer","tty","tugrik-sign","turkey","turkish-lira-sign","turn-down-left","turn-down-right","turn-down","turn-up","turntable","turtle","tv-music","tv-retro","tv","typewriter","u","ufo-beam","ufo","umbrella-beach","umbrella-simple","umbrella","underline","unicorn","uniform-martial-arts","union","universal-access","unlock-keyhole","unlock","up-down-left-right","up-down","up-from-bracket","up-from-dotted-line","up-from-line","up-left","up-long","up-right-and-down-left-from-center","up-right-from-square","up-right","up-to-dotted-line","up-to-line","up","upload","usb-drive","user-alien","user-astronaut","user-bounty-hunter","user-check","user-chef","user-clock","user-cowboy","user-crown","user-doctor-hair-long","user-doctor-hair","user-doctor-message","user-doctor","user-gear","user-graduate","user-group-crown","user-group","user-hair-buns","user-hair-long","user-hair-mullet","user-hair","user-headset","user-helmet-safety","user-injured","user-large-slash","user-large","user-lock","user-minus","user-music","user-ninja","user-nurse-hair-long","user-nurse-hair","user-nurse","user-pen","user-pilot-tie","user-pilot","user-plus","user-police-tie","user-police","user-robot-xmarks","user-robot","user-secret","user-shakespeare","user-shield","user-slash","user-tag","user-tie-hair-long","user-tie-hair","user-tie","user-unlock","user-visor","user-vneck-hair-long","user-vneck-hair","user-vneck","user-xmark","user","users-between-lines","users-gear","users-line","users-medical","users-rays","users-rectangle","users-slash","users-viewfinder","users","utensils-slash","utensils","utility-pole-double","utility-pole","v","vacuum-robot","vacuum","value-absolute","van-shuttle","vault","vector-circle","vector-polygon","vector-square","vent-damper","venus-double","venus-mars","venus","vest-patches","vest","vial-circle-check","vial-virus","vial","vials","video-arrow-down-left","video-arrow-up-right","video-plus","video-slash","video","vihara","violin","virus-covid-slash","virus-covid","virus-slash","virus","viruses","voicemail","volcano","volleyball","volume-high","volume-low","volume-off","volume-slash","volume-xmark","volume","vr-cardboard","w","waffle","wagon-covered","walker","walkie-talkie","wallet","wand-magic-sparkles","wand-magic","wand-sparkles","wand","warehouse-full","warehouse","washing-machine","watch-apple","watch-calculator","watch-fitness","wat
1ch-smart","watch","water-arrow-down","water-arrow-up","water-ladder","water","watermelon-slice","wave-pulse","wave-sine","wave-square","wave-triangle","waveform-lines","waveform","weight-hanging","weight-scale","whale","wheat-awn-circle-exclamation","wheat-awn-slash","wheat-awn","wheat-slash","wheat","wheelchair-move","wheelchair","whiskey-glass-ice","whiskey-glass","whistle","wifi-exclamation","wifi-fair","wifi-slash","wifi-weak","wifi","wind-turbine","wind-warning","wind","window-flip","window-frame-open","window-frame","window-maximize","window-minimize","window-restore","window","windsock","wine-bottle","wine-glass-crack","wine-glass-empty","wine-glass","won-sign","worm","wreath","wrench-simple","wrench","x-ray","x","xmark-large","xmark-to-slot","xmark","xmarks-lines","y","yen-sign","yin-yang","z","42-group fab","500px fab","accessible-icon fab","accusoft fab","adn fab","adversal fab","affiliatetheme fab","airbnb fab","algolia fab","alipay fab","amazon-pay fab","amazon fab","amilia fab","android fab","angellist fab","angrycreative fab","angular fab","app-store-ios fab","app-store fab","apper fab","apple-pay fab","apple fab","artstation fab","asymmetrik fab","atlassian fab","audible fab","autoprefixer fab","avianex fab","aviato fab","aws fab","bandcamp fab","battle-net fab","behance-square fab","behance fab","bilibili fab","bimobject fab","bitbucket fab","bitcoin fab","bity fab","black-tie fab","blackberry fab","blogger-b fab","blogger fab","bluetooth-b fab","bluetooth fab","bootstrap fab","bots fab","btc fab","buffer fab","buromobelexperte fab","buy-n-large fab","buysellads fab","canadian-maple-leaf fab","cc-amazon-pay fab","cc-amex fab","cc-apple-pay fab","cc-diners-club fab","cc-discover fab","cc-jcb fab","cc-mastercard fab","cc-paypal fab","cc-stripe fab","cc-visa fab","centercode fab","centos fab","chrome fab","chromecast fab","cloudflare fab","cloudscale fab","cloudsmith fab","cloudversify fab","cmplid fab","codepen fab","codiepie fab","confluence fab","connectdevelop fab","contao fab","cotton-bureau fab","cpanel fab","creative-commons-by fab","creative-commons-nc-eu fab","creative-commons-nc-jp fab","creative-commons-nc fab","creative-commons-nd fab","creative-commons-pd-alt fab","creative-commons-pd fab","creative-commons-remix fab","creative-commons-sa fab","creative-commons-sampling-plus fab","creative-commons-sampling fab","creative-commons-share fab","creative-commons-zero fab","creative-commons fab","critical-role fab","css3-alt fab","css3 fab","cuttlefish fab","d-and-d-beyond fab","d-and-d fab","dailymotion fab","dashcube fab","deezer fab","delicious fab","deploydog fab","deskpro fab","dev fab","deviantart fab","dhl fab","diaspora fab","digg fab","digital-ocean fab","discord fab","discourse fab","dochub fab","docker fab","draft2digital fab","dribbble-square fab","dribbble fab","dropbox fab","drupal fab","dyalog fab","earlybirds fab","ebay fab","edge-legacy fab","edge fab","elementor fab","ello fab","ember fab","empire fab","envira fab","erlang fab","ethereum fab","etsy fab","evernote fab","expeditedssl fab","facebook-f fab","facebook-messenger fab","facebook-square fab","facebook fab","fantasy-flight-games fab","fedex fab","fedora fab","figma fab","firefox-browser fab","firefox fab","first-order-alt fab","first-order fab","firstdraft fab","flickr fab","flipboard fab","fly fab","font-awesome fab","fonticons-fi fab","fonticons fab","fort-awesome-alt fab","fort-awesome fab","forumbee fab","foursquare fab","free-code-camp fab","freebsd fab","fulcrum fab","galactic-republic fab","galactic-senate fab","get-pocket fab","gg-circle fab","gg fab","git-alt fab","git-square fab","git fab","github-alt fab","github-square fab","github fab","gitkraken fab","gitlab fab","gitter fab","glide-g fab","glide fab","gofore fab","golang fab","goodreads-g fab","goodreads fab","google-drive fab","google-pay fab","google-play fab","google-plus-g fab","google-plus-square fab","google-plus fab","google-wallet fab","google fab","gratipay fab","grav fab","gripfire fab","grunt fab","guilded fab","gulp fab","hacker-news-square fab","hacker-news fab","hackerrank fab","hashnode fab","hips fab","hire-a-helper fab","hive fab","hooli fab","hornbill fab","hotjar fab","houzz fab","html5 fab","hubspot fab","ideal fab","imdb fab","instagram-square fab","instagram fab","instalod fab","intercom fab","internet-explorer fab","invision fab","ioxhost fab","itch-io fab","itunes-note fab","itunes fab","java fab","jedi-order fab","jenkins fab","jira fab","joget fab","joomla fab","js-square fab","js fab","jsfiddle fab","kaggle fab","keybase fab","keycdn fab","kickstarter-k fab","kickstarter fab","korvue fab","laravel fab","lastfm-square fab","lastfm fab","leanpub fab","less fab","line fab","linkedin-in fab","linkedin fab","linode fab","linux fab","lyft fab","magento fab","mailchimp fab","mandalorian fab","markdown fab","mastodon fab","maxcdn fab","mdb fab","medapps fab","medium fab","medrt fab","meetup fab","megaport fab","mendeley fab","meta fab","microblog fab","microsoft fab","mix fab","mixcloud fab","mixer fab","mizuni fab","modx fab","monero fab","napster fab","neos fab","nfc-directional fab","nfc-symbol fab","nimblr fab","node-js fab","node fab","npm fab","ns8 fab","nutritionix fab","octopus-deploy fab","odnoklassniki-square fab","odnoklassniki fab","old-republic fab","opencart fab","openid fab","opera fab","optin-monster fab","orcid fab","osi fab","padlet fab","page4 fab","pagelines fab","palfed fab","patreon fab","paypal fab","perbyte fab","periscope fab","phabricator fab","phoenix-framework fab","phoenix-squadron fab","php fab","pied-piper-alt fab","pied-piper-hat fab","pied-piper-pp fab","pied-piper-square fab","pied-piper fab","pinterest-p fab","pinterest-square fab","pinterest fab","pix fab","playstation fab","product-hunt fab","pushed fab","python fab","qq fab","quinscape fab","quora fab","r-project fab","raspberry-pi fab","ravelry fab","react fab","reacteurope fab","readme fab","rebel fab","red-river fab","reddit-alien fab","reddit-square fab","reddit fab","redh
1at fab","renren fab","replyd fab","researchgate fab","resolving fab","rev fab","rocketchat fab","rockrms fab","rust fab","safari fab","salesforce fab","sass fab","schlix fab","screenpal fab","scribd fab","searchengin fab","sellcast fab","sellsy fab","servicestack fab","shirtsinbulk fab","shopify fab","shopware fab","simplybuilt fab","sistrix fab","sith fab","sitrox fab","sketch fab","skyatlas fab","skype fab","slack fab","slideshare fab","snapchat-square fab","snapchat fab","soundcloud fab","sourcetree fab","speakap fab","speaker-deck fab","spotify fab","square-font-awesome-stroke fab","square-font-awesome fab","squarespace fab","stack-exchange fab","stack-overflow fab","stackpath fab","staylinked fab","steam-square fab","steam-symbol fab","steam fab","sticker-mule fab","strava fab","stripe-s fab","stripe fab","studiovinari fab","stumbleupon-circle fab","stumbleupon fab","superpowers fab","supple fab","suse fab","swift fab","symfony fab","teamspeak fab","telegram fab","tencent-weibo fab","the-red-yeti fab","themeco fab","themeisle fab","think-peaks fab","tiktok fab","trade-federation fab","trello fab","tumblr-square fab","tumblr fab","twitch fab","twitter-square fab","twitter fab","typo3 fab","uber fab","ubuntu fab","uikit fab","umbraco fab","uncharted fab","uniregistry fab","unity fab","unsplash fab","untappd fab","ups fab","usb fab","usps fab","ussunnah fab","vaadin fab","viacoin fab","viadeo-square fab","viadeo fab","viber fab","vimeo-square fab","vimeo-v fab","vimeo fab","vine fab","vk fab","vnv fab","vuejs fab","watchman-monitoring fab","waze fab","weebly fab","weibo fab","weixin fab","whatsapp-square fab","whatsapp fab","whmcs fab","wikipedia-w fab","windows fab","wirsindhandwerk fab","wix fab","wizards-of-the-coast fab","wodu fab","wolf-pack-battalion fab","wordpress-simple fab","wordpress fab","wpbeginner fab","wpexplorer fab","wpforms fab","wpressr fab","xbox fab","xing-square fab","xing fab","y-combinator fab","yahoo fab","yammer fab","yandex-international fab","yandex fab","yarn fab","yelp fab","yoast fab","youtube-square fab","youtube fab","zhihu fab"]}())}(),function(){"use strict";angular.module("ccFrontend").constant("PREFERENCES",function(){return{locale:"locale",menuState:"menuState",collapseCollectionsIfLengthExceeds:"collapseCollectionsIfLengthExceeds"}}())}(),function(){"use strict";angular.module("ccFrontend").constant("URLS",function(){return{frontend:{app:"/app/",login:"/login/#/",scripts:"scripts/",directives:"scripts/directives/",pageLayoutType:"pagelayout/type/",landingPages:"scripts/modules/landingpages/",layouts:"scripts/directives/uiitem/layout/",modules:"scripts/modules/",widgets:"scripts/directives/uiitem/widget/"},backend:{action:"/api/action",multiPartAction:"/api/action/multipart",actionServerInput:"/api/actionServerInput",actionStatus:"/api/actionStatus",fetchTableData:"/api/actionFetchDataHandler",process:"/api/process",api:"/api",forestView:"/api/forestview",future:"/api/future",report:"/api/report",view:"/api/view"},extension:{html:".html"}}}())}(),function(){"use strict";function e(e){var t=window[e];return window[e]=void 0,t}angular.module("ccFrontend").constant("_",e("_")).constant("moment",e("moment")).constant("cuid",e("cuid")).constant("FullCalendar",e("FullCalendar")).constant("Quill",e("Quill"))}(),function(){"use strict";angular.module("ccFrontend").constant("WIDGET_API",function(){return{action:{id:"action",event:{finishAction:"finishAction",finishBulkAction:"finishBulkAction"}},data:{id:"data",event:{}},filter:{id:"filter",event:{filter:"filter"}},help:{id:"help",event:{}},lifecycle:{id:"lifecycle",event:{create:"create",beforeLoad:"beforeLoad",load:"load",loaded:"loaded",afterLoad:"afterLoad",executeOnce:"executeOnce",dirty:"dirty",pristine:"pristine",reload:"reload",destroy:"destroy",reInit:"reInit",i18n:"i18n",objectCreated:"objectCreated",objectDeleted:"objectDeleted",objectUpdated:"objectUpdated",objectsCreated:"objectsCreated",objectsDeleted:"objectsDeleted",objectsUpdated:"objectsUpdated"}},model:{id:"model",event:{}},personTraits:{id:"personTraits",event:{}},selection:{id:"selection",event:{clear:"clear",beforeSelect:"beforeSelect",beforeActivate:"beforeActivate",activate:"activate",deactivate:"deactivate",afterActivate:"afterActivate",afterDeactivate:"afterDeactivate",select:"select",deselect:"deselect",afterSelect:"afterSelect",afterDeselect:"afterDeselect"}},status:{id:"status",event:{}},ui:{id:"ui",event:{layout:"layout"}}}}())}(),function(){"use strict";function e(e,t,i){d.$inject=["$filter","moment","_"],this.buildHTML=a,this.getCuid=function(){return i()},this.getUuid=o,this.getValue=function(e){return t.isUndefined(e)?void 0:t.isNull(e)?null:e.value},this.reduceRecord=r,this.reduceRecords=s,this.removeEmptyObjects=c,this.removeHtml=l,this.$get=d;var n=this;function a(e){const i=e.tag;let n="<"+i;const o=e.attr;t.forEach(o,(e,t)=>{n+=e?` ${t}="${e}"`:` ${t}`});let r="";
1const s=e.child;return t.forEach(s,e=>{r+="string"==typeof e?e:a(e)}),n+=`>${r}</${i}>`}function o(){var e=function(e){return Math.pow(2,e)},t=e(6),i=e(8),n=e(12),a=e(16),o=e(32),r=function(e,t){return Math.floor(Math.random()*(t-e+1))+e},s=function(e,t,i){e=String(e),i=i||"0";for(var n=t-e.length;n>0;n>>>=1,i+=i)1&n&&(e=i+e);return e};return function(e,t,i,n,a,o){return s(e.toString(16),8)+"-"+s(t.toString(16),4)+"-"+s(i.toString(16),4)+"-"+s(n.toString(16),2)+s(a.toString(16),2)+"-"+s(o.toString(16),12)}(function(){return r(0,o-1)}(),function(){return r(0,a-1)}(),16384|function(){return r(0,n-1)}(),128|function(){return r(0,t-1)}(),function(){return r(0,i-1)}(),function(){return(0|Math.random()*(1<<30))+(0|Math.random()*(1<<18))*(1<<30)}())}function r(i){var n={};return t.isObject(i)?t.isEmpty(t.difference(t.keys(i),e.valueObjectProperties))?t.isPlainObject(i.value)?r(i.value):t.isArray(i.value)?s(i.value):i.value:(t.each(t.keys(i),function(a){t.isArray(i[a])?n[a]=s(i[a]):t.isObject(i[a])?t.isEmpty(t.difference(t.keys(i[a]),e.valueObjectProperties))?t.isArray(i[a].value)?n[a]=s(i[a].value):t.isObject(i[a].value)?n[a]=r(i[a].value):n[a]=i[a].value:n[a]=r(i[a]):n[a]=i[a]}),n):i}function s(e){return t.map(e,function(e){return t.isObject(e)?r(e):e})}function c(e,i){return e=t.mapValues(e,function(e){if(t.isPlainObject(e))return c(e,!1);if(t.isArray(e)){var i=t.map(e,function(e){return t.isPlainObject(e)?c(e,!1):e});return t.reject(i,t.isNull)}return e}),e=t.omit(e,function(e,i){return t.startsWith(i,"$")}),!i&&t.every(e,function(e){return t.isNull(e)||t.isArray(e)&&0===e.length})?null:e}function l(i){return t.isNil(i)?"":i.replace(e.htmlRegExp,"").trim()}function d(e,t,i){return{acronymize:function(e){var t=e.replace(/[^A-Z]/g,"");if(t.length<=1)return e.length>=3?e.substring(0,3):e;return t},buildHTML:a,detransformArrays:d,detransformDate:u,findOriginatingUiItem:function(e){var t=null,n=i.isNull(e)?null:e.widget;if(!i.isNull(n)&&!i.isUndefined(n)){var a;for(i.isUndefined(n._scope)?(t=e.$parent.itemConfig.id,a=e.$parent.itemConfig.callerWidget):(t=n._scope.itemConfig.id,a=n._scope.itemConfig.callerWidget);!i.isUndefined(a);)t=a._scope.itemConfig.id,a=a._scope.itemConfig.callerWidget}return t},getCuid:n.getCuid,getUuid:n.getUuid,getColors:function(e,t){if(0===t)return[];var n=function(){var e=Array.prototype,t=function(t,i,n){return e.slice.apply(t,e.slice.call(arguments,1))},i=function(e,n,a,o){if(0===(n=n||0))return[];
1if("function"!=typeof e){var r=i.listSchemes(e,n);if(!r.length)return null;e=r[(a||0)%r.length]}var s=t(arguments,2);return s[0]=n,e.apply(e,s)};i.Scheme=function(e,n){var a={},o=0,r=1e9,s=function(e,n){if(!(e=e||0))return[];var c=e;if((e=Math.abs(e))<=o){for(var l=Math.max(e,r);!(l in a);++l);var d=a[l];if(l>e){var u="shrinkingTakesHead"in d?d.shrinkingTakesHead:s.shrinkingTakesHead;if(!u)return i.generate(function(e){return d[Math.round(e)]},c,0,d.length-1);d=d.slice(0,e),l=e}return d=d.slice(),c<0&&d.reverse(),d}return s.colorFunc?i.generate(function(){if(arguments.length<=1)return this.colorFunc.bind(this);var e=t(arguments);return function(t){return e[0]=t,this.colorFunc.apply(this,e)}}.apply(s,arguments),c,0,1,s.colorFuncCyclic):null};return s.schemeName=e,s.groups=n?"string"==typeof n?[n]:n:[],s.max=0,s.cbfMax=1e9,s.addPalette=function(e,t){var i=e.length;i&&(a[i]=e,r=Math.min(r,i),o=Math.max(o,i),s.max=Math.max(s.max,i),t||1===i||(s.cbfMax=Math.min(s.cbfMax,i-1)))},s.addPalettes=function(e,t,i){t=t||e.length;for(var n=0;n<t;++n)n in e&&s.addPalette(e[n],!0);s.cbfMax=Math.min(s.cbfMax,i||1)},s.shrinkByTakingHead=function(e,t){void 0!==t?t in a&&(a[t].shrinkingTakesHead=!!e):s.shrinkingTakesHead=!!e},s.setColorFunction=function(e,t,i){s.colorFunc=e,s.colorFuncCyclic=!!i,s.max=1e9,t||1e9!==s.cbfMax||(s.cbfMax=1)},s.color=function(e,t){return s.colorFunc?s.colorFunc.apply(this,arguments):null},s},i.Scheme.fromPalettes=function(e,n,a,o,r){var s=i.Scheme(e,n);return s.addPalettes.apply(s,t(arguments,2)),s},i.Scheme.withColorFunction=function(e,n,a,o,r){var s=i.Scheme(e,n);return s.setColorFunction.apply(s,t(arguments,2)),s};var n={};i.register=function(e){n["n-"+e.schemeName]=[e],e.groups.forEach(function(t){(n["g-"+t]=n["g-"+t]||[]).push(e)}),(n["g-all"]=n["g-all"]||[]).push(e)},i.listSchemes=function(e,t){t?t<0&&(t=-t):t=2;var i=[];return("string"==typeof e?[e]:e).forEach(function(e){var a="-cbf"===e.substring(e.length-4);a&&(e=e.substring(0,e.length-4));for(var o,r=n["g-"+e]||n["n-"+e]||[],s=0;o=r[s];++s)(a?o.cbf:o.max)>=t&&i.push(o)}),i.sort(function(e,t){return e.schemeName>=t.schemeName?e.schemeName>t.schemeName?1:0:-1}),i},i.generate=function(e,t,i,n,a){if(Math.abs(t)<1)return[];if(i=void 0===i?0:i,n=void 0===n?1:n,Math.abs(t)<2)return[e(i)];for(var o=Math.abs(t),r=i,s=[],c=(n-i)/(a?o:o-1);--o>=0;r+=c)s.push(e(r));return t<0&&s.reverse(),s};var a=function(e){return e>0?e<1?e:1:0};return i.rgbColor=function(e,t,i){return[e,t,i].map(function(e){return 1===(e=Number(Math.round(255*a(e))).toString(16)).length?"0"+e:e}).join("")},i.linearRgbColor=function(e,t,i){return[e,t,i].map(function(e){return(e=a(e))<=.0031308?e*=12.92:e=1.055*Math.pow(e,1/2.4)-.055,1===(e=Number(Math.round(255*e)).toString(16)).length?"0"+e:e}).join("")},i.hsvColor=function(e,t,n){e*=6;var o=void 0===t?1:a(t),r=void 0===n?1:a(n),s=r*(1-o*Math.abs(e%2-1)),c=r*(1-o);switch(Math.floor(e)%6){case 0:return i.rgbColor(r,s,c);case 1:return i.rgbColor(s,r,c);case 2:return i.rgbColor(c,r,s);case 3:return i.rgbColor(c,s,r);case 4:return i.rgbColor(s,c,r);default:return i.rgbColor(r,c,s)}},i.register(i.Scheme.withColorFunction("rainbow","qualitative",i.hsvColor,!1,!0)),i}();return function(){var e=n.rgbColor,t=function(e,t){for(var i=arguments.length-1,n=arguments[i];i>1;)n=n*e+arguments[--i];return n},i=function(e){var i=t(Math.abs(e),1,.278393,.230389,972e-6,.078108);return i*=i,i=1-1/(i*=i),e<0?-i:i};n.register(n.Scheme.fromPalettes("tol","qualitative",[["4477aa"],["4477aa","cc6677"],["4477aa","ddcc77","cc6677"],["4477aa","117733","ddcc77","cc6677"],["332288","88ccee","117733","ddcc77","cc6677"],["332288","88ccee","117733","ddcc77","cc6677","aa4499"],["332288","88ccee","44aa99","117733","ddcc77","cc6677","aa4499"],["332288","88ccee","44aa99","117733","999933","ddcc77","cc6677","aa4499"],["332288","88ccee","44aa99","117733","999933","ddcc77","cc6677","882255","aa4499"],["332288","88ccee","44aa99","117733","999933","ddcc77","661100","cc6677","882255","aa4499"],["332288","6699cc","88ccee","44aa99","117733","999933","ddcc77","661100","cc6677","882255","aa4499"],["332288","6699cc","88ccee","44aa99","117733","999933","ddcc77","661100","cc6677","aa4466","882255","aa4499"]],12,12)),n.tolSequentialColor=function(t){return e(1-.392*(1+i((t-.869)/.255)),1.021-.456*(1+i((t-.527)/.376)),1-.493*(1+i((t-.272)/.309)))},n.register(n.Scheme.withColorFunction("tol-sq","sequential",n.tolSequentialColor,!0)),n.tolDivergingColor=function(i){var n=t(i,.572,1.524,-1.811)/t(i,1,-.291,.1574);return e(t(i,.235,-2.13,26.92,-65.5,63.5,-22.36),n*n,1/t(i,1.579,-4.03,12.92,-31.4,48.6,-23.3
16))},n.register(n.Scheme.withColorFunction("tol-dv","diverging",n.tolDivergingColor,!0)),n.tolRainbowColor=function(i){return e(t(i,.472,-.567,4.05)/t(i,1,8.72,-19.17,14.1),t(i,.108932,-1.22635,27.284,-98.577,163.3,-131.395,40.634),1/t(i,1.97,3.54,-68.5,243,-297,125))},n.register(n.Scheme.withColorFunction("tol-rainbow","qualitative",n.tolRainbowColor,!0))}(),i.map(n(e,t),function(e){return"#"+e})},getCoveredObjects:function e(t,n,a){i.isObject(t)||(t={});i.each(i.keys(n),function(o){if("id"===o&&v(n.id)){var r=a[n.$viewDefinition];if(!i.isUndefined(r)){var s=r.entity;i.isUndefined(t[s])&&(t[s]=[]),t[s].push(n[o])}}else i.isArray(n[o])?i.each(n[o],function(n){i.extend(t,e(t,n,a))}):i.isObject(n[o])&&i.extend(t,e(t,n[o],a))});return t},getCurrentYear:function(){return e("amDateFormat")(t(),"YYYY")},getLetters:function(e){for(var t=[],i=0;i<e;i++)t.push(g(i));return t},getKeyForValue:function(e,t){return Object.keys(e).find(function(i){return e[i]===t})},getMandatoryFields:function e(t,n,a){var o={};i.isUndefined(t)||i.isUndefined(a)||i.each(t.fields,function(t){if(o[t.name]={mandatory:"MANDATORY"===t.priority&&a.api.field.isVisible(n,a._scope,t),name:t.name,object:null},"OBJECT"===t.editDisplayType&&!i.isNull(t.embeddedObjectView)){var r=a.model.referenceModels[t.embeddedObjectView];if(t.collection){o[t.name].object=[];for(var s=0;s<t.minimumCollectionSize;s++)o[t.name].object[s]=e(r,n+"."+t.name+"["+s+"]._item",a)}else o[t.name].object=e(r,n+"."+t.name,a)}});return o},getTimestampAsArray:function(){var e=t();return[e.year(),e.month()+1,e.date(),e.hours(),e.minutes(),e.seconds(),e.milliseconds()]},getTimestampWithSpecifiedHourAndMinute:function(e,i){return b(t().startOf("day").add(e,"h").add(i,"m"))},getTranslationFieldObjects:function e(t,n,a){i.isArray(t)||(t=[]);i.each(i.keys(n),function(o){if(i.isArray(n[o]))i.each(n[o],function(i){e(t,i,a)});else if(i.isObject(n[o])){var r=a[n[o].$viewDefinition];i.isUndefined(r)||"TranslationField"!==r.entity?e(t,n[o],a):t.push(n[o])}});return t},isDate:f,isDateTime:p,isDateOrDateTime:m,isEmpty:function e(t,n){if(i.isBoolean(t)||i.isNumber(t))return i.isUndefined(t)||i.isNull(t);if(i.isPlainObject(t)){var a=!0;return i.forOwn(t,function(t){e(t)||(a=!1)}),a}return i.isEmpty(t)},isMacro:function(e){return i.startsWith(e,"{")&&i.endsWith(e,"}")},isPromise:function(e){return e&&angular.isFunction(e.then)},isUuid:v,noopFn:function(){},noTransformationFn:function(e){return e},omitDeep:function e(t,n){var a=function(t,n){var a={};return i.each(i.keys(t),function(o){var r=t[o];i.isObject(r)?i.isArray(r)?a[o]=i.map(r,function(t){return e(t,n)}):a[o]=e(r,n):a[o]=r}),i.omit(a,n)};i.isObject(t)&&(t=i.isArray(t)?i.map(t,function(e){return a(e,n)}):a(t,n));return t},reduceRecord:r,reduceRecords:s,removeDuplicates:h,removeEmptyObjects:c,removeHtml:l,resolveDisplayName:function(t,n){if(i.has(t,"$displayName"))return e("displayPattern")(t,t.$displayName,n);if(i.has(t,"$viewDefinition")&&!i.isNil(n)&&!i.isNil(n[t.$viewDefinition])){const a=n[t.$viewDefinition].displayPattern;return t.$displayName=i.isNull(a)?t.id:e("displayPattern")(t,a,n),t.$displayName}if(i.has(t,"$displayPattern"))return t.$displayName=i.isNull(t.$displayPattern)?t.id:e("displayPattern")(t),t.$displayName;return!i.isNull(t)&&i.has(t,"id")?t.id:null},transformArrays:function e(t,n){if(!i.isObject(t))return t;return i.mapValues(t,function(t){return i.isArray(t)?m(t)?b(t):i.map(t,function(t){return i.has(t,"_item")?t._item:n?e(t,n):{_item:e(t,n)}}):e(t,n)})},transformDate:b,transformAllDatesInObject:function e(t){if(!i.isPlainObject(t))return t;return i.mapValues(t,function(t){return m(t)?b(t):i.isArray(t)?i.map(t,function(t){return e(t)}):e(t)})},normalizeDataFormat:function(e){return c(h(d(r(e))),!0)},tuplize:function(e,t,i,n,a,o){return{$create:!1,$read:t||!0,$write:i||!0,$arrange:n||!0,$insert:a||!0,$remove:o||!0,value:e}}};function d(e){return i.mapValues(e,function(e){return m(e)?u(e):i.has(e,"amount")&&i.has(e,"currency")&&i.isNull(e.amount)?null:i.isArray(e)?i.map(e,function(e){return i.has(e,"_item")?i.isObject(e._item)?d(e._item):e._item:i.isObject(e)?d(e):e}):i.isObject(e)?d(e):e})}function u(e){if(!i.isNil(e)){var t=i.clone(e);return i.isArray(t)&&(t[1]=t[1]+1),t}return e}function g(e){var t=e%26,i=String.fromCharCode(65+t),n=parseInt(e/26);return n>0?g(n-1)+i:i}function f(e){if(!i.isArray(e)||3!==e.length)return!1;var t=i.uniq(i.map(e,function(e){return typeof e}));return 1===t.length&&"number"===t[0]}function p(e){if(!i.isArray(e)||e.length<5||e.length>7)return!1;var t=i.uniq(i.map(e,function(e){return typeof e}));return 1===t.length&&"number"===t[0]}function m(e){return f(e)||p(e)}function v(e){if(!e||!i.isString(e))return!1;return e.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/)}function h(e){return i.mapValues(e,function(e){return i.isArray(e)?m(e)?e:(e=i.uniq(e,function(e){return i.has(e,"id")?e.id:o()}),i.map(e,function(e){return i.has(e,"_item")?h(e._item):e})):i.isObject(e)?h(e):e})}function b(e){if(!i.isNil(e)){var t=i.clone(e);return t[1]=t[1]-1,t}return e}}
1t.mixin({isNil:function(e){return null==e}})}e.$inject=["CMS_DATA","_","cuid"],angular.module("ccFrontend").provider("CCUtils",e)}(),function(){"use strict";function e(e,t){n.$inject=["ModelService","CCUtils","I18nLocaleService","$filter","_"];var i=this;function n(e,t,n,a,o){var r,s={translations:{},translationFields:{},translationFieldOverrides:{}};return function(){o.extend(s,i.i18n)}(),{addTranslationField:function(e){o.isNil(e)||c(e.id,e)},addTranslationFieldWithKey:c,convertTranslationData:function(e,t,i){o.each(e,function(e){var t={};o.each(i,function(i){t[i.iso]=e[i.iso],s.translations[e.i18nKey]=t})}),o.each(t,function(e){var t={};o.each(i,function(i){t[i.iso]=e[i.iso],o.has(s.translations,e.i18nKey)?s.translations[e.i18nKey]=t:s.translationFieldOverrides[e.i18nKey]=t})})},getI18nSettings:function(){return r},getTranslation:l,getTranslationWithDefault:function(e,t,i){var n=l(e,i);return o.startsWith(n,"???")&&t?l(t):n},getTranslationKeyWithDefault:function(e,t){return o.startsWith(u(e),"???")&&t?t:e},setI18NSettings:function(e){r=e},getTranslationForKeyAllLanguages:d,track:function(e,t){o.has(t,"i18nTooltips")||(t.i18nTooltips={});t.$on("i18n.switch",function(){t.i18nTooltips[e]=l(e)});var i=l(e);return t.i18nTooltips[e]=i,i},getAvailableLocales:n.getAvailableLocales,getAvailableLocalesAsPromise:n.getAvailableLocalesAsPromise,getCurrentLanguageTag:n.getCurrentLanguageTag,getCurrentLocale:n.getCurrentLocale,getDefaultLocale:n.getDefaultLocale,setCurrentLocale:n.setCurrentLocale,setDefaultLocale:n.setDefaultLocale,switchLocale:n.switchLocale};function c(e,t){o.isNil(e)||o.isNil(t)||(s.translationFields[e]=o.omit(t,"id","$viewDefinition","version"))}function l(i,r){if(!o.isEmpty(i)){var c=u(i);if(o.startsWith(c,"???")){var l=i.split(".");if("entity"===l[0]&&(e.isEntity(l[1])||t.isUuid(l[1]))&&3===l.length){var d,g="$defaults.attribute."+l[2];o.has(s.translationFields,g)?d=s.translationFields[g][n.getCurrentLocale().iso]:o.has(s.translations,g)&&(d=s.translations[g][n.getCurrentLocale().iso]),o.isUndefined(d)||o.startsWith(d,"???")||(c=d)}}return o.isUndefined(r)||(c=a("displayPattern")(r,c)),c}return""}function d(e){return o.has(s.translationFieldOverrides,e)?s.translationFieldOverrides[e]:o.has(s.translationFields,e)?s.translationFields[e]:o.has(s.translations,e)?s.translations[e]:null}function u(e){const t=d(e);return t?t[n.getCurrentLocale().iso]:"??? "+e+" ???"}}this.addTranslationField=function(n){var a=e.reduceRecord(n);t.has(i.i18n.translationFields,a.id)||(i.i18n.translationFields[a.id]=t.omit(a,"id","$viewDefinition","version"))},this.i18n={translations:{},translationFields:{}},this.$get=n}e.$inject=["CCUtilsProvider","_"],angular.module("ccFrontend").provider("I18nService",e)}(),function(){"use strict";function e(e,t,i){o.$inject=["ApplicationService","NavigationService","ModalService","ModelService","UrlService","WidgetService","EncryptionService","ControlService","ViewDefinitionModelService","I18nService","CCUtils","WIDGET_API","$http","$q","CollectionService","ValidationService","$timeout","upload","_"];var n={client:{},server:{}};function a(t,a,o){a?(n.server[t.id]=t,t.permissions={isGloballyExecutable:i.contains(o,t.id)},e.addTranslationField(t.config.name),i.each(t.steps,function(t){e.addTranslationField(t.name)})):n.client[t]=null}function o(e,i,a,o,r,s,c,l,d,u,g,f,p,m,v,h,b,w,y){var x={},C={},S={},E=function(e,t){return y.startsWith(t,"$")},A=[{id:"CREATE",fn:function(e){return m.when(e.$action.functions.create(e))}},{id:"GATHER",fn:function(e){return m.when(e.$action.functions.gather(e))}},{id:"EXECUTE",fn:function(e){return m.when(e.$action.functions.execute(e))}},{id:"REQUEST",fn:function(e){return m.when(e.$action.functions.request(e))}},{id:"RESPOND",fn:function(e){return m.when(e.$action.functions.respond(e))}}],I=function(e,t,i){return l.getControl("check",function(n,o){var r=y.keys(o.error.model)[0];a.getTable({viewDefinition:r,$actionInstance:n.data.instance,title:t,pathContext:!1,preventDesignMode:!0,preventEditingMode:!0,prefetchedData:{model:o.error.model,data:o.error.data,requestTimestamp:g.getTimestampAsArray()},singleSelection:!1,noUserInteractionRequired:!1,successLabel:"common.modalControl.goForward",skipIfPossible:!0},[],[l.getControl("selectAny"),l.getControl("cancel")],{size:"lg"}).result.then(function(t){n.data.checked[o.$index]=!0,n.data.instance.userInput[n.data.instance.$additionalDataRequired[e]]=y.map(t,i)})})},D={202:{id:"ACCEPTED"},406:{id:"NOT_ACCEPTABLE",checkControl:I(406,"action.interactiveResponse.NOT_ACCEPTABLE",function(e){return{objectId:JSON.parse(e.jsonObject).id,attributeName:e.attributeName}})},407:{id:"SELECT_ACHIEVEMENTS_AND_ACTIVITIES_THAT_DONT_MEET_THE_REQUIREMENTS",checkControl:I(407,"action.interactiveResponse.SELECT_ACHIEVEMENTS_AND_ACTIVITIES_THAT_DONT_MEET_THE_REQUIREMENTS",function(e){return{objectId:JSON.parse(e.jsonObject).id}})},408:{id:"ACTIVITY_CREATE_ACHIEVEMENT_REGISTRATIONS_CONFIRMATION",checkControl:I(408,"action.interactiveResponse.ACTIVITY_CREATE_ACHIEVEMENT_REGISTRATIONS_CONFIRMATION",function(e){return{objectId:e.id}})}};
1return function(){Object.keys(n.server).forEach(e=>{const t=n.server[e];y.extend(t,{functions:{request:J,respond:ne}}),oe(t);const i=m.defer();i.resolve(t),K(e,i)}),Object.keys(n.client).forEach(e=>{K(e,m.defer())}),o.setNewActionNames(y.keys(x))}(),{$responseCodes:{error:{400:{id:"BAD_REQUEST"},403:{id:"FORBIDDEN"},413:{id:"REQUEST_ENTITY_TOO_LARGE"},500:{id:"SERVER_ERROR"}},pending:D,ok:{200:{id:"OK"}}},callApi:$,cancel:T,fetchCollectionWidgetData:function(e,t,i){return i=y.isObject(i)?i:{},W("FetchCollectionWidgetDataAction",e,t,function(e){return e},function(e){return{contextId:e.contextId||null,collectionWidgetId:t._scope.$parent.itemConfig.id,includeModel:!1!==e.includeModel}},function(e,n){var a=!!y.isUndefined(i.reduced)||i.reduced,o=[],r=[],s=z((a?e.getReducedResults(1):e.getResults(1))[0],null,a,t).then(function(e){e.forEach(function(e){y.extend(e,{itemRenderer:v.getCollectionItemRendererForViewDefinition(t._scope.$parent,e.viewDefinitionId)})}),r.push(e)});return o.push(s),m.all(o).then(function(){return r})},{forceAllUserStories:!y.isUndefined(i.forceAllUserStories)&&i.forceAllUserStories})},getActionNames:function(){return y.keys(x)},getActionNameI18nKey:function(e,t,i){if(!e)return null;if(t)return t;if(i){const t=`actions.shortName.${e.id}`,i=u.getTranslation(t);if(!i.startsWith("???"))return t}const n=`actions.${e.id}`;if(!u.getTranslation(n).startsWith("???"))return n;if(i&&void 0!==e.config.shortName){const t=e.config.shortName;if(y.isObject(t)&&!y.isEmpty(t.de)&&!y.isEmpty(t.en))return t.id;if(y.isString(t))return t}if(e.config.name)return"string"==typeof e.config.name?e.config.name:e.config.name.id;return n},getDefinition:function(e){if(!y.has(x,e))throw new Error("unknown action: "+e);return x[e].promise},getInstance:R,getInstanceById:function(e){return C[e]||null},getInstances:function(){return y.values(C)},getModalFetchDataHandlerModel:function(e,t,i,n,a=(e=>e)){return i=y.isObject(i)?i:{},W("GetModalFetchDataHandlerModelAction",e,t,a,e=>{const t={actionId:n.actionId,actionParameterName:n.inputParameterName,context:JSON.stringify({context:n.context})};return e.viewDefinitionId&&d.applyViewDefinitionModelHashes(t,e.viewDefinitionId),t},(e,n)=>{const a=y.pluck(n,"viewDefinitionId"),o=!!y.isUndefined(i.reduced)||i.reduced;return z(o?e.getReducedResults(1):e.getResults(1),a,o,t)},{forceAllUserStories:!!i.forceAllUserStories})},getResultHandler:function(e){const t=S[e];if(void 0===t)throw new Error("unknown action result handler requested: ",e);return t},getSingleResultDisplayName:function(e,t){var i;if(!y.isUndefined(e.$response)){if(1===y.keys(e.$originDisplayNames).length){var n=y.values(e.$originDisplayNames)[0];return g.isUuid(n)?null:n}var a;if(y.keys(e.$response.data.output[t]).length>0&&(i=e.$response.data.output[t][0]),!y.isUndefined(i)&&!y.isUndefined(i.result)&&(a=y.has(i.result,"data")&&y.isArray(i.result.data)?i.result.data[0]:i.result,y.has(a,"id")&&y.has(e.$originDisplayNames,a.id)))return e.$originDisplayNames[a.id]}return null},invokeInstance:W,invokeFetchDataHandler:H,readFilterValues:function(e,t){return W("ReadFilterValuesAction",e,t,B,function(e){var t=e.findIds;return y.isNil(t)&&(t=y.isNil(e.objectId)?e.objectIds||null:[e.objectId]),{entity:e.entity,findIds:t}},function(e,i){var n=y.pluck(i,"viewDefinitionId"),a=e.getReducedResults(1);return z(a,n,!0,t)},{forceAllUserStories:!1})},readTranslationFieldFromSettingsForFieldHint:function(e,t){return W("FetchFieldHintTranslationFieldFromSystemSettingAction",e,t,q,function(e){var t={viewDefinitionId:e.viewDefinitionId,pathToField:e.pathToField,objectId:e.objectId||null,pathObjectId:e.pathObjectId||null};return d.applyViewDefinitionModelHashes(t,e.viewDefinitionId),t},function(e,i){return z(e.getReducedResults(1),y.pluck(i,"viewDefinitionId"),!0,t)})},readHandleViewDefinitionResult:z,readObjects:Y,readReducedObjects:function(e,t,i){return W("ReadReducedObjectAction",e,t,q,function(e){return{viewDefinitionId:e.viewDefinitionId,findId:e.objectId||null,pathId:e.pathId||null}},function(e,t){return e.getResults(1)},i)},readReducedObjectsNeo:function(e,t,i){return W("NeoReadObjectAction",e,t,q,function(e){const t={viewDefinitionId:e.viewDefinitionId,findIds:e.objectId?[e.objectId]:null,activeFilters:e.activeFilters||[],pathId:e.pathId||null,filter:e.filter||null,requestContext:e.requestContext||{},order:e.order||null,pageKey:e.pageKey||null,pageSize:e.pageSize||null,grouping:e.grouping||null,locale:e.locale||null,includeModel:!1!==e.includeModel};return d.applyViewDefinitionModelHashes(t,e.viewDefinitionId),t},function(e,t){return g.reduceRecords(e.getResults(1))},i)},readViewDefinitionModels:function(e,t){return W("ReadViewDefinitionModelAction",e,t,q,function(e){var t={viewDefinitionId:e.viewDefinitionId,pathId:e.pathId||null};return d.applyViewDefinitionModelHashes(t,e.viewDefinitionId),t},function(e,i){var n=y.pluck(i,"viewDefinitionId"),a=e.getResults(1);return z(a,n,!1,t)})},processInstance:G,register:K,registerResultHandler:function(e,t){if(y.has(S,e))throw new Error("ambiguous result handler implementation found: "+e);S[e]=t},resolve:function(e,t){oe(t),y.extend(t.config,{$client:!0}),x[e].resolve(t)},runInstance:ae,isVisible:function(e,t,i){var n=!0;y.isUndefined(t)||y.isUndefined(e)||(n=(n=(n=(n=n&&function(e,t,i){if(!y.isNull(e)){const n="*",a=t.config.entities||[n];if(e.api.hasApi(f.model.id,e._scope)){const t=e.api.model.inferRelevantBaseModels(e._scope,i);if(0===t.length&&a.includes(n))return!0;for(const e of t)if(!y.isEmpty(y.intersection(a,[n,e.entity])))return!0;return!1}return!0}return!0}(e,t,i))&&function(e,t){return $(t.config.visible,!0,e)}
1(e,t))&&function(e,t){var i=t.userInput.length>0,n=y.startsWith(i&&t.userInput[0].type,"origin"),a=!1;y.contains(["FormWidget","CustomWidget","ReportWidget","TreeWidget"],e.type)?a=!0:e.api.hasApi(f.selection.id,e._scope)&&(a=e.api.selection.hasSelectedAny(e._scope));return!n||n&&a}(e,t))&&function(e,t,i){const n="CreateObjectAction"===t.id||t.createObjectAction,a="UpdateObjectAction"===t.id||t.updateObjectAction,o="EditObjectAction"===t.id;if(n){if(e.api.hasApi(f.model.id,e._scope)){const t=e.api.model.inferRelevantBaseModels(e._scope,i);for(const e of t)if(y.isArray(e.allowedPathActions)&&e.allowedPathActions.includes("CreateObjectAction")||y.isArray(e.allowedActions)&&e.allowedActions.includes("CreateObjectAction"))return!0}return se(e,"CREATE")||ce(e,"CREATE")||le(e,"CREATE")}if(a)return se(e,"UPDATE")||ce(e,"UPDATE")||le(e,"UPDATE")||e.api.canUpdate(e._scope);if(o)return se(e,"UPDATE")||ce(e,"UPDATE")||le(e,"UPDATE")||e.api.canEdit(e._scope);{if(!t.config.checkActionPermissions)return!0;let n=!1;const a=t.id,o=!y.get(e,"model.baseModel.useNewPermissions")&&y.get(t,"permissions.isGloballyExecutable"),r=!!t.config.$client;let s,c=!1,l=!1;if(e.api.hasApi(f.model.id,e._scope)){const t=e.api.model.getAllBaseModels(e._scope,i);for(const e of t)c=c||y.isArray(e.allowedActions)&&y.contains(e.allowedActions,a),l=l||y.isArray(e.allowedPathActions)&&y.contains(e.allowedPathActions,a)}const d=(e,t)=>null===e||e.includes(t);if(e.api.hasApi(f.selection.id,e._scope)){const t=e.api.selection.get(e._scope);s=!y.isNull(t)&&t.length>0&&void 0===t.find(e=>!d(e.$actions,a))}else{const t=e.originalData||e.data;s=!t||d(t.$actions,a)}return n=(n=(n=(n=(n=n||r)||o)||c)||l)||s}}(e,t,i));return n}};function k(e,t,i){y.has(e,"$autofill")&&(y.extend(t,i),delete e.$autofill)}function $(e,t,i){if(y.isUndefined(e))return t;{const t=y.get(i.api,e);return!!y.isFunction(t)&&t.apply(this,[i._scope])}}function T(e){return y.isNull(e.$origin)||y.isNil(e.$origin.action)||(e.$origin.action.instances=y.without(e.$origin.action.instances,e)),e.$modal?e.$modal.dismiss("cancel"):P(e)}function P(t){if(delete C[t.$instanceId],e.broadcast("action.unlock",t.$instanceId),!y.isNull(t.$origin)&&!y.isUndefined(t.$response)&&!y.isUndefined(t.$response.data.output)){var n=y.keys(t.$response.data.output.groupByStatus(t.$response.data.step));0===y.without(n,"200").length&&$(t.$action.config.onAfterSuccessfulExecution,void 0,t.$origin),y.isNil(t.$origin.api)||y.isNil(t.$origin.api.onAfterExecution)||t.$origin.api.onAfterExecution(t.$origin._scope)}return function(e){if(e.$action.config.successMessage){var t=y.has(e,"$response.data.output[1]")?e.$response.data.output[1]:{},i=y.find(t,function(e){return!y.isNil(e.status)&&200!==e.status}),n=!y.isEmpty(t)&&y.isUndefined(i);n&&a.getAlert(e.$action.config.successMessage.description,e.$action.config.successMessage.title)}}(t),e.broadcast("action.finished",t),i.removeActionContext(t.$instanceId),m.when(y.isUndefined(t.$response)?null:t.$response.data.output)}function N(e){return e.$action.userInput.length>0&&!y.has(e,"$gatherStep")&&(e.$gatherStep=0),y.has(e,"$gatherStep")&&e.$gatherStep!==e.$action.userInput.length?function(e,t){var i=function(){return t.$gatherStep++,m.when()},n=function(e){switch(e){case"goBack":return function(e){var t=l.determineStepToGoBackTo(e),i=e.$action.userInput[t];y.isUndefined(i)||(e.$autofill=e.userInput[i.name],delete e.userInput[i.name]);return e.$gatherStep=t,m.when()}(t);default:return P(t).then(m.reject)}};switch(function(e,t){if(y.has(e,"viewDefinitionId"))if(g.isUuid(e.viewDefinitionId))e.$viewDefinitionId=e.viewDefinitionId;else if(g.isMacro(e.viewDefinitionId))e.$viewDefinitionId=t.context[y.trim(e.viewDefinitionId,"{}")];else{if(!y.startsWith(e.viewDefinitionId,"$"))throw new Error("unknown view definition id format");e.$viewDefinitionId=e.viewDefinitionId;do{e.$viewDefinitionId=y.get(t.userInput,e.$viewDefinitionId.substring(1,e.$viewDefinitionId.length))}while(y.startsWith(e.$viewDefinitionId,"$"))}else e.$viewDefinitionId=t.$originViewDefinitionId}(e,t),function(e,t){if(y.has(e,"pathId"))if(g.isUuid(e.pathId))e.$pathId=e.pathId;else if(g.isMacro(e.pathId))e.$pathId=t.context[y.trim(e.pathId,"{}")];else{if(!y.startsWith(e.pathId,"$"))throw new Error("unknown path id format");
1e.$pathId=y.get(t.userInput,e.pathId.substring(1,e.pathId.length))}else e.$pathId=t.$originPathId}(e,t),function(e,t){if(y.has(e,"objectId"))if(g.isUuid(e.objectId))e.$objectId=e.objectId;else if(g.isMacro(e.objectId))e.$objectId=t.context[y.trim(e.objectId,"{}")];else{if(!y.startsWith(e.objectId,"$"))throw new Error("unknown object id format");e.$objectId=y.get(t.userInput,e.objectId.substring(1,e.objectId.length))}}(e,t),function(e,t){if(y.has(e,"prefetchedData")){if(!y.startsWith(e.prefetchedData,"$"))throw new Error("unknown prefetched data format");e.$prefetchedData=y.get(t.userInput,e.prefetchedData.substring(1,e.prefetchedData.length))}}(e,t),e.type){case"additionalData":return function(e,t){return t.$additionalDataRequired[e.statusCode]=e.name,m.when()}(e,t).then(i);case"custom":return function(e,t){if(y.isNull(t.$customInput)&&(t.$customInput=t.$origin.api.action.getCustomInput(),y.isNil(t.$customInput)))throw new Error("no custom input found");return Z(e,t,t.$customInput)}(e,t).then(i);case"localStorage":return function(e,t){var i=localStorage.getItem(e.storageKey);i=i?JSON.parse(i):null;return Z(e,t,i)}(e,t).then(i);case"modalForm":return function(e,t){if(g.isUuid(e.$viewDefinitionId)){var i=null;e.usingFetchDataHandler&&(i={actionId:t.$action.id,inputParameterName:e.name,context:t.context,userInput:t.userInput});const n={viewDefinition:e.$viewDefinitionId,$actionInstance:t,title:t.$options.nameOverride||t.$action.config.name.id,pathContext:y.isNil(e.$objectId)&&!y.isNil(e.$pathId),contextId:e.$objectId||e.$pathId||null,initialMode:y.isNil(e.$prefetchedData)&&y.isNil(i)&&y.isNil(e.$objectId)?"create":"edit",prefetchedData:e.$prefetchedData||null,handlerData:i,successLabel:e.successLabel,preventDesignMode:!0,preventEditingMode:!0,forestInformation:y.isNil(e.includeAndCheckForestCreationInformation)?null:y.get(t.userInput,e.includeAndCheckForestCreationInformation.substring(1,e.includeAndCheckForestCreationInformation.length)),preventCancel:t.$options.cantCancel},o=ee(e.skipIfVariable,t,e.skipIfVariable);return o?e.noUserInteractionRequired?Z(e,t,null):m.when():(k(t,n,{initialData:g.transformAllDatesInObject(t.$autofill)}
1),t.$modal=a.getForm(n,[],void 0,{}),U(e,t).then(function(){Q(t)}))}return Z(e,t,null)}(e,t).then(i,n);case"modalSummaryForm":return function(e,t){var i={objectId:null,pathId:e.$pathId||null,activeFilters:[]},n={actionId:t.$action.id,inputParameterName:e.name,context:t.context,userInput:t.userInput},o=ee(e.skipIfVariable,t,e.skipIfVariable),r=!!e.preventContinueIfVariable&&te(t,e.preventContinueIfVariable);if(o)return m.when();return H(i,t.$originScope?t.$originScope.widget:void 0,{reduced:!1},n).then(function(i){var n={viewDefinition:i.viewDefinitionId,$actionInstance:t,title:t.$options.nameOverride||t.$action.config.name.id,pathContext:!1,contextId:null,initialMode:"view",prefetchedData:i,successLabel:e.successLabel,infoText:e.infoText,preventDesignMode:!0,preventEditingMode:!0,preventContinue:r,forestInformation:null};return t.$modal=a.getSummaryForm(n,[],void 0,{}),U(e,t).then(function(){Q(t)})})}(e,t).then(i,n);case"modalTable":return function(e,t){if(ee(e.skipIfVariable,t,e.skipIfVariable))return e.noUserInteractionRequired?Z(e,t,null):m.when();if(!g.isUuid(e.$viewDefinitionId))return Z(e,t,null);var i,n=null;if(e.$prefetchedData)i=m.when(e.$prefetchedData);else{var o={viewDefinitionId:e.$viewDefinitionId,objectId:null,pathId:e.$pathId||null,activeFilters:[]},r={reduced:!1};e.usingFetchDataHandler?(n={actionId:t.$action.id,inputParameterName:e.name,context:t.context,userInput:t.userInput},i=H(o,t.$originScope?t.$originScope.widget:void 0,r,n,q)):i=Y(o,t,r)}return i.then(function(i){if(e.skipIfPossible&&i&&i.data&&(1===i.data.length&&!e.noUserInteractionRequired||0===i.data.length&&e.noUserInteractionRequired)){var o=g.reduceRecords(i.data);return e.singleSelection?Z(e,t,o[0]):Z(e,t,o)}var r={viewDefinition:e.$viewDefinitionId,$actionInstance:t,title:e.title||t.$options.nameOverride||t.$action.config.name.id,pathContext:!y.isNil(e.$pathId),contextId:e.$pathId||null,preventDesignMode:!0,preventEditingMode:!0,prefetchedData:i,prefetchedDataOnce:!!i,findIds:null,singleSelection:e.singleSelection,noUserInteractionRequired:e.noUserInteractionRequired,successLabel:e.successLabel,skipIfPossible:e.skipIfPossible,handlerData:n,preselectedIds:function(e,t){if(y.isEmpty(t))return[];var i=t.split("&&"),n=[];return y.forEach(i,function(t){if(t=t.trim(),!y.startsWith(t,"$"))throw new Error("unknown preselectedIds format");n.push(y.get(e.userInput,t.substring(1,t.length)))}),n.flat()}(t,e.preSelectedIds)};return y.isNil(i)||y.isNil(i.status)||400!==i.status?(t.$modal=a.getTable(r,[],void 0,{size:"lg"}),k(t,r,{preselectedIds:y.pluck(t.$autofill,"id")}),U(e,t).then(function(){return e.singleSelection?Z(e,t,t.userInput[e.name][0]):m.when()})):(t.$modal.close(),m.when())})}(e,t).then(i,n);case"objectUpdate":return function(e,t){if(y.isNull(t.$origin))throw new Error("no origin to evaluate");if(!y.has(t.$origin.api,"getChanges"))throw new Error("no getChanges method implementation found");var i=t.$origin.api.getChanges(t.$originScope);return Z(e,t,y.isArray(i)?i:[i])}(e,t).then(i);case"origin":return function(e,t){if(t.$preparedOrigin)return Z(e,t,t.$preparedOrigin);var i,n=t.$options.originViewDefinitionIdOverride&&(t.$options.originObjectIdOverride||t.$options.originPathIdOverride);if(y.isNull(t.$origin)&&!n)throw new Error("no origin to evaluate");if(n)i=[{viewDefinitionId:t.$options.originViewDefinitionIdOverride,objectId:t.$options.originObjectIdOverride,pathId:t.$options.originPathIdOverride}];else if(y.isNil(t.$origin.api))i=[t.$origin.$originData];else if(t.$origin.api.hasApi(f.selection.id,t.$originScope)){var a=t.$origin.api.selection.get(t.$originScope);i=y.map(y.pluck(a,"id"),function(i){return{viewDefinitionId:t.$originViewDefinitionId,objectId:i,pathId:e.$pathId}})}else t.$origin.api.hasApi(f.data.id,t.$originScope)?i=[{viewDefinitionId:t.$originViewDefinitionId,objectId:t.$origin.data.id,pathId:e.$pathId}]:y.has(t.$origin,"$origin")&&(i=[t.$origin.$origin],y.extend(t.context,{originViewDefinitionId:t.$origin.$origin.viewDefinitionId}));if(!y.isUndefined(i))return Z(e,t,y.map(i,function(e){return y.defaults(e,{viewDefinitionId:null,objectId:null,pathId:null})}));throw new Error("widget must provide OriginInput information!")}(e,t).then(i);case"originForest":return function(e,t){if(t.$preparedOriginForest)return Z(e,t,t.$preparedOriginForest);if(y.isNull(t.$origin))throw new Error("no origin to evaluate");if(t.$origin.api.getSelectedNode)return Z(e,t,{forestViewId:t.$origin.tree.forest
1View,forestId:t.$origin.tree.forest,pathObjectId:t.$origin.tree.pathObjectId,forestSelectedObjectIdPath:t.$origin.api.getSelectedNode(t.$originScope)});throw new Error("widget must provide ForestInput information!")}(e,t).then(i);case"serverInput":return function(e,t){return p.post(r.actionServerInput(t.$action.id,e.name),{context:t.context,userInput:t.userInput}).then(function(i){return t.userInput[e.name]=i.data,!y.isPlainObject(i.data)||y.isNil(i.data.viewDefinitionId)||y.isNil(i.data.model)||y.isNil(i.data.data)||d.applyViewDefinitionCaching(i.data,i.data.viewDefinitionId),m.when()},function(e){return y.isEmpty(e.data)||(t.$response=e),X(t,{error:e.data.messages}),m.reject(t.$response.data.messages)})}(e,t).then(i);case"sessionStorage":return function(e,t){var i=sessionStorage.getItem(e.storageKey);i=i?JSON.parse(i):null;return Z(e,t,i)}(e,t).then(i);case"context":return function(e,t){var i=y.get(t.context,e.storageKey);return Z(e,t,i)}(e,t).then(i);case"uploadedFile":return function(e,t){if(!t.$uploadedFile&&(t.$uploadedFile=t.$options.file,y.isNil(t.$uploadedFile)))return function(e){return new Promise((t,i)=>{const n="HiddenFileInput_"+g.getUuid(),a=document.createElement("input"),o=e.$action.userInput[e.$gatherStep];a.id=n,a.type="file",y.isNil(o.allowedMimeTypes)||(a.accept=o.allowedMimeTypes.join(", ")),document.body.appendChild(a),a.addEventListener("change",()=>{a.files&&a.files.length?a.files.length>1?i(new Error("Only one file allowed.")):t(a.files[0]):i(new Error("No file selected.")),document.body.removeChild(a)}),a.addEventListener("cancel",()=>{i(new Error("Cancelled by user."))}),a.click()})}(t).then(i=>(t.$uploadedFile=i,Z(e,t,t.$uploadedFile)));return Z(e,t,t.$uploadedFile)}(e,t).then(i);case"confirm":return function(e,t){let i=!0;!y.isNil(e.confirm)&&e.confirm.length>0&&(i=te(t,e.confirm));if(!i)return Z(e,t,i);const n=y.isEmpty(e.confirmWithAdditionalInput)?null:ie(t,e.confirmWithAdditionalInput),o=ie(t,e.titleI18nKey),r=ie(t,e.displayedI18nKey),s=ie(t,e.i18nContext),c={title:o,module:"common.confirm.confirm",customData:{i18nKey:r,i18nData:s,confirmWithAdditionalInput:n}},d=l.getSuccessControl(e.okIcon,e.okStyle,e.okI18nKey),u=l.getCancelControl(e.cancelIcon,e.cancelStyle,e.cancelI18nKey),g=l.getGoBackControl(t);return t.$modal=a.getCustom(c,[],[g,d,u]),t.$modal.result}(e,t).then(i,n);default:throw new Error("unknown input type: "+e.type)}}(e.$action.userInput[e.$gatherStep],e).then(function(){return delete e.$modal,delete e.$widget,N(e)}):m.when()}function R(n,a,o,r){if(!y.has(x,n))throw new Error("unknown action requested: "+n);void 0===r&&(r={}),r=y.defaults(r,{model:null,nameOverride:null,iconOverride:null,forceAllUserStories:!1,mockOrigin:!1,originViewDefinitionIdOverride:null,originEntityOverride:null,originPathIdOverride:null,originObjectIdOverride:null});const s=g.getUuid();return x[n].promise.then(l=>
1{const d={$cancel(e){T(this)},$goBack(e){!function(e,t){e.$modal.dismiss("goBack")}(this)},$goForward(e){!function(e,i){var n=e.$action.userInput[e.$gatherStep];switch(n.type){case"modalForm":var a=i.api.getChanges(i._scope);R("ValidateObjectAction",i,void 0,{suppressActionResult:!0}).then(function(t){return G(t).then(function(){var i=L(t);i||e.$modal.close(a)},function(e){X(t,{error:e})})});break;case"modalSummaryForm":e.$modal.close();break;case"modalTable":var o=i.api.selection.get(i._scope);e.$modal.close(y.map(o,function(e){return t.removeEmptyObjects(e)}));break;default:throw new Error("undefined reaction to modal user inputs of type: "+n.type)}}(this,e)},$instanceId:s,$action:y.cloneDeep(l),$actionAliasValues:{},$origin:a||null,$navigationState:i.getCurrentState().name,$process:e.getDevConfig("isDebugActionsEnabled")?"manual":"auto",$customInput:o||null,$options:r,$additionalDataRequired:{},context:i.getContextCopy(y.isNil(a)||y.isNil(a._scope)?null:a._scope.itemConfig.widgetState),userInput:{}};if(y.extend(d.context,{originViewDefinitionId:y.isNil(r)||y.isNil(r.originViewDefinitionIdOverride)?null:r.originViewDefinitionIdOverride,originEntity:y.isNil(r)||y.isNil(r.originEntityOverride)?null:r.originEntityOverride,originPathId:y.isNil(r)||y.isNil(r.originPathIdOverride)?null:r.originPathIdOverride,originObjectId:y.isNil(r)||y.isNil(r.originObjectIdOverride)?null:r.originObjectIdOverride}),!y.isNull(d.$origin)){const e=a._scope;if(!y.isUndefined(e)){const t=e.itemConfig;let i=null,o=null,r={};if(a.api.hasApi(f.model.id,e)){i=a.api.model.getBaseModel(a._scope)||{},o=a.api.model.getFullModel(a._scope)||{};let s=null;if(a.api.hasApi(f.selection.id,e)?s=a.api.selection.get(e):a.api.hasApi(f.data.id,e)&&(s=a.api.data.getCurrentData(e)),y.keys(i).length>=1&&!y.has(i,"entity")){const e=a.api.model.inferRelevantBaseModels(a._scope,d.$options.model);1===e.length?i=e[0]:e.forEach(e=>{(t.pathContext&&e.allowedPathActions.includes(n)||!t.pathContext&&e.allowedActions.includes(n)||d.$action.config.entities&&d.$action.config.entities.includes(e.entity))&&(i=e)})}else y.isNil(i.viewDefinitionId)&&(i=y.extend(i,{viewDefinitionId:t.viewDefinition}));y.isNil(s)||(r=y.zipObject(y.map(y.isArray(s)?s:[s],function(e){return[e.id,g.resolveDisplayName(e,o)]})))}const s=y.isNil(d.context.originViewDefinitionId)&&!y.isNil(i)?i.viewDefinitionId:d.context.originViewDefinitionId,l=y.isNil(d.context.originEntity)&&!y.isNil(i)?i.entity:d.context.originEntity,u=y.isNil(d.context.originPathId)&&t.pathContext?a.context.contextId:d.context.originPathId,p=a.api.hasApi(f.filter.id,e)?JSON.stringify(a.api.filter.getActive(e)):JSON.stringify([]);y.extend(d,{$originScope:e,$originViewDefinitionId:s,$originModel:o,$originEntity:l,$originDisplayNames:r,$originStateHash:c.encodeMD5(e.itemConfig.widgetState),$originPathId:u}),y.extend(d.context,{originViewDefinitionId:d.$originViewDefinitionId,originEntity:d.$originEntity,originPathId:d.$originPathId,originActiveFilters:p}),d.$action.steps.length>0&&(y.isNull(d.$customInput)||d.$options.forceActionResult)&&!d.$options.suppressActionResult&&(y.has(a.action,"instances")||y.extend(a.action,{instances:[]}),a.action&&a.action.instances.splice(0,3===a.action.instances.length?1:0,d))}}return C[s]=d,m.when(d)},m.reject)}function M(e){var t=y.cloneDeep(y.omit(y.omit(e,E),"userInput"));return t.userInput={},y.each(e.$action.userInput,function(i){i.sendToServer&&(t.userInput[i.name]=y.cloneDeep(e.userInput[i.name]))}),t}function F(){return{getResults:function(e){return y.map(y.sortBy(y.pairs(this[e]),0),function(e){return 200!==e[1].status?e[1]:e[1].result})},getReducedResults:function(e){return y.map(y.sortBy(y.pairs(this[e]),0),function(e){return 200!==e[1].status?e[1]:y.isArray(e[1].result)?g.reduceRecords(e[1].result):g.reduceRecord(e[1].result)})},getOneResult:function(e){return y.values(this[e])[0]},groupByStatus:function(e){var t=[];return y.forEach(y.values(this[e]),function(e){y.isNil(e.status)||t.push(e)}),y.groupBy(t,"status")}}}function j(e){return y.find(A,function(t){return t.id===e})}
1function V(e,t){return a.getCustom({title:"common.interactionRequired",module:"common.interactiveRequest.interactionRequired",customData:{results:e,instance:t},preventDesignMode:!0,preventEditingMode:!0},[],[l.getControl("ok",null,function(e,t){for(var i in e.data.checked)if(e.data.checked.hasOwnProperty(i)&&!e.data.checked[i])return!1;return!0}),l.getControl("cancel")],{}).result.then(function(){return t.$state--,m.when()},function(){return function(e,t){return y.each(y.pluck(y.flatten(y.values(e)),"$objectId"),function(e){y.extend(t.$response.data.output[1][e],{$cancelled:!0})}),m.reject()}(e,t)})}function O(e){var t=e.$response.data.changes;if(!y.isEmpty(t)){var i=t.otherAffectedEntities||[],n=y.omit(t,"otherAffectedEntities"),a=y.isNull(e.$origin)?null:e.$origin.id;y.forOwn(n,function(e,t){var n;switch(t){case"createdObjects":n=s.objectCreated;break;case"updatedObjects":n=s.objectUpdated;break;case"deletedObjects":n=s.objectDeleted;break;default:throw new Error("unknown changes: "+t)}n(e,i,a)})}return m.when()}function _(e){var t=e.$response.data.output.groupByStatus(e.$response.data.step),i=y.intersection(y.keys(t),y.keys(D)),n=y.pick(t,i);return(i.length>0?V(n,e):m.when()).then(function(){return L(e),O(e)})}function L(e){var t,i=function(e){var t={},i=e.$response.data.output;return y.forEach(i,function(e,i){y.isNaN(Number(i))||y.forEach(e,function(e,i){y.isNil(t[e.status])&&(t[e.status]=[]),t[e.status].push({error:e.error,objectId:i})})}),t}(e);return y.has(i,400)?t=400:y.has(i,500)&&(t=500),!y.isNil(t)&&(1===i[t].length?X(e,i[t][0]):X(e,i[t]),!0)}function U(e,t){return t.$modal.result.then(function(i){return Z(e,t,i)},function(e){return m.reject(e)})}function W(e,t,i,n,a,o,r){const s=function(e,t,i){return y.map(y.isArray(e)?e:[e],function(e){return i(t(e))})}(t,n,a);return ae(e,i,s,r).then(e=>o(e,s)).then(e=>Array.isArray(t)?e:e[0])}function H(e,t,i,n,a=(e=>e)){return i=y.isObject(i)?i:{},W("InvokeModalFetchDataHandlerAction",e,t,a,e=>{var t={activeFilters:e.activeFilters||[],actionId:n.actionId,actionParameterName:n.inputParameterName,context:JSON.stringify({userInput:n.userInput,context:n.context})};return e.viewDefinitionId&&d.applyViewDefinitionModelHashes(t,e.viewDefinitionId),t},(e,n)=>{const a=y.pluck(n,"viewDefinitionId"),o=!!y.isUndefined(i.reduced)||i.reduced;return z(o?e.getReducedResults(1):e.getResults(1),a,o,t)},{forceAllUserStories:!!i.forceAllUserStories})}function G(e){var t=y.has(e,"$state")?y.indexOf(A,j(e.$state))+1:0;return t<A.length?(e.$state=A[t].id,"manual"===e.$process&&console.log(e.$state,y.cloneDeep(e)),m.when(j(e.$state).fn(e)).then(function(){return"auto"===e.$process?G(e):(e.$inspect=m.defer(),e.$inspect.promise.then(function(){return G(e)}))})):P(e)}function q(e){if(y.isUndefined(e))throw new Error("view definition id is required");if(y.isString(e)){if(!g.isUuid(e))throw new Error("configuration by string requires a uuid (representing a view definition id)");e={viewDefinitionId:e}}if(!y.has(e,"viewDefinitionId")||y.isNull(e.viewDefinitionId)||y.isUndefined(e.viewDefinitionId))throw new Error("missing parameter: viewDefinitionId");return e}function B(e){if(y.isUndefined(e))throw new Error("entity is required");if(y.isString(e)&&(e={entity:e}),!y.has(e,"entity")||y.isNull(e.entity)||y.isUndefined(e.entity))throw new Error("missing parameter: entity");return e}function Y(e,t,i){return i=y.isObject(i)?i:{},W(y.isNil(e)||y.isNil(e.readObjectActionOverride)?i.neo?"NeoReadObjectAction":"ReadObjectAction":e.readObjectActionOverride,e,t,q,function(e){var t=e.findIds;y.isNil(t)&&(t=y.isNil(e.objectId)?e.objectIds||null:[e.objectId]);var n={viewDefinitionId:e.viewDefinitionId,findIds:t,activeFilters:e.activeFilters||[],filter:i.neo?e.filter||null:void 0,requestContext:e.requestContext||{},order:i.neo?e.order||null:void 0,pathId:e.pathId||null,pageKey:i.neo?e.pageKey||null:void 0,pageSize:i.neo?e.pageSize||null:void 0,grouping:i.neo?e.grouping||null:void 0,locale:i.neo?e.locale||null:void 0,includeModel:!1!==e.includeModel};return d.applyViewDefinitionModelHashes(n,e.viewDefinitionId),n},function(e,n){var a=y.pluck(n,"viewDefinitionId"),o=!!y.isUndefined(i.reduced)||i.reduced,r=o?e.getReducedResults(1):e.getResults(1);return i.skipViewDefinitionResultTransformation?r:z(r,a,o,t)},{forceAllUserStories:!y.isUndefined(i.forceAllUserStories)&&i.forceAllUserStories})}function z(e,t,i,n,a){var o=!y.isUndefined(n)&&!y.isNull(n)&&y.has(n,"_scope"),r=[];return y.each(e,function(e,t){if(!e.error){var a=e.viewDefinitionId;if(y.isNil(a))return;d.applyViewDefinitionCaching(e,a),o&&d.handlePathAllowedAttributeValues(e.model[a],n._scope.itemConfig.widgetState),r.push(d.resolveDefaultValues(e.model,Y,o?n._scope:null).then(function(t){e.defaultValues=t,e.data&&(e.data=y.map(e.data,function(n){return d.createMissingEmbeddedObjects(e.model,a,i,n,t)}))}))}}),m.all(r).then(function(){return e})}function K(e,t){if(y.has(x,e))throw new Error("ambigiuous action definition found: "+e);x[e]=t}function J(e){var t,n=function(t){return e.$response=t,y.isNull(e.$response.data)||y.extend(e.$response.data.output,F()),m.when()};if(!y.isNull(e.$origin)&&!e.$options.forceAllUserStories&&!y.isUndefined(e.$originScope)){var a=e.$originScope.itemConfig.widgetState;if(y.isUndefined(a)){var o=e.$originScope.itemConfig.$actionInstance;y.isUndefined(o)||y.isUndefined(o.$originScope)||(a=o.$originScope.itemConfig.widgetState)}t={headers:{"CC-UI-Item":y.isUndefined(a)?e.$originScope.itemConfig.id:i.getState(a).data.uiItemIds.join(" ")}}}if(e.$action.multipart){var s=JSON.stringify(M(e));return w({url:r.multiPartAction(e.$action.id),method:"POST",data:{file:e.$uploadedFile,body:s},uploadEventHandlers:{progress(t){y.isFunction(e.$customInput[0].progressFunction)&&e.$customInput[0].progressFunction(t.loaded,t.total)}}}).then(n,n)}return p.post(r.action(e.$action.id),M(e),t).then(n,n)}function X(e,t){if(e.$origin&&e.$origin.api&&e.$origin.api.hasApi(f.status.id,e.$originScope)){const i={icon:e.$action?e.$action.config.icon:"fa-question-circle",text:"common.action.failed",messages:function(e,t){if(!y.isNil(t.error))return y.isNil(e.widget.table)?t.error:[t];return t}(e.$originScope,t)};!y.isArray(t.error)&&y.has(t.error,"*")&&(e.$origin.api.status.resolveGlobalErrors&&t.error["*"].length>0?i.globalMessages=e.$origin.api.status.resolveGlobalErrors(t.error,e.$originScope):i.text=t.error["*"][0].i18nKey),e.$origin.api.status.setError(i,e.$originScope,e.$options||{})}else!y.isArray(t.error)&&y.has(t.error,"*")?y.isPlainObject(t.error["*"][0].i18nKey)?a.getAlert("common.error","common.error",[h.resolve(t.error["*"][0].i18nKey,void 0,e.$originScope)]):a.getAlert(t.error["*"][0].i18nKey,"common.error"):a.getAlert("validation.genericError")}function Q(e){var t=e.$widget._scope;if(!y.isEmpty(e,"$widget")&&e.$widget.api.hasApi(f.model.id,t)){var n=e.$widget.api.model.resolveFieldAliases(t);
1y.isEmpty(n)||y.forOwn(n,function(t,n){i.setActionContext(n,t,e.$instanceId),e.context[n]=t})}}function Z(e,t,i){return t.userInput[e.name]=function(e,t){if(y.isNil(t))return null;if(e.generic)return y.isArray(t)?y.map(t,function(t){return re(e.type,t)}):re(e.type,t);return y.isArray(t)?y.map(t,function(e){return g.omitDeep(e,E)}):g.omitDeep(t,E)}(e,i),m.when()}function ee(e,t,i){return!!e&&te(t,i)}function te(e,t){const i=t.split("&&");let n=!0;return y.forEach(i,function(t){if(t=t.trim(),g.isMacro(t))n=n&&e.context[y.trim(t,"{}")];else if(y.startsWith(t,"$"))n=n&&y.get(e.userInput,t.substring(1,t.length));else{if(!y.startsWith(t,"!$"))throw new Error("unknown path id format");n=n&&!y.get(e.userInput,t.substring(2,t.length))}}),n}function ie(e,t){const i=t.trim();return g.isMacro(i)?e.context[y.trim(i,"{}")]:y.startsWith(i,"$")?y.get(e.userInput,i.substring(1,i.length)):i}function ne(e){switch(e.$response.status){case 200:return _(e);case 202:return function(e){var t=e.$response.data,i=50,n=function(){return p.get(r.actionStatus(t)).then(function(t){return y.isEmpty(t.data)||(e.$response=t,y.extend(e.$response.data.output,F())),y.isObject(t.data)&&t.data.done?_(e):200===t.status?(i=Math.min(2*i,1e3),b(n,i)):ne(e)})};return n()}(e);case 400:return function(e){return e.$origin&&e.$origin.api.hasApi(f.status.id,e.$originScope)&&X(e,{error:e.$response.data.messages}),O(e).then(function(){return m.reject(e.$response.data.messages)})}(e);case 403:return function(e){return O(e).then(function(){return m.reject(e.$response.data.messages)})}(e);case 413:return function(e){return O(e).then(function(){return m.reject({1:{0:e.$response}})})}(e);case 500:return function(e){return O(e).then(function(){return m.reject(e.$response.data.messages)})}(e);default:throw new Error("undefined reaction to responses with http status "+e.$response.status)}}function ae(e,t,i,n){return R(e,t,i,n).then(G)}function oe(e){if(!y.has(e,"id"))throw new Error("action has no id",e);var t=function(e){};y.defaults(e,{config:y.defaults(e.config,{icon:"fa-question"}),steps:[],functions:y.defaults(e.functions||{},{create:t,gather:N,execute:t,request:t,respond:t}),userInput:[]})}function re(e,t){return"modalTable"===e?g.isUuid(t)?t:y.isPlainObject(t)?t.id:null:g.omitDeep(t,E)}function se(e,t){if(e.api.hasApi(f.model.id,e._scope)){var i=e.api.model.getBaseModel(e._scope);return!y.isNil(i)&&y.contains(i.entityPermissions,t)}return!0}function ce(e,t){switch(e.type){case"TableWidget":if(!e._scope.widget.table.grid.api)return!1;var i=e._scope.widget.table.grid.api.getSelectedNodes();if(0===i.length)return!1;var n=!0;return y.each(i,function(e){n=n&&y.contains(e.data.$permissions,t)}),n;case"FormWidget":var a=e.api.data.getCurrentData(e._scope);return!y.isNull(a)&&!y.isUndefined(a)&&e.api.data.hasRecordPermissions([t],a.id,e._scope);default:return!1}}function le(e,t){var i=y.get(e,"model.baseModel.pathPermissions");return y.isArray(i)&&y.intersection(i,[t]).length===[t].length}}this.initProvider=function(e,t){i.each(e,function(e){a(e,!0,t)})},this.initCoreActions=function(e){i.each(e,function(e){$.ajax("/api/actionDefinition/"+e,{async:!1,type:"GET",processData:!1,contentType:"application/json"}).done(function(e){a(e,!0)}).fail(function(t){throw new Error("loading of "+e+" failed")})})},this.define=a,this.$get=o}e.$inject=["I18nServiceProvider","CCUtilsProvider","_"],angular.module("ccFrontend").provider("ActionInvocationService",e)}(),function(){"use strict";function e(e){function t(t,i,n){var a=t.object.name,o=t.object.title;i&&n&&(a=i.state+"."+n);var r={state:a,params:{},title:o,data:{parentUiItemId:i?i.data.uiItemId:null,uiItemId:t.object.id,uiItemIds:i?e.clone(i.data.uiItemIds):[],icon:t.object.icon||(i?i.data.icon:""),status:t.object.status,itemConfig:t.object}};return e.contains(r.data.uiItemIds,t.object.id)||r.data.uiItemIds.push(t.object.id),r}function i(e){switch(e){case"form":return"fa-edit";case"table":return"fa-table";case"collection":return"fa-list";case"calendar":return"fa-calendar";case"tree":return"fa-sitemap";case"custom":return"fa-magic";case"report":return"fa-chart-pie";case"graph":return"fa-code-branch";case"iframe":return"fa-browser";default:return}}function n(t,n,a){return{getAvailableHeight:function(){const e=$(".dashboard-header");if(0===e.length)return n.getInnerHeight();return n.getInnerHeight()-e.outerHeight()}
1,getContentBorderHeight:function(){var e=$(".wrapper-content");return e.outerHeight()-e.height()},getContentHeight:function(){return $(".wrapper-content").height()},getSubContent:function(t){return e.sortBy(t.contents,"position")},hasSubContent:function(e){return e.contents.length>0},isSubContent:function(t){return!e.isUndefined(t.parent)},getLayoutPaneVisibility:o,registerLayoutPaneVisibilityWatcher:function(t,i,n,a){var r={};e.forEach(t,function(e,t){if(e.object.hideIfInactive){var i=a(e,t);r[i]=t}}),Object.keys(r).length>0&&n.$on("$stateChangeSuccess",function(a,s){var c=r[s.name];e.isNil(c)||o(t,i,n,c)})},getDefaultWidgetIcon:i};function o(i,n,o,r){return e.forEach(i,function(e,i){t.getVisibility(e,n,o,r===i).then(function(e){o.visible[i]=e})}),a.when()}}n.$inject=["NavigationVisibilityService","ClientService","$q"],this.getPaneStateConfig=t,this.getStateConfig=function(i,n,a){var o=t(i,n,a),r=i.object.setsContext;r&&(o.data.setsContext=r);var s=i.object.pathToContextObject;s&&(o.data.pathToContextObject=s);var c=i.object.receivesContext;c&&(o.data.receivesContext=c,o.params[e.trim(c,"{}")]=null);var l=i.object.alias;l&&(o.alias=l);var d=i.object.hideIfInactive;d&&(o.hideIfInactive=d);return o},this.getDefaultWidgetIcon=i,this.$get=n}e.$inject=["_"],angular.module("ccFrontend").provider("LayoutService",e)}(),function(){"use strict";function e(e,t,i,n){this.getStateConfig=function(a){r.$inject=["NavigationVisibilityService","WidgetService","$scope"];var o=t.getStateConfig(a);function r(e,t,i){function r(){e.getVisibility(a,o,i).then(function(e){i.visible=e})}t.getExtension(a.object.extension).then(function(e){if(!n.isNull(e)){var t=e.onInitFn;n.isFunction(t)&&t(a.object)}}),i.$on("visible.update",function(){r()}),r()}i.addTranslationField(e.reduceRecord(o.title)),n.extend(o,{templateProvider:function(){return e.buildHTML({tag:"div",attr:{class:"application-module","data-ng-if":"visible"},child:[{tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}}]})},icon:a.object.icon,systemModule:a.object.systemModule,controller:r}),n.has(o,"data")||(o.data={});return n.extend(o.data,{applicationModuleId:a.object.id}),o},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","LayoutServiceProvider","I18nServiceProvider","_"],angular.module("ccFrontend").provider("ApplicationModuleLayout",e)}(),function(){"use strict";function e(e,t,i){function n(e){return"c"+i.padLeft(e,2,"0")}
1this.getStateConfig=function(a,o){s.$inject=["ApplicationService","LayoutService","NavigationEditorService","$scope"];var r=t.getStateConfig(a,o,"columns");function s(e,t,i,o){function s(){t.getLayoutPaneVisibility(a.children,r,o)}o.addUiItem=i.addUiItem,o.isDesignMode=e.isDesignMode,o.isEditingMode=e.isEditingMode,o.removeUiItem=i.removeUiItem,o.visible=[],o.$on("visible.update",function(){s()}),s(),t.registerLayoutPaneVisibilityWatcher(a.children,r,o,function(e,t){var i=n(t);return r.state+".content."+i})}return i.extend(r,{templateProvider:function(){var t=a.children,o=a.object.columnWidths;i.isNull(o)&&(o=(12/(i.isEmpty(t)?12:t.length)).toString());var r=o.split(","),s=[];return i.forEach(t,function(e,t){var i=n(t);s.push({tag:"div",attr:{class:"column-"+(r.length>1?r[t]:r[0])+" flex-simple","data-ui-view":i}})}),e.buildHTML({tag:"div",attrs:{class:"flex-simple"},child:[{tag:"div",attr:{class:"column-layout"},child:s},{tag:"div",attr:{class:"column-layout-design-mode-controls","data-ng-if":"isDesignMode()"},child:[{tag:"i",attr:{class:"fa fa-plus-circle suffix-icon","data-ng-click":"addUiItem('"+a.object.id+"')",style:"margin-right: 0px"}}]}]})},controller:s}),delete r.url,r},this.getContentStateConfig=function(a,o){var r=t.getStateConfig(a,o,"content");return i.extend(r,{views:function(t){var a={},o=t.children;return i.forEach(o,function(t,i){var o=n(i);a[o]={template:function(t){return e.buildHTML({tag:"div",attr:{"data-ui-view":t+"-content",class:"flex-simple"}})}(o)}}),a}(a),sticky:!0}),r},this.getPaneStateConfig=function(n,a,o){n.object.parentState=a.state.substring(0,a.state.indexOf(".column"));var r="c"+i.padLeft(o,2,"0"),s=t.getPaneStateConfig(n,a,r);return i.extend(s,{views:{},sticky:!0}),s.views[r+"-content"]={templateProvider:function(){return e.buildHTML({tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}})}},s},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("ColumnLayout",e)}(),function(){"use strict";function e(e,t,i){function n(e){return"d"+i.padLeft(e,2,"0")}
1this.getStateConfig=function(a,o){s.$inject=["LayoutService","NavigationEditorService","ApplicationService","$scope"];var r=t.getStateConfig(a,o,"dashboard");function s(e,t,i,o){function s(){e.getLayoutPaneVisibility(a.children,r,o)}o.addUiItem=t.addUiItem,o.isDesignMode=i.isDesignMode,o.isEditingMode=i.isEditingMode,o.removeUiItem=t.removeUiItem,o.visible=[],o.$on("visible.update",function(){s()}),s(),e.registerLayoutPaneVisibilityWatcher(a.children,r,o,function(e,t){var i=n(t);return r.state+".content."+i})}return i.extend(r,{templateProvider:function(){var t=a.children,o=a.object.rows,r=a.object.columns,s=i.times(o,function(e){return i.times(r,function(i){return t[e*r+i]||{}})}),c=a.object.columnWidths;(i.isNull(c)||i.isUndefined(c))&&(c=(12/r).toString());var l=c.split(","),d=[];return i.forEach(s,function(e,a){var o=!i.has(i.groupBy(i.map(e,function(e){return i.isEmpty(e)})),"false"),s=[];i.forEach(e,function(e,i){var o=a*r+i,c=n(o);s.push({tag:"div",attr:{class:"dashboard-column dashboard-column-"+(l.length>1?l[o]:l[0])+" dashboard-item"+(o>=t.length?" empty":""),"data-ui-view":c}})}),d.push({tag:"div",attr:{class:"dashboard-row","data-ng-class":"{'empty': "+o+"}"},child:s})}),d.push({tag:"div",attr:{class:"dashboard-row design-mode flex-simple",style:"justify-content: center; align-items: center; flex: 0","data-ng-if":"isDesignMode()"},child:[{tag:"i",attr:{class:"fa fa-plus-circle","data-ng-click":"addUiItem('"+a.object.id+"')",style:"margin-right: 0px"}}]}),e.buildHTML({tag:"div",attr:{class:"dashboard-layout","data-ng-class":"{'design-mode': isDesignMode()}"},child:d})},controller:s}),delete r.url,r},this.getContentStateConfig=function(a,o){var r=t.getStateConfig(a,o,"content");return i.extend(r,{views:function(t){var a={},o=t.children;return i.forEach(o,function(t,i){var o=n(i);a[o]={template:function(t){return e.buildHTML({tag:"div",attr:{"data-ui-view":t+"-content",class:"dashboard-item-content-pane"}})}(o)}}),a}(a),sticky:!0}),r},this.getPaneStateConfig=function(a,o,r){var s=n(r),c=t.getPaneStateConfig(a,o,s);return i.extend(c,{views:{},sticky:!0}),c.views[s+"-content"]={templateProvider:function(){return e.buildHTML({tag:"div",attr:{"data-ui-view":void 0}})}},c},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("DashboardLayout",e)}(),function(){"use strict";function e(e,t,i){this.getStateConfig=function(n,a){var o=t.getStateConfig(n,a,"landing-page"),r=function(e,t){t.personTraitsStore=n.object.receivesPersonTraits,t.receivesContext=o.data.receivesContext};return r.$inject=["NavigationService","$scope"],i.extend(o,{templateProvider:function(){return e.buildHTML({tag:"cc-landing-page",attr:{"data-type":n.object.landingPageLayoutType,"data-receives-context":"{{::receivesContext}}","data-person-traits-store":"{{::personTraitsStore}}",class:"flex-simple"}})},controller:r}),o},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("LandingPageLayout",e)}(),function(){"use strict";function e(e,t,i,n){this.getStateConfig=function(a,o){s.$inject=["I18nService","NavigationService","ClientService","ApplicationService","$scope","$timeout"],l.$inject=["NavigationService"];var r=i.getStateConfig(a,o,"process");function s(t,i,o,s,c,l){i.setContext("processGroupId",a.object.processGroupId,!1,r.state);var d=sessionStorage.getItem("campuscore_process_group_status");function u(){l(function(){c.normalTabAmount=null,c.menuTabAmount=null;var e="#"+c.tabsId,t=e+"_menu",i=$(e),a=i.outerWidth(),o=n.map(i.children("li:not("+t+")"),function(e){return $(e)}),r=$("#"+c.tabsId+"_menu"),s=r.outerWidth(),l=n.reduce(o,function(e,t){return e+t.outerWidth()},0),d=[];if(l>a){for(var u=0,g=0,f=!0;f&&g<o.length;){var p=o[g],m=p.outerWidth();u+m<=a-s?(u+=m,d.push(p),g++):f=!1}var v=n.slice(o,g,o.length);c.normalTabAmount=d.length,c.menuTabAmount=v.length}else c.normalTabAmount=o.length,c.menuTabAmount=0})}n.isNil(d)?c.activeStatus=0:c.activeStatus=n.max([n.findIndex(a.object.status,{id:d}),0]),c.setActiveStatus=function(e){c.activeStatus===e?i.go(r.state+".table",r.state+".table"):c.activeStatus=e},c.getTranslation=t.getTranslation,c.isTabInMenuActive=function(){return c.activeStatus>=c.normalTabAmount},c.normalTabAmount=null,c.menuTabAmount=null,c.tabsId=e.getUuid(),c.isEditingMode=s.isEditingMode,u(),o.onResize(u),c.$watch("normalTabAmount",function(e,t){var i="#"+c.tabsId,a=$(i),o=i+"_menu",r=i+"_menuItems",s=$(r),l=n.map(a.children("li:not("+o+")"),function(e){return $(e)}),d=n.map(s.children(),function(e){return $(e)});n.each(l,function(e,t){t>=c.normalTabAmount?e.css("display","none"):e.css("display","block")}),n.each(d,function(e,t){t<c.normalTabAmount?e.css("display","none"):e.css("display","block")})}),c.$watch("activeStatus",function(e,t){n.isNil(e)||(sessionStorage.setItem("campuscore_process_group_status",a.object.status[e].id),i.setContext("processGroupStatusId",a.object.status[e].id,!1,r.state),i.setContext("processGroupStatusNameId",a.object.status[e].name.id,!1,r.state),i.setContext("processGroupViewDefinitionId",a.object.status[e].overviewId,!1,r.state),e!==t&&i.go(r.state+".table",r.state+".table"))})}function c(){sessionStorage.removeItem("campuscore_process_group_status")}function l(e){e.setContext("processGroupId",a.object.processGroupId,!1,r.state),e.setContext("processGroupStatusNameId",null,!1,r.state),e.setContext("processGroupViewDefinitionId",a.object.processCombinedStatusViewDefinitionId,!1,r.state)}a.object.processCombinedStatusViewDefinitionId?n.extend(r,{templateProvider:function(){return e.buildHTML({tag:"div",attr:{class:"process-layout"},child:[{tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}}]})},controller:l,onExit:c}):n.extend(r,{templateProvider:function(){var i=[],o=[],r=a.object.status;
1return n.forEach(r,function(e,n){var a=e.name;t.addTranslationField(a);var r={tag:"li",attr:{"data-ng-class":"{'active': activeStatus === "+n+"}",title:"{{getTranslation('"+a.id+"')}}"},child:[{tag:"a",attr:{"data-ng-click":"!isEditingMode() && setActiveStatus("+n+")"},child:[{tag:"cc-i18n",attr:{key:a.id,"data-ng-class":"{'editing-mode' : isEditingMode()}",class:"translatable-by-customer"}},{tag:"cc-editing-mode",attr:{"data-i18n":"'"+a.id+"'","data-ng-if":"isEditingMode()"}}]}]};i.push(r),o.push(r)}),i.push({tag:"li",attr:{id:"{{tabsId}}_menu",class:"tab-menu","data-uib-dropdown":null,"data-ng-if":"menuTabAmount > 0","data-auto-close":"always","data-dropdown-append-to-body":null,"data-ng-class":"{'active': isTabInMenuActive()}"},child:[{tag:"span",attr:{"data-uib-dropdown-toggle":null,class:"clickable"},child:[{tag:"i",attr:{class:"fa fa-ellipsis-v clickable-icon tab-menu-icon"}},{tag:"span",attr:{class:"tab-menu-title"},child:[{tag:"span",child:"(+{{menuTabAmount}})"},{tag:"span",attr:{class:"caret"}}]}]},{tag:"ul",attr:{id:"{{tabsId}}_menuItems",class:"dropdown-menu dropdown-menu-right","data-uib-dropdown-menu":null},child:o}]}),e.buildHTML({tag:"div",attr:{class:"tab-layout"},child:[{tag:"div",attr:{class:"tab-layout-top flex-simple"},child:[{tag:"ul",attr:{class:"nav nav-tabs",id:"{{tabsId}}"},child:i},{tag:"div",attr:{class:"tab-content"},child:[{tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}}]}]}]})},controller:s,onExit:c});return r},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","I18nServiceProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("ProcessLayout",e)}(),function(){"use strict";function e(e,t,i){function n(e){return"r"+i.padLeft(e,2,"0")}
1this.getStateConfig=function(a,o){s.$inject=["LayoutService","NavigationEditorService","ApplicationService","$scope"];var r=t.getStateConfig(a,o,"rows");function s(e,t,i,o){function s(){e.getLayoutPaneVisibility(a.children,r,o)}o.addUiItem=t.addUiItem,o.isDesignMode=i.isDesignMode,o.isEditingMode=i.isEditingMode,o.removeUiItem=t.removeUiItem,o.visible=[],o.$on("visible.update",function(){s()}),s(),e.registerLayoutPaneVisibilityWatcher(a.children,r,o,function(e,t){var i=n(t);return r.state+".content."+i})}return i.extend(r,{templateProvider:function(){var t=a.children,o=[];return i.forEach(t,function(e,t){var i=n(t);o.push({tag:"div",attr:{"data-ui-view":i}})}),o.push({tag:"div",attr:{class:"design-mode text-center","data-ng-if":"isDesignMode()"},child:[{tag:"i",attr:{class:"fa fa-plus-circle suffix-icon","data-ng-click":"addUiItem('"+a.object.id+"')",style:"margin-right: 0px"}}]}),e.buildHTML({tag:"div",attr:{class:"row-layout"},child:[{tag:"div",attr:{class:"scroll-overflow flex-simple-gap",style:"flex-direction: column"},child:o}]})},controller:s}),delete r.url,r},this.getContentStateConfig=function(a,o){var r=t.getStateConfig(a,o,"content");return i.extend(r,{views:function(t){var a={},o=t.children;return i.forEach(o,function(t,i){var o=n(i);a[o]={template:function(t){return e.buildHTML({tag:"div",attr:{"data-ui-view":t+"-content"}})}(o)}}),a}(a),sticky:!0}),r},this.getPaneStateConfig=function(a,o,r){a.object.parentState=o.state.substring(0,o.state.indexOf(".row"));var s=n(r),c=t.getPaneStateConfig(a,o,s);return i.extend(c,{views:{},sticky:!0}),c.views[s+"-content"]={templateProvider:function(){return e.buildHTML({tag:"div",attr:{"data-ui-view":void 0}})}},c},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("RowLayout",e)}(),function(){"use strict";function e(e,t,i,n){this.getStateConfig=function(a,o,r,s,c){p.$inject=["NavigationService","$rootScope","$scope"];const l=o.object;n.extend(l,{subParentState:r.state,widgetState:r.state+"."+s});const d=function(e){const t=e.parentPosition||"left",i=e.parentSize||6,n="top"===t||"bottom"===t;return{parentSize:i,childSize:12-i,position:t,isVertical:n,isPixelSize:n&&i>12,flip:12===i,currentFlipView:"parent"}}(a.object),u=i.getStateConfig(o,r,s),g=u.state+"."+c,f=n.endsWith(r.state,".sub")?r.state.substring(0,r.state.indexOf(".sub")):r.state;function p(e,t,i){if(i.itemConfig=l,i.layoutConfig=d,i.$on("widget.select",(e,t)=>{i.selectedContext=t.selectedContext,e.preventDefault(),n.isFunction(e.stopPropagation)&&e.stopPropagation()}),i.layoutConfig.flip){const e=t.$on("$stateChangeSuccess",function(e){a()});i.$on("$destroy",function(){e()}),a()}function a(){e.getCurrentState().self.name===u.state&&"parent"!==i.layoutConfig.currentFlipView&&(i.layoutConfig.currentFlipView="parent"),n.startsWith(e.getCurrentState().self.name,g)&&"child"!==i.layoutConfig.currentFlipView&&(i.layoutConfig.currentFlipView="child")}i.showParent=function(){if(u.data.setsContext){const t=n.trim(u.data.setsContext,"{}");e.removeContextFromState(t,u.state)}e.go(u.state),i.$broadcast("layout.refresh")},e.getCurrentState().self.name===u.state&&(i.layoutConfig.currentFlipView="parent")}return n.extend(l,{childState:g,parentState:f,linkToSubParentState:u.state}),n.extend(u,{templateProvider:function(){let o,r,c=i.getDefaultWidgetIcon(s)||"fa-arrow-left";d.flip?(o="sub-item-12",r="sub-item-12"):d.isVertical&&d.isPixelSize?(o="sub-item-12",r="sub-item-12"):(o="sub-item-"+d.parentSize,r="sub-item-"+d.childSize);const l={tag:"div",attr:{class:o+" animated fadeIn flex-simple"},child:[{tag:"cc-widget",attr:{"data-item-config":"itemConfig"}}]},u={tag:"div",attr:{class:r+" animated fadeIn flex-simple"},child:[{tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}}]};if(d.isPixelSize){n.extend(l.attr,{style:"height: "+d.parentSize+"px",class:(l.attr.class||"")+" fixed-height-sub-item"});const e=5;n.extend(u.attr,{style:"height: calc(100% - "+(d.parentSize+2*e)+"px)",class:(l.attr.class||"")+" fixed-height-sub-item"})}const g=[];if(d.flip){const e=a.object.title;t.addTranslationField(e),n.extend(l.attr,{"data-ng-class":"{'hidden-flip-view': layoutConfig.currentFlipView !== 'parent','shown-flip-view': layoutConfig.currentFlipView === 'parent'}"}),n.extend(u.attr,{"data-ng-class":"{'hidden-flip-view': layoutConfig.currentFlipView !== 'child','shown-flip-view': layoutConfig.currentFlipView === 'child'}"}),g.push({tag:"div",attr:{class:"flip-bar",style:"flex-direction: column","data-ng-style":"{'display': layoutConfig.currentFlipView === 'parent' ? 'none': 'flex'}"},child:[{tag:"div",attr:{class:"clickable","data-ng-click":"showParent()",style:"display: flex; flex-direction: column; gap: 5px; align-items: center"},child:[{tag:"i",attr:{class:"fa fa-fw "+c}},{tag:"div",child:[{tag:"i",attr:{class:"fa fa-fw fa-backward clickable-icon"}}]}]},{tag:"div",attr:{class:"flex-simple",style:"transform: rotate(180deg); line-height: 27px; flex: 1 1 0"},child:[{tag:"div",attr:{class:"text-vertical vertical-offset-5"},child:[{tag:"div",attr:{class:"fill-height"},child:[{tag:"cc-i18n",attr:{"data-key":e.id,class:"clickable flip-bar-title","data-ng-click":"showParent()"}},{tag:"span",attr:{class:"clickable text-bold","data-ng-if":"!!selectedContext","data-ng-click":"showParent()"},child:[": ",{tag:"span",attr:{class:"flip-bar-context","data-ng-bind-html":"selectedContext"}}]},{tag:"div",attr:{style:"display: inline-block; height: 10px"}}]}]}]}]},{tag:"div",attr:{class:"flip-child"},child:[l,u]})}else"top"===d.position||"left"===d.position?(g.push(l),g.push(u)):(g.push(u),g.push(l));return e.buildHTML({tag:"div",attr:{class:"sub-layout flex-simple"},child:[{tag:"div",attr:{class:"sub-parent-item flex-simple"},child:[{tag:"div",attr:{class:"parent-"+d.position+" flex-simple-gap",style:d.flip||"top"!==d.position&&"bottom"!==d.position?"flex-direction: row":"flex-direction: column"},child:g}]}]})},controller:p,keyForTreeSubNavigation:o.object.keyForTreeSubNavigation}),u},this.getChildStateConfig=function(t,a,o){t.object.parentState=a.state;const r=i.getPaneStateConfig(t,a,o);r.data.receivesContext=a.data.setsContext||a.data.receivesContext,r.params[n.trim(r.data.receivesContext,"{}")]=null,a.data&&n.extend(r,{templateProvider:function(){return e.buildHTML({tag:"div",attr:{class:"sub-child-item"},child:[{tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple"}}]})},sticky:!0});return r},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","I18nServiceProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("SubLayout",e)}(),function(){"use strict";function e(e,t,i,n){function a(e){return"t"+n.padLeft(e,2,"0")}
1this.getStateConfig=function(o,r){c.$inject=["LayoutService","I18nService","NavigationService","NavigationEditorService","ClientService","ApplicationService","WidgetService","$scope","$state","$stickyState","$timeout"];var s=i.getStateConfig(o,r,"tabs");function c(t,i,r,c,l,d,u,g,f,p,m){function v(){t.getLayoutPaneVisibility(o.children,s,g)}function h(){m(function(){g.normalTabAmount=null,g.menuTabAmount=null;var e="#"+g.tabsId,t=e+"_menu",i=$(e),a=n.contains(["top","bottom"],o.object.tabPosition),r=a?i.outerWidth():i.outerHeight(),s=n.map(i.children("li:not("+t+")"),function(e){return $(e)}),c=$("#"+g.tabsId+"_menu"),l=a?c.outerWidth():c.outerHeight(),d=n.reduce(s,function(e,t){return e+(a?t.outerWidth():t.outerHeight())},0),u=[];if(d>r){for(var f=0,p=0,m=!0;m&&p<s.length;){var v=s[p],h=a?v.outerWidth():v.outerHeight();f+h<=r-l?(f+=h,u.push(v),p++):m=!1}var b=n.slice(s,p,s.length);g.normalTabAmount=u.length,g.menuTabAmount=b.length}else g.normalTabAmount=s.length,g.menuTabAmount=0})}g.getTitle=function(e){return i.getTranslation(o.children[e].object.title.id)},g.isActive=function(e){return f.includes(e)||n.includes(n.map(p.getInactiveStates(),"name"),e)},g.isTabInMenuActive=function(){var e=parseInt(r.getCurrentState().name.replace(s.state+".content.","").replace(/\.(.)*/,"").replace(/t/,""));return e>=g.normalTabAmount},g.isDisabled=function(){return!1},g.navigateToTab=function(e){r.go(e),g.$broadcast("layout.refresh")},g.addUiItem=c.addUiItem,g.isDesignMode=d.isDesignMode,g.isEditingMode=d.isEditingMode,g.removeUiItem=c.removeUiItem,g.normalTabAmount=null,g.menuTabAmount=null,g.visible=[],g.tabsId=e.getUuid(),v(),h(),l.onResize(function(){h()}),g.$watch("normalTabAmount",function(e,t){var i="#"+g.tabsId,a=$(i),o=i+"_menu",r=i+"_menuItems",s=$(r),c=n.map(a.children("li:not("+o+")"),function(e){return $(e)}),l=n.map(s.children(),function(e){return $(e)});n.each(c,function(e,t){t>=g.normalTabAmount?e.css("display","none"):e.css("display","block")}),n.each(l,function(e,t){t<g.normalTabAmount?e.css("display","none"):e.css("display","block")})}),g.$on("visible.update",function(){v(),h()}),t.registerLayoutPaneVisibilityWatcher(o.children,s,g,function(e,t){var i=a(t);return s.state+".content."+i}),g.$on("layout.refresh",function(){h()}),g.$watchCollection("visible",function(){!function(){var e=n.filter(g.visible,function(e){return!0===e}).length;g.onlyOneTabVisible=1===e}()});const b=o.object.extension;n.isNil(b)||u.getExtension(b).then(e=>{n.has(e,"onLoadFn")&&n.isFunction(e.onLoadFn)&&e.onLoadFn(g,s)})}var l=s.state;return n.extend(s,{templateProvider:function(){var i=[],r=[],s=[],c=o.children,d=o.object.forceDisplay;n.forEach(c,function(e,c){var u=[],g=e.object.icon,f=e.object.title,p=a(c),m=l+".content."+p;n.isNil(g)||u.push({tag:"i",attr:{class:"fa fa-fw "+g,"data-ng-class":"{'prefix-icon': "+!n.isNil(f)+", 'no-margins': "+n.isNil(f)+"}"}}),n.isNil(f)||(t.addTranslationField(f),u.push({tag:"cc-i18n",attr:{key:n.isNil(f)?null:f.id,class:"translatable-by-customer","data-ng-class":"{'editing-mode' : isEditingMode()}"}})),u.push({tag:"i",attr:{class:"fa fa-plus-circle suffix-icon prefix-icon","data-ng-if":"isDesignMode() && isActive('"+m+"')","data-ng-click":"addUiItem('"+e.object.id+"')",style:"margin-right: 0px"}},{tag:"i",attr:{class:"fa fa-minus-circle suffix-icon","data-ng-if":"isDesignMode() && isActive('"+m+"')","data-ng-click":"removeUiItem('"+o.object.id+"', '"+e.object.id+"')",style:"margin-right: 0px"}});const v=n.cloneDeep(u),h=v.find(e=>"cc-i18n"===e.tag)||v[0];h&&(h.attr["data-ng-click"]="navigateToTab('"+m+"')"),n.isNil(f)||v.push({tag:"cc-editing-mode",attr:{"data-i18n":f?"'"+f.id+"'":void 0,"data-ng-if":"!title || isEditingMode()",style:"cursor: pointer"}});var b={tag:"li",attr:{"data-ng-class":"{'active': isActive('"+m+"'), 'disabled': isDisabled('"+m+"'), 'design-mode': isDesignMode(), 'editing-mode': isEditingMode()}","data-ng-if":"(visible["+c+"] && !onlyOneTabVisible) || "+d,class:"dropdown-menu-icon",title:n.isNil(f)?"":"{{getTitle("+c+")}}"},child:[{tag:"a",attr:{"data-ng-if":" !isEditingMode()","data-ng-click":"navigateToTab('"+m+"')"},child:u},{tag:"a",attr:{"data-ng-if":"isEditingMode()"},child:v}]};i.push(b),r.push(b),s.push({tag:"div",attr:{"data-ng-if":"visible["+c+"] && isActive('"+m+"')","data-ui-view":p,class:"flex-simple"}})}),i.push({tag:"li",attr:{class:"design-mode","data-ng-if":"isDesignMode()"},child:[{tag:"a",attr:{"data-ng-click":"addUiItem('"+o.object.id+"')"},child:[{tag:"i",attr:{class:"fa fa-plus-circle",style:"margin-right: 0px"}}]}]}),i.push({tag:"li",attr:{id:"{{tabsId}}_menu",class:"tab-menu","data-uib-dropdown":null,"data-ng-if":"menuTabAmount > 0","data-auto-close":"always","data-dropdown-append-to-body":null,"data-ng-class":"{'active': isTabInMenuActive()}"},child:[{tag:"span",attr:{"data-uib-dropdown-toggle":null,class:"clickable"},child:[{tag:"i",attr:{class:"fa fa-ellipsis-v clickable-icon tab-menu-icon"}},{tag:"span",attr:{class:"tab-menu-title"},child:[{tag:"span",child:"(+{{menuTabAmount}})"},{tag:"span",attr:{class:"caret"}}]}]},{tag:"ul",attr:{id:"{{tabsId}}_menuItems",class:"dropdown-menu dropdown-menu-right","data-uib-dropdown-menu":null},child:r}]});var u={tag:"div",attr:{class:"flex-simple"},child:[{tag:"div",attr:{class:"tab-content","data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:s}]},g=[];switch(o.object.tabPosition){case"right":g.push({tag:"div",attr:{class:"tab-layout-right flex-simple"},child:[u,{tag:"div",attr:{class:"flex-simple","data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}",style:"width: 200px"},child:[{tag:"ul",attr:{class:"nav nav-tabs-right","data-ng-if":c.length>1||d,"data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:i}]}]});break;case"bottom":g.push({tag:"div",attr:{class:"tab-layout-bottom flex-simple"},child:[{tag:"div",attr:{class:"tab-content"},child:s},{tag:"ul",attr:{class:"nav nav-tabs nav-tabs-bottom","data-ng-if":c.length>1||d,"data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:i}]});break;case"left":g.push({tag:"div",attr:{class:"tab-layout-left flex-simple"},child:[{tag:"div",attr:{class:"flex-simple","data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}",style:"width: 200px"},child:[{tag:"ul",attr:{class:"nav nav-tabs-left","data-ng-if":c.length>1||d,"data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:i}]},u]});break;default:g.push({tag:"div",attr:{class:"tab-layout-top flex-simple"},child:[{tag:"ul",attr:{class:"nav nav-tabs",id:"{{tabsId}}","data-ng-if":c.length>1||d,"data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:i},{tag:"div",attr:{class:"tab-content","data-ng-class":"{'without-tabs': "+!d+" && onlyOneTabVisible}"},child:s}]})}return e.buildHTML({tag:"div",attr:{class:"tab-layout"},child:g})},controller:c}),s},this.getContentStateConfig=function(t,o){var r=i.getStateConfig(t,o,"content");return n.extend(r,{views:function(t){var i={},o=t.children;
1return n.forEach(o,function(t,n){var o=a(n);i[o]={template:function(t){return e.buildHTML({tag:"div",attr:{"data-ui-view":t+"-content",class:"tab-pane flex-simple"}})}(o)}}),i}(t)}),r},this.getPaneStateConfig=function(t,o,r){t.object.parentState=o.state.substring(0,o.state.indexOf(".tab"));var s=a(r),c=i.getPaneStateConfig(t,o,s);return n.extend(c,{views:{}}),c.views[s+"-content"]={templateProvider:function(){return e.buildHTML({tag:"div",attr:{"data-ui-view":void 0,class:"flex-simple tab-pane-content"}})}},c},this.$get=function(){return{}}}e.$inject=["CCUtilsProvider","I18nServiceProvider","LayoutServiceProvider","_"],angular.module("ccFrontend").provider("TabLayout",e)}(),function(){"use strict";angular.module("ccFrontend").provider("NavigationChecksum",function(){var e="CC-NAV-VERSION",t=this;this.setChecksum=function(e){t.md5Checksum=e,localStorage.removeItem("campuscore_navigation_reload_denied")},this.$get=function(){return{request:function(i){null!==t.md5Checksum&&(i.headers[e]=t.md5Checksum);return i},response:function(t){if("reset"===t.headers(e)){var i=document.getElementsByTagName("body")[0];i.dispatchEvent(new Event("navigation.changed"))}return t}}},this.md5Checksum=null})}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m){j.$inject=["CCUtils","ApplicationService","ConsentService","CMS_DATA","URLS","WidgetService","ModalService","LogService","ClientService","$location","$rootScope","$state","$stateParams","$q","$stickyState","$timeout","$interval","$window","_","moment"],f.enableDebug(!1);var v=!1,h=this,b=[],w={},y={},x=[],C=[],S=[],E=[],A=[],I=[],D={},k=null;function $(e,t){var i=e.alias;p.isNil(i)||p.extend(t,{alias:i})}function T(e){if(e.object=p.defaults(e.object,{generateLayoutForSingleChild:!1}),0!==e.children.length){if(1===e.children.length&&!e.object.generateLayoutForSingleChild&&p.isNil(e.object.extension))return e.children[0];var t,i={object:{id:u.getUuid(),generated:!0,icon:e.object.icon,title:e.object.title,alias:null,setsContext:null,pathToContextObject:null,receivesContext:e.object.setsContext||e.object.receivesContext,pathContext:null,extension:null,transparentBackground:null,processGroupId:e.object.processGroupId,processCombinedStatusViewDefinitionId:e.object.processCombinedStatusViewDefinitionId,skipFirstSubstateNavigation:e.object.skipFirstSubstateNavigation,keyForTreeSubNavigation:e.object.keyForTreeSubNavigation},children:e.children};switch(e.object.childLayout){case"COLUMN":t="ColumnLayout",i.object.columnWidths=e.object.columnWidths||"6";break;case"ROW":t="RowLayout";break;case"DASHBOARD":i.object.columns=e.object.columns||3,i.object.rows=e.object.rows||3,i.object.columnWidths=e.object.columnWidths,t="DashboardLayout";break;case"PROCESS":i.object.status=D[i.object.processGroupId],t="ProcessLayout";break;case"TABS_LEFT":i.object.tabPosition="left",i.object.forceDisplay=e.object.generateLayoutForSingleChild,t="TabLayout";break;case"TABS_RIGHT":i.object.tabPosition="right",i.object.forceDisplay=e.object.generateLayoutForSingleChild,t="TabLayout";break;case"TABS_TOP":i.object.tabPosition="top",i.object.forceDisplay=e.object.generateLayoutForSingleChild,t="TabLayout";break;case"TABS_BOTTOM":i.object.tabPosition="bottom",i.object.forceDisplay=e.object.generateLayoutForSingleChild,t="TabLayout";break;default:i.object.tabPosition="top",i.object.forceDisplay=e.object.generateLayoutForSingleChild,t="TabLayout"}return A[i.object.id]={entity:t,parentUiItem:e.object.id},i}}function P(e,t,i,n,a,o){if(e.children.length>0){F(function(e,t,i){var n={object:{id:u.getUuid(),generated:!0,icon:e.object.icon,title:e.object.title,alias:null,setsContext:null,pathToContextObject:null,receivesContext:i.data.setsContext||i.data.receivesContext,pathContext:null,extension:null,transparentBackground:null,parentPosition:e.object.widgetPosition,parentSize:e.object.widgetSize,setsPersonTraits:e.object.setsPersonTraits,receivesPersonTraits:e.object.receivesPersonTraits,requiredPersonTraits:e.object.requiredPersonTraits,prohibitedPersonTraits:e.object.prohibitedPersonTraits,keyForTreeSubNavigation:e.object.keyForTreeSubNavigation},children:[{object:e.object,children:[]},t]};return A[n.object.id]={entity:"SubLayout",parentUiItem:e.object.id},n}(e,T(e),t),t,i,a,n&&"process.ProcessTable"!==e.object.extension,o)}else!function(e,t,i,n,a,o){l.$inject=["$scope"],p.extend(t,{type:i});var r=i.substr(0,i.indexOf("Widget")).toLowerCase(),s=e.state+"."+r,c=t;function l(e){e.itemConfig=c}p.extend(c,{parentId:n,widgetState:s});var d={state:s,params:{},templateProvider:function(){return u.buildHTML({tag:"cc-widget",attr:{"data-item-config":"itemConfig"}}
1)},title:t.title,sticky:!0,data:{parentUiItemId:e.data.uiItemId,uiItemId:t.id,uiItemIds:e?p.clone(e.data.uiItemIds):[],itemConfig:c},keyForTreeSubNavigation:t.keyForTreeSubNavigation,controller:l};p.contains(d.data.uiItemIds,c.id)||d.data.uiItemIds.push(c.id);var g=c.setsContext;g&&(d.data.setsContext=g);var f=c.pathToContextObject;g&&(d.data.pathToContextObject=f);var m=c.receivesContext;m&&(d.data.receivesContext=m,d.params[p.trim(m,"{}")]=null);$(c,d),N(d,e,!0,a,o)}(t,e.object,A[e.object.id].entity,i,n,o)}function N(e,t,i,n,a=[]){w[e.state]=e,i&&I.push(e.state),e.alias&&b.push(e.state),n&&(e.data.receivesContext&&"currentUser"!==e.data.receivesContext&&!a.includes(e.data.receivesContext)||(y[e.state]=e)),p.isNull(t)||function(e,t){p.isUndefined(e.children)&&p.extend(e,{children:[]}),e.children.push(t.state)}(t,e)}function R(e,t,i,c,d=[]){let u;if(e.object.setsContext?e.object.includeInNavigationSearch?(u=c,d.push(e.object.setsContext)):u=!1:u=c,"LayoutContainer"===A[e.object.id].entity){if(e.children.length>0){const n=T(e);p.isNil(e.object.alias)||(p.extend(n.object,{alias:e.object.alias}),p.isNil(e.object.setsContext)||p.extend(n.object,{setsContext:e.object.setsContext}),p.isNil(e.object.pathToContextObject)||p.extend(n.object,{pathToContextObject:e.object.pathToContextObject})),p.isNil(e.object.keyForTreeSubNavigation)||p.extend(n.object,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),p.isNil(e.object.extension)||p.extend(n.object,{extension:e.object.extension}),R(n,t,i,c,d),p.extend(e.object,{widgetState:n.object.widgetState})}}else p.endsWith(A[e.object.id].entity,"Layout")?function(e,t,i,o,c){const d=o&&!!e.object.title&&t.state.includes(".");switch(A[e.object.id].entity){case"ColumnLayout":!function(e,t,i,a,o,r){var s=n.getStateConfig(e,t);$(e.object,s),N(s,t,!0,o);var c=n.getContentStateConfig(e,s);N(c,s,!0,!1),p.extend(e.object,{widgetState:s.state}),p.extend(s,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),e.object.generated&&p.extend(s,{generated:!0});p.each(e.children,function(t,i){!function(e,t,i,a,o,r){var s=n.getPaneStateConfig(e,t,i);$(e.object,s),N(s,t,0===i,!1),R(e,s,a,o,r)}(t,c,i,e.object.id,a,r)})}(e,t,0,o,d,c);break;case"DashboardLayout":!function(e,t,i,n,o,r){var s=a.getStateConfig(e,t);$(e.object,s),N(s,t,!0,o);var c=a.getContentStateConfig(e,s);N(c,s,!0,!1),p.extend(e.object,{widgetState:s.state}),p.extend(s,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),e.object.generated&&p.extend(s,{generated:!0});p.each(e.children,function(t,i){!function(e,t,i,n,o,r){var s=a.getPaneStateConfig(e,t,i);$(e.object,s),N(s,t,0===i,!1),R(e,s,n,o,r)}(t,c,i,e.object.id,n,r)})}(e,t,0,o,d,c);break;case"ProcessLayout":!function(e,t,i,n,a,o){var s=r.getStateConfig(e,t);$(e.object,s),N(s,t,!0,a,o),p.extend(e.object,{widgetState:s.state}),p.extend(s,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),e.object.generated&&p.extend(s,{generated:!0});p.each(e.children,function(t){R(t,s,e.object.id,n,o)})}(e,t,0,o,d,c);break;case"RowLayout":!function(e,t,i,n,a,o){var r=s.getStateConfig(e,t);$(e.object,r),N(r,t,!0,a,o);var c=s.getContentStateConfig(e,r);N(c,r,!0,!1),p.extend(e.object,{widgetState:r.state}),p.extend(r,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),e.object.generated&&p.extend(r,{generated:!0});p.each(e.children,function(t,i){!function(e,t,i,n,a,o){var r=s.getPaneStateConfig(e,t,i);$(e.object,r),N(r,t,0===i,!1),R(e,r,n,a,o)}(t,c,i,e.object.id,n,o)})}(e,t,0,o,d,c);break;case"SubLayout":F(e,t,i,o,d,c);break;case"TabLayout":!function(e,t,i,n,a,o){var r=l.getStateConfig(e,t);$(e.object,r),N(r,t,!0,a,o);var s=l.getContentStateConfig(e,r);N(s,r,!0,!1),p.extend(e.object,{widgetState:r.state}),p.extend(r,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),e.object.generated&&(p.extend(r,{generated:!0}),p.extend(s,{generated:!0}));p.each(e.children,function(t,i){!function(e,t,i,n,a,o,r){var s=l.getPaneStateConfig(e,t,i);$(e.object,s),N(s,t,!a&&0===i,!1),R(e,s,n,o,r)}(t,s,i,e.object.id,e.object.skipFirstSubstateNavigation,n,o)})}(e,t,0,o,d,c);break;default:throw new Error("unknown layout type: "+A[e.object.id].entity)}}(e,t,i,u,d):p.endsWith(A[e.object.id].entity,"Placeholder")?function(e,t,i,n){switch(A[e.object.id].entity){case"LandingPageLayoutPlaceholder":!function(e,t,i,n){var a=o.getStateConfig(e,t);$(e.object,a),N(a,t,!0,i,n)}(e,t,i,n);break;default:throw new Error("unknown placeholder type: "+A[e.object.id].entity)}}(e,t,u,d):P(e,t,i,c,u,d)}function M(e){return"LayoutContainer"===e.type?"layout":p.endsWith(e.type,"Widget")?e.type.substr(0,e.type.indexOf("Widget")).toLowerCase():e.type.substr(0,e.type.indexOf("Layout")).toLowerCase()}function F(e,t,i,n,a,o){var r=e.children[0],s=e.children[1];if(!p.isNil(r)&&!p.isNil(s)){p.extend(r.object,{type:A[r.object.id].entity}),p.extend(s.object,{type:A[s.object.id].entity});var l=M(r.object),d=M(s.object),u=c.getStateConfig(e,r,t,l,d);$(e.object,u),N(u,t,!0,a,o),p.extend(e.object,{widgetState:u.state}),e.object.generated&&p.extend(u,{generated:!0}),p.extend(u,{keyForTreeSubNavigation:e.object.keyForTreeSubNavigation}),function(e,t,i,n,a){var o=M(e.object),r=c.getChildStateConfig(e,t,o);$(e.object,r),N(r,t,!1,!1),R(e,r,i,n,a)}(s,u,e.object.id,n,o)}}function j(e,i,n,a,o,r,s,c,l,d,u,g,f,p,m,b,I,D,$,T){var P={global:{baseSettingsObjectId:a.view.baseSettingsObject},local:{},action:{},once:{},modal:{}},N=[],R={};return u.$on("$stateChangeSuccess",function(e,t,i){if(!$.isUndefined(t.data.redirectTo))return e.preventDefault(),U(t.data.redirectTo,!1,i);var n=t.name.split(".");$.each($.filter(m.getInactiveStates(),function(e){return function(e,t){return e.self&&$.startsWith(e.self.name,t.name)}(e,t)||function(e,t){for(var i=e.self.name.split("."),n=t.name.split("."),a=!1,o=0;o<n.length&&o<i.length;o++){var r=$.take(n,o).join("."),s=$.take(i,o).join(".");if(r===s&&$.endsWith(r,"tabs.content"))a=!0;else{if(a&&r!==s)return!0;a=!1}
1}return!1}(e,t)}),function(e){v&&console.log("sticky reset"),m.reset(e)}),function(){var e=W(),t=$.map(m.getInactiveStates(),"name");$.isNil(e)&&(e=[]),(e=$.filter(e,function(e){return $.includes(t,e.state)})).push({state:g.$current.name,params:f}),sessionStorage.setItem("campuscore_state",JSON.stringify(e))}(),v&&console.log("sticky check",n,m.getInactiveStates());for(var a=0;a<n.length;a++){var o=g.get($.take(n,a).join("."));v&&console.log("parent check",o),o&&o.sticky&&o.views&&$.each($.keys(o.views),function(e){var t=o.name+"."+e,i=g.includes(t),n=$.find(m.getInactiveStates(),$.matchesProperty("self.name",t));if(!$.isUndefined(i)&&!i&&$.isUndefined(n))return v&&console.log("state change",t,O(g.get(t))),g.transitionTo(O(g.get(t)),f,{location:!1})})}}),u.$on("modal.close",()=>{P.modal={}}),R=h.aliasStateToState,N=h.menuSeparators,{clearStoredState:function(){sessionStorage.removeItem("campuscore_state")},getAllSubStates:function(e){return $.map($.filter(Object.keys(w),function(t){return $.startsWith(t,e)}),function(e){return w[e]})},getAllSearchableStates:function(){return Object.values(y)},getAllStates:function(){return Object.values(w)},getApplicationModuleItemConfig:function(){return h.applicationModuleItemConfig},getContext:M,getContextAsPromise:F,getContextCopy:function(e){var t={};$.each(P.local,function(i,n){($.isNil(e)||$.startsWith(e,n))&&$.extend(t,$.cloneDeep(i))});var i={};return $.each(P.action,function(e){$.extend(i,$.cloneDeep(e))}),$.extend($.cloneDeep(f),$.cloneDeep(P.global),t,i,$.cloneDeep(P.once))},getProcessGroup:function(e){var t=x[e];return $.isUndefined(t)?void 0:t.processGroup},getProcessGroupStatus:function(e){var t=C[e];return $.isUndefined(t)?void 0:t.processGroupStatus},getProcessDefinition:function(e){var t=S[e];return $.isUndefined(t)?void 0:t.processDefinition},getProcessDefinitionStatus:function(e){var t=E[e];return $.isUndefined(t)?void 0:t.processDefinitionStatus},getCurrentState:V,getLatestRequestMoment:function(){return T(e.transformDate(M("requestDateTime")))},getMenuSeparators:function(){return N},getState:_,getStateByAlias:L,getStateIdByUiItem:function(e){return h.uiItemToState[e]},getUiItemType:function(e){return A[e]||null},go:U,goUp:function(){var e=V(),t=e;for(;t.data.uiItemId===e.data.uiItemId||!H(t.toString());)t=t.parent;return U(t.toString())},hasContext:function(e){return!!M(e)},hasContextAsPromise:function(e){return F(e).then(function(e){return!$.isNull(e)})},includes:function(e){return g.includes(e)},isInApplicationModule:function(e){if(!$.isUndefined(e))return V().name.startsWith(e);return!1},isNavigatableState:H,navigateToChildState:function(i,n){var a,o,r=p.defer();n.itemConfig.linkToSubParentState&&(a=_(n.itemConfig.linkToSubParentState));o=n.widget.selection.overrideChildState?_(n.widget.selection.overrideChildState):_(n.itemConfig.childState);var s=!$.isUndefined(o)&&!$.isNull(o)&&i.id!==M(o.data.receivesContext);if(!$.isNull(n.itemConfig.setsContext)&&!$.isUndefined(n.widget._scope.itemConfig.linkToSubParentState)){var c=q(i,n);K($.trim(n.itemConfig.setsContext,"{}"),c,!1,n.widget._scope.itemConfig.linkToSubParentState)}if($.isNull(o))r.resolve();else{o.data.parentWidgetId=n.widget.id;var l={};l[$.trim(o.data.receivesContext,"{}")]=q(i,n);var d=$.has(V().includes,o.name),u=$.contains(function(){return m.getInactiveStates()}(),o.name);!u&&!d||s?$.isNil(a)?U(o.name,!1,l).then(function(){r.resolve()}):g.go(a.name,l,{reload:!1}).then(function(){U(o.name,!1,l).then(function(){r.resolve()})}):r.resolve(),n.widget.api.hasApi(t.model.id,n)&&n.$emit("widget.select",{selectedContext:e.resolveDisplayName(n.widget.api.selection.get(n)[0],n.widget.api.model.getFullModel(n))})}return r.promise},navigateToParentState:function(e){var t=p.defer(),i=e.itemConfig.linkToSubParentState;$.isNil(i)||U(i);return t.resolve(),t.promise},removeActionContext:function(e){$.has(P.action,e)&&delete P.action[e]},removeContext:function(e){var t=V().name;$.has(P.global,e)?delete P.global[e]:$.has(P.local[t],e)?(delete P.local[t][e],$.isEmpty(P.local[t])&&delete P.local[t]):$.has(P.once,e)&&delete P.once[e];i.broadcast("navigation.contextRemoved",{parameter:e})},removeContextFromState:function(e,t){$.has(P.local[t],e)&&(delete P.local[t][e],$.isEmpty(P.local[t])&&delete P.local[t])},resolveDynamicViewDefinition:function(e){var t=p.defer();if(B(e.itemConfig.viewDefinition)||$.has(e.itemConfig,"dynamicViewDefinition")){$.has(e.itemConfig,"dynamicViewDefinition")?e.itemConfig.viewDefinition=e.itemConfig.dynamicViewDefinition:$.extend(e.itemConfig,{dynamicViewDefinition:e.itemConfig.viewDefinition});var i=M(Y(e.itemConfig.viewDefinition));if($.isUndefined(i))var n=b(function(){c.error(e.widget.id+" waited for 5 seconds to resolve the dynamic view "+e.itemConfig.viewDefinition+" and failed.")},5e3),a=e.$on("navigation.contextSet",function(i,o){o.parameter===Y(e.itemConfig.viewDefinition)&&(e.itemConfig.viewDefinition=o.value,b.cancel(n),a(),t.resolve())});else e.itemConfig.viewDefinition=i,t.resolve()}else t.resolve();return t.promise},resolveItemConfig:z,resolveViewDefinition:function(e){return z(e,"viewDefinition")},resolveLayoutContainerForUiItem:function(e){if($.has(A[e],"parentUiItem"))return A[e].parentUiItem;return e},resolveContext:function(e){return $.has(e.itemConfig,"contextId")&&!$.isEmpty(e.itemConfig.contextId)?p.when(e.itemConfig.contextId):z(e,"receivesContext")},resolveForest:function(e){return z(e,"forest")},setActionContext:function(e,t,i){$.isUndefined(P.action[i])&&(P.action[i]={});$.isEmpty(e)||$.isUndefined(t)||(P.action[i][e]=t)},setContext:K,setModalContext:function(e,t){P.modal[e]=t},startup:function(){var e=d.search(),t=e.a;
1if(!$.isNil(t))return function(e,t){var i=L(e);return $.isNil(i)?J():(G(i.name,t,!1),g.go(i.name,t))}(t,$.omit(e,"a"));var i=W();if(!$.isNil(i)&&$.isArray(i)&&i.length>0)return function(e){var t=$.sortBy($.filter(e,function(e){return!$.isNil(g.get(e.state))}),"state");if(e.length===t.length){var i=[];return $.forEach(e,function(e){i.push(function(){return g.go(e.state,e.params)})}),p.chain(i)}return J()}(i);return J()}};function M(e){if(void 0===e||null===e)return;const t=Y(e);if(t in f&&!$.isNil(f[t]))return $.cloneDeep(f[t]);if(t in P.once)return $.cloneDeep(P.once[t]);for(const e in P.local)if(P.local[e]&&t in P.local[e])return $.cloneDeep(P.local[e][t]);for(const e in P.action)if(P.action[e]&&t in P.action[e])return $.cloneDeep(P.action[e][t]);return t in P.global?$.cloneDeep(P.global[t]):u[t]?u[t]:void 0}function F(e,t){if(void 0===e||null===e)return p.reject();const i=p.defer(),n=t||u,a=n.itemConfig&&n.itemConfig.isModal?j(e):M(e);if(void 0!==a)i.resolve(a);else{let t;const a=5,o=I(i=>{i<a&&(1===i?c.debug(`Trying to resolve very lazy context parameter: ${e}`):c.debug(`Still trying... (${e})`)),i===a&&(c.error(`Giving up. This can't be right. Please fix me! (${e})`),t())},1e3,a);t=n.$on("navigation.contextSet",(n,a)=>{Y(e)===a.parameter&&(I.cancel(o),i.resolve(a.value),t())})}return i.promise}function j(e){if(void 0===e||null===e)return;const t=Y(e);return P.modal&&t in P.modal?$.cloneDeep(P.modal[t]):M(e)}function V(){return g.$current}function O(e){var t=g.get(e).data.redirectTo;return t?O(t):e}function _(e){return g.get(e)}function L(e){return $.has(R,e)?_(R[e]):null}function U(e,t,i){return F("currentUserIsAnonymous").then(a=>a||n.hasGivenConsents()?r.confirmActiveWidgetChange().then(function(n){return r.handleActiveWidgetSwitch(n).then(function(){return function(){var n=p.defer();return $.has(R,e)&&(e=R[e]),G(e,i,t),g.get(e)?g.go(e,i,{reload:!$.isNil(t)&&t}).then(function(){l.doLayout(),n.resolve()}):n.resolve(),n.promise}()},function(){return function(){s.getAlert("common.confirm.activeWidgetChangeFailed","common.confirm.activeWidgetChangeFailed.title")}()})}):p.when())}function W(){return JSON.parse(sessionStorage.getItem("campuscore_state"))}function H(e){return-1===e.indexOf(".")||$.endsWith(e,".table")||$.endsWith(e,".form")||$.endsWith(e,".list")||$.endsWith(e,".collection")||$.endsWith(e,".tree")||$.endsWith(e,".calendar")}function G(e,t,i){var n=i?$.dropRight(e.split(".")).join("."):e;$.each($.keys(P.local),function(e){$.startsWith(n,e)||delete P.local[e]}),$.has(P.local,e)?$.extend(P.local[e],$.omit(t,$.isNil)):P.local[e]=$.omit(t,$.isNil),$.each($.keys(P.once),function(e){delete P.once[e]})}function q(e,t){if($.isNil(t.itemConfig.pathToContextObject))return e.id;var i=t.widget.type;if("TableWidget"!==i&&"FormWidget"!==i)return e.id;var n=e;return t.itemConfig.pathToContextObject.split(".").forEach(function(e){n=n[e]}),n}function B(e){return/{.*}/.test(e)}function Y(e){return $.trim(e,"{}")}function z(e,t){const i=e.itemConfig[t];if(B(i)){const t=e.itemConfig.isModal?j(i):M(i);return null!==t&&void 0!==t?Promise.resolve(t):F(i,e)}return Promise.resolve(i)}function K(e,t,n,a){n?P.global[e]=t:a?($.isUndefined(P.local[a])&&(P.local[a]={}),P.local[a][e]=t):P.once[e]=t,i.broadcast("navigation.contextSet",{parameter:e,value:t})}function J(){return $.isNil(k)?(c.error("No home state available. This can only happen if no application module is present, which should never be the case."),p.reject()):g.go(k,void 0,{reload:!0})}}this.aliasStateToState={},this.menuSeparators=[],this.uiItemToState={},this.applicationModuleItemConfig={},this.init=function(){v&&f.enableDebug(!0);!function(e){D=e.processGroupIdToGroupStatusInformation,function(e){var t=e.navigation;m.setChecksum(e.md5Checksum),function(e){A=p.mapValues(e,function(e){return{entity:e}})}(t.entityMapping),function(e){x=p.mapValues(e.processGroupMapping,function(e){return{processGroup:e}}),C=p.mapValues(e.processGroupStatusMapping,function(e){return{processGroupStatus:e}}),S=p.mapValues(e.processDefinitionMapping,function(e){return{processDefinition:e}}),E=p.mapValues(e.processDefinitionStatusMapping,function(e){return{processDefinitionStatus:e}})}(t),p.each(t.forestNodeList,function(e,n){if(p.has(e.object,"hasNoStates")){var a=0===n?null:t.forestNodeList[n-1];p.has(a,"object.hasNoStates")||function(e,t,i){p.isNull(t)||p.isNull(t.object)||h.menuSeparators.push(p.extend(e.object,{after:t.object.name,type:"separator"}))}(e,a)}else!function(e,t){var n=i.getStateConfig(e);p.extend(e.object,{widgetState:n.state});const a=!e.object.systemModule;if(N(n,null,0===t,!0),h.applicationModuleItemConfig[e.object.id]=e.object,e.children.length>0){var o=T(e);R(o,n,void 0,a)}p.isNil(k)&&(k=n.state)}(e,n)}),function(){p.each(I,function(e){for(var t=w[e],i=e.split("."),n=[],a=0;a<i.length;a++){var o=w[p.take(i,a).join(".")];o&&n.push(o)}if(n.length>0){var r=p.takeRight(n)[0].state;w[r].redirectTo=t.state}})}(),function(){p.each(b,function(e){var t=w[e];
1const i=h.aliasStateToState[t.alias];if(i){const e=i.split(".").length,n=t.state.split(".").length;n<e&&(h.aliasStateToState[t.alias]=t.state)}else h.aliasStateToState[t.alias]=t.state})}(),function(){p.each(w,function(e){const t={templateProvider:e.templateProvider,params:e.params,data:Object.assign({},e.data||{},{redirectTo:e.redirectTo,title:e.title,icon:e.icon||e.data.icon,systemModule:e.systemModule,generated:e.generated}),views:e.views,sticky:e.sticky,controller:e.controller,onEnter:e.onEnter,onExit:e.onExit,keyForTreeSubNavigation:e.keyForTreeSubNavigation};e.alias&&(t.data.alias=e.alias),g.state(e.state,t);var i=t.data.uiItemIds;p.isArray(i)&&t.data.uiItemIds.length>0&&(h.uiItemToState[i[i.length-1]]=e.state)})}()}(e),function(e,t){d.initProvider(e,t)}(e.actions,e.allowedActions)}(NavigationHelper.consumeNavigationData())},this.$get=j}e.$inject=["CMS_DATA","WIDGET_API","ApplicationModuleLayoutProvider","ColumnLayoutProvider","DashboardLayoutProvider","LandingPageLayoutProvider","ProcessLayoutProvider","RowLayoutProvider","SubLayoutProvider","TabLayoutProvider","ActionInvocationServiceProvider","CCUtilsProvider","$stateProvider","$stickyStateProvider","_","NavigationChecksumProvider"],angular.module("ccFrontend").provider("NavigationService",e)}(),function(){"use strict";function e(e){e.define("AddCustomFilterAction")}function t(e,t){e.resolve("AddCustomFilterAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","AddCustomFilterAction"],angular.module("ccFrontend").factory("AddCustomFilterAction",function(){return{id:"AddCustomFilterAction",config:{icon:"fa-filter",help:{id:"actions.AddCustomFilterAction.help",de:"Benutzerdefinierten Filter hinzufügen.",en:"Add a custom filter."},widgets:["TableWidget"]},functions:{execute:function(e){e.$origin.api.filter.addCustom(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("CancelEditObjectAction")}function t(e,t){e.resolve("CancelEditObjectAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","CancelEditObjectAction"],angular.module("ccFrontend").factory("CancelEditObjectAction",function(){return{id:"CancelEditObjectAction",config:{icon:"fa-ban",style:"danger",confirm:"common.confirm.cancelEdit",confirmIf:"isDirty",visible:"canCancelEdit",widgets:["FormWidget","TableWidget"],help:{id:"actions.CancelEditObjectAction.help",de:"Den Bearbeitungsvorgang abbrechen. Änderungen werden nicht übernommen.",en:"Cancel the edit process. Changes will not be persisted."}},functions:{execute:function(e){e.$origin.api.reset(e.$originScope),e.$origin.api.switchTo("view",e.$originScope),e.$origin.api.status.clearStatus(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){return{id:"CancelEditObjectMappingsAction",config:{icon:"fa-ban",confirm:"common.confirm.cancelEdit",visible:"isEditMode",widgets:["CustomWidget"],help:{id:"actions.CancelEditObjectMappingsAction.help",de:"Den Bearbeitungsvorgang abbrechen. Änderungen werden nicht übernommen.",en:"Cancel the edit process. Changes will not be persisted."}},functions:{execute:function(t){t.$origin.custom.edit=!1,t.$origin.api.reload(t.$originScope),e.broadcast("action.update")}}}}function t(e){e.define("CancelEditObjectMappingsAction")}function i(e,t){e.resolve("CancelEditObjectMappingsAction",t)}e.$inject=["ApplicationService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","CancelEditObjectMappingsAction"],angular.module("ccFrontend").factory("CancelEditObjectMappingsAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("CollapseAllForestNodesAction")}function t(e,t){e.resolve("CollapseAllForestNodesAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","CollapseAllForestNodesAction"],angular.module("cc3.app").factory("CollapseAllForestNodesAction",function(){return{id:"CollapseAllForestNodesAction",config:{icon:"fa-minus-square",visible:"hasNodes",widgets:["TreeWidget"],help:{id:"actions.CollapseAllForestNodesAction.help",de:"Alle Baumknoten schließen.",en:"Collapse all forest nodes."}},functions:{execute:function(e){e.$origin.api.collapseAllNodes(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{id:"CopyContactLinkToClipboardFormAction",config:{icon:"fa-share",help:{id:"actions.CopyContactLinkToClipboardFormAction.help",de:"Navigation-Link zu diesem Kontakt in die Zwischenablage kopieren.",en:"Copy the navigation link to this contact to clipboard."},widgets:["FormWidget"]}
1,functions:{execute:function(a){if(n.isNil(a.context.contactId))return;const o=function(e){return t.getBaseUrl()+i.frontend.app+"#/?a=contacts&contactId="+e+"&$filteredExternally=true"}(a.context.contactId);e.copyToClipboard(o)}}}}function t(e){e.define("CopyContactLinkToClipboardFormAction")}function i(e,t){e.resolve("CopyContactLinkToClipboardFormAction",t)}e.$inject=["ClientService","UrlService","URLS","_"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","CopyContactLinkToClipboardFormAction"],angular.module("ccFrontend").factory("CopyContactLinkToClipboardFormAction",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{id:"CopyContactLinkToClipboardTableAction",config:{icon:"fa-share",help:{id:"actions.CopyContactLinkToClipboardTableAction.help",de:"Navigation-Link zu diesem Kontakt in die Zwischenablage kopieren.",en:"Copy the navigation link to this contact to clipboard."},visible:"selection.hasSelectedAny",widgets:["TableWidget"]},functions:{execute:function(n){const a=n.$origin.api.selection.get(n.$originScope);if(a.length<1)return;const o=a.map(e=>(function(e){return t.getBaseUrl()+i.frontend.app+"#/?a=contacts&contactId="+e.id+"&$filteredExternally=true"})(e)).join("\n");e.copyToClipboard(o)}}}}function t(e){e.define("CopyContactLinkToClipboardTableAction")}function i(e,t){e.resolve("CopyContactLinkToClipboardTableAction",t)}e.$inject=["ClientService","UrlService","URLS","_"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","CopyContactLinkToClipboardTableAction"],angular.module("ccFrontend").factory("CopyContactLinkToClipboardTableAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("DrillUpAction")}function t(e,t){e.resolve("DrillUpAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","DrillUpAction"],angular.module("cc3.app").factory("DrillUpAction",function(){return{id:"DrillUpAction",config:{icon:"fa-sign-out-alt",visible:"isDrilledDown",widgets:["TreeWidget"],help:{id:"actions.DrillUpAction.help",de:"Öffnet einen referenzierten Teilbaum.",en:"Opens a referenced forest node."}},functions:{execute:function(e){e.$origin.api.drillUp(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("EditObjectAction")}function t(e,t){e.resolve("EditObjectAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","EditObjectAction"],angular.module("ccFrontend").factory("EditObjectAction",function(){return{id:"EditObjectAction",config:{icon:"fa-pencil-alt",visible:"canEdit",help:{id:"actions.EditObjectAction.help",de:"Die in diesem Formular dargestellten Daten bearbeiten.",en:"Edit the data shown in this form."}},functions:{execute:function(e){e.$origin.api.switchTo("edit",e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){return{id:"EditObjectMappingsAction",config:{icon:"fa-pencil-alt",visible:"canEdit",widgets:["CustomWidget"],help:{id:"actions.EditObjectMappingsAction.help",de:"Die in diesem Widget dargestellten Daten bearbeiten.",en:"Edit the data shown in this widget."}},functions:{execute:function(t){t.$origin.custom.edit=!0,e.broadcast("action.update")}}}}function t(e){e.define("EditObjectMappingsAction")}function i(e,t){e.resolve("EditObjectMappingsAction",t)}e.$inject=["ApplicationService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","EditObjectMappingsAction"],angular.module("ccFrontend").factory("EditObjectMappingsAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("EditStaticHelpFieldAction")}function t(e,t){e.resolve("EditStaticHelpFieldAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","EditStaticHelpFieldAction"],angular.module("ccFrontend").factory("EditStaticHelpFieldAction",function(){return{id:"EditStaticHelpFieldAction",config:{icon:"fa-pencil-alt",visible:"canEditStaticHelpField",help:{id:"actions.EditStaticHelpFieldAction.help",de:"Hilfefeld bearbeiten.",en:"Edit this helpfield."}},functions:{execute:function(e){e.$origin.api.switchTo("edit",e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("EditVirtualHelpFieldAction")}function t(e,t){e.resolve("EditVirtualHelpFieldAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","EditVirtualHelpFieldAction"],angular.module("ccFrontend").factory("EditVirtualHelpFieldAction",function(){return{id:"EditVirtualHelpFieldAction",config:{icon:"fa-pencil-alt",visible:"canEditSystemHelpField",help:{id:"actions.EditVirtualHelpFieldAction.help",de:"Hilfefeld bearbeiten.",en:"Edit this helpfield."}},functions:{execute:function(e){e.$origin.api.switchTo("edit",e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("ExpandAllForestNodesAction")}function t(e,t){e.resolve("ExpandAllForestNodesAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ExpandAllForestNodesAction"],angular.module("cc3.app").factory("ExpandAllForestNodesAction",function(){return{id:"ExpandAllForestNodesAction",config:{icon:"fa-plus-square",visible:"hasNodes",widgets:["TreeWidget"],help:{id:"actions.ExpandAllForestNodesAction.help",de:"Alle Baumknoten öffnen.",en:"Expand all forest nodes."}},functions:{execute:function(e){e.$origin.api.expandAllNodes(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("ExportHighchartsRenderedAdHocReportAsJpgAction")}function t(e,t){e.resolve("ExportHighchartsRenderedAdHocReportAsJpgAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ExportHighchartsRenderedAdHocReportAsJpgAction"],angular.module("ccFrontend").factory("ExportHighchartsRenderedAdHocReportAsJpgAction",function(){return{id:"ExportHighchartsRenderedAdHocReportAsJpgAction",config:{icon:"tag:JPG",visible:"currentlyDisplayingWithHighchartsRenderer",help:{id:"actions.ExportHighchartsRenderedAdHocReportAsJpgAction.help",de:"Exportiert die aktuelle Darstellung des Berichts als JPG.",en:"Exports the current view of the report as a jpg."}},functions:{execute:function(e){e.$origin.api.exportChart(e.$origin,"image/jpeg")}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("ExportHighchartsRenderedAdHocReportAsPdfAction")}function t(e,t){e.resolve("ExportHighchartsRenderedAdHocReportAsPdfAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ExportHighchartsRenderedAdHocReportAsPdfAction"],angular.module("ccFrontend").factory("ExportHighchartsRenderedAdHocReportAsPdfAction",function(){return{id:"ExportHighchartsRenderedAdHocReportAsPdfAction",config:{icon:"tag:PDF",visible:"currentlyDisplayingWithHighchartsRenderer",help:{id:"actions.ExportHighchartsRenderedAdHocReportAsPdfAction.help",de:"Exportiert die aktuelle Darstellung des Berichts als PDF.",en:"Exports the current view of the report as a pdf."}},functions:{execute:function(e){e.$origin.api.exportChart(e.$origin,"application/pdf")}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("ExportHighchartsRenderedAdHocReportAsPngAction")}function t(e,t){e.resolve("ExportHighchartsRenderedAdHocReportAsPngAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ExportHighchartsRenderedAdHocReportAsPngAction"],angular.module("ccFrontend").factory("ExportHighchartsRenderedAdHocReportAsPngAction",function(){return{id:"ExportHighchartsRenderedAdHocReportAsPngAction",config:{icon:"tag:PNG",visible:"currentlyDisplayingWithHighchartsRenderer",help:{id:"actions.ExportHighchartsRenderedAdHocReportAsPngAction.help",de:"Exportiert die aktuelle Darstellung des Berichts als PNG.",en:"Exports the current view of the report as a png."}},functions:{execute:function(e){e.$origin.api.exportChart(e.$origin,"image/png")}}}}).config(e).run(t)}(),function(){"use strict";function e(e){e.define("ExportHighchartsRenderedAdHocReportAsSvgAction")}function t(e,t){e.resolve("ExportHighchartsRenderedAdHocReportAsSvgAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ExportHighchartsRenderedAdHocReportAsSvgAction"],angular.module("ccFrontend").factory("ExportHighchartsRenderedAdHocReportAsSvgAction",function(){return{id:"ExportHighchartsRenderedAdHocReportAsSvgAction",config:{icon:"tag:SVG",visible:"currentlyDisplayingWithHighchartsRenderer",help:{id:"actions.ExportHighchartsRenderedAdHocReportAsSvgAction.help",de:"Exportiert die aktuelle Darstellung des Berichts als SVG.",en:"Exports the current view of the report as a svg."}},functions:{execute:function(e){e.$origin.api.exportChart(e.$origin,"image/svg+xml")}}}}).config(e).run(t)}(),function(){"use strict";function e(e){return{id:"ExportReportResultTableAsCsvAction",config:{icon:"tag:CSV",help:{id:"actions.ExportReportResultTableAsCsvAction.help",de:"Ausgewertete Tabelle als CSV exportieren.",en:"Export result table as CSV."}},functions:{execute:function(t){var i=t.$originScope.itemConfig.takeReportIdFromContext?t.$originScope.widget.context.contextId:t.$originScope.itemConfig.report,n=t.$originScope.itemConfig.variables;e.exportAsCsv(i,n,t.$originScope.widget)}}}}function t(e){e.define("ExportReportResultTableAsCsvAction")}function i(e,t){e.resolve("ExportReportResultTableAsCsvAction",t)}e.$inject=["ReportWidgetApiService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","ExportReportResultTableAsCsvAction"],angular.module("ccFrontend").factory("ExportReportResultTableAsCsvAction",e).config(t).run(i)}(),function(){"use strict";function e(e){return{id:"ExportReportResultTableAsXmlAction",config:{icon:"tag:XML",help:{id:"actions.ExportReportResultTableAsXmlAction.help",de:"Ausgewertete Tabelle als XML exportieren.",en:"Export result table as XML."}},functions:{execute:function(t){var i=t.$originScope.itemConfig.takeReportIdFromContext?t.$originScope.widget.context.contextId:t.$originScope.itemConfig.report,n=t.$originScope.itemConfig.variables;return e.exportAsXml(i,n,t.$originScope.widget)}}}}function t(e){e.define("ExportReportResultTableAsXmlAction")}function i(e,t){e.resolve("ExportReportResultTableAsXmlAction",t)}e.$inject=["ReportWidgetApiService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","ExportReportResultTableAsXmlAction"],angular.module("ccFrontend").factory("ExportReportResultTableAsXmlAction",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{id:"GetViewDefinitionIdAction",config:{icon:"fa-hashtag",help:{id:"actions.GetViewDefinitionIdAction.help",de:"Die ViewDefinition des Elements in die Zwischenablage kopieren.",en:"Copy the view definition of this element."}},functions:{execute:function(i){const n=function(e){if(!(t.isNil(e)||t.isNil(e.$origin)||t.isNil(e.$origin.model)||t.isNil(e.$origin.model.baseModel)||t.isNil(e.$origin.model.baseModel.viewDefinitionId)))return e.$origin.model.baseModel.viewDefinitionId;return"Tobias konnte keine ViewDefinitionId finden :("}(i);e.copyToClipboard(n)}}}}function t(e){e.define("GetViewDefinitionIdAction")}function i(e,t){e.resolve("GetViewDefinitionIdAction",t)}e.$inject=["ClientService","_"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","GetViewDefinitionIdAction"],angular.module("ccFrontend").factory("GetViewDefinitionIdAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("HideFloatingTableFiltersAction")}function t(e,t){e.resolve("HideFloatingTableFiltersAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","HideFloatingTableFiltersAction"],angular.module("ccFrontend").factory("HideFloatingTableFiltersAction",function(){return{id:"HideFloatingTableFiltersAction",config:{icon:"fa-magnifying-glass",help:{id:"actions.HideFloatingTableFiltersAction.help",de:"Spaltenfilter ausblenden.",en:"Hide column filters."},widgets:["TableWidget"]},functions:{execute:function(e){e.$origin.api.hideFloatingFilters(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"PrintMessageAction",config:{icon:"fa-print",widgets:["TableWidget","CustomWidget"]},functions:{execute:function(o){var r=e.isInApplicationModule("user")?t.view.messageDetailsUser:t.view.messageDetails;n.open("print/#/?view="+r+a.map(a.pluck(o.userInput.message,"objectId"),function(e,t){return"&id"+t+"="+e+"&locale="+i.getCurrentLocale().iso}).join(""),"popupWindow","width=500,height=500,left=100,top=100,location=no")}},userInput:[{type:"origin",name:"message",generic:!1}]}}function t(e){e.define("PrintMessageAction")}function i(e,t){e.resolve("PrintMessageAction",t)}e.$inject=["NavigationService","CMS_DATA","I18nLocaleService","$window","_"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","PrintMessageAction"],angular.module("cc3.app").factory("PrintMessageAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("ReloadWidgetAction")}function t(e,t){e.resolve("ReloadWidgetAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ReloadWidgetAction"],angular.module("ccFrontend").factory("ReloadWidgetAction",function(){return{id:"ReloadWidgetAction",config:{icon:"fa-undo",confirm:"common.confirm.cancelEdit",confirmIf:"isDirty",visible:"canReload",help:{id:"actions.ReloadWidgetAction.help",de:"Diese Oberfläche neu laden.",en:"Reload this user interface."}},functions:{execute:function(e){e.$origin.api.reload(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){return{id:"ResetTableAction",config:{icon:"fa-arrows-left-right-to-line",confirm:"common.confirm.cancelEdit",confirmIf:"isDirty",help:{id:"actions.ResetTableAction.help",de:"Diese Oberfläche neu laden.",en:"Reload this user interface."}},functions:{execute:function(t){return e.clear(t.$originScope),t.$origin.api.reInitialize(t.$originScope)}}}}function t(e){e.define("ResetTableAction")}function i(e,t){e.resolve("ResetTableAction",t)}e.$inject=["TableStorageService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","ResetTableAction"],angular.module("ccFrontend").factory("ResetTableAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("ShowFloatingTableFiltersAction")}function t(e,t){e.resolve("ShowFloatingTableFiltersAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","ShowFloatingTableFiltersAction"],angular.module("ccFrontend").factory("ShowFloatingTableFiltersAction",function(){return{id:"ShowFloatingTableFiltersAction",config:{icon:"fa-magnifying-glass",help:{id:"actions.ShowFloatingTableFiltersAction.help",de:"Spaltenfilter einblenden.",en:"Show column filters."},widgets:["TableWidget"]},functions:{execute:function(e){e.$origin.api.showFloatingFilters(e.$originScope)}}}}).config(e).run(t)}(),function(){"use strict";function e(e){return{id:"ShowWidgetHelpAction",config:{icon:"fa-question",visible:"help.hasShowHelpConfiguration",help:{id:"actions.ShowWidgetHelpAction.help",de:"Alle an dieser Oberfläche verfügbaren Hilfetexte öffnen / schließen.",en:"Show / Hide all help texts available for this user interface."}},functions:{execute:function(t){e.isHelpDisplayed(t.$origin)?e.hideAllHelpTexts(t.$origin,t.$originScope.fields):e.showAllHelpTexts(t.$origin,t.$originScope.fields)}}}}function t(e){e.define("ShowWidgetHelpAction")}function i(e,t){e.resolve("ShowWidgetHelpAction",t)}e.$inject=["HelpService"],t.$inject=["ActionInvocationServiceProvider"],i.$inject=["ActionInvocationService","ShowWidgetHelpAction"],angular.module("ccFrontend").factory("ShowWidgetHelpAction",e).config(t).run(i)}(),function(){"use strict";function e(e){e.define("StartCopySubForestAction")}function t(e,t){e.resolve("StartCopySubForestAction",t)}e.$inject=["ActionInvocationServiceProvider"],t.$inject=["ActionInvocationService","StartCopySubForestAction"],angular.module("cc3.app").factory("StartCopySubForestAction",function(){return{id:"StartCopySubForestAction",config:{icon:"fa-clone",widgets:["TreeWidget"],help:{id:"actions.StartCopySubForestAction.help",de:"Teilbaum in Zwischena
1blage kopieren.",en:"Copy subtree to clipboard."}},functions:{execute:function(e){localStorage.setItem("tree_copy_and_paste",JSON.stringify({forestId:e.$origin.tree.forest,forestStructureDefinitionId:e.$origin.tree.forestStructureDefinition.id,forestSelectedObjectIdPath:e.$origin.api.getSelectedNode(e.$originScope)}))}}}}).config(e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m,v,h,b,w){const y=new BroadcastChannel("login"),x=new BroadcastChannel("app");function C(e,t,i,n){w.isUndefined(i)&&(i=!0),g.translateMessage=i,S(),g[e]=t,g[e+"params"]=n}function S(){g.info=void 0,g.error=void 0,g.success=void 0,g.messageActionTitle=void 0,g.messageActionFn=void 0}g.allowAccessAsGuest=o.isFeatureActive(d.feature.guestAccess),g.canRegister=o.isFeatureActive(d.feature.personSelfRegistration),g.passwordResetPossible=o.isFeatureActive(d.feature.resetOwnPassword),g.accessAsGuest=function(){S(),y.postMessage({showAnonymousPage:!0})},g.goToIdentityProvider=function(e){const t=w.filter(g.identityProviders,t=>t.name===e);if(1!==t.length)throw new Error("Unknown IDP");m.location.href=t[0].url},g.submitLoginForm=function(){g.loggingIn=!0,S(),x.postMessage({sendLogin:{url:"/api/auth/login",username:g.credentials.username,password:g.credentials.password,rememberme:g.credentials.rememberMe,_csrf:AuthenticationHelper.getCsrfToken()}})},g.resetPassword=function(){n.runInstance("ResetPasswordAction").then(()=>{},()=>{})},g.showImprint=function(){return r.getCustom({title:"module.about.imprint",module:"about.imprint",preventDesignMode:!0,preventEditingMode:!0},[],[c.getControl("close")])},g.getCsrfToken=window.AuthenticationHelper.getCsrfToken,g.credentials={username:f.search().username},g.loggingIn=!1,g.identityProviders=[],g.currentYear=u.getCurrentYear(),g.translateMessage=!0,g.error=void 0,g.info=void 0,g.success=void 0,function(){y.addEventListener("message",e=>{if(p(()=>g.loggingIn=!1,0),e.data&&e.data.error){const t=e.data.error.substring(e.data.error.indexOf("error=")+"error=".length);w.startsWith(t,"banned")?C("error","module.login.error.bannedIp",!0,{maxAttempts:t.substring(6)}):t&&C("error","module.login.error."+t)}});const e=f.search().success;e&&C("success",e);const t=f.search().info;t&&C("info",t);const i=f.search().error;w.startsWith(i,"banned")?C("error","module.login.error.bannedIp",!0,{maxAttempts:i.substring(6)}):i&&C("error","module.login.error."+i);s.loading(),function(){b.get(l.api("auth/providers")).then(e=>{w.forEach(e.data,e=>{e.label.id=u.getUuid(),e.tooltip.id=u.getUuid(),e.styling&&(e.styling=e.styling.split(";").map(e=>e?`${e} !important`:"").join(";")),a.addTranslationField(e.label),a.addTranslationField(e.tooltip)}),g.identityProviders=e.data})}(),function(){b.get(l.api("auth/loginmessage")).then(e=>{e.data.loginMessage&&e.data.loginMessage.de&&(g.loginMessageId=e.data.loginMessage.id,g.loginMessageType=e.data.loginMessageType,a.addTranslationField(e.data.loginMessage))})}()}()}e.$inject=["AuthService","NavigationService","ValidationService","ActionInvocationService","I18nService","FeatureService","ModalService","ModelService","ControlService","UrlService","CMS_DATA","CCUtils","$scope","$location","$timeout","$window","$element","$q","$http","_"],angular.module("ccFrontend").controller("LoginController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){i.data={},function(){var s=n.search(),c=s.view;delete s.view;var l=s.locale;delete s.locale;var d=s;r.isUndefined(d)||e.readObjects(r.map(d,function(e){return{viewDefinitionId:c,objectId:e}})).then(function(e){var n=[];r.each(e,function(e){var i,a=e.data[0];if(r.isNull(a,"category")||t.addTranslationField(a.category.name),1===a.messageContents.length)i=a.messageContents[0].content;else{var o=r.find(a.messageContents,function(e){if(e.locale.iso===l)return!0});i=o.content}a.content=i.replace(/col-(sm|md|lg)-([1-9]?[0-2]{1}|[1-9])\b/g,function(e,t,i){return"col-xs-"+i}),n.push(a)}),i.data=n,a(function(){$("#ccPrint").show(),o.print()},2e3)})}()}e.$inject=["ActionService","I18nService","$scope","$location","$timeout","$window","_"],angular.module("ccFrontend").controller("PrintController",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionInvocationService","FeatureService","ModalService","I18nService","CCUtils","$scope","$attrs","$q","_"],{templateUrl:e.directiveTemplate("common/action/action"),restrict:"E",scope:{actionId:"@",widget:"=",customInput:"=",alwaysVisible:"=",asLink:"=",asButton:"=",asBlock:"=",asQuicknav:"=",disabled:"=",shortName:"=",showText:"<",showIcon:"<",buttonStyle:"@",buttonJustification:"@",showButtonBorder:"@",visible:"=?",noMargin:"=",optionModel:"@",optionNameOverride:"@",optionIconOverride:"@",optionOriginEntityOverride:"@",optionOriginViewDefinitionIdOverride:"@",doBeforeExecution:"&",doOnSuccess:"&",doOnFailure:"&"},controller:t};function t(e,t,i,n,a,o,r,s,c){function l(){return c.isNil(o.optionIconOverride)?void 0!==o.actionDefinition&&void 0!==o.actionDefinition.config.icon?o.actionDefinition.config.icon:null:o.optionIconOverride}function d(){o.locked=!1}function u(){let i=function(){const e=o.actionDefinition.config.featureConfiguration;return!!c.isNil(e)||t.isFeatureActive(e)}();i&&(c.isNil(o.actionDefinition)||o.alwaysVisible||(i=i&&e.isVisible(o.widget,o.actionDefinition,o.optionModel))),o.visible=i}o.execute=function(){if(!o.locked){const t=o.actionDefinition.config;s.when(e.callApi(t.confirmIf,c.has(t,"confirm"),o.widget)).then(n=>{let l;if(n){const e=t.confirmWithAdditionalInput?t.name:null,n={actionName:t.name};l=i.getConfirmation(t.confirm,null,e,n).result}else l=s.when();l.then(()=>(o.locked=!0,function(){const t=c.isNil(o.customInput)?void 0:[o.customInput];let i;const n=o.doBeforeExecution();if(c.isFunction(n)){const e=n();i=a.isPromise(e)?e:s.when()}else i=s.when();return i.then(()=>e.getInstance(o.actionId,o.widget,t,{model:o.optionModel,nameOverride:o.optionNameOverride,iconOverride:o.optionIconOverride,originEntityOverride:o.optionOriginEntityOverride,originViewDefinitionIdOverride:o.optionOriginViewDefinitionIdOverride})).then(t=>{const i=o.$on("action.unlock",(e,n)=>{n===t.$instanceId&&d(),i()});if(!c.isNil(r.customContext)){const e=o.$parent.$eval(r.customContext);c.extend(t.context,e)}return e.processInstance(t)}).then(e=>{d();const t=o.doOnSuccess();c.isFunction(t)&&t(e)},e=>{d();const t=o.doOnFailure();c.isFunction(t)&&t(e)})}()),()=>s.when())})}},o.getActionIcon=l,o.getActionIconAsTag=function(){const e=l();if(e)return e.substring(e.indexOf(":")+1,e.length);return null},o.getActionName=function(){return e.getActionNameI18nKey(o.actionDefinition,o.optionNameOverride,o.shortName)},o.isTagIcon=function(){return c.startsWith(l(),"tag:")},o.isUrlIcon=function(){return c.startsWith(l(),"/")},o.locked=!1,o.asIcon=!1,function(){e.getDefinition(o.actionId).then(function(e){c.isObject(e.config.name)&&n.addTranslationField(e.config.name),c.isObject(e.config.shortName)&&n.addTranslationField(e.config.shortName),o.actionDefinition=e,o.asButton&&!o.buttonStyle&&(o.buttonStyle=o.actionDefinition.config.style||"primary"),o.$on("action.update",u),u()}),o.asLink||o.asButton||o.asBlock||o.asQuicknav||(o.asIcon=!0);o.showText||o.showIcon||(o.showIcon=!0)}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccAction",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","I18nService","$scope","_"],{templateUrl:e.directiveTemplate("common/action/actionmenu"),restrict:"E",scope:{menuIcon:"@",titleKey:"@",title:"=",buttonStyle:"@",asButton:"=",actionIds:"=?",actions:"=",showText:"<",showIcon:"<",noMargin:"=",hideHeadings:"=",extrasTitleKey:"@",extraActionIds:"=",widget:"=",caretPosition:"@",actionVisibility:"=?"},controller:t};function t(e,t,i,n){i.visibleActions=[],i.visibleExtraActions=[],i.hasVisibleActions=function(){return!!i.actionIds&&!!Object.entries(i.actionVisibility).find(([e,t])=>i.actionIds.includes(e)&&t)},i.hasVisibleExtraActions=function(){return!!i.extraActionIds&&!!Object.entries(i.actionVisibility).find(([e,t])=>i.extraActionIds.includes(e)&&t)}
1,i.hasAnyVisibleAction=function(){return!!i.actionVisibility&&!!Object.values(i.actionVisibility).find(e=>!0===e)},i.title&&e.isTranslationField(i.title)&&(t.addTranslationField(i.title),i.titleKey=i.title.id),i.showText||i.showIcon||(i.showIcon=!0),i.asButton&&!i.buttonStyle&&(i.buttonStyle="primary"),i.actionIds||(i.actions?i.actionIds=n.pluck(i.actions,"action"):i.actionIds=[]),i.actionVisibility||(i.actionVisibility=i.actionIds.reduce((e,t)=>(e[t]=!1,e),{})),i.caretPosition||(i.caretPosition="left")}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccActionMenu",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionInvocationService","ValidationService","I18nService","$timeout","$scope","_"],{templateUrl:e.directiveTemplate("common/action/actionstatus"),restrict:"E",scope:{instance:"="},controller:t};function t(e,t,i,n,a,o){function r(e,t){n(function(){(t||a.status.shouldClose)&&(o.isNull(a.instance.$origin)||(a.instance.$origin.action.instances=o.without(a.instance.$origin.action.instances,a.instance),o.isFunction(a.instance.$origin.focus)&&a.instance.$origin.focus()),a.$destroy())},e)}function s(e,i,n){return t.resolve(e,i,a)}function c(){var e=a.instance.$response;if(!o.isUndefined(e)&&!o.isUndefined(e.data.output)){var t=o.keys(e.data.output.groupByStatus(e.data.step));return o.without(t,"200").length>0}return!1}function l(e){if(!o.isUndefined(a.instance.$response)){var t=a.instance.$response.data.step,i=a.instance.$response.data.stepProgress,n=a.instance.$response.data.done;return e===t&&(100===i||n)||t>e}return!1}a.isArray=o.isArray,a.acknowledge=r,a.getActionNameI18nKey=function(){return e.getActionNameI18nKey(a.instance.$action)},a.getResultCounts=function(t){var i={successful:0,pending:0,cancelled:0,failed:0};if(!o.isUndefined(a.instance.$response)&&!o.isUndefined(a.instance.$response.data.output)){var n=e.$responseCodes,r=a.instance.$response.data.output[t],s=o.groupBy(o.plu
1ck(r,"status")),c=function(e,t){return e+(t||[]).length};i.successful=o.reduce(o.pick(s,o.keys(n.ok)),c,0),i.pending=o.reduce(o.pick(s,o.keys(n.pending)),c,0),i.cancelled=(o.groupBy(o.pluck(r,"$cancelled")).true||[]).length,i.failed=o.reduce(o.pick(s,o.keys(n.error)),c,0)}return i},a.getResults=function(e){if(!o.isUndefined(a.instance.$response)&&o.has(a.instance.$response.data,"output")&&o.has(a.instance.$response.data.output,e))return o.sortBy(o.values(o.mapValues(a.instance.$response.data.output[e],function(e,t){return o.extend(e,{$objectId:t,$displayName:a.instance.$originDisplayNames[t]})})),"$displayName");return[]},a.getMessages=function(e){if(!o.isUndefined(e)){var t;if(o.has(e,"messages")?t=e.messages:o.has(e,"error")&&(t=e.error),!o.isArray(t)||o.isEmpty(t[0])||o.isEmpty(t[0].messages)||(t=t[0].messages),t=o.uniq(o.flatten(o.values(o.omit(o.mapValues(t,s),"id")))),!o.isUndefined(t))return t;if(o.has(e,"status")&&500===e.status)return[i.getTranslation("validation.genericError")]}return null},a.getOneResult=function(e){var t=a.instance.$response;if(!o.isUndefined(t)&&!o.isUndefined(t.data.output)&&!o.isUndefined(t.data.output[e]))return o.values(t.data.output[e])[0];return null},a.getSingleResultDisplayName=e.getSingleResultDisplayName,a.getStepProgress=function(e){if(!o.isUndefined(a.instance.$response))return l(e)?100:a.instance.$response.data.stepProgress;return 0},a.handleResult=function(t,i){if(!o.isNil(t)){var n=e.getResultHandler(i);o.has(n,"handle")&&o.isFunction(n.handle)&&n.handle(t,a.instance)}},a.hasExactlyOneResult=function(e){var t=a.instance.$response;if(!o.isUndefined(t)&&!o.isUndefined(t.data.output))return 1===o.keys(t.data.output[e]).length;return!1},a.hasNotOkResults=c,a.hasOutput=function(){if(!o.isUndefined(a.instance.$response))return!o.isEmpty(a.instance.$response.data.output);return!1},a.isErrorResult=function(t){return!o.isUndefined(t)&&o.contains(o.keys(e.$responseCodes.error),t.status.toString())},a.isOkResult=function(t){return!o.isUndefined(t)&&o.contains(o.keys(e.$responseCodes.ok),t.status.toString())},a.isPendingResult=function(t){return!o.isUndefined(t)&&o.contains(o.keys(e.$responseCodes.pending),t.status.toString())},a.isStepFinished=l,a.onClick=function(t,i){if(!o.isUndefined(t)){var n=e.getResultHandler(i);o.has(n,"onClick")&&o.isFunction(n.onClick)&&n.onClick(t)}},a.renderResult=function(t,i){if(!o.isNil(t)){var n=e.getResultHandler(i),r=o.isFunction(n.render)?n.render:function(e,t){return""};return r(t,a.instance)}return null},a.toggleBulkResultDetails=function(e){o.has(a.visibleBulkDetails,JSON.stringify(e))||(a.visibleBulkDetails[e]=!1);a.visibleBulkDetails[e]=!a.visibleBulkDetails[e]},a.visibleBulkDetails={},a.status={isOpen:!1,shouldClose:!0},function(){a.status.isOpen=!0;var e=a.$on("action.finished",function(t,i){0!==o.without(o.uniq(o.pluck(a.instance.$action.steps,"output")),"void").length||c()||i.$instanceId===a.instance.$instanceId&&(e(),r(2e3,!1))}),t=a.$on("$stateChangeSuccess",function(e,i,n,o,r){a.status.isOpen&&(a.status.isOpen=!1),t()});a.$watch("status.isOpen",function(e,t){e!==t&&!o.isNil(a.instance.$origin)&&o.isFunction(a.instance.$origin.focus)&&a.instance.$origin.focus()})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccActionStatus",e)}(),function(){"use strict";function e(e){return t.$inject=["TransitionService","I18nService","WIDGET_API","$scope","_"],{templateUrl:e.directiveTemplate("common/action/transition"),restrict:"E",scope:{transition:"=",widget:"=",asLink:"="},controller:t};function t(e,t,i,n,a){function o(){n.visible=function(){var e=!1;return"TreeWidget"===n.widget.type?e=!0:n.widget.api.hasApi(i.selection.id,n.widget._scope)?e=n.widget.api.selection.hasSelectedAny(n.widget._scope):a.contains(["FormWidget","CustomWidget"],n.widget.type)&&(e=!0),e}(),function(e){var t=n.$parent.$parent;a.isUndefined(t)||a.isUndefined(t.visibleTransitions)||a.isUndefined(n.transition)||(e?a.contains(t.visibleTransitions,n.transition.id)||t.visibleTransitions.push(n.transition.id):a.contains(t.visibleTransitions,n.transition.id)&&(t.visibleTransitions=a.without(t.visibleTransitions,n.transition.id)))}(n.visible)}n.execute=function(t){if(!n.locked){var o=[];n.widget.api.hasApi(i.selection.id,n.widget._scope)&&(o=a.map(n.widget.api.selection.get(n.widget._scope),function(e){return e.id})),e.executeGroupTransition(t,o,n).then(function(){n.locked=!1}())}},n.locked=!1,n.visible=!1,n.asIcon=!1,function(){t.addTranslationField(n.transition.name),o(),n.asLink||(n.asIcon=!0);n.$on("action.update",o)}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTransition",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope"],{templateUrl:e.directiveTemplate("common/action/transitionmenu"),restrict:"E",scope:{titleKey:"@",transitions:"=",widget:"="},controller:t};function t(e){e.visibleTransitions=[],e.isVisible=function(){return e.visibleTransitions.length>0}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTransitionMenu",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{controller:t,restrict:"E",scope:{control:"=",controlData:"=",widget:"="},templateUrl:e.directiveTemplate("common/control/control")};function t(e,t){e.$on("hotkey.pressed.continueOnWidget",function(i,n){t.isFunction(e.control.onContinueFn)&&(e.control.onContinueFn(e.widget,e.controlData),n.preventDefault())}),e.$on("hotkey.pressed.abortOnWidget",function(i,n){t.isFunction(e.control.onEscFn)&&(e.control.onEscFn(e.widget,e.controlData),n.preventDefault())})}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccControl",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ApplicationService","I18nService","$scope"],{templateUrl:e.directiveTemplate("common/editingmode/editingmode"),restrict:"E",scope:{i18n:"=",entity:"=",actionId:"@"},controller:t};function t(e,t,i,n){n.isEditingMode=t.isEditingMode,n.createTranslationOverride=function(){return e.createTranslationOverride(n.i18n,n.entity).then(function(e){i.addTranslationField(e)})},n.createActionTranslationOverride=function(){return e.createActionTranslationOverride(n.actionId).then(function(e){i.addTranslationField(e)})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEditingMode",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{restrict:"A",link:function(e,n,o){e.$on("$destroy",function(){!function(){d("Flush hotkeys for element "+n[0]),t.unregisterHotkeys(c.registeredHotkeys,n[0])}()});var s={defaultHotKeysEnabled:!1,defaultHotKeys:[{eventName:"forwardTab",keys:"tab"},{eventName:"backwardsTab",keys:"shift+tab"},{eventName:"escape",keys:"esc"},{eventName:"enter",keys:"enter"}],additionalHotKeys:[]},c={config:{},registeredHotkeys:[]};function l(){a.each(function(){var e=c.config.defaultHotKeysEnabled?a.union(c.config.additionalHotKeys,c.config.defaultHotKeys):c.config.additionalHotKeys;return a.flatten(e)}
1(),function(i){var a=t.registerHotkey(i.keys,i.eventName,n[0],function(t){return function(i,a){d("Hotkey "+t.eventName+" pressed for element: "+n[0]),e.$broadcast("hotkey.pressed."+t.eventName,i)}}(i));c.registeredHotkeys.push(a)})}function d(e){i.debug("[ccHotkeys] "+e)}!function(){c.config=function(){if(!a.isNil(o.ccHotkeys))return a.merge(s,e.$eval(o.ccHotkeys));return s}(),d("Register hotkeys for scope with id "+e.$id),function(e){r(e)}(function(){l()})}()}}}e.$inject=["ApplicationService","HotkeyService","LogService","CCUtils","_","$q","$timeout"],angular.module("ccFrontend").directive("ccHotkeys",e)}(),function(){"use strict";function e(e,t,i,n){var a={},o={ANY:{left:{displayValue:"fa-arrow-left",isIcon:!0},up:{displayValue:"fa-arrow-up",isIcon:!0},right:{displayValue:"fa-arrow-right",isIcon:!0},down:{displayValue:"fa-arrow-down",isIcon:!0},shift:{displayValue:"&#8679;",isIcon:!1},enter:{displayValue:"&#9166;",isIcon:!1},space:{displayValue:"space",isIcon:!1},escape:{displayValue:"esc",isIcon:!1}},LINUX:{},MAC:{ctrl:{displayValue:"&#8963;",isIcon:!1},alt:{displayValue:"&#8997;",isIcon:!1},meta:{displayValue:"&#8984;",isIcon:!1}},WINDOWS:{}};return{registerHotkey:function(t,s,c,l){n.isNil(a[c])&&(a[c]=[]);var d={id:i.getUuid(),keys:t,eventName:s,name:"HotkeyHelpText."+s,displayKeys:function(t){var i=e.getUserAgent(),a=[];return n.each(t.split("+"),function(e){a.push(function(e,t){return n.isNil(o[e])||n.isNil(o[e][t])?n.isNil(o.ANY[t])?{displayValue:t.toUpperCase(),isIcon:!1}:o.ANY[t]:o[e][t]}(i,e))}),a}(t)},u={hotkeyConfig:d,eventListener:n.isNil(l)?null:function(t){(function(t,i){var a;a="WINDOWS"===e.getUserAgent()?t.key:t.altKey?t.code:t.key;var o=[];t.ctrlKey&&o.push("ctrl");t.altKey&&o.push("alt");t.metaKey&&o.push("meta");t.shiftKey&&(o.length>0||["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Tab","Shift"].includes(a))&&o.push("shift");a&&(a=a.replace("Key","").replace("Digit","").replace("Arrow","").replace("Spacebar","space").replace("AltLeft","").replace("ControlLeft","").replace("ShiftLeft","").replace(" ","space").replace("Control","ctrl").replace("Escape","esc")).length&&o.push(a);return n.reduce(o,function(e,t){return e.length>0?e+"+"+t.toLowerCase():t.toLowerCase()},"")===i})(t,d.keys)&&l(t)}};a[c].push(u),n.isNil(u.eventListener)||c.addEventListener("keydown",u.eventListener);return e.broadcast("hotkeys.registered",d),r("Hotkey "+d.id+" with name "+d.name+" for keys "+d.keys+" registered."),d.id},unregisterHotkeys:function(t,i){if(n.isNil(a[i])||0===a[i].length)return;var o=n.partition(a[i],function(e){return n.contains(t,e.hotkeyConfig.id)});n.forEach(o[0],function(t){n.isNil(t.eventListener)||i.removeEventListener("keydown",t.eventListener),e.broadcast("hotkeys.removed",t.hotkeyConfig),r("Hotkey "+t.hotkeyConfig.id+" with name "+t.hotkeyConfig.name+" for keys "+t.hotkeyConfig.keys+" unregistered.")}),a[i]=o[1]}};function r(e){t.debug("[ccHotkeys] "+e)}}e.$inject=["ApplicationService","LogService","CCUtils","_"],angular.module("ccFrontend").factory("HotkeyService",e)}(),function(){"use strict";function e(e,t,i,n){function a(e,t,a,o,r){if(t){var s=n.getTrustedHtml(i.getTranslationWithDefault(t,a,o))||"";
1"CC-I18N"===e[0].nodeName?e.find(".i18n-value").html(s):r.$set("title",s)}}return{templateUrl:t.directiveTemplate("common/i18n/i18n"),restrict:"AE",link:function(t,i,n){var o,r,s;n.$observe("key",function(e){o=e,t.key=e,a(i,o,r,s,n)}),n.$observe("default",function(e){a(i,o,r=e,s,n)}),n.params&&t.$watch(n.params,function(e){a(i,o,r,s=e,n)}),t.$on("i18n.ready",function(){a(i,o,r,s,n)}),t.$on("i18n.switch",function(){a(i,o,r,s,n)}),t.supportsCustomerTranslation=n.supportsCustomerTranslation,t.supportsCustomerActionTranslation=n.supportsCustomerActionTranslation,t.isEditingMode=e.isEditingMode}}}e.$inject=["ApplicationService","UrlService","I18nService","$sce"],angular.module("ccFrontend").directive("ccI18n",e)}(),function(){"use strict";function e(e,t,i,n){function a(e,t,a,o,r){if(t){const e=n.removeHtml(i.getTranslationWithDefault(t,a,o))||"";r.$set("title",e)}}return{restrict:"A",link:function(e,t,i){e.$on("i18n.ready",function(){a(0,e.$eval(i.ccI18nTitle),void 0,void 0,i)}),e.$on("i18n.switch",function(){a(0,e.$eval(i.ccI18nTitle),void 0,void 0,i)}),a(0,e.$eval(i.ccI18nTitle),void 0,void 0,i)}}}e.$inject=["ApplicationService","UrlService","I18nService","CCUtils"],angular.module("ccFrontend").directive("ccI18nTitle",e)}(),function(){"use strict";function e(e,i){return{templateUrl:i.directiveTemplate("common/navigationsearch/navigationsearch"),restrict:"E",controller:t}}function t(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m){const v=7;let h;function b(e){const t=e.title?e.title.id:void 0;n.addTranslationField(e.title);const i=y(e),a=function(e){if(e.data.icon)return e.data.icon;const t=e.state.split(".");for(;t.length;){const e=t.join("."),i=r.getState(e);if(i.data.icon)return i.data.icon;t.pop()}const i=e.state.split(".").pop();return d.getDefaultWidgetIcon(i)||console.error("Cannot find any icon",e)}(e),o=S(i);return{id:e.state,state:e.state,title:t||"???",icon:a,path:i,pathString:o,$displayName:t?n.getTranslation(t):"???",receivesContext:e.data.receivesContext}}function w(t=e){t.searchString=""}function y(e){const t=x(e);return t.shift(),t.pop(),t}function x(e){let t=e.state.split(".");const i=[];for(;t.length;){const e=t.join(".");if(r.isNavigatableState(e)||e.match(/.*\.t\d\d$/)){const o=r.getState(e);if(o.data.itemConfig.keyForTreeSubNavigation){t.pop();continue}let s;const c=o.data.icon;if(o.data.title&&("object"==typeof o.data.title?(n.addTranslationField(o.data.title),s=o.data.title.id):a.isUuid(o.data.title)&&(s=o.data.title)),(s||c)&&!i.find(e=>e.translation===s&&e.icon===c)){const t=o.data.hasOwnProperty("setsContext")&&!!o.data.setsContext,n={state:e,translation:s,icon:c,setsContext:t};i.unshift(n)}}t.pop()}return i.forEach(e=>{e.ellipsis=!0,e.shrink=1}),i[0].ellipsis=!1,i[0].shrink=0,i.filter(e=>e.icon&&!e.translation).forEach(e=>{e.shrink=0,e.ellipsis=!1}),p.uniq(i,e=>e.translation||e.icon)}function C(e,t,i){e[i.setsContext.replace(/\{(.*)}/,"$1")]=t,Object.entries(e).forEach(([e,t])=>r.setModalContext(e,t))}function S(e){return e.map(e=>e.translation?n.getTranslation(e.translation):"(*)").join(" > ")}e.elementId="cc-navigation-search-input",e.searchString="",e.loading=!0,e.items=[],e.placeholder="",e.featureActive=!1,e.clear=w,e.filterAllowedValuesSuggestions=function(t){const i=l.filterAllowedValuesSuggestions(e.items,t,void 0,v);return i.length?function(e){const t=p.groupBy(e,e=>e.state.split(".").shift()),i=[];Object.keys(t).sort((e,t)=>{const i=h[e],a=h[t];return n.getTranslation(i.title.id).localeCompare(n.getTranslation(a.title.id))}).map(e=>{const i=h[e];return t[e][0]=Object.assign({},t[e][0],{group:i.title.id}),t[e]}).forEach(e=>i.push(...p.uniq(e,!0,"pathString")));const a=r.getCurrentState().name;return i.map(e=>a.includes(e.state)?Object.assign({},e,{isCurrentState:!0}):e)}(i):[{id:"noResult",noResult:!0}]},e.bindValuePath=function(t){if(p.isNil(t))return e.searchString;if("object"==typeof t){const i=x(t);i.pop();const n=i.filter(e=>e.setsContext).map(e=>r.getState(e.state)).map(e=>e.data.itemConfig);n.length?function(e,t){g.debug(`[ccNavigationSearch] Resolving setsContext for target state ${t}: `,e);const i={},n=e.map(e=>{if(e.extension&&"person.mapper.CurrentUserToPersonId"===e.extension&&"{personId}"===e.setsContext)return()=>(C(i,r.getContext("currentUser"),e),Promise.resolve());const t=Object.assign({},e,{modeFilters:void 0,initialModeFilter:void 0,childState:null,singleSelection:!0,skipIfPossible:!1,noUserInteractionRequired:!1,createObjectAction:!1,updateObjectAction:!1,deleteObjectAction:!1,transparentBackgroun
1d:!1,showHelp:!1,showHelpAction:!1}),n=[o.getControl("selectOne"),o.getControl("cancel")];let a;switch(e.type){case"TableWidget":a=(()=>s.getTable(t,[],n,{size:"lg"}));break;case"CollectionWidget":t.type="CollectionWidget",t.alignment="horizontal",a=(()=>s.getCustom(t,[],n,{size:"md"}));break;default:throw new Error("Cannot simulate "+e.type+"  for now.")}return()=>a().result.then(t=>{if(!t||!t[0])return Promise.reject("cancel");C(i,t[0].id,e)})});m.chain(n,!0).then(()=>(g.debug(`[ccNavigationSearch] Navigating to ${t.state} with parameters: ${JSON.stringify(i)}`),r.go(t.state,!0,i))).catch(e=>{"cancel"!==e&&g.error("Error selecting navigation search parameters: ",e)})}(n,t):r.go(t.state),e.searchString=""}else e.searchString=t},e.focusInput=function(){document.getElementById(e.elementId).focus()},function(){e.featureActive=u.isFeatureActive(f.feature.navigationSearch),e.hotkeyConfig={defaultHotKeysEnabled:!1,additionalHotKeys:[{eventName:"clearSearchInput",keys:"esc"}]},e.$on("hotkey.pressed.clearSearchInput",(e,t)=>{e.targetScope.$apply(()=>w(e.targetScope))}),i.loading().then(()=>{e.placeholder=n.getTranslation("common.ui.navigationSearch.placeholder"),h=Object.values(r.getApplicationModuleItemConfig()).reduce((e,t)=>(e[t.widgetState]=t,e),{});let t=r.getAllSearchableStates();const i=t.map(e=>{const t=h[e.state];if(t)return t}).filter(e=>!!e).map(e=>e.requiredPersonTraits||e.prohibitedPersonTraits?c.checkTraits("personalTraits",e.requiredPersonTraits,e.prohibitedPersonTraits).then(t=>[e.widgetState,t]):void 0).filter(e=>!!e);Promise.all(i).then(i=>{const n=i.filter(e=>!1===e[1]).map(e=>e[0]);e.items=t.filter(e=>!n.find(t=>e.state.startsWith(`${t}.`))).map(b),g.debug(`[ccNavigationSearch] Initialised ${e.items.length} searchable routes`,e.items),e.loading=!1}),e.$on("i18n.switch",()=>{e.items.forEach(t=>{t.$displayName=n.getTranslation(t.title),t.pathString=S(y(t)),e.placeholder=n.getTranslation("common.ui.placeholder.search")})})})}()}e.$inject=["ApplicationService","UrlService"],t.$inject=["$scope","ActionInvocationService","I18nInitService","I18nService","CCUtils","ControlService","NavigationService","ModalService","PersonTraitsService","AllowedValuesService","LayoutService","FeatureService","LogService","CMS_DATA","_","$q"],angular.module("ccFrontend").directive("ccNavigationSearch",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ActionInvocationService","$scope"],{templateUrl:e.directiveTemplate("pageelement/actioninspector/actioninspector"),restrict:"E",controller:i};function i(e,i){i.cancel=e.cancel,i.dump=function(e){console.log(t.cloneDeep(e))},i.execute=function(t){return e.runInstance(t)},i.getInstances=e.getInstances,i.proceed=function(e){e.$inspect.resolve()}}}e.$inject=["UrlService","_"],angular.module("ccFrontend").directive("ccActionInspector",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","$scope"],{templateUrl:e.directiveTemplate("pageelement/appinfo/appinfo"),restrict:"E",controller:t};function t(e,t){!function(){e.getBasicInfo().then(function(e){t.version=e.app.version})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccAppinfo",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","ActionService","$http","$scope","$window","_"],{templateUrl:e.directiveTemplate("pageelement/devconsole/devconsole"),restrict:"E",controller:t};function t(t,i,n,a,o,r){a.getDevConfig=t.getDevConfig,a.changeSoftwareModule=function(){i.changeActiveSoftwareModule(a.devConfig.activeSoftwareModule)},a.devConfig={isDevWriteEnabled:!1,isDebugLogEnabled:!1,isDebugActionsEnabled:!1,isDesignModeEnabled:!1},a.refreshPage=function(){o.location.reload()},function(){n.get(e.api("provider/enableDevWrite")).then(function(i){a.devConfig.isDevWriteEnabled=i.data;var o=localStorage.getItem("ccDebugLog");a.devConfig.isDebugLogEnabled=!!r.isString(o)&&"true"===o;var s=localStorage.getItem("ccDebugActions");a.devConfig.isDebugActionsEnabled=!!r.isString(s)&&"true"===s;var c=localStorage.getItem("ccDesignMode");a.devConfig.isDesignModeEnabled=!!r.isString(c)&&"true"===c,t.setDevConfig("isDevWriteEnabled",a.devConfig.isDevWriteEnabled),t.setDevConfig("canSetDevWriteEnabled",!0),t.setDevConfig("isDebugLogEnabled",a.devConfig.isDebugLogEnabled),t.setDevConfig("canSetDebugLogEnabled",!0),t.setDevConfig("isDebugActionsEnabled",a.devConfig.isDebugActionsEnabled),t.setDevConfig("canSetDebugActionsEnabled",!0),t.setDevConfig("isDesignModeEnabled",a.devConfig.isDesignModeEnabled),t.setDevConfig("canSetDesignModeEnabled",!0),t.setDevConfig("disableInboxPolling",!0),a.$watch("devConfig.isDevWriteEnabled",function(i,o){n.post(e.api("provider/enableDevWrite/"+i)).then(function(){t.setDevConfig("isDevWriteEnabled",i),a.devConfig.isDevWriteEnabled=i})}),a.$watch("devConfig.isDebugLogEnabled",function(e,i){localStorage.setItem("ccDebugLog",e),t.setDevConfig("isDebugLogEnabled",e),a.devC
1onfig.isDebugLogEnabled=e}),a.$watch("devConfig.isDebugActionsEnabled",function(e,i){localStorage.setItem("ccDebugActions",e),t.setDevConfig("isDebugActionsEnabled",e),a.devConfig.isDebugActionsEnabled=e}),a.$watch("devConfig.isDesignModeEnabled",function(e,i){!1===e?localStorage.removeItem("ccDesignMode"):localStorage.setItem("ccDesignMode",e),t.setDevConfig("isDesignModeEnabled",e),a.devConfig.isDesignModeEnabled=e})},function(){t.setDevConfig("canSetDevWriteEnabled",!1),a.devConfig.isDevWriteEnabled=!1}),i.getActiveSoftwareModule().then(function(e){a.devConfig.softwareModules=e.allSoftwareModules,a.devConfig.initialSoftwareModule=e.startedSoftwareModule,a.devConfig.activeSoftwareModule=e.activeSoftwareModule})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDevconsole",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","PersonPreferencesService","PREFERENCES","$q","$scope","AuthService","_"],{templateUrl:e.directiveTemplate("pageelement/localeswitcher/localeswitcher"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r){function s(e,t){const i=n.defer();return t&&!l(t)&&(a.currentLocale=t),i.resolve(),i.promise}function c(e,t){return s(a.currentLocale,{iso:t})}function l(e){return a.currentLocale.iso===e.iso}a.currentLocale=e.getCurrentLocale(),a.isCurrentLocale=l,a.switchLocale=function(e){o.isAnonymous().then(n=>{t.set(i.locale,e,n).then(()=>{a.currentLocale=e})})},a.$on("$destroy",()=>t.unsubscribe(i.locale,s)),function(){t.subscribe(i.locale,s),e.getAvailableLocalesAsPromise().then(e=>{a.availableLocales=r.sortBy(e,"iso")}),a.$on("i18n.switch",c)}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccLocaleswitcher",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","AuthService","ConsentService","CMS_DATA","FeatureService","$scope"],{templateUrl:e.directiveTemplate("pageelement/quicknav/editingmodeswitch"),restrict:"E",controller:t};function t(e,t,i,n,a,o){o.editingModeEnabled=!1,o.canComposeEditingMode=!1,o.editingModeFeatureActive=a.isFeatureActive(n.feature.enableEditingMode),o.hasGivenConsents=i.hasGivenConsents,function(){t.getCurrentUser().then(function(t){o.canComposeEditingMode=t.allowedToUseEditingMode||!1,t.allowedToUseEditingMode&&o.editingModeFeatureActive&&o.$watch("editingModeEnabled",function(t,i){localStorage.setItem("ccDebugActions",t),e.setEditingMode(t),o.editingModeEnabled=t})})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEditingModeSwitch",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","AuthService","CMS_DATA","NavigationService","ApplicationService","$scope","$timeout","$q","_"],{templateUrl:e.directiveTemplate("pageelement/quicknav/inbox"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r,s,c){var l=6e4,d=s.when(),u=null;function g(){a.getDevConfig("disableInboxPolling")||(d=d.then(function(){return null!==u&&r.cancel(u),e.readObjects({viewDefinitionId:i.view.unreadMessageCount,objectId:o.userDetails.id}).then(function(e){var t=c.isUndefined(e.data[0])?0:e.data[0].calculatedAttributes.unreadMessageCount;t!==o.unreadMessageCount&&(o.unreadMessageCount=t,a.broadcast("unreadMessageCount.updated",t)),u=r(g,l)},function(e){u=r(g,l)})}))}o.anonymous=!0,o.unreadMessageCount=0,o.goToInbox=function(){n.go("messageInbox",!1,{boxId:o.userDetails.personalMessageBoxId,folderId:o.userDetails.personalMessageInboxId})},g(),o.$on("unreadMessageCount.update",g),t.isAnonymous().then(function(e){o.anonymous=e})}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccInbox",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ActionInvocationService","AuthService","ConsentService","FeatureService","ActionService","I18nService","ModalService","ControlService","CCUtils","CMS_DATA","_","$scope","$window"],{templateUrl:t.directiveTemplate("pageelement/quicknav/quicknav"),restrict:"E",controller:i};function i(e,t,i,n,a,o,r,s,c,l,d,u,g){const f=new BroadcastChannel("logout");function p(){u.checklistMenuStatus.loading=!0,a.readObjects({viewDefinitionId:l.view.checklistsList}).then(function(e){d.forEach(e.data,function(e){o.addTranslationField(e.name),o.addTranslationField(e.category.name)}),u.checklists=d.sortBy(e.data,function(e){return o.getTranslation(e.name.id)}),u.checklistMenuStatus.loading=!1}
1).catch(c.noopFn)}u.anonymous=!0,u.canComposeMessage=!1,u.canManageChecklists=!1,u.checklists=[],u.checklistFeatureActive=n.isFeatureActive(l.feature.checklists),u.checklistMenuStatus={loading:!0,open:!1},u.checklistMenuToggled=function(e){e?p():u.checklistErrors=null},u.createChecklist=function(){e.runInstance("CreateObjectAction",void 0,void 0,{originEntityOverride:"CheckList"}).then(function(e){u.checklistMenuStatus={open:!0,loading:!0}}).catch(c.noopFn)},u.editChecklist=function(e){u.checklistErrors=null,r.getForm({viewDefinition:l.view.checklistDetails,title:e.name.id,pathContext:!1,contextId:e.id,initialMode:"edit",preventDesignMode:!0},[],[s.getSuccessControl("fa-check","success","common.save",function(e,t){e.api.save(e._scope).then(function(t){t&&400===t.status||e.api._modal.close()})},function(e,t){return u.canManageChecklists&&e.api.isDirty(e._scope)},{}),s.getControl("cancel")],{}).result.then(function(){u.checklistMenuStatus.open=!0,p()}).catch(c.noopFn)},u.checklistErrors=null,u.hasMultiplePageLayouts=function(){return u.pageLayouts.length>1},u.login=function(){AuthenticationHelper.initiateLoginProcedure(!0)},u.removeChecklist=function(t){r.getConfirmation("checklists.confirmDelete","checklists.confirmDelete.title").result.then(function(){e.runInstance("DeleteObjectAction",void 0,void 0,{originViewDefinitionIdOverride:l.view.checklistsList,originObjectIdOverride:t.id}).then(function(e){u.checklistMenuStatus.open=!0;var i=e.getOneResult(1);200!==i.status?u.checklistErrors=d.pluck(i.error["*"],"i18nKey"):u.checklists=d.without(t)}).catch(c.noopFn)}).catch(c.noopFn)},u.switchLayout=function(e){u.setActiveLayout(e)},u.hasGivenConsents=i.hasGivenConsents,u.getCsrfToken=window.AuthenticationHelper.getCsrfToken,u.logoutCompletely=function(e){f.postMessage("logout")},function(){t.getCurrentUser().then(function(e){u.canComposeMessage=e.allowedToSendIndividualMessages||!1}),t.isAnonymous().then(function(e){u.anonymous=e}),t.hasUserStories([l.userStory.manageChecklists]).then(function(e){u.canManageChecklists=e[0]})}()}}e.$inject=["NavigationService","UrlService"],angular.module("ccFrontend").directive("ccQuicknav",e)}(),function(){"use strict";function e(e){return t.$inject=["AuthService","$scope","_"],{templateUrl:e.directiveTemplate("pageelement/userimage/userimage"),restrict:"E",controller:t};function t(e,t,i){function n(){var e=t.userDetails.photo;i.isNil(e)||i.isNil(e.contentType)||i.isNil(e.data)?t.photo=null:t.photo="data:"+e.contentType+";base64,"+e.data}t.anonymous=!0,t.getImage=n,t.photo=null,function(){n(),t.$on("userimage.update",function(){n()}),e.isAnonymous().then(function(e){t.anonymous=e})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccUserimage",e)}(),function(){"use strict";function e(e,t,i,n,a,o){return r.$inject=["$scope"],{templateUrl:e.directiveTemplate("pageelement/userinfo/userinfo"),restrict:"E",controller:r};function r(e){function r(){e.roles=e.userDetails.roles.map(e=>a.getTranslation(e.name.id)).join(", ")}e.anonymous=!0,e.roles="",function(){e.userDetails.roles.forEach(e=>{a.addTranslationField(e.name)}),r(),e.$on("i18n.switch",r),t.getCurrentUser().then(t=>{e.anonymous=t.isAnonymous,t.isAnonymous||t.hasGivenConsents||i.giveConsents().then(()=>{const t=e.$watch(()=>n.hasGivenConsents(),e=>{e&&(t(),o.startup())});n.setHasGivenConsents()})})}()}}e.$inject=["UrlService","AuthService","ActionService","ConsentService","I18nService","NavigationService"],angular.module("ccFrontend").directive("ccUserinfo",e)}(),function(){"use strict";function e(e){return t.$inject=["NavigationService","I18nService","AuthService","ApplicationService","ClientService","ConsentService","NavigationEditorService","CCUtils","screenSize","PersonTraitsService","$location","$scope","$timeout","$state","$q","_"],{templateUrl:e.directiveTemplate("pagelayout/pagelayout"),restrict:"E",transclude:!0,scope:{type:"@",theme:"@"},controller:t};function t(t,i,n,a,o,r,s,c,l,d,u,g,f,p,m,v){function h(){g.menuMode=u.search().m,"none"===g.menuMode&&o.setUserMenuState("hidden"),n.getCurrentUser().then(e=>{g.userDetails=e,g.pageLayouts=["default","public","backoffice"],g.setActiveLayout("backoffice"),t.getContextAsPromise("currentUserIsAnonymous").then(e=>g.isAnonymous=e)}),function(){const e=t.getApplicationModuleItemConfig();let i=v.filter(p.get(),e=>!v.includes(e.name,".")&&!e.abstract&&!e.data.systemModule);return i=v.map(i,t=>{const i=e[t.data.applicationModuleId];return d.checkTraits("personalTraits",i.requiredPersonTraits,i.prohibitedPersonTraits).then(e=>e?t:null)}),m.all(i).then(e=>({data:v.filter(e,v.negate(v.isNil)),separators:v.mapKeys(t.getMenuSeparators(),e=>e.after)}))}().then(e=>{v.each(e.data,e=>{!v.isUndefined(e.data)&&v.has(e.data,"title")&&(i.addTranslationField(c.reduceRecord(e.data.title)),e.data.title=e.data.title.id)}),g.menu=e}),a.getBasicInfo().then(e=>{g.isDevMode="true"===e.app.devmode}),g.$on("auth.userDetails.update",()=>{n.getCurrentUser().then(e=>{g.userDetails=e,a.broadcast("userimage.update")})})}g.addUiItem=s.addUiItem,g.getUserMenuState=o.getUserMenuState,g.isDesignMode=a.isDesignMode,g.isEditingMode=a.isEditingMode,g.isMenuState=function(e){return o.getUserMenuState()===e},g.menu=void 0,g.removeUiItem=s.removeUiItem,g.screenSize=l,g.setActiveLayout=function(t){g.activePageLayout=e.pageLayout(t)},g.toggleMenu=function(){let e;switch(o.getUserMenuState()){case"full":e=["collapsed","hidden","full"];break;case"collapsed":e=["hidden","full","collapsed"];break;case"hidden":e=["full","collapsed","hidden"];break;default:o.hasSize("ccLarge")?e=["collapsed","hidden","full"]:(o.hasSize("ccMedium")||o.hasSize("ccSmall"))&&(e=["hidden","full","collapsed"])}const t=v.indexOf(e,o.getUserMenuState());
1o.setUserMenuState(t===e.length-1?e[0]:e[t+1]),f(()=>o.doLayout(),0)},g.hasGivenConsents=r.hasGivenConsents,g.isAnonymous=!1,FeatureHelper.getActiveFeatures().includes("f5dad3d4-48be-4f1f-ac0a-293c2fdf21bb")?h():AuthenticationHelper.initiateLoginProcedure(!0).then(()=>h())}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPagelayout",e)}(),function(){"use strict";function e(e,t){return i.$inject=["$scope"],{restrict:"E",controller:i};function i(i){function n(){!function(){$("#page-wrapper").css("min-height",t.getInnerHeight()+"px"),$(".wrapper-content").height(e.getAvailableHeight()-e.getContentBorderHeight())}(),function(){"dynamic"===t.getUserMenuState()&&(t.hasSize("ccSmall")||t.hasSize("ccMedium")?$("body").addClass("body-small").addClass("mini-navbar").removeClass("hidden-navbar"):$("body").removeClass("body-small").removeClass("mini-navbar"))}()}!function(){t.onResize(function(){n(),i.$apply()}),n()}()}}e.$inject=["LayoutService","ClientService"],angular.module("ccFrontend").directive("ccResize",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ActionService","ApplicationService","ConsentService","FeatureService","I18nService","NavigationService","ModalService","AuthService","PersonTraitsService","CCUtils","$scope","$rootScope","$q","_"],{templateUrl:e.directiveTemplate("uiitem/placeholder/landingpage/landingpage"),restrict:"E",scope:{type:"@",receivesContext:"@",personTraitsStore:"@"},controller:i};function i(i,n,a,o,r,s,c,l,d,u,g,f,p,m){function v(){return l.isAnonymous().then(e=>{let t;return g.anonymous=e,(t=g.receivesContext?s.getContextAsPromise(g.receivesContext):p.when()).then(e=>{return g.receivedContext=e,(g.personTraitsStore.length?d.getTraits(g.personTraitsStore):p.when()).then(t=>i.fetchLandingPageLayouts(g.type,e).then(e=>{g.landingPages=[],g.activePosition=void 0,g.activeLandingPage=void 0,g.existingTraits=t,e.globalLandingPageLayouts.reverse().forEach(e=>h(e,"GLOBAL")),h(e.personalLandingPageLayout,"PERSONAL"),h(e.individualLandingPageLayout,"INDIVIDUAL"),g.numberOfGlobalLayouts=g.landingPages.filter(e=>"GLOBAL"===e.precision).length,g.lastActiveGlobalPosition=0,g.lastActiveGlobalLandingPage=g.landingPages[0],g.canConfigureGlobalLayout=e.globalLandingPageLayouts[0].canConfigure,g.canConfigurePersonalLayout=e.personalLandingPageLayout.canConfigure,g.canConfigureIndividualLayout=e.individualLandingPageLayout.canConfigure,b(S())}))})})}function h(e,t){m.isNil(e)||m.isNil(e.id)||(g.landingPages.push(m.extend(e,{precision:t})),r.addTranslationField(e.name))}function b(e){g.activePosition=e,g.activeLandingPage=g.landingPages[e],"GLOBAL"===g.activeLandingPage.precision&&(g.lastActiveGlobalPosition=e,g.lastActiveGlobalLandingPage=g.activeLandingPage),g.activeLandingPage.columns.flatMap(e=>e.widgets).forEach(e=>r.addTranslationField(e.name)),x()}function w(){return g.canConfigureGlobalLayout&&"GLOBAL"===g.activeLandingPage.precision&&g.activePosition<g.numberOfGlobalLayouts-1}function y(e){if(m.isNil(e.requiredPersonTraits)||m.isEmpty(e.requiredPersonTraits))return!0;const t=e.requiredPersonTraits.split(",");return m.any(t,e=>m.contains(g.existingTraits,e))}function x(){g.configMode=!1}function C(e){return!(!m.isNil(e.featureConfiguration)&&!m.isEmpty(e.featureConfiguration))||o.isFeatureActive(e.featureConfiguration)}function S(){const e=g.landingPages.length-1,t=g.landingPages[e];return g.activateNewGlobalLandingPage||"INDIVIDUAL"!==t.precision&&"PERSONAL"!==t.precision?0:e}g.options={isAppended:!0,isDraggable:!0,gutter:10,percentPosition:!0,itemSelector:".landing-page-grid-item"},g.activePosition=void 0,g.activeLandingPage=void 0,g.lastActiveGlobalLandingPage=void 0,g.landingPages=[],g.existingTraits=[],g.activate=b,g.addColumn=function(){i.addLandingPageLayoutColumnToLandingPageLayout(g.activeLandingPage.id).then(e=>{i.fetchLandingPageLayoutColumn(e).then(e=>{g.activeLandingPage.columns.push(e),g.$broadcast("chart.rendered")})})},g.addLayout=function(e){let t;if("GLOBAL"===e&&"GLOBAL"===g.activeLandingPage.precision)t=i.createGlobalLandingPageLayoutFromGlobalLandingPageLayout(g.type,g.activeLandingPage.id),g.activateNewGlobalLandingPage=!0;else if("PERSONAL"===e&&"GLOBAL"===g.activeLandingPage.precision)t=i.createPersonalLandingPageLayoutFromGlobalLandingPageLayout(g.type,g.activeLandingPage.id);else if("INDIVIDUAL"===e)switch(g.activeLandingPage.precision){case"GLOBAL":t=i.createIndividualLandingPageLayoutFromGlobalLandingPageLayout(g.type,g.activeLandingPage.id,g.receivedContext);break;case"PERSONAL":t=i.createIndividualLandingPageLayoutFromPersonalLandingPageLayout(g.type,g.receivedContext)}t.then(v)},g.addWidget=function(e){s.setContext("landingPageLayoutType",g.type,!1),i.addLandingPageWidgetToLandingPageLayoutColumn(e.id).then(t=>{i.fetchLandingPageWidget(t).then(t=>{e.widgets.push(t)})}).catch(u.noopFn)},g.canCreateGlobalPrecision=function(){return g.canConfigureGlobalLayout&&"GLOBAL"===g.activeLandingPage.precision},g.canConfigureGlobalPrecision=w,g.canChangeOrderOfGlobalLayouts=function(){return g.canConfigureGlobalLayout&&g.numberOfGlobalLayouts>2},g.canCreateIndividualPrecision=function(){return g.canConfigureIndividualLayout&&"INDIVIDUAL"!==g.activeLandingPage.precision&&!g.landingPages.some(e=>"INDIVIDUAL"===e.precision)},g.canCreatePersonalPrecision=function(){return g.canConfigurePersonalLayout&&"GLOBAL"===g.activeLandingPage.precision&&!g.landingPages.some(e=>"PERSONAL"===e.precision)},g.canDeleteLayout=function(){return w()||"PERSONAL"===g.activeLandingPage.precision&&g.canConfigurePersonalLayout||"INDIVIDUAL"===g.activeLandingPage.precision&&g.canConfigureIndividualLayout},g.changeLayoutOrder=function(){i.rearrangeGlobalLandingPageLayouts(g.type).then(v).catch(()=>(function(e){t.debug(`[ccLandingPage] ${e}`)})("Changing the order of global landing page layouts failed."))},g.changeWidgetPosition=function(e,t,n,a){return i.changeLandingPageWidgetPosition(e.id,t,n.id,a).then(()=>{n.widgets.splice(a,0,e.widgets[t]),e.id===n.id&&a<=t&&t++,e.widgets.splice(t,1)}),!0},g.compliesToPersonTraitRequirements=y,g.enableConfigMode=function(){g.configMode=!0},g.deleteLayout=function(){(g.activePosition<g.numberOfGlobalLayouts-1||"PERSONAL"===g.activeLandingPage.precision||"INDIVIDUAL"===g.activeLandingPage.precision)&&c.getConfirmation("landingPage.confirmRemoveLayout."+g.activeLandingPage.precision,"landingPage.confirmRemoveLayout."+g.activeLandingPage.precision+".title").result.then(()=>{let e;switch(g.activeLandingPage.precision){case"GLOBAL":e=i.deleteGlobalLandingPageLayout(g.type,g.activeLandingPage.id).then(()=>{g.landingPages.splice(g.activePosition,1),g.numberOfGlobalLayouts--,g.lastActiveGlobalPosition=0,g.lastActiveGlobalLandingPage=g.landingPages[0]});break;case"PERSONAL":e=i.deletePersonalLandingPageLayout(g.type).then(()=>{g.landingPages.splice(g.activePosition,1)});break;case"INDIVIDUAL":e=i.deleteIndividualLandingPageLayout(g.type,g.receivedContext).then(()=>{g.landingPages.splice(g.activePosition,1)})}e.then(()=>{b(S())})}).catch(u.noopFn)},g.disableConfigMode=x,g.softwareFeatureIsActive=C,g.editLayoutConfiguration=function(){let e=g.activeLandingPage.name;g.activeLandingPage.name=null,i.editLandingPageConfiguration(g.type,g.activeLandingPage.id).then(e=>{let t=e;r.addTranslationField(t),g.activeLandingPage.name=t}).catch(()=>{g.activeLandingPage.name=e})},g.editWidgetConfiguration=function(e,t){i.editLandingPageWidgetConfiguration(e.id).then(t=>{g.$broadcast("landingPageWidget.configurationChanged",{landingPageWidgetId:e.id,newConfiguration:t})}).catch(u.noopFn)},g.getWidgetUrl=function(t){if(t)return g.configMode?y(t)&&C(t)?e.landingPageWidget(m.isNil(t.entityUsedToLoadData)?"noEntity":t.entityUsedToLoadData,t.implementationType):e.landingPageWidget("noEntity","placeholder"):e.landingPageWidget(m.isNil(t.entityUsedToLoadData)?"noEntity":t.entityUsedToLoadData,t.implementationType)},g.isActive=function(e){return g.activePosition===e},g.isGlobalLayoutActive=function(){return 0<=g.activePosition&&g.activePosition<g.numberOfGlobalLayouts},g.removeColumn=function(e){(e.widgets.length>0?c.getConfirmation("landingPage.confirmRemoveColumn","landingPage.confirmRemoveColumn.title").result:p.when()).then(()=>{i.deleteLandingPageLayoutColumn(e.id).then(()=>{g.activeLandingPage.columns.splice(m.indexOf(g.activeLandingPage.columns,e),1),g.$broadcast("chart.rendered")})}).catch(u.noopFn)},g.removeWidget=function(e,t){c.getConfirmation("landingPage.confirmRemoveWidget","landingPage.confirmRemoveWidget.title").result.then(()=>{i.deleteLandingPageWidget(e.id).then(()=>{t.widgets.splice(m.indexOf(t.widgets,e),1),m.isFunction(e._scope.afterWidgetRemoveFn)&&e._scope.afterWidgetRemoveFn()})}).catch(u.noopFn)},g.isEditingMode=n.isEditingMode,g.configMode=!1,g.hasGivenConsents=a.hasGivenConsents,g.activateNewGlobalLandingPage=!1,this.$onInit=function(){v(),g.$on("$destroy",()=>{delete f.landingPage})}}}e.$inject=["UrlService","LogService"],angular.module("ccFrontend").directive("ccLandingPage",e)}(),function(){"use strict";function e(e,t,i,n){return a.$inject=["LandingPageService","CCUtils","$scope","$q","WIDGET_API","_"],{restrict:"E",transclude:!0,link:function(a,o,r,s,c){a.state="loading";var l=e.directiveTemplate("uiitem/placeholder/landingpage/landingpagewidget");t(l).then(function(e){var t=i(e)(a);o.html(t);var r=t.find(".landing-page-widget-body"),s={scope:void 0,state:void 0};a.$watch("state",function(e){!function(e){if(s.state===e)return;s.state=e,n.isNil(s.scope)||(s.scope.$destroy(),s.scope=null);"loading"===e?r.html(i('<div class="text-center"><i class="fa fa-circle-notch fa-spin fa-2x"></i></div>')(a)):"noResult"===e?r.html(i('<div class="alert alert-warning hint-text vertical-offset-5-bottom"><cc-i18n data-key="common.noResult" data-supports-customer-translation="true"></cc-i18n></div>')(a)):"ok"===e?c(function(e,t){r.html(e),s.scope=t,n.isFunction(a.afterDomLoad)&&a.afterDomLoad()}):r.html(i('<div class="alert alert-danger hint-text vertical-offset-5-bottom"><i class="fa fa-fw fa-exclamation-triangle fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i><cc-i18n data-key="common.error" data-supports-customer-translation="true"></cc-i18n></div>')(a))}(e)})})},controller:a};function a(e,t,i,n,a,o){function r(){i.state="loading",i.reloadOnI18nSwitch?i.$on("i18n.switch",function(){i.state="loading",s()}):o.isFunction(i.updateI18n)&&i.$on("i18n.switch",i.updateI18n);const e=function(e){if(o.isNil(e))return null;try{return JSON.parse(e)}catch(e){return null}}(i.widget.configuration),a=o.isFunction(i.init)?i.init(e):null;return(t.isPromise(a)?a:n.when()).then(s)}function s(){if(o.isFunction(i.load)){e.applyConfiguration(i,function(e){var a=i.load();return(t.isPromise(a)?a:n.when(a)).then(function(a){e.data=a;var r=o.isFunction(i.updateI18n)?i.updateI18n():null;return t.isPromise(r)?r:n.when()}).then(function(){var a=o.isFunction(i.hasResult)?i.hasResult():!o.isNil(e.data)&&o.isNil(e.data.error)&&o.isEmpty(e.data.error);return t.isPromise(a)?a:n.when(a)}).then(function(e){i.state=e?"ok":"noResult"},function(){i.state="noResult"})},[a.status.id])}else i.state="ok"}i.$on("landingPageWidget.configurationChanged",function(e,t){t.landingPageWidgetId===i.widget.id&&(i.widget.configuration=t.newConfiguration,r())}),r()}}e.$inject=["UrlService","$templateRequest","$compile","_"],angular.module("ccFrontend").directive("ccLandingPageWidget",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$timeout","_"],{templateUrl:e.directiveTemplate("uiitem/widget/calendar/calendardatepicker"),restrict:"E",scope:{changeCalendarView:"=",unselectDate:"=",onChangeView:"&?",onSetDate:"&",disableControls:"<",skipFirstMonth:"<"},controller:t};function t(e,t,i){e.datePickerOptions={minView:"day"},e.manualChangeView=function(t,n,a){e.changeCalendarView(t,n,a),"day"===t&&i.isFunction(e.onCh
1angeView)&&e.onChangeView()(t,e.childScope.data.rightDate)},e.onSetTime=function(t){e.onSetDate({newDate:t})},e.unselectDate=function(){const n=i.filter(e.childScope.data.weeks[0].dates,e=>!1===e.past)[0];e.datePickerValue=null,t(()=>e.changeCalendarView("day",n))};const n=e.$watch("childScope",function(t){e.changeCalendarView=t.changeView,n()}),a=e.$watch("childScope.data.rightDate",function(t){i.isNil(t)||(e.skipFirstMonth&&e.changeCalendarView("day",t),a())});e.numberOfColumns=5}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCalendarDatePicker",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/calendar/calendarfilter"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCalendarFilter",e)}(),function(){"use strict";function e(e){e.elementClass=`cc-calendar-filter-${e.filterKey.toLowerCase().replaceAll("_","-")}`}e.$inject=["$scope"],angular.module("ccFrontend").controller("AbstractCalendarFilter",e)}(),function(){"use strict";function e(e,t,i,n,a,o){angular.extend(this,a("AbstractCalendarFilter",{$scope:n})),n.items=[],n.loadItems=function(e){throw new Error("Overwrite loadItems(userSpecificFilters).")},n.init=function(){const e=t.get(n.widget._scope,t.KEYS.FILTER);n.loadItems(e).then(e=>{n.allowedValuesModel=e.model,n.items=e.data.map(e=>({_item:e})),n.prefetchedData=e,n.field={embeddedObjectView:e.viewDefinitionId}})},n.filterAllowedValuesSuggestions=function(e){return i.filterAllowedValuesSuggestions(n.items,e,e=>e._item.$displayName,void 0,e=>e._item.$displayName).map(e=>e._item)},n.getAllowedValueItemCount=(()=>n.items.length),n.hasAllowedValuesModel=(()=>!!n.allowedValuesModel),n.getAllowedValuesModel=(()=>n.allowedValuesModel)}e.$inject=["StringEncodingService","CalendarStorageService","AllowedValuesService","$scope","$controller","_"],angular.module("ccFrontend").controller("AbstractTypeaheadCalendarFilterController",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/calendar/filter/calendarallowedvaluesfilter"),restrict:"E",scope:{widget:"=",filterKey:"=",relevantFilters:"="},controller:t}}function t(e,t,i,n,a,o,r){angular.extend(this,a("AbstractTypeaheadCalendarFilterController",{$scope:o})),o.loadItems=function(a){return o.loading=!0,e.invokeInstance("FetchUserSpecificFilterAllowedValuesAction",{filter:o.filterKey,userSpecificFilters:a},null,e=>e,e=>e,e=>{const t=e.getResults(1);return n.applyViewDefinitionCaching(t[0],t[0].viewDefinitionId),t}).then(e=>{let n=i.get(o.widget._scope,`${i.KEYS.FILTER}.${o.filterKey}`);const a=(n=r.isEmpty(n)?[]:n).length;return n=r.isNil(e.data)?[]:n.filter(t=>e.data.find(e=>e.id===t)),e.data.forEach(i=>i.$displayName=t.resolveDisplayName(t.reduceRecord(i),e.model)),a!==n.length&&o.$emit("calendarFilter.valueUpdated",{filter:o.filterKey,value:n}),e}).finally(()=>{o.loading=!1})},o.getValue=function(){if(r.isNil(o.filterKey))throw new Error("Define $scope.filterKey.");if(0===o.getAllowedValueItemCount())return[];const e=i.get(o.widget._scope,`${i.KEYS.FILTER}.${o.filterKey}`);if(r.isNil(e)||r.isEmpty(e))return[];return o.items.filter(t=>e.includes(t._item.id))},o.setValue=function(e){if(r.isNil(o.filterKey))throw new Error("Define $scope.filterKey.");const t=(e||[]).filter(e=>!!e._item).map(e=>e._item.id);o.$emit("calendarFilter.valueUpdated",{filter:o.filterKey,value:t})},o.loading=!0,o.init(),function(){if(r.isNil(o.relevantFilters))return;r.isNil(o.relevantFilters)||(o.unregisterValueUpdated=o.widget._scope.$on("calendarFilter.valueUpdated",(e,t)=>{r.contains(o.relevantFilters,t.filter)&&o.init()}))}(),o.$on("$destroy",()=>{r.isNil(o.unregisterValueUpdated)||o.unregisterValueUpdated()})}e.$inject=["UrlService"],t.$inject=["ActionInvocationService","CCUtils","CalendarStorageService","ViewDefinitionModelService","$controller","$scope","_"],angular.module("ccFrontend").directive("ccCalendarFilterAllowedValues",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/calendar/filter/calendarbooleanfilter"),restrict:"E",scope:{widget:"=",filterKey:"="},controller:t}}function t(e,t,i,n){function a(){return e.get(i.widget._scope,`${e.KEYS.FILTER}.${i.filterKey}`)}angular.extend(this,n("AbstractCalendarFilter",{$scope:i})),i.field={},i.isMandatory=function(){return!1},i.setValue=function(e){i.$emit("calendarFilter.valueUpdated",{filter:i.filterKey,value:e})},i.isValueTrue=function(){return!0===a()},i.isValueFalse=function(){return!1===a()},i.isValueEmpty=function(){return t.isEmpty(a())}}e.$inject=["UrlService"],t.$inject=["CalendarStorageService","CCUtils","$scope","$controller"],angular.module("ccFrontend").directive("ccCalendarFilterBoolean",e)}(),function(){"use strict";function e(e){return t.$inject=["CalendarStorageService","EnumService","$controller","$q","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/calendar/filter/calendarenumfilter"),restrict:"E",scope:{widget:"=",filterEnum:"=",filterKey:"="},controller:t};function t(e,t,i,n,a,o){function r(e){if(o.isUndefined(e))return s();a.value=e,(o.isNil(e)||0===e.length)&&c(void 0),o.isObject(e)&&c(e)}function s(){if(o.isNil(a.filterKey))throw new Error("Define $scope.filterKey.");if(0===a.getAllowedValueItemCount())return null;const t=e.get(a.widget._scope,e.KEYS.FILTER+"."+a.filterKey);return o.isNil(t)||o.isEmpty(t)?null:a.items.map(e=>e._item).find(e=>e.id===t)||null}function c(e){if(o.isNil(a.filterKey))throw new Error("Define $scope.filterKey.");a.$emit("calendarFilter.valueUpdated",{filter:a.filterKey,value:o.isNil(e)?null:e.id})}angular.extend(this,i("AbstractTypeaheadCalendarFilterController",{$scope:a})),a.bindValuePath=r,a.getValue=s,a.isValueEmpty=function(){const e=r();return o.isNil(e)||o.isEmpty(e)},a.loadItems=function(){if(o.isNil(a.filterEnum))throw new Error("Define $scope.filterEnum.");return n.when({data:t.getEnumValues(a,a.filterEnum)})},a.setValue=c,a.openImmediately=!0,a.value=null,a.init()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCalendarFilterEnum",e)}(),function(){"use strict";function e(e){return t.$inject=["CalendarStorageService","$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/calendar/filter/calendarnumberfilter"),restrict:"E",scope:{filterKey:"=",widget:"="},controller:t};function t(e,t,i,n){angular.extend(this,i("AbstractCalendarFilter",{$scope:t})),t.bindValuePath=(i=>{if(void 0===i){const i=e.get(t.widget._scope,`${e.KEYS.FILTER}.${t.filterKey}`);return n.isNumber(i)?i:""}t.$emit("calendarFilter.valueUpdated",{filter:t.filterKey,value:i})})}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCalendarFilterNumber",e)}(),function(){"use strict";function e(e){return t.$inject=["CalendarWidgetApiService","DatePickerService","$templateCache","$element","$scope","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/calendar/widget"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r){i.put("templates/datetimepicker.html",t.getDatePickerTemplate()),a.eventPopoverWidth=500,a.bindValuePath=function(e){if(r.isNil(a.widget.api))return{};return a.widget.api.bindPopoverValuePath(a,e)},a.disabled=function(){return a.widget.api&&a.widget.calendar.eventDetail&&(!a.widget.calendar.eventDetail.event.editable||a.widget.calendar.eventDetail.loading)},a.valuePath="widget.data",a.menuVisibility={datePicker:!0,eventSources:!0,filters:!0},a.onFirstCalendarViewChange=function(e,t){r.isFunction(a.secondCalendarChangeView)&&a.secondCalendarChangeView(e,t)},a.onSetDate=function(e,t){1===t?a.secondCalendarUnselectDate():a.firstCalendarUnselectDate(),a.widget.calendar.focusDate(e)},function(){e.create(a,n.find(".cc-calendar-content").get(0),n.find(".cc-calendar__access-granted").get(0))}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCalendarWidget",e)}(),function(){"use strict";function e(e,t){return{restrict:"E",link:function(i,n,a){i._=t,function(){!function(a){var o=i.widget.api.getCollectionItemRenderer(i.widget._scope.$parent,i.item.$viewDefinition);o=o.replace(/Renderer/,"").toLowerCase(),t.isNil(o)?a.append('<i class="fa fa-exclamation-circle text-red prefix-icon"\n               title="{{\'common.ui.undefinedItemRenderer\'|i18n:this}}"></i>'):a.append("<cc-"+o+"></cc-"+o+">");e(a)(i),n.append(a)}(angular.element("<div />"))}()}}}e.$inject=["$compile","_"],angular.module("ccFrontend").directive("ccCollectionItem",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(n,a,o){!function(){(function(){i.isNil(n.item.country)||(i.isNil(n.item.region)||i.isNil(n.item.region.name)||t.addTranslationField(n.item.region.name),i.isNil(n.item.country.name)||t.addTranslationField(n.item.country.name))})(),a.replaceWith(e('<div class="text-center">    <small>        <p class="text-ellipsis">
1            <span data-ng-if="!item">{{\'common.noValue\'|i18n:this}}</span>            <span data-ng-if="item">            <span data-ng-repeat="line in item.lines">{{line.line}}<br/></span>            <span>{{item.zipcode}}&nbsp;{{item.city}}<br/></span>            <span data-ng-if="!!item.region"><cc-i18n data-key="{{item.region.name.id}}"></cc-i18n><br/></span>            <span><cc-i18n data-key="{{item.country.name.id}}"></cc-i18n></span>            </span>        </p>    </small></div>')(n))}()}}}e.$inject=["$compile","I18nService","_"],angular.module("ccFrontend").directive("ccAddresscollectionitem",e)}(),function(){"use strict";function e(e,t,i,n){return{restrict:"E",link:function(t,n){function a(){return t.item.answered?"answered":"unanswered"}!function(){e.addTranslationField(t.item.question.text),n.replaceWith(i('<div class="collection-renderer-question-sheet-survey-button collection-renderer-answer-button '+a()+' clickable fadeIn" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">'+function(){return'<i class="fa fa-bookmark collection-renderer-answer-priority-symbol '+(t.item.question.mandatory?"mandatory":"optional")+" "+a()+' prefix-icon"></i>'}()+function(){var e=t.item.question.evaluationTopic.position,i=t.item.question.position;return'<p style="display: inline-block;vertical-align: top;margin-right: 1%;">'+e+"."+i+"</p>"}()+'<cc-i18n class="text-ellipsis" style="width: calc(80%); display: inline-block;" data-key="'+t.item.question.text.id+'" title="{{\''+t.item.question.text.id+"'|i18n:this}}\"></cc-i18n>"+function(){return'<span class="fa '+(t.item.answered?"fa fa-check-square":"fa-square")+' pull-right"></span>'}()+"</div>")(t))}()}}}e.$inject=["I18nService","CCUtils","$compile","_"],angular.module("ccFrontend").directive("ccAnswer",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(t,i,n){!function(){i.replaceWith(e('<div class="collection-renderer-answer-sheet-survey-button clickable fadeIn" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"><span class="fa fa-info-circle pull-left"></span><cc-i18n data-key="evaluation.ui.answerSheetSurveyEntry" title="{{\'evaluation.ui.answerSheetSurveyEntry\'|i18n:this}}"></cc-i18n></div>')(t))}()}}}e.$inject=["$compile","I18nService","_"],angular.module("ccFrontend").directive("ccAnswersheetsurvey",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(i,n,a){!function(){var a=e.resolveDisplayName(i.item,i.widget.model.fullModel);n.replaceWith(t('<span title="'+a+'">'+a+"</span>")(i))}()}}}e.$inject=["CCUtils","$compile","_"],angular.module("ccFrontend").directive("ccCollectiondisplayname",e)}(),function(){"use strict";function e(e,t,i,n,a,o){return{restrict:"E",link:function(t,r){!function(){r.replaceWith(i('<div class="text-center">\n                    <p data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">\n                        <span class="text-ellipsis" style="width: calc(80%); display: inline-block;" title="\''+t.item.title+'">'+t.item.title+"</span>\n                    </p>"+function(){let e="<p data-ng-class=\"{'active': widget.api.selection.isSelected(item, this)}\">";const i=t.item.startDate,r=t.item.endDate;a.isNil(i)||(e+="<span>"+n("amDateFormat")(o(i),"DD.MM.YYYY")+"</span>");a.isNil(i)&&a.isNil(r)||(e+=" - ");a.isNil(r)||(e+="<span>"+n("amDateFormat")(o(r),"DD.MM.YYYY")+"</span>");return e+="</p>"}()+function(){if(a.isNil(t.item.transcript))return"";return e.addTranslationField(t.item.transcript.examinationRegulationVersion.name),e.addTranslationField(t.item.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.name),e.addTranslationField(t.item.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name),'<p data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">\n                    <cc-i18n data-key="{{item.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name.id}}"></cc-i18n>\n                </p>\n                <p data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">\n                    <cc-i18n data-key="{{item.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.name.id}}"></cc-i18n> (<cc-i18n data-key="{{item.transcript.examinationRegulationVersion.name.id}}"></cc-i18n>)\n                </p>'}()+"</div>")(t))}()}}}e.$inject=["I18nService","CCUtils","$compile","$filter","_","moment"],angular.module("ccFrontend").directive("ccDoctoralproject",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(t,i,n){!function(){i.replaceWith(e("<pre>{{item || json}}</pre>")(t))}()}}}e.$inject=["$compile","I18nService","_"],angular.module("ccFrontend").directive("ccJson",e)}(),function(){"use strict";function e(e,t){return{restrict:"E",link:function(i,n){!function(){const a=e.resolveDisplayName(i.item,i.widget.model.fullModel);let o='<div class="cc-collection-item-list">',r="";i.widget.selection.canSelect&&(o+='<input id="{{item.id}}" name="items" type="checkbox" class="cc-collection-item-list-checkbox" data-ng-checked="widget.api.selection.isSelected(item, this)" data-ng-click="widget.api.selection.toggle(item,this,$event)"/>',r="clickable");o+='<label class="cc-collection-item-list-label '+r+'"><span title="'+e.removeHtml(a)+'">'+a+"</span></label></div>",n.replaceWith(t(o)(i))}()}}}e.$inject=["CCUtils","$compile"],angular.module("ccFrontend").directive("ccCollectionlistitem",e)}(),function(){"use strict";function e(e){return{restrict:"E",link:function(t,i,n){!function(){i.replaceWith(e('<span class="label label-primary"\n                           style="position: absolute; top:0;" \n                           data-ng-if="item.calculatedAttributes.unreadMessageCount > 0">{{item.calculatedAttributes.unreadMessageCount}}</span>\n                    <p class="text-center">{{item.name}}</p>')(t))}()}}}e.$inject=["$compile"],angular.module("ccFrontend").directive("ccMessagebox",e)}(),function(){"use strict";function e(e,t){return{restrict:"E",link:function(i,n,a){!function(){e.addTranslationField(i.item.name),n.replaceWith(t('<div class="clickable text-ellipsis">\n                        <i class="fa fa-folder prefix-icon"></i>\n                        <cc-i18n data-key="{{item.name.id}}" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"></cc-i18n>
1\n                        <span class="label label-primary pull-right" \n                        data-ng-if="item.calculatedAttributes.unreadMessageCount > 0">{{item.calculatedAttributes.unreadMessageCount}}</span>\n                     </div>')(i))}()}}}e.$inject=["I18nService","$compile"],angular.module("ccFrontend").directive("ccMessagefolder",e)}(),function(){"use strict";function e(e,t,i,n){return{restrict:"E",link:function(t,n){!function(){e.addTranslationField(t.item.text),n.replaceWith(i('<div class="collection-renderer-question-button neutral clickable fadeIn" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">'+function(){return'<i class="fa fa-bookmark collection-renderer-answer-priority-symbol '+(t.item.mandatory?"mandatory":"optional")+' prefix-icon"></i>'}()+function(){var e=t.item.evaluationTopic.position,i=t.item.position;return'<p style="display: inline-block;vertical-align: top;margin-right: 1%;">'+e+"."+i+"</p>"}()+'<cc-i18n class="text-ellipsis" style="width: calc(80%); display: inline-block;" data-key="'+t.item.text.id+'" title="{{\''+t.item.text.id+"'|i18n:this}}\"></cc-i18n></div>")(t))}()}}}e.$inject=["I18nService","CCUtils","$compile","_"],angular.module("ccFrontend").directive("ccQuestion",e)}(),function(){"use strict";function e(e,t,i,n){return{restrict:"E",link:function(a,o,r){function s(){return u("startOfStudy")||u("resumptionOfStudy")||u("changeFromExamRegVersion")}function c(){return f("startOfStudy")||f("resumptionOfStudy")||f("changeFromExamRegVersion")}function l(){return u("endOfStudy")||u("changeIntoExamRegVersion")}function d(){return f("endOfStudy")||f("changeIntoExamRegVersion")}function u(e){var t=n.find(a.entries,{type:e});return t.exists&&t.effective}function g(e){return n.find(a.entries,{type:e}).exists}function f(e){var t=n.find(a.entries,{type:e});return t.exists&&!t.effective}function p(){return n.has(a.item,"studiesJournalChapter")}(function(){t.addTranslationField(a.item.term.shortName.id),t.addTranslationField(a.item.term.name.id),function(){return a.entries=[],n.forEach(["enrolment","reEnrolment","terminationOfEnrolment","guestStudyAdmission","startOfStudy","studyEntry","endOfStudy","resumptionOfStudy","temporaryWithdrawal","changeIntoExamRegVersion","changeFromExamRegVersion"],function(e){a.entries.push({type:e,exists:!!a.item[e]&&!!a.item[e].id,effective:!!a.item[e]&&"EFFECTIVE"===a.item[e].effectivenessStatus})}),i.when()}().then(function(){o.replaceWith(e('<div class="alert no-padding text-center clickable" style="margin-bottom: 0" data-ng-class="{\'alert-info-draft\': '+function(){if(a.item.studiesJournalChapter)return!1;return a.item.autoGenerated}()+",'alert-success': "+function(){return"EFFECTIVE"===a.item.effectivenessStatus}()+", 'alert-info': "+function(){return"NOT_YET_EFFECTIVE"===a.item.effectivenessStatus}()+'}"><div class="animated timeline-collection-renderer-item-button journal-chapter-item fadeIn"data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"style="height: 105px"><cc-i18n data-key="'+a.item.term.shortName.id+'" title="{{\''+a.item.term.name.id+'\'|i18n:this}}"></cc-i18n><div class="vertical-offset-10"><div data-ng-if="'+function(){return!p()}()+'"><span class="btn btn-circle" data-ng-class="{\'btn-disabled\': '+(!u("enrolment")&&!f("enrolment"))+", 'btn-primary': "+u("enrolment")+", 'btn-secondary': "+f("enrolment")+'}" title="'+function(){if(g("enrolment"))return"{{'entity.Enrolment.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-sign-in-alt\': '+g("enrolment")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!u("guestStudyAdmission")&&!f("guestStudyAdmission"))+", 'btn-primary': "+u("guestStudyAdmission")+", 'btn-secondary': "+f("guestStudyAdmission")+'}" title="'+function(){if(g("guestStudyAdmission"))return"{{'entity.GuestStudyAdmission.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-random\': '+g("guestStudyAdmission")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!u("reEnrolment")&&!f("reEnrolment"))+", 'btn-primary': "+u("reEnrolment")+", 'btn-secondary': "+f("reEnrolment")+'}" title="'+function(){if(g("reEnrolment"))return"{{'entity.ReEnrolment.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-redo\': '+g("reEnrolment")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!u("terminationOfEnrolment")&&!f("terminationOfEnrolment"))+", 'btn-primary': "+u("terminationOfEnrolment")+", 'btn-secondary': "+f("terminationOfEnrolment")+'}" title="'+function(){if(g("terminationOfEnrolment"))return"{{'entity.TerminationOfEnrolment.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-sign-out-alt\': '+g("terminationOfEnrolment")+'}"></i></span></div><div data-ng-if="'+p()+'"><span class="btn btn-circle" data-ng-class="{\'btn-disabled\': '+(!s()&&!c())+", 'btn-primary': "+s()+", 'btn-secondary': "+c()+'}" title="'+function(){if(g("startOfStudy"))return"{{'entity.StartOfStudy.$entity'|i18n:this}}";if(g("resumptionOfStudy"))return"{{'entity.ResumptionOfStudy.$entity'|i18n:this}}";if(g("changeFromExamRegVersion"))return"{{'entity.ChangeFromExamRegVersion.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-play\': '+g("startOfStudy")+", 'fa-arrow-right': "+g("resumptionOfStudy")+", 'fa-sign-in-alt': "+g("changeFromExamRegVersion")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!u("studyEntry")&&!f("studyEntry"))+", 'btn-primary': "+u("studyEntry")+", 'btn-secondary': "+f("studyEntry")+'}" title="'+function(){if(g("studyEntry"))return"{{'entity.StudyEntry.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-chevron-right\': '+g("studyEntry")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!u("temporaryWithdrawal")&&!f("temporaryWithdrawal"))+", 'btn-primary': "+u("temporaryWithdrawal")+", 'btn-secondary': "+f("temporaryWithdrawal")+'}" title="'+function(){if(g("temporaryWithdrawal"))return"{{'entity.TemporaryWithdrawal.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-pause\': '+g("temporaryWithdrawal")+'}"></i></span><span class="btn btn-circle horizontal-offset-5" data-ng-class="{\'btn-disabled\': '+(!l()&&!d())+", 'btn-primary': "+l()+", 'btn-secondary': "+d()+'}" title="'+function(){if(g("endOfStudy"))return"{{'entity.EndOfStudy.$entity'|i18n:this}}";if(g("changeIntoExamRegVersion"))return"{{'entity.ChangeIntoExamRegVersion.$entity'|i18n:this}}";return""}()+'"><i class="fa fa-fw" data-ng-class="{\'fa-stop\': '+g("endOfStudy")+", 'fa-sign-out-alt': "+g("changeIntoExamRegVersion")+'}"></i></span></div></div><div class="vertical-offset-10"><span class="label label-secondary" title="{{\'$defaults.attribute.totalTermsEnrolled\'|i18n:this}}" data-ng-if="item.totalTermsEnrolled || (item.studiesJournalChapter && item.studiesJournalChapter.totalTermsEnrolled)"><i class="fa fa-fw fa-university prefix-icon"></i>'+function(){if(a.item.studiesJournalChapter)return a.item.studiesJournalChapter.totalTermsEnrolled;return a.item.totalTermsEnrolled}()+'</span><span class="label label-secondary horizontal-offset-5" title="{{\'$defaults.attribute.termsStudiedInThisCourseOfStudy\'|i18n:this}}" data-ng-if="item.termsStudied"><i class="fa fa-fw fa-book prefix-icon"></i>'+function(){return a.item.termsStudied}()+"</span></div></div></div>")(a))})})(),a.$watch("item.term.shortName",function(e){t.addTranslationField(e),a.$broadcast("i18n.ready")}
1),a.$watch("item.term.name",function(e){t.addTranslationField(e),a.$broadcast("i18n.ready")})}}}e.$inject=["$compile","I18nService","$q","_"],angular.module("ccFrontend").directive("ccStudiesjournalchapter",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(i,n,a){function o(){i.displayName=e.resolveDisplayName(i.item,i.widget.model.fullModel)}!function(){o(),i.$on("i18n.switch",function(){o()}),n.replaceWith(t('<div class="text-center entry" style="cursor: pointer"  data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"><button class="btn btn-circle btn-lg animated fadeIn" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this), \'btn-primary\': item.effectivenessStatus === \'EFFECTIVE\', \'btn-secondary\': item.effectivenessStatus === \'NOT_YET_EFFECTIVE\'}"><i class="fa {{::widget.collection.icons[item.$viewDefinition]}}"></i></button><br/><p><div data-ng-bind-html="displayName" title="{{displayName}}"/><cc-i18n class="label text-uppercase" data-key="entity.EffectivenessStatus.'+i.item.effectivenessStatus+"\" data-ng-class=\"{'label-primary': item.effectivenessStatus === 'NOT_YET_EFFECTIVE', 'label-secondary': item.effectivenessStatus === 'EFFECTIVE' }\"></cc-i18n></p></div>")(i))}()}}}e.$inject=["CCUtils","$compile","_"],angular.module("ccFrontend").directive("ccStudiesjournalchapterentry",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(t,n,a){(function(){e.addTranslationField(t.item.name),n.replaceWith(i('<div class="text-center"><button class="btn btn-circle btn-primary btn-lg animated fadeIn"data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"title="{{\''+t.item.name.id+'\'|i18n:this}}"><i class="fa fa-paint-brush"></i></button><br /><p><cc-i18n data-key="'+t.item.name.id+'"></cc-i18n></p></div>')(t))})(),t.$watch("item.name",function(i){e.addTranslationField(i),t.$broadcast("i18n.ready")})}}}e.$inject=["I18nService","ApplicationService","$compile"],angular.module("ccFrontend").directive("ccTheme",e)}(),function(){"use strict";function e(e,t){return{restrict:"E",link:function(i,n){function a(){e.addTranslationField(i.item.examinationRegulationVersion.examinationRegulation.studyProgram.name),e.addTranslationField(i.item.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name),e.addTranslationField(i.item.examinationRegulationVersion.name)}!function(){i.$on("action.update",function(){a()}),a(),n.replaceWith(t('<div class="text-center">\n                    <p>\n                        <cc-i18n data-key="{{item.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name.id}}" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"></cc-i18n>\n                    </p>\n                    <p data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">\n                        <cc-i18n data-key="{{item.examinationRegulationVersion.examinationRegulation.studyProgram.name.id}}"></cc-i18n> (<cc-i18n data-key="{{item.examinationRegulationVersion.name.id}}"></cc-i18n>)\n                    </p>\n                    <p data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}">\n                     <cc-i18n class="label label-primary text-uppercase" data-ng-class="{\n                        \'label-primary\': item.courseJournal.studyStatus === \'ACTIVE\',\n                        \'label-secondary\': item.courseJournal.studyStatus !== \'ACTIVE\'\n                        }" data-key="entity.StudyStatus.{{item.courseJournal.studyStatus}}"\n                    </p></div>')(i))}()}}}e.$inject=["I18nService","$compile"],angular.module("ccFrontend").directive("ccTranscript",e)}(),function(){"use strict";function e(e,t,i){return{restrict:"E",link:function(n,a,o){function r(){!function(t){var i=n._.kebabCase(n.widget.api.getCollectionRenderer(n.widget._scope.$parent));t.append("<cc-"+i+"-collection-renderer></cc-"+i+"-collection-renderer>"),e(t)(n),a.append(t)}(angular.element("<div />"))}n._=i,t(function(){r()})}}}e.$inject=["$compile","$timeout","_"],angular.module("ccFrontend").directive("ccCollectionRenderer",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/collection/collectionrenderer/bubbles"),restrict:"E",transclude:!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccBubblesCollectionRenderer",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/collection/collectionrenderer/default"),restrict:"E",transclude:!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDefaultCollectionRenderer",e)}(),function(){"use strict";function e(e,t){return{templateUrl:e.directiveTemplate("uiitem/widget/collection/collectionrenderer/list"),restrict:"E",transclude:!0,link:function(e,i,n){e.getMappingsWithItems=function(){return t.filter(e.itemConfig.collectionWidgetPathViewDefinitionMapping,function(i){var n=t.filter(e.widget.data,function(e){return e.$viewDefinition===i.mutableViewDefinition});return!!n.length})}}}}e.$inject=["UrlService","_"],angular.module("ccFrontend").directive("ccListCollectionRenderer",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/collection/collectionrenderer/studiesjournal"),restrict:"E",transclude:!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccStudiesJournalCollectionRenderer",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["ApplicationService","CollectionWidgetApiService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/collection/widget"),restrict:"E",controller:n};function n(e,t,i){i.widget={collection:{selected:null,actions:{initialized:!1,selectedEntity:null,createActions:[],createActionVisibility:[],deleteActions:[]},icons:{}},isEditingMode:e.isEditingMode},function(){t.create(i)}()}}e.$inject=["UrlService","$compile","_"],angular.module("ccFrontend").directive("ccCollectionWidget",e)}(),function(){"use strict";function e(e,t){return i.$inject=["CustomWidgetApiService","$scope"],{templateUrl:t.directiveTemplate("uiitem/widget/custom/widget"),restrict:"E",controller:i};function i(t,i){i.widget={custom:{}},i.isEditingMode=e.isEditingMode,function(){t.create(i)}()}}e.$inject=["ApplicationService","UrlService"],angular.module("ccFrontend").directive("ccCustomWidget",e)}(),function(){"use strict";function e(e,t){return i.$inject=["$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/description"),restrict:"E",transclude:!0,controller:i,scope:{de
1scription:"=",visible:"="}};function i(e){e.toggle=function(){e.visible=!e.visible,e.$emit("chart.rendered")},e.description&&(t.addTranslationField(e.description),e.$emit("chart.rendered"))}}e.$inject=["UrlService","I18nService"],angular.module("ccFrontend").directive("ccWidgetDescription",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p){const m="UNDETERMINED";function v(){$("#"+g.fieldInformation.model.elementId).focus()}function h(e){e||(e=g);const t=e.field.allowedValues;return t&&t.items&&!f.isNil(t.items[e.valuePath])?t.items[e.valuePath]:[]}function b(e){e||(e=g);const t=e.field.allowedValues;return f.isUndefined(t)?{}:f.pick(t,["data","model","viewDefinitionId"])}function w(e,t){t||(t=g);let i=t.valuePath;f.endsWith(i,"._item")&&(i=i.substring(0,i.length-6));const n=(i=i.substring(0,i.lastIndexOf(".")))+"."+e;return"id"===e?f.get(t,n):t.widget.api.field.getReferencedFieldValue(n,t)}function y(e){return e||(e=g),f.get(e,e.valuePath)}function x(){const e=o.getTranslation("entity."+g.field.entity+"."+g.field.name+".noSelection");return f.startsWith(e,"???")?"":e}function C(){return"LocalDate"===g.field.type}function S(){return"LocalDateTime"===g.field.type}function E(){return"File"===g.field.type}function A(e,t,i,n){if(n||(n=g),i||(i=n.valuePath),f.isNil(e))n.widget.api.field.setValue(i,null,t,n);else{let a;a=n.field.enum||n.field.selectFromModelAttributes||n.field.selectFromModelActions?f.isArray(e)?f.map(e,e=>f.isPlainObject(e)&&f.has(e,"_item.id")?{_item:e._item.id}:e):f.isPlainObject(e)&&f.has(e,"id")?e.id:e:"Duration"===n.field.type?function(e){return e*g.field.selectedDurationUnit.milliseconds}(e):e,n.widget.api.field.setValue(i,a,t,n),t&&(n.dirty=!0),I(n)}}function I(e){e||(e=g);const t=y(e);if(f.isArray(t)?f.each(t,t=>c.resolveDisplayName(t._item,e.widget.model.fullModel)):c.resolveDisplayName(t,e.widget.model.fullModel),!e.widget.api.isViewMode(e)&&a.isSelectableViewFieldDisplayType(e.field.editDisplayType)){const t=h(e);if(e.field.allowedValues&&f.has(e.field.allowedValues,"items")){f.each(t,t=>{c.resolveDisplayName(t,e.field.allowedValues.model)});const i=b(e);if(e.field.enum)e.field.allowedValues.items[e.valuePath]=t;else if(i.viewDefinitionId){const n=i.model[i.viewDefinitionId];f.isNull(n.defaultOrder)?e.field.allowedValues.items[e.valuePath]=D(t):e.field.allowedValues.items[e.valuePath]=function(e,t){const i=[],n=[],r=t.defaultOrder.split(","),s=o.getCurrentLocale();return r.forEach(e=>{const o=e.split(":"),r=a.getNameOfTypeAtEndOfStringPath(t.entity+"."+o[0]);i.push("TranslationField"===r?o[0]+"."+s.iso:o[0]),n.push(o[1])}),f.sortByOrder(e,i,n)}(t,n)}else e.field.allowedValues.items[e.valuePath]=D(t)}}if(C()||S()){const t=C()?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm";e.$displayName=u("amDateFormat")(p(f.get(e,e.valuePath)||null),t)}}function D(e){return f.sortBy(e,e=>e.$displayName)}g.bindValuePath=function(e){const t=y();if(f.isUndefined(e))return E()?f.isEmpty(t)?null:t.name:f.isPlainObject(t)?t:f.isNil(t)||""===t?null:t;if(C()||S()){const t=C()?"yyyy-MM-dd":"yyyy-MM-dd-HH-mm";A(c.transformDate(f.map(u("date")(e,t).split("-"),function(e){return parseInt(e)})),!0,g.valuePath)}else E()?A(f.extend(y(),{name:e}),!0):A(""===e?null:e,!0)},g.downloadFile=function(t){f.isUndefined(t)&&(t=y());const i=g.widget,n=g.valuePath.replace(/widget\.data\./,"");e.downloadFile(i.data.$viewDefinition,i.data.id,i.context.contextId,n,t.id)},g.filterAllowedValuesSuggestions=function(e){if(!f.isNil(g.field)&&!f.isNil(g.field.allowedValues)&&!f.isNil(g.field.allowedValues.items[g.valuePath]))return s.filterAllowedValuesSuggestions(g.field.allowedValues.items[g.valuePath],e)},g.focusField=v,g.getAllowedValueItemCount=function(){const e=h();return f.isUndefined(e)?0:e.length},g.getAllowedValueItems=h,g.getAllowedValuesModel=function(){const e=g.field.allowedValues;return f.isUndefined(e)?null:e.model},g.getIcon=function(e){void 0===e&&(e=y());if(!g.field.enum)return null;const t=l.getEnumType(g),i=f.isString(e)?e:e.id,n=l.getEnumIcon(t,i);return n||null},g.getReferencedFieldValue=w,g.getUnselectValueNameOverride=x,g.getValue=y,g.handleFieldLabelClick=function(e){if(t.isEditingMode())return;v(),n.toggleShowHelpField(e)},g.hasAllowedValuesModel=function(){const e=b();return f.has(e,"model")},g.hasError=function(){if(!f.isUndefined(g.widget.status.messages)){const e=g.valuePath.replace(/widget\.data\./,"").replace(/_item\./g,"");return f.has(g.widget.status.messages,e)}return!1},g.hasExactlyOneAllowedValue=function(e){e||(e=g);const t=h(e);return!f.isUndefined(t)&&1===t.length},g.hasFieldActions=function(e){return(e.fieldInformation.model.fieldActions||[]).length>0},g.hasVisibleFieldActions=function(e){return!!e.fieldActionVisibility&&!!Object.values(e.fieldActionVisibility).find(e=>!0===e)},g.hasIcon=function(e){e||(e=y());if(!g.field.enum)return!1;const t=l.getEnumType(g),i=f.isString(e)?e:e.id;return!!l.getEnumIcon(t,i)},g.hasPriority=function(){return"DEFAULT"!==g.field.priority},g.hasUnselectValueNameOverride=function(){return!f.isEmpty(x())},g.isDateField=C,g.isDateTimeField=S,g.isEditingMode=t.isEditingMode,g.isImportant=function(){return"IMPORTANT"===g.field.priority},g.isMandatory=function(e){e||(e=g);return"MANDATORY"===e.field.priority&&(!(!f.isUndefined(e.usePriorityOnlyIfReferencedFieldEquals)&&!f.isNull(e.usePriorityOnlyIfReferencedFieldEquals))||e.field.usePriorityOnlyIfReferencedFieldEquals===w(e.field.referencedField,e))},g.isValueActive=function(e){const t=y();return g.field.enum||f.isString(t)?t===e.id:!!f.isObject(t)&&t.id===e.id},g.isValueEmpty=function(){const e=y();return c.isEmpty(e)||g.field.enum&&e===m},g.isValueFalse=function(){return!1===y()},g.isValueTrue=function(){return!0===y()},g.setDirty=function(e){e||(e=g);e.widget.api.setDirty(e)},g.setValue=A,g.updateDisplayNames=I,g.fieldActionVisibility={}
1,function(){g.$watch("fieldInformation.model",function(){g._=f,g.objectModel=g.fieldInformation.objectModel,g.field=g.fieldInformation.model,g.valuePath=g.fieldInformation.valuePath,g.depth=g.fieldInformation.depth,g.collection=g.fieldInformation.collection,g.hideLabel=g.fieldInformation.hideLabel,g.dirty=!1,Promise.all((g.fieldInformation.model.fieldActions||[]).map(e=>r.getDefinition(e.name))).then(e=>{g.fieldActions=e,g.fieldActionIds=e.map(e=>e.id),t.broadcast("action.update")})}),g.$on("i18n.switch",function(){g.updateDisplayNames(g)}),g.fieldInformation.footer||g.$watch("widget.form.mode",function(e,t){!f.isNil(g.field.allowedValuesUnregister)&&f.isFunction(g.field.allowedValuesUnregister)&&(g.field.allowedValuesUnregister(),delete g.field.allowedValuesUnregister),a.loading().then(function(){if(!g.widget.api.isViewMode(g)&&g.widget.api.field.getOriginalValuePermissions(g.valuePath,g).$write)if(a.isSelectableViewFieldDisplayType(g.field.editDisplayType))s.initAllowedValues(g);else{const e=g.widget.api.field.getValue(g.valuePath,g);if(f.isNil(e)&&g.field.embeddedObjectView&&!g.field.collection){const e=d.createObject(g.widget.model.fullModel,g.field.embeddedObjectView,!0,g.widget.defaultValues);g.widget.api.field.setValue(g.valuePath,e,!0,g)}}})})}()}function t(e){return t.$inject=["I18nService","ViewDefinitionModelService","HelpService","ModelService","$scope","CCUtils","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/field"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r){function s(e){return e.embeddedObjectView&&!e.selectable?o.transformArrays([t.createObject(a.widget.model.fullModel,e.embeddedObjectView,!0,a.widget.defaultValues)])[0]:"TYPEAHEAD"===e.editDisplayType&&1===r.get(e,"allowedValues.items[valuePath]",[]).length?e.allowedValues.items[e.valuePath][0]:null}function c(){r.has(a.widget.model,"baseModel")&&(a.hideLabelAttribute=a.widget.api.isViewMode(a)?"hideViewLabel":"hideEditLabel",a.showCollectionButtons=!a.widget.api.isViewMode(a),a.fields=[],function t(i,c,l,d,u,g){a.fieldVisibilityInEdit=a.fieldVisibilityInEdit||{};r.each(i.fields,f=>{const p=Object.assign({},g),m=l+"."+f.name;f.elementId||(f.elementId=o.getCuid());const v=a.widget.api.isViewMode(a)?f.viewDisplayType:f.editDisplayType;if("HIDDEN"===v)return;const h=a.widget.api.field.isVisibleInView(l,a,f),b=a.widget.api.field.isVisibleInEdit(l,a,f);if(a.widget.api.isViewMode(a))a.fieldVisibilityInEdit={};else if(b){if(!a.fieldVisibilityInEdit[m]&&(f.defaultValue||!f.entity)){const e=a.widget.api.field.getValue(m,a);if(null===e){const e=r.get(a.widget.defaultValues,`${i.viewDefinitionId}.${f.name}`);r.isNil(e)||(o.isDateOrDateTime(e)?a.widget.api.field.setValue(m,o.transformDate(e),!0,a):a.widget.api.field.setValue(m,e,!0,a))}}a.fieldVisibilityInEdit[m]=!0}else a.fieldVisibilityInEdit[m]=!1,h||a.widget.api.field.canEdit(m,a)&&a.widget.api.field.clearField(m,!1,f,a);const w=function(e,t,i){return a.widget.api.isViewMode(a)?t?e.viewDisplayType:"HIDDEN":i?e.editDisplayType:t?e.viewDisplayType:"HIDDEN"}(f,h,b);if("HIDDEN"===w)return;r.isUndefined(f.nameOverride)||e.addTranslationField(f.nameOverride),r.isUndefined(f.hint)||e.addTranslationField(f.hint);const y=n.getAttribute(i.entity,f.name);if(p.documentSafeHtml=p.documentSafeHtml||y&&y.documentSafeHtml||void 0,f.collection){const e=["MULTISELECT","MULTITYPEAHEAD","COLLECTIONSIZE","ENUMVALUECOUNTER"];if(r.isNull(c)||r.isArray(c[f.name])||(c[f.name]=[]),(f.minimumCollectionSize||f.initialCollectionSize)&&!r.isNull(c)){const e=Math.max(f.minimumCollectionSize||0,f.initialCollectionSize||0);for(let t=c[f.name].length;t<e;t++)c[f.name].push({_item:s(f)})}a.fields.push(Object.assign({},p,{objectModel:i,valuePath:m,model:f,depth:d,hideLabel:"FIELDHINT"===w||"FIELDHEADER"===w||f[a.hideLabelAttribute]||u,showHelp:f.showHelp,footer:!1,hideCollectionField:!r.contains(e,w),collectionPermissions:a.widget.api.field.getOriginalValuePermissions(m,a),displayType:w})),r.isNull(c)||r.contains(e,w)||r.each(c[f.name],function(e,n){const o=m+"["+n+"]._item",s=a.widget.model.fullModel[f.embeddedObjectView];a.fields.push(Object.assign({},p,{objectModel:s,valuePath:o,fieldModel:i,model:f,depth:s.fields.length<2?d:d+1,showHelp:f.showHelp,collectionSize:c[f.name].length,collectionIndex:n,hideLabel:!0,footer:!1,collectionPermissions:a.widget.api.field.getOriginalValuePermissions(m,a),displayType:w})),f.embeddedObjectView&&"OBJECT"===w&&t(s,e._item,o,s.fields.length<2?d:d+1,s.fields.length<2,p),1===c[f.name].length&&1===r.get(f,"allowedValues.items[valuePath]",[]).length||a.fields.push(Object.assign({},p,{objectModel:s,valuePath:o,fieldModel:i,model:f,depth:s.fields.length<2?d:d+1,showHelp:f.showHelp,collectionSize:c[f.name].length,collectionIndex:n,hideLabel:!0,footer:!0,collectionPermissions:a.widget.api.field.getOriginalValuePermissions(m,a),displayType:w}))}),a.fields.push(Object.assign({},p,{objectModel:i,valuePath:m,model:f,depth:d,collectionSize:r.contains(e,w)?void 0:r.isNull(c)?0:c[f.name].length,collectionFooter:!r.contains(e,w),showHelp:f.showHelp,hideLabel:f[a.hideLabelAttribute],footer:!0,collectionPermissions:a.widget.api.field.getOriginalValuePermissions(m,a),displayType:w}))}else a.fields.push(Object.assign({},p,{objectModel:i,valuePath:m,fieldModel:i,model:f,depth:d,hideLabel:"FIELDHINT"===w||"FIELDHEADER"===w||f[a.hideLabelAttribute]||u,showHelp:f.showHelp,footer:!1,displayType:w})),c&&f.embeddedObjectView&&"OBJECT"===w&&t(a.widget.model.fullModel[f.embeddedObjectView],c[f.name],m,f[a.hideLabelAttribute]?d:d+1,!1,p),a.fields.push(Object.assign({},p,{objectModel:i,valuePath:m,fieldModel:i,model:f,depth:d,showHelp:f.showHelp,hideLabel:f[a.hideLabelAttribute]||u,footer
1:!0,displayType:w}))})}(a.widget.model.baseModel,a.widget.data,"widget.data",0,!1))}a.fields=[],a.addElementToCollection=function(e,t,i){if(r.isNumber(i)){const i=r.get(a,e.substring(0,e.lastIndexOf("["))),n=parseInt(e.substring(e.lastIndexOf("[")+1,e.lastIndexOf("]")));i.splice(n+1,0,{_item:s(t)})}else{const i=r.get(a,e);i.push({_item:s(t)})}a.widget.api.setDirty(a),c()},a.removeElementFromCollection=function(e){const t=r.get(a,e.substring(0,e.lastIndexOf("["))),i=parseInt(e.substring(e.lastIndexOf("[")+1,e.lastIndexOf("]")));t.splice(i,1),a.widget.api.setDirty(a),c()},a.moveElementInCollection=function(e,t){const i=r.get(a,e.substring(0,e.lastIndexOf("["))),n=parseInt(e.substring(e.lastIndexOf("[")+1,e.lastIndexOf("]"))),o=i[n+t];i[n+t]=i[n],i[n]=o,a.widget.api.setDirty(a),c()},a.setTranslationParameters=function(e,t){const i=e.valuePath.substring(0,e.valuePath.lastIndexOf("."));return r.get(t._scope,i)},a.toggleShowHelpField=i.toggleShowHelpField,a.loadFieldHelpTexts=i.loadFieldHelpTexts,function(){a.$watch("widget.data",c,!0),a.$on("form.updateFields",c)}()}}t.$inject=["UrlService"],e.$inject=["ActionService","ApplicationService","StringEncodingService","HelpService","ModelService","I18nService","ActionInvocationService","AllowedValuesService","CCUtils","EnumService","ViewDefinitionModelService","$filter","$scope","_","moment"],angular.module("ccFrontend").directive("ccField",t).controller("directives.uiitem.widget.form.FieldApiController",e)}(),function(){"use strict";function e(e,t){return{restrict:"E",link:function(i,n,a){!function(){var o=a.valuePath.split(".");o[o.length-1]===o[o.length-2]&&(a.valuePath=t.dropRight(o).join("."));var r=i.widget.api.field.isMandatory(a.valuePath,i.widget._scope,i.field),s=i.widget.api.field.isImportant(i.field),c=!r&&!s;n.replaceWith(e('<i style="margin-right: 8px; margin-top: 6px" data-ng-if="'+c+'" class="fa fa-bookmark default prefix-icon info-icon cc-solid-icon" data-ng-class="{\'error\': widget.api.field.hasError(\''+a.valuePath+'\', widget._scope) }" title="{{\'widget.form.fieldPriority.default\'|i18n:this}}"></i><i style="margin-right: 8px; margin-top: 6px" data-ng-if="'+r+'" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon" data-ng-class="{\'error\': widget.api.field.hasError(\''+a.valuePath+'\', widget._scope) }" title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}"></i><i style="margin-right: 8px; margin-top: 6px" data-ng-if="'+s+'" class="fa fa-bookmark important prefix-icon info-icon cc-solid-icon" data-ng-class="{\'error\': widget.api.field.hasError(\''+a.valuePath+"', widget._scope) }\" title=\"{{'widget.form.fieldPriority.important'|i18n:this}}\"></i>")(i))}()}}}e.$inject=["$compile","_"],angular.module("ccFrontend").directive("ccPriorityMarker",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldhelp"),restrict:"E",transclude:!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFieldHelp",e)}(),function(){"use strict";function e(e,t){t.hasEnd=function(){return e.hasEnd(t.getValue())},t.hasStart=function(){return e.hasStart(t.getValue())},t.isActive=function(){return e.isActive(t.getValue())}}e.$inject=["DatePeriodService","$scope"],angular.module("ccFrontend").controller("AbstractDatePeriodController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){function s(){r.isNil(o.activeDayOfWeekNumber)?o.selectableArrayItem=null:(o.selectableArrayItem=o.activeDayOfWeekNumber-1<0?o.activeDayOfWeekNumber+6:o.activeDayOfWeekNumber-1,o.selectableArrayItem="en"===o.currentLocale?o.selectableArrayItem+1:o.selectableArrayItem,o.selectableArrayItem=7===o.selectableArrayItem?0:o.selectableArrayItem)}function c(){const e=o.getValue();r.isEmpty(e)||(o.$displayName=a("amDateFormat")(e,l()),o.calendarWeek=u())}function l(){return o.isDateField()?"DDMMYYYY":"DDMMYYYYHHmm"}function d(e){const t=o.valuePath;if(r.isEmpty(o.$displayName))e&&o.setValue(null,!0,t),o.calendarWeek=" ";else{const i=n(o.$displayName,l(),!0),a=[];a.push(i.year()),a.push(i.month()),a.push(i.date()),o.isDateTimeField()&&(a.push(i.hour()),a.push(i.minute())),e&&o.setValue(a,!0,t),i.isValid()?(o.datePickerValue=a,o.calendarWeek=u()):o.datePickerValue=[]}}function u(){if(!o.getValue())return" ";const e=n(o.getValue());return e.isValid()?e.week():" "}this.$onInit=function(){c(),d(!1),o.$on("form.updateDates",(e,t)=>{t===o.valuePath&&(c(),d())}),o.$on("i18n.switch",s)},o.currentLocale=t.getCurrentLocale().iso,o.getInputMask=function(){return o.isDateField()?"99.99.9999":"99.99.9999, 99:99"},o.getPickerIcon=function(){return o.isDateField()?"fa-calendar-alt":"fa-clock"},o.getPickerOptions=function(){return{minView:o.isDateField()?"day":"minute",dropdownSelector:"#"+o.selectorId}},o.selectorId=i.getCuid(),o.selectDate=function(e){o.bindValuePath(e),c(),o.dirty=!0},o.updateDisplayName=c,o.updateFormData=d,o.calendarWeek=" ",o.numberOfColumns=5,o.selectableArrayItem=null,o.beforeRender=function(e,t){o.numberOfColumns=o.calendarWeeksVisible?6:5,s(),r.isNil(o.selectableArrayItem)||"day"!==e||(t.filter(e=>
1n(e.utcDateValue).day()!==o.activeDayOfWeekNumber).forEach(e=>{e.selectable=!1}),t.forEach(e=>{r.extend(e,{week:n(e.utcDateValue).week()})}))}}e.$inject=["CalendarWeekService","I18nService","CCUtils","moment","$filter","$scope","_"],angular.module("ccFrontend").controller("AbstractDatePickerController",e)}(),function(){"use strict";function e(e,t,i,n,a){function o(){var e=n.field.referencedField;return a.isNil(e)?null:e}function r(){return n.isValueEmpty()?[]:n.getValue().split(".")}function s(){n.modelContext.displayName=t.getTranslation("entity."+n.modelContext.name+".$entity"),a.each(n.modelContext.attributes,function(e){e.$displayName=t.getTranslation("entity."+n.modelContext.name+"."+e.name)}),n.modelContext.attributes=a.sortBy(n.modelContext.attributes,"$displayName")}function c(){e.loading().then(function(){var t=function(){var e=o();if(!a.isNil(e)){var t=n.getReferencedFieldValue(e,n);if(!a.isNil(t))return t}var r=i.getContext("filterEntity");if(!a.isNil(r))return r;n.initializer.failed=!0}();if(e.isEntity(t)){n.validEntity=!0,n.baseModelContext=t,n.translatedBaseModelName="entity."+e.getNameOfTypeAtEndOfStringPath(n.baseModelContext)+".$entity";var r=n.baseModelContext,c=n.getValue();"null"===r?n.modelContext=null:a.isEmpty(c)?n.modelContext=e.resolvePath(r):n.modelContext=e.resolvePath(r+"."+c),function(){n.modelContext.attributes=a.filter(n.modelContext.attributes,n.unsuitableValuesPredicate)}(),s()}else n.validEntity=!1})}this.$onInit=function(){n.loading=!0,e.loading().then(function(){var e=o();a.isNil(e)||n.$watch("widget.data."+e,function(){c()}),c(),n.loading=!1})},n.getPathTokens=r,n.getTranslation=function(t){const i=e.getNameOfTypeAtEndOfStringPath(n.baseModelContext);return e.translatePath(i+"."+r().join("."))[t]},n.removeTokens=function(e){var t=a.get(n,n.valuePath).split(".");0===e?n.setValue(null,!0):n.setValue(a.take(t,e).join("."),!0);c()},n.selectToken=function(e){var t=n.getValue()||"";n.setValue(a.isEmpty(t)?e.name:t+"."+e.name,!0),c()},n.unsuitableValuesPredicate=function(e){return!0},n.$on("i18n.switch",s)}e.$inject=["ModelService","I18nService","NavigationService","$scope","_"],angular.module("ccFrontend").controller("AbstractPathPickerController",e)}(),function(){"use strict";function e(e){return t.$inject=["CCUtils","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/address/address"),restrict:"E",controller:t};function t(e,t,i){function n(e){if(i.isNil(e))return!0;const t=i.isEmpty(e.type),n=i.isNil(e.lines)||0===e.lines.length||1===e.lines.length&&(i.isEmpty(e.lines[0]._item)||i.isEmpty(e.lines[0]._item.line)),a=i.isEmpty(e.zipcode),o=i.isEmpty(e.city),r=i.isEmpty(e.county),s=i.isEmpty(e.region),c=i.isEmpty(e.country);return t&&n&&a&&o&&r&&s&&c}function a(){const e=t.getValue();t.isEmptyAddress=n(e),i.isNil(e)?(t.typeName=null,t.countyName=null,t.regionName=null,t.countryName=null):(t.typeName=o(e.type),t.countyName=o(e.county),t.regionName=o(e.region),t.countryName=o(e.country))}function o(n){return i.isNil(n)?null:e.resolveDisplayName(n,t.widget.model.fullModel)}t.$on("widget.reload",a),a(),t.isAddressEmpty=n}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccAddress",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/archivepath/archivepath"),restrict:"E",controller:t};function t(e,t,i,n){this.$onInit=function(){e.loading().then(function(){t.getContextAsPromise("filterEntity").then(function(e){i.context=e})})},i.getPath=function(){if(!n.isEmpty(i.context)){const t=e.getNameOfTypeAtEndOfStringPath(i.context);if(!n.isNil(t))return e.translatePath(t+"."+i.getValue())}return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccArchivePath",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/archivepathpicker/archivepathpicker"),restrict:"E",controller:t};function t(e,t,i){angular.extend(this,t("AbstractPathPickerController",{$scope:e})),e.unsuitableValuesPredicate=function(e){return!e.isVersion&&!e.isId&&"COMPOSITION_BACK_REFERENCE"!==e.effectiveRelationType&&"READ_ONLY"!==e.accessType}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccArchivePathPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/AuthAttributeMappingPath/AuthAttributeMappingPath"),restrict:"E",controller:t};function t(e,t,i,n){i.getPath=function(){return e.translatePath("Person."+i.getValue())}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccAuthAttributeMappingPath",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/authattributemappingpathpicker/authattributemappingpathpicker"),restrict:"E",controller:t};function t(e,t,i){angular.extend(this,t("AbstractPathPickerController",{$scope:e})),e.unsuitableValuesPredicate=function(e){return!e.isVersion&&!e.isId&&!e.collection&&"COMPOSITION"===e.effectiveRelationType||"NONE"===e.effectiveRelationType}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccAuthAttributeMappingPathPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["DatePeriodService","$scope","$filter","moment","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/basicdateperiod/basicdateperiod"),restrict:"E",controller:t};function t(e,t,i,n,a,o){angular.extend(this,a("AbstractDatePeriodController",{$scope:t})),t.getStartDate=function(){var a=t.getValue(),o=e.isDateTimePeriod(a.startDate)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY";return e.hasStartForValue(a)?i("amDateFormat")(n(a.startDate),o):null},t.getEndDate=function(){var a=t.getValue(),o=e.isDateTimePeriod(a.endDate)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY";return e.hasEndForValue(a)?i("amDateFormat")(n(a.endDate),o):null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccBasicDatePeriod",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/boolean/boolean"),restrict:"E",controller:t};function t(e,t,i){function n(n){const a=e.getTranslationWithDefault("entity."+t.field.entity+"."+t.field.name+"."+n,"$defaults.attribute."+t.field.name+"."+n);
1return"empty"!==n?i.startsWith(a,"???")?e.getTranslation("common."+n):a:i.startsWith(a,"???")?"​":a}t.getEmptyLabel=function(){return n("empty")},t.getFalseLabel=function(){return n("false")},t.getTrueLabel=function(){return n("true")}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccBoolean",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/category/category"),restrict:"E",controller:t};function t(e,t,i){t.getCategoryNameId=function(){var i=t.getValue();return e.addTranslationField(i.name),i.name.id}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCategory",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/checkbox/checkbox"),restrict:"E",controller:t};function t(e,t,i){function n(n){const a=e.getTranslationWithDefault("entity."+t.field.entity+"."+t.field.name+"."+n,"$defaults.attribute."+t.field.name+"."+n);return"empty"!==n?i.startsWith(a,"???")?e.getTranslation("common."+n):a:i.startsWith(a,"???")?"​":a}this.$onInit=function(){t.isMandatory()&&t.isValueEmpty()&&t.setValue(!1,!1)},t.getEmptyLabel=function(){return n("empty")},t.getFalseLabel=function(){return n("false")},t.getTrueLabel=function(){return n("true")}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCheckbox",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/collectionsize/collectionsize"),restrict:"E",controller:t};function t(e,t){e.getCollectionSize=function(){var i=e.getValue();return t.isArray(i)?i.length:0}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccCollectionSize",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/color/color"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccColor",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","NavigationService","CMS_DATA","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/colorpicker/colorpicker"),restrict:"E",controller:t};function t(e,t,i,n,a){n.pickerOptions={showButtons:!1,showInput:!0,showPalette:!0,showInitial:!0,allowEmpty:!0,hideAfterPaletteSelect:!0,preferredFormat:"hex"},n.pickerPalette=[],this.$onInit=function(){n.color=n.getValue(),t.hasContext("themeId")&&t.getContextAsPromise("themeId").then(function(t){a.isUndefined(t)||e.readObjects({viewDefinitionId:i.view.themeColorPaletteView,objectId:t},n.widget).then(function(e){var t=a.pluck(e.data[0].colorPalette,"color");t.length>0&&(n.pickerPalette=t)})}),n.$watch("color",function(e,t){n.setValue(e)})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccColorPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$filter","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/date/date"),restrict:"E",controller:t};function t(e,t,i,n){e.getFormattedDate=function(){var n=e.isDateField()?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm";return t("amDateFormat")(i(e.getValue()),n)},e.isEmptyDate=function(){var t=e.getValue();return n.isEmpty(t)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDate",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["$scope","$controller","_"],i.put("templates/datetimepicker.html",t.getDatePickerTemplate()),{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/dateofmondayweekpicker/dateofmondayweekpicker"),restrict:"E",controller:n};function n(e,t,i){angular.extend(this,t("AbstractDatePickerController",{$scope:e})),e.activeDayOfWeekNumber=1,e.calendarWeeksVisible=!0}}e.$inject=["UrlService","DatePickerService","$templateCache"],angular.module("ccFrontend").directive("ccDateOfMondayWeekPicker",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["$scope","$controller","_"],i.put("templates/datetimepicker.html",t.getDatePickerTemplate()),{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/dateofsundayweekpicker/dateofsundayweekpicker"),restrict:"E",controller:n};function n(e,t,i){angular.extend(this,t("AbstractDatePickerController",{$scope:e})),e.activeDayOfWeekNumber=0,e.calendarWeeksVisible=!0}}e.$inject=["UrlService","DatePickerService","$templateCache"],angular.module("ccFrontend").directive("ccDateOfSundayWeekPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/datepath/datepath"),restrict:"E",controller:t};function t(e,t,i,n){this.$onInit=function(){e.loading().then(function(){i.context=t.getContext("$modelContext")||t.getContext("filterEntity")})},i.getPath=function(){if(!n.isEmpty(i.context)){const t=e.getNameOfTypeAtEndOfStringPath(i.context);if(!n.isNil(t))return e.translatePath(t+"."+i.getValue())}return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDatePath",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/datepathpicker/datepathpicker"),restrict:"E",controller:t};function t(e,t,i){angular.extend(this,t("AbstractPathPickerController",{$scope:e})),e.isValidPath=function(){return"LocalDate"===e.modelContext.name||"LocalDateTime"===e.modelContext.name},e.unsuitableValuesPredicate=function(e){return!e.isSimpleType||"LocalDateTime"===e.type||"L
1ocalDate"===e.type}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDatePathPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["DatePeriodService","$scope","$filter","moment","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/dateperiod/dateperiod"),restrict:"E",controller:t};function t(e,t,i,n,a,o){angular.extend(this,a("AbstractDatePeriodController",{$scope:t})),t.getStartDate=function(){var a=t.getValue(),o=e.isDateTimePeriod(a.startDate)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY";return e.hasStartForValue(a)?i("amDateFormat")(n(a.startDate),o):null},t.getEndDate=function(){var a=t.getValue(),o=e.isDateTimePeriod(a.endDate)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY";return e.hasEndForValue(a)?i("amDateFormat")(n(a.endDate),o):null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDatePeriod",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["$scope","$controller"],t.put("templates/datetimepicker.html",i.getDatePickerTemplate()),{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/datepicker/datepicker"),restrict:"E",link:function(e,t){t[0].querySelector("input").setAttribute("id",e.fieldInformation.model.elementId)},controller:n};function n(e,t){angular.extend(this,t("AbstractDatePickerController",{$scope:e})),e.activeDayOfWeekNumber=void 0,e.calendarWeeksVisible=!1}}e.$inject=["UrlService","$templateCache","DatePickerService"],angular.module("ccFrontend").directive("ccDatePicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","ActionService","AllowedValuesService","CCUtils","$q","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/displayname/displayname"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r){function s(){var e=o.getValue();return r.isNil(o.widget.api.model.getBaseModel(o.widget._scope))||!o.widget.api.model.getBaseModel(o.widget._scope).useNewPermissions||r.isNil(e)||r.isPlainObject(e)?a.when():i.createLoadAllowedValuesNewPermissionsFunction(o)([]).then(function(t){var i=n.transformArrays(n.reduceRecords(t.data),!0),a=r.filter(i,"id",e);1===a.length&&(!function e(t,i){i.$displayPattern=t.model[i.$viewDefinition].displayPattern;r.forOwn(i,function(i){r.isPlainObject(i)&&e(t,i),r.isArray(i)&&r.forEach(r.filter(i,r.isPlainObject),function(i){e(t,i)})})}(t,a[0]),o.setValue(a[0],!1))})}this.$onInit=function(){e.loading().then(function(){s().then(function(){o.updateDisplayNames()}),o.$on("widget.reload",function(){s().then(function(){o.updateDisplayNames()})}),o.$on("field.updateDefaultValue",function(e,t){r.eq(o.field,t)&&s().then(function(){o.updateDisplayNames()})})})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDisplayName",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","DurationService","ModelService","CMS_DATA","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/duration/duration"),restrict:"E",controller:t};function t(e,t,i,n,a,o){function r(e){if(a.loading)return 0;var i=t.durationToNumberAndUnit(e,a.defaultUnitMillis,a.durationUnits);return o.isNil(i)?(a.selectedDurationUnit=null,0):(a.selectedDurationUnit=i.unit,i.number)}!function(){a.loading=!0,a.getDurationValueAsNumber=r,function(){var o=i.getAttribute(a.objectModel.entity,a.field.name);e.readObjects(n.view.durationUnits,a.widget).then(function(e){a.durationUnits=t.getDurationUnitsInRange(e,o.minDurationUnitMillis,o.maxDurationUnitMillis),a.defaultUnitMillis=t.getDefaultDurationUnit(e,o.minDurationUnitMillis,o.maxDurationUnitMillis),a.loading=!1})}()}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDuration",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ModelService","DurationService","CCUtils","CMS_DATA","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/durationpicker/durationpicker"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r){var s=t.getAttribute(o.objectModel.entity,o.field.name);this.$onInit=function(){e.readObjects(a.view.durationUnits,o.widget).then(function(e){const t=r.isNil(s)?6e4:s.minDurationUnitMillis,n=r.isNil(s)?36e5:s.maxDurationUnitMillis,a=r.isNil(s)?6e4:s.defaultDurationUnitMillis,c=i.getDurationUnitsInRange(e,t,n),l=i.getDefaultDurationUnit(e,a,t,n);if(o.field.durationUnits=c,r.isNil(o.getValue()))o.field.selectedDurationUnit=l;else{var d=i.durationToNumberAndUnit(o.getValue(),l,c);o.displayValue=d.number,o.field.selectedDurationUnit=d.unit}})},o.displayValue=null,o.select=function(e){o.field.selectedDurationUnit=e,o.setValue(o.displayValue,!0)},o.selectorId=n.getUuid()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDurationPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["GradingService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/dynamicgradepicker/dynamicgradepicker"),restrict:"E",controller:t};function t(e,t,i){t.dirty=!1,t.freeInput={value:null}
1,t.setGradingSystem=function(n){e.selectGradingSystem(t,t.getValue(),n),function(){var n=t.getValue(),a=e.getGradingSystem(n.gradingSystem);t.gradingSystem=a,i.isNil(a)?(t.gradeSpecifications=[],t.gradeSpecificationsExists=!1,t.setValue(null),t.dirty=!0):(t.gradeSpecifications=e.getGradeSpecifications(a.id),t.gradeSpecificationsExists=a.gradeSpecifications.length,t.selectGrade(t,n,a.id,t.gradeSpecifications[0],t.freeInput.value))}()},function(){e.linkGradingApi(t);var n=t.getValue();e.loading().then(function(){if(t.gradingSystems=e.getGradingSystems(),i.isNil(n)||i.isNil(n.gradingSystem))t.gradingSystem=null,t.gradeSpecifications=[],t.gradeSpecificationsExists=!1,t.value=null;else{var a=e.getGradingSystem(n.gradingSystem);if(t.gradingSystem=a,!i.isNil(a)){t.gradeSpecifications=e.getGradeSpecifications(a.id),t.gradeSpecificationsExists=!!a.gradeSpecifications.length;var o=e.isNumeric(a.id),r=e.hasFixedNumericScale(a.id),s=e.isNumericGradeInScale(n);o&&(!r||r&&!s)&&(t.freeInput.value=n.numericGrade)}}})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccDynamicGradePicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","CMS_DATA","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/email/email"),restrict:"E",controller:t};function t(e,t,i,n){this.$onInit=function(){e.readObjects(t.view.emailAccountSettingsDomain,i).then(function(e){i.domain=e.data[0].domain})},i.getEmailAddress=function(){var e=i.getValue();if(!n.isEmpty(e))return e.indexOf("@")>-1?e:e+"@"+i.domain;return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEmail",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/entityname/entityname"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEntityName",e)}(),function(){"use strict";function e(e){return t.$inject=["EnumService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/enumvalue/enumvalue"),restrict:"E",controller:t};function t(e,t,i){t.getLabelKey=function(){var n=t.getValue(),a=e.getEnumType(t);return i.isNull(n)?null:"entity."+a+"."+n}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEnumValue",e)}(),function(){"use strict";function e(e){return t.$inject=["EnumService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/enumvaluecounter/enumvaluecounter"),restrict:"E",controller:t};function t(e,t,i){t.renderValues=function(){var n=i.map(t.getValue(),function(e){return e._item});if(i.isNil(n)||i.isEmpty(n)||0===n.length)return"";var a=t.widget.model.fullModel[t.field.embeddedObjectView],o=e.getEnumValuesFromWithinObjectCollection(a,n),r=e.getEnumTypeFromWithinObjectCollection(a);return e.renderEnumValuesAndCountsAsText(o,r)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEnumValueCounter",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","DatePeriodService"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/EventPeriod/EventPeriod"),restrict:"E",controller:t};function t(e,t){function i(){return e.bindValuePath()||{}}e.dirty=!1,e.getValueNullSafe=i,e.getDisplayName=function(e){const n=i();return t.getDateDisplayName(n,e,n.allDay)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccEventPeriod",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["CCUtils","$scope","moment","_"],t.put("templates/datetimepicker.html",i.getDatePickerTemplate()),{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/eventperiodpicker/eventperiodpicker"),restrict:"E",controller:n};function n(e,t,i,n){function a(e){return function(s){var c=t.bindValuePath()||{};if(void 0===s)return c[e];if(c[e]=s,t.bindValuePath(c),t.$dirty[e]=!0,"allDay"===e&&!0===s){var l=a("endTime")();if(!n.isNil(l)){var d=i(l),u=0!==d.hours()||0!==d.minutes();a("endTime")(r(d,u))}var g=a("startTime")();if(!n.isNil(g)){var f=i(g);a("startTime")(r(f,!1))}o("endTime",!0)}else o("endTime",c.allDay);o("startTime",!1)}}function o(e,a){var o=n.clone(t.bindValue(e)()),r=i(o);r.isValid()&&(a&&0===r.hours()&&0===r.minutes()&&r.subtract(1,"days"),t.$displayName[e]=r.format(c().pattern))}function r(e,t){var i=[];return s()&&(e.hour(0).minute(0),t&&e.add(1,"days")),i.push(e.year()),i.push(e.month()),i.push(e.date()),i.push(e.hour()),i.push(e.minute()),i}function s(){return!0===a("allDay")()}function c(){var e=s();return{inputMask:e?"99.99.9999":"99.99.9999, 99:99",pickerIcon:e?"fa-calendar-alt":"fa-clock",pattern:e?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm"}}function l(){return{startTime:t.widget.api.field.hasError(t.valuePath+".startTime",t),endTime:t.widget.api.field.hasError(t.valuePath+".endTime",t)}}t.startTimeSelectorId=e.getUuid(),t.endTimeSelectorId=e.getUuid(),t.$displayName={startTime:"",endTime:""},t.$dirty={startTime:!1,endTime:!1},t.bindValue=a,t.isAllDay=s,t.updateFormData=function(e){if(n.isEmpty(t.$displayName[e]))a(e)(null);else{var l=i(t.$displayName[e],c().pattern);if(l.isValid()){var d=r(l,s()&&"endTime"===e);a(e)(d)}else a(e)([])}o(e,s()&&"endTime"===e)},t.getConfiguration=c,t.getPickerOptions=function(e,t){return{minView:t?"day":"minute",dropdownSelector:"#"+e}},t.selectDate=function(e,t){var n=i(t);a(e)(r(n,s()&&"endTime"===e)),o(e,s()&&"endTime"===e)},t.hasErrors=l,t.getErrors=function(){var e=l().startTime?t.widget.api.field.getErrors(t.valuePath+".startTime",t.field,t):[],i=l().endTime?t.widget.api.field.getErrors(t.valuePath+".endTime",t.field,t):[];return n.union(e,i)},t.activeDayOfWeekNumber=void 0,t.calendarWeeksVisible=!1,t.numberOfColumns=5,t.selectableArrayItem=null,function(){o("startTime",!1),o("endTime",a("allDay")())}()}}e.$inject=["UrlService","$templateCache","DatePickerService"],angular.module("ccFrontend").directive("ccEventPeriodPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$sce","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/fieldheader/fieldheader"),restrict:"E",controller:t};function t(e,t,i,n){i.getHtml=function(){var a=i.field.staticValue;if(n.isNull(a)||n.isUndefined(a)){var o=i.getValue();return n.isObject(o)?(e.addTranslationField(o),t.trustAsHtml(e.getTranslation(o.id))):t.trustAsHtml(
1o)}return t.trustAsHtml(e.getTranslation(i.field.staticValue))},i.hasValue=function(){var e=i.field.staticValue,t=i.getValue();return!n.isNull(e)&&!n.isUndefined(e)||!n.isNull(t)&&!n.isUndefined(t)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFieldHeader",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","FieldApiService","ActionService","$sce","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/fieldhint/fieldhint"),restrict:"E",controller:t};function t(e,t,i,n,a,o){a.fieldHintI18n=null,a.fieldHintId=null,a.fieldHintText=null,this.$onInit=function(){if(!o.isNil(a.field.staticValue)&&""!==a.field.staticValue)return void(a.fieldHintI18n=a.field.staticValue);if(!o.isNil(a.field.pathToTranslationFieldForFieldHint)&&""!==a.field.pathToTranslationFieldForFieldHint){const i=t.getFieldValue(a.field.pathToTranslationFieldForFieldHint,a);return e.addTranslationField(i),void(a.fieldHintId=i.id)}if(!o.isNil(a.field.pathToTranslationFieldInSettingsForFieldHint)&&""!==a.field.pathToTranslationFieldInSettingsForFieldHint)return void i.readTranslationFieldFromSettingsForFieldHint({viewDefinitionId:a.widget.data.$viewDefinition,pathToField:a.valuePath.replace(/widget\.data\./,""),objectId:a.widget.data.id,pathObjectId:null}).then(function(t){o.isUndefined(t.data[0])||(e.addTranslationField(t.data[0]),a.fieldHintId=t.data[0].id)});const r=a.getValue();if(o.isObject(r))return e.addTranslationField(r),void(a.fieldHintId=r.id);a.fieldHintText=n.trustAsHtml(r)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFieldHint",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/file/file"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFile",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ModalService","ValidationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/fileselectorupload/fileselectorupload"),restrict:"E",controller:t};function t(e,t,i,n,a){function o(e,t){n.progress=Math.floor(e/t*100)}n.removeFile=function(){n.setValue(null,!0)},n.uploadFile=function(r){n.loading=!0,n.progress=0;const s=n.widget,c=r.files[0],l=n.valuePath.replace(/widget\.data\./,"");if(s.api.status.clearMessages(l,n),!a.isNil(c.size)&&!a.isNil(n.field.maximumFileSize)&&c.size>n.field.maximumFileSize){const e={text:"common.action.failed",messages:{}},a={i18n:"validation.file.tooLargeFileSize",parameters:{maximumFileSize:n.field.maximumFileSize,actualFileSize:c.size}};return e.messages[l]=a,s.api.status.setError(e,n),t.getAlert("validation.file.uploadFailedTitle","common.action.failed",[i.resolve(a,void 0,n)]),void(n.loading=!1)}e.uploadFile(s.model.baseModel.viewDefinitionId,n.widget,s.data.id,s.context.contextId,l,c,!1,o).then(function(){n.loading=!1})},n.uploadMimeTypesToArray=function(){return n.field.validFileMimeTypes.split(",")},n.lookupValue=function(){const t=n.widget,i=n.valuePath.replace(/widget\.data\./,"");return e.selectFile(t.model.baseModel.viewDefinitionId,n.widget,t.data.id,t.context.contextId,i)},n.loading=!1,n.progress=0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFileSelectorUpload",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filesize/filesize"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFileSize",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filesizepicker/filesizepicker"),restrict:"E",controller:t};function t(e,t){function i(){var i=e.getValue();if(t.isNil(i)||0===i)e.size=0,e.unit=e.fileSizeUnits[0];else{var n=Math.floor(Math.log(i)/Math.log(1024));e.size=i/Math.pow(1024,Math.floor(n)),e.unit=e.fileSizeUnits[n],e.size=i/Math.pow(1024,Math.floor(n)),e.unit=e.fileSizeUnits[n]}}function n(){var t=e.unit,i=e.size,n=e.fileSizeUnits.indexOf(t);if(-1===n)throw new Error("Invalid file size unit selected.");e.setValue(i*Math.pow(1024,n))}this.$onInit=function(){i()},e.fileSizeUnits=["bytes","KB","MB","GB","TB","PB"],e.unit=null,e.size=null,e.selectFileSizeUnit=function(t){e.unit=t,n()},e.getSelectedFileSizeUnit=i,e.calculateByteValue=n}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFileSizePicker",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filetype/filetype"),restrict:"E",controller:t};function t(e,t){e.getFiletypeNameId=function(){var i=e.getValue();return t.isUndefined(i)||t.isNull(i)?"common.contentType.application/octet-stream":"common.contentType."+i}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFileType",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ModalService","ValidationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/fileupload/fileupload"),restrict:"E",controller:t};function t(e,t,i,n,a){function o(e,t){n.progress=Math.floor(e/t*100)}n.removeFile=function(){n.setValue(null,!0)},n.uploadFile=function(r){n.loading=!0,n.progress=0;var s=n.widget,c=r.files[0],l=n.valuePath.replace(/widget\.data\./,"");if(s.api.status.clearMessages(l,n),!a.isNil(c.size)&&!a.isNil(n.field.maximumFileSize)&&
1c.size>n.field.maximumFileSize){const e={text:"common.action.failed",messages:{}},a={i18n:"validation.file.tooLargeFileSize",parameters:{maximumFileSize:n.field.maximumFileSize,actualFileSize:c.size}};return e.messages[l]=a,s.api.status.setError(e,n),t.getAlert("validation.file.uploadFailedTitle","common.action.failed",[i.resolve(a,void 0,n)]),void(n.loading=!1)}e.uploadFile(s.model.baseModel.viewDefinitionId,n.widget,s.data.id,s.context.contextId,l,c,!1,o).then(function(){n.loading=!1})},n.uploadMimeTypesToArray=function(){return n.field.validFileMimeTypes.split(",")},n.loading=!1,n.progress=0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFileUpload",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","NavigationService","I18nService","CCUtils","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filterattribute/filterattribute"),restrict:"E",controller:t};function t(e,t,i,n,a,o){this.$onInit=function(){e.loading().then(function(){a.context=t.getContext("$modelContext")||t.getContext("filterEntity")})},a.getAttribute=function(){if(!o.isNull(a.context)&&!o.isUndefined(a.context)){var t=e.resolvePath(a.context),r=o.find(t.attributes,{name:a.getValue()});if(!o.isUndefined(r))return n.isMacro(a.widget.data.stringValue)?a.widget.form.filterAttributeType="String":"id"!==r.name&&e.isBasicType(r.type)?a.widget.form.filterAttributeType=r.type:a.widget.form.filterAttributeType="Object",i.getTranslation("entity."+t.name+"."+r.name)}return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFilterAttribute",e)}(),function(){"use strict";function e(e){return t.$inject=["NavigationService","I18nService","ModelService","CCUtils","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filterattributepicker/filterattributepicker"),restrict:"E",controller:t};function t(e,t,i,n,a,o){function r(e){a.selectedMode=e,s(a.getValue(),null)}function s(e,t){if(o.isUndefined(e)||o.isNull(e))a.widget.form.filterAttributeType=null;else if("value"===a.selectedMode){var n=o.find(a.modelContext.attributes,{name:e});i.isEnum(n.type)?a.widget.form.filterAttributeType="Enum":(a.widget.form.filterAttributeType=i.isBasicType(n.type)?n.type:"Object",a.widget.form.filterAttributeType="id"===n.name?"Object":a.widget.form.filterAttributeType)}else a.widget.form.filterAttributeType="String";if(e!==t)for(var r in a.widget.data)o.endsWith(r,"Value")&&(a.widget.data[r]=null);a.$emit("form.updateFields")}function c(){a.modelContext.displayName=t.getTranslation("entity."+a.modelContext.name+".$entity"),o.each(a.modelContext.attributes,function(e){e.$displayName=t.getTranslation("entity."+a.modelContext.name+"."+e.name)}),a.modelContext.attributes=o.sortBy(a.modelContext.attributes,"$displayName")}function l(){i.loading().then(function(){var t=(a.widget.api.isCreateMode(a.widget._scope)?e.getContext("$modelCreationContext"):e.getContext("$modelContext"))||e.getContext("filterEntity");a.modelContext=i.resolvePath(t),function(){a.modelContext.attributes=o.filter(a.modelContext.attributes,function(e){var t;return t=i.isEnum(e.type)?"Enum":i.isBasicType(e.type)?e.type:"Object",e.collection===a.field.filterIsCollectionOperator&&o.contains(a.field.filterOperatorAttributeTypes,t)})}(),c()})}this.$onInit=function(){a.loading=!0,i.loading().then(function(){a.selectedMode=n.isMacro(a.widget.data.stringValue)?"variable":"value",a.setMode=r,l(),a.$watch(a.valuePath,s),a.loading=!1})},a.isActive=function(e){return a.getValue()===e.name},a.select=function(e){a.setValue(e.name,!0),l()},a.update=l,a.$on("i18n.switch",c)}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFilterAttributePicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filterpath/filterpath"),restrict:"E",controller:t};function t(e,t,i,n){this.$onInit=function(){e.loading().then(function(){i.context=t.getContext("$modelContext")||t.getContext("filterEntity")})},i.getPath=function(){if(!n.isEmpty(i.context)){const t=e.getNameOfTypeAtEndOfStringPath(i.context);if(!n.isNil(t))return e.translatePath(t+"."+i.getValue())}return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFilterPath",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","I18nService","NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filterpathpicker/filterpathpicker"),restrict:"E",controller:t};function t(e,t,i,n,a){function o(){return n.isValueEmpty()?[]:n.getValue().split(".")}function r(){n.modelContext.displayName=t.getTranslation("entity."+n.modelContext.name+".$entity"),a.each(n.modelContext.attributes,function(e){e.$displayName=t.getTranslation("entity."+n.modelContext.name+"."+e.name)}
1),n.modelContext.attributes=a.sortBy(n.modelContext.attributes,"$displayName")}function s(){e.loading().then(function(){var t=(n.widget.api.isCreateMode(n.widget._scope)?i.getContext("$modelCreationContext"):n.baseModelContext)||i.getContext("filterEntity"),o=n.getValue();a.isEmpty(o)?n.modelContext=e.resolvePath(t):n.modelContext=e.resolvePath(t+"."+o),function(){n.modelContext.attributes=a.filter(n.modelContext.attributes,function(t){return t.collection||e.isManagedType(t.type)})}(),r()})}this.$onInit=function(){n.loading=!0,e.loading().then(function(){n.baseModelContext=i.getContext("$modelContext")||i.getContext("filterEntity"),n.translatedBaseModelName="entity."+e.getNameOfTypeAtEndOfStringPath(n.baseModelContext)+".$entity",s(),n.loading=!1})},n.getPathTokens=o,n.getTranslation=function(t){const i=e.getNameOfTypeAtEndOfStringPath(n.baseModelContext);return e.translatePath(i+"."+o().join("."))[t]},n.removeTokens=function(e){var t=a.get(n,n.valuePath).split(".");0===e?n.setValue(null,!0):n.setValue(a.take(t,e).join("."),!0);s()},n.selectToken=function(e){var t=n.getValue()||"";n.setValue(a.isEmpty(t)?e.name:t+"."+e.name,!0),s()},n.$on("i18n.switch",r)}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFilterPathPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ModelService","CCUtils","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/filtervariable/filtervariable"),restrict:"E",controller:t};function t(e,t,i,n,a){this.$onInit=function(){t.loading().then(function(){const o=n.valuePath.substring(0,n.valuePath.indexOf(n.field.name))+n.field.referencedField;n.objectType=a.get(n,o);const r=n.getValue();if(!a.isEmpty(n.objectType)&&!a.isEmpty(r)){const a=t.getNameOfTypeAtEndOfStringPath(n.objectType);e.readFilterValues({entity:a,objectId:r},n.widget).then(function(e){n.selectedObjectModel=e.model;var t=i.transformArrays(e.data)[0];t&&(i.resolveDisplayName(t,e.model),n.objectDisplayName=t.$displayName)})}})},n.objectDisplayName=null,n.objectType=null}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFilterVariable",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","GradingService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/grade/grade"),restrict:"E",controller:t};function t(e,t,i,n){var a=i.$watch(i.valuePath,function(o,r){n.isNil(o)||n.isNil(o.gradingSystem)||t.loading().then(function(){i.gradingSystem=t.getGradingSystem(o.gradingSystem),e.addTranslationField(i.gradingSystem.name),a()})})}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccGrade",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/html/html"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccHtml",e)}(),function(){"use strict";function e(e){i.$inject=["ActionInvocationService","AuthService","CCUtils","Quill","CMS_DATA","$scope","$element","$timeout","$sanitize","_"];const t=[{action:"bold",icon:"fa-bold"},{action:"italic",icon:"fa-italic"},{action:"underline",icon:"fa-underline"},{action:"strike",icon:"fa-strikethrough"},{action:"blockquote",icon:"fa-square-quote"},{action:"code-block",icon:"fa-rectangle-code"},{action:"list",value:"bullet",icon:"fa-list-ul"},{action:"list",value:"ordered",icon:"fa-list-ol"},{action:"script",value:"super",icon:"fa-superscript"},{action:"script",value:"sub",icon:"fa-subscript"},{action:"indent",value:"+1",icon:"fa-indent"},{action:"indent",value:"-1",icon:"fa-outdent"},{action:"color",icon:"fa-palette"}];return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/htmleditor/htmleditor"),restrict:"E",controller:i};function i(e,i,n,a,o,r,s,c,l,d){function u(){r.bindValuePath(function(e){if(e){if("<p><br></p>"===e)return"";const t=e.replace(/^<p>/,"").replace(/<\/p>$/,"").trim();if(!t.match(/<[A-Za-z-="]+>/))return t}return e}(r.quill.root.innerHTML))}this.$onInit=function(){i.hasUserStories([o.userStory.managePublicFiles]).then(e=>{r.canSelectFiles=e[0]}),c(()=>{!function(){const e=a.import("ui/icons");t.forEach(t=>{let i=t.action;t.value&&(i+=`.${t.value}`),d.set(e,i,`<i class="fa ${t.icon}"></i>`)})}(),function(){const e=s.find(".cc-quill-editor-text").get(0),t=s.find(".cc-quill-toolbar-wrapper").get(0);r.quill=new a(e,{modules:{toolbar:t,history:{delay:1e3,maxStack:100,userOnly:!0}},theme:"snow"}),r.quill.on("text-change",u),r.quill.root.id=r.fieldInformation.model.elementId}()})},r.rawViewActive=!1,r.canSelectFiles=!1,r.bindValuePathRaw=function(e){void 0!==e&&(r.quill.root.innerHTML=`<p>${l(e)}</p>`);return r.bindValuePath(e)},r.toggleRawView=function(){r.rawViewActive=!r.rawViewActive,r.rawViewActive?r.quill.disable():r.quill.enable(!0)},r.handleFileActionResult=function(e){const t=e.getOneResult(1).result.file,i=r.quill.getSelection(!0).index;r.quill.insertText(i,t.name,"link","/pub/file/name/"+t.name)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccHtmlEditor",e)}
1(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/icon/icon"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccIcon",e)}(),function(){"use strict";function e(e,t){return i.$inject=["TypeaheadService","ViewDefinitionModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/iconpicker/iconpicker"),restrict:"E",controller:i};function i(e,i,n,a){n.items=a.map(t,function(e){var t="fa-"+e;return{id:t,icon:t,$displayName:e}}),n.field.allowedValues={items:{[n.valuePath]:n.items}},n.allowedValuesModel=i.createModel(null,[{id:"4d7e663d-a596-4473-831f-6beafc04ef6c",name:"icon",viewDisplayType:"ICON"},{id:"936ee962-f219-421b-9a23-d959adc3686e",name:"id",viewDisplayType:"LABEL"}]),n.lookupValue=function(){var t=n.getValue(),i=[];if(!a.isEmpty(t)){var o=null;a.isString(t)&&(o=t),a.isNil(o)||(i=[o])}var r={data:n.items,model:n.allowedValuesModel},s=a.keys(n.allowedValuesModel)[0];return e.lookupValue(n,i,r,s).then(function(e){n.bindIcon(e[0])},function(){})},n.bindIcon=function(e){return a.isUndefined(e)?n.bindValuePath():null===e||a.isString(e)?n.bindValuePath(e):n.bindValuePath(e.icon)},n.getPreviewIcon=function(){var e=n.bindValuePath();return a.isPlainObject(e)&&null!==e&&(e=e.icon),"fa "+e}}}e.$inject=["UrlService","FA_ICONS"],angular.module("ccFrontend").directive("ccIconPicker",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/image/image"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccImage",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","ModalService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/imageupload/imageupload"),restrict:"E",controller:t};function t(e,t,i,n){this.$onInit=function(){i.$watch("widget.form.imageData",function(t){if(!n.isUndefined(t)&&n.isObject(n.get(t,i.valuePath))){const a=n.get(t,i.valuePath).file;if(!n.isUndefined(a)){n.set(i.widget.form.imageData,i.valuePath,void 0);const t=i.widget,o=i.valuePath.replace(/widget\.data\./,"");!function(e){const t=e.name,i=t.lastIndexOf(".");e.name=t.substr(0,i).concat(".png")}(a),e.uploadFile(t.model.baseModel.viewDefinitionId,i.widget,t.data.id,t.context.contextId,o,a,!0)}}},!0)},i.initCropping=function(e){if(i.fileElement=e,n.isNull(e.files[0]))return;i.widget.form.imageData={};const a=e.accept.trim().split(","),o=e.files[0];if(a.includes(o.type))t.getImageCropper(o,i.fileElement).result.then(function(e){i.widget.form.imageData[i.valuePath]=e},function(){delete i.fileElement});else{const n=e.accept.trim().replaceAll("image/",".").split(",");t.getAlert("validation.imageUpload.badMime.message","common.error",n),delete i.fileElement}}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccImageUpload",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/indefault/indefault"),restrict:"E",controller:t};function t(e,t,i){function n(t){var n=e.getTranslation("common."+t);return i.startsWith(n,"???")?"":n}t.getFalseLabel=function(){return n("false")},t.getTrueLabel=function(){return n("true")}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccInDefault",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/indefaultpicker/indefaultpicker"),restrict:"E",controller:t};function t(e,t,i){function n(n){var a=e.getTranslationWithDefault("entity."+t.field.entity+"."+t.field.name+"."+n,"$defaults.attribute."+t.field.name+"."+n);return"empty"!==n?i.startsWith(a,"???")?e.getTranslation("common."+n):a:i.startsWith(a,"???")?"":a}this.$onInit=function(){t.isMandatory()&&t.isValueEmpty()&&t.setValue(!1,!1)},t.getEmptyLabel=function(){return n("empty")},t.getFalseLabel=function(){return n("false")},t.getTrueLabel=function(){return n("true")}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccInDefaultPicker",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/label/label"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccLabel",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","ActionService","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/link/link"),restrict:"E",controller:t};function t(e,t,i){function n(){"READY"===e.state?(e.previewReloadLocked=!0,t.getNextcloudShareContents(e.linkId,e.url,e.password).then(function(t){e.listing=t,e.previewReloadLocked=!1})):e.listing=[]}this.$onInit=function(){const t=e.getValue();i.isNil(t)||(e.linkId=t.id,e.state=i.isNil(t.generationStatus)?"PROVIDED_BY_USER":t.generationStatus,e.url=i.isNil(t.url)?null:i.escape(t.url),e.name=i.isEmpty(t.name)?e.url:i.escape(t.name),e.description=i.isEmpty(t.description)?e.name:i.escape(t.description),e.password=i.isNil(t.password)?null:t.password,n())},e.$on("widget.reload",this.$onInit),e.reloadPreview=n,e.linkId=null,e.state="PROVIDED_BY_USER",e.url=null,e.name=null,e.description=null,e.password=null,e.previewReloadLocked=!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccLink",e)}(),function(){"use strict";function e(e){return t.$inject=["MoneyService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/money/money"),restrict:"E",controller:t};function t(e,t){t.getMoneyDisplayName=function(){return e.getDisplayName(t.getValue())}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccMoney",e)}(),function(){"use strict";function e(e){return t.$inject=["MoneyService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/moneypicker/moneypicker"),restrict:"E",controller:t};function t(e,t,i){function n(e){if(i.isString(e)){var n=e;if(e=i.find(t.currencies,function(e){return e.iso===n}),i.isUndefined(e))throw new Error("unknown currency: "+n)}t.selectedCurrency=e,t.moneyType&&t.bindValuePath({amount:i.isNil(t.getValue())?null:t.getValue().amount,currency:e.iso})}this.$onInit=function(){"BigDecimal"===t.field.type&&(t.moneyType=!1),e.getCurrencies().then(function(e){t.currencies=e;var a=t.getValue();i.isNil(a)?n("EUR"):i.isNil(a.currency)?n("EUR"):t.selectedCurrency=i.find(t.currencies,function(e){return e.iso===a.currency})})},t.selectCurrency=n,t.bindAmountValuePath=function(e){if(i.isUndefined(e))return t.moneyType?i.isNil(t.bindValuePath())?null:t.bindValuePath().amount:t.bindValuePath();t.moneyType?t.bindValuePath({amount:e,currency:i.isNil(t.getValue())?null:t.getValue().currency}):t.bindValuePath(e)},t.selectedCurrency=null,t.moneyType=!0}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccMoneyPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/monthday/monthday"),restrict:"E",controller:t};function t(e,t){e.getFormattedDate=function(){if(t.isNil(e.getValue()))return;
1var i=e.getValue().split("-").filter(Boolean);return i[1]+"."+i[0]+"."},e.isEmptyDate=function(){var i=e.getValue();return t.isEmpty(i)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccMonthDay",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/monthdaypicker/monthdaypicker"),restrict:"E",controller:t};function t(e,t,i){function n(t){var n=e.valuePath;if(i.isNil(e.month)||i.isNil(e.day))e.setValue(null,t,n);else{var a=[];a.push(1972),a.push(e.month),a.push(e.day),e.setValue(a,t,n)}}e.getMonths=t.months,e.isMonthActive=function(t){return e.month===t},e.setMonth=function(t){e.month=t,n(!0)},e.updateFormData=n,function(){var a=e.getValue();if(!i.isNil(a)){var o=t(e.getValue(),"--MM-DD");i.isNil(o)||(e.day=o.date(),e.month=o.month(),n(!1))}}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccMonthDayPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/multiselect/multiselect"),restrict:"E",controller:t};function t(e,t){function i(i,n){return t.find(n,function(n){return t.isPlainObject(n)&&!!n._item&&(e.field.enum&&n._item===i.id||!e.field.enum&&n._item.id===i.id)})}e.isActive=function(t){return!!i(t,e.getValue())},e.select=function(n){var a=e.getValue();if(e.isActive(n)){var o=i(n,a),r=t.without(a,o);0===r.length&&r.push({_item:null}),e.setValue(r,!0)}else t.isNull(a)&&(a=[]),a.push({_item:n}),a=t.sortBy(t.filter(a,function(e){return!t.isNull(e._item)}),function(e){return e.$displayName}),e.setValue(a,!0)},e.getSortCriteria=function(e){if(t.isNil(e)||0===e.length)return"$displayName";if(e[0].hasOwnProperty("position"))return"position";return"$displayName"}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccMultiSelect",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["TypeaheadService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/multitypeahead/multitypeahead"),restrict:"E",link:function(e){e.removeHtml=function(e){return i.isNil(e)?"":"string"==typeof e?t.removeHtml(e):t.removeHtml(e.$displayName)}},controller:n};function n(e,i,n){function a(e){var a=i.getValue();n.find(a,function(t){return t._item&&t._item.id===e.id})||(n.isNil(e.$displayPattern)&&(e.$displayPattern=i.getAllowedValuesModel()[e.$viewDefinition].displayPattern),n.isNil(e.$displayName)&&(e.$displayName=t.resolveDisplayName(e,i.getAllowedValuesModel())),a.push({_item:e}),i.setValue(a,!0))}i.lookupString="",i.lookupValue=function(){e.lookupValue(i,[],i.prefetchedData).then(function(e){n.isNil(e[0])||a(e[0])},function(){})},i.removeValue=function(e){var t=i.getValue();t=n.filter(t,function(t){return t._item.id!==e._item.id}),n.isEmpty(t)&&(t=null);i.setValue(t,!0)},i.bindTypeaheadModel=function(e){if(n.isUndefined(e))return i.lookupString;n.isString(e)?i.lookupString=e:(i.lookupString="",a(e))},i.onKeydown=function(e){if(("Backspace"===e.key||8===e.which)&&0===i.lookupString.length){var t=i.getValue();t.pop(),n.isEmpty(t)&&(t=null),i.setValue(t,!0)}}}}e.$inject=["UrlService","CCUtils","_"],angular.module("ccFrontend").directive("ccMultiTypeahead",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/number/number"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccNumber",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/password/password"),restrict:"E",controller:i};function i(e,i,n){this.$onInit=function(){e.loading().then(function(){i.maxSize=e.getAttributeSize(i.objectModel.entity,i.field.name),i.widget.form.passwordsMatch=!0}),function(){t.requestActivePasswordPolicySettings(i.widget).then(function(e){i.activePasswordPolicies=e.activeSettings})}()},i.bindPasswordConfirmation=function(e){if(n.isNil(e))return n.isNil(i.confirmation)?(i.widget.form.passwordsMatch=!1,i.widget.action.canContinue=!1):(i.widget.form.passwordsMatch=i.getValue()===i.confirmation,i.widget.action.canContinue=i.widget.form.passwordsMatch),i.confirmation;i.confirmation=e,i.confirmationTouched=!0,i.widget.form.passwordsMatch=i.getValue()===i.confirmation,i.widget.action.canContinue=i.widget.form.passwordsMatch,i.setDirty()},i.confirmation=null,i.confirmationTouched=!1,i.activePasswordPolicies=[]}}e.$inject=["UrlService","ActionService"],angular.module("ccFrontend").directive("ccPassword",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/passwordplaceholder/passwordplaceholder"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPasswordPlaceholder",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/passwordwithoutconfirmation/passwordwithoutconfirmation"),restrict:"E",controller:t};function t(e,t){this.$onInit=function(){e.loading().then(function(){t.maxSize=e.getAttributeSize(t.objectModel.entity,t.field.name)})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPasswordwithoutconfirmation",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/percent/percent"),restrict:"E",controller:t};function t(e,t){e.getPercentDisplayName=function(){var i=e.getValue();t.isNil(i)&&(i=0);return i>1?i:(100*i).toFixed(2)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPercent",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/phone/phone"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPhone",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/preformattedtext/preformattedtext"),restrict:"E",controller:t};function t(e,t,i){}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccPreFormattedText",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/releasenotetype/releasenotetype"),restrict:"E",controller:t};function t(e,t){e.formatLabel=function(e){return t.startCase(t.snakeCase(e))},e.getIconForType=function(e){if("BUGFIX"===e)return"fa-circle icon-bug";if("ADMIN"===e)return"fa-keyboard icon-admin";if("IMPROVEMENT"===e)return"fa-angle-double-up icon-improvement";if("NEW_FEATURE"===e)return"fa-plus-square icon-new-feature";return"fa-ticket-alt"}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccReleaseNoteType",e)}(),function(){"use strict";function e(e){return t.$inject=["RRuleService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/rrule/rrule"),restrict:"E",controller:t};function t(e,t){function i(){return e.getDisplayName(t.getValue())}t.getDisplayName=i,t.$on("i18n.switch",i)}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccRecurrenceRule",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/select/select"),restrict:"E",controller:t};function t(e){const t="UNDETERMINED";e.getSelectableFields=function(){const i=e.field.allowedValues.items[e.valuePath];if(!e.field.enum)return i;return i.filter(e=>e.id!==t)},e.clearButtonAvailable=function(){const i=e.isMandatory();if(e.field.enum&&i)return!!e.field.allowedValues.items[e.valuePath].find(e=>e.id===t);return!i},e.clearButtonValue=function(){if(!e.isMandatory())return null;return e.field.allowedValues.items[e.valuePath].find(e=>e.id===t)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccSelect",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/shareableattributepath/shareableattributepath"),restrict:"E",controller:t};function t(e,t,i){this.$onInit=function(){e.loading().then(function(){t.pathString=t.getValue()})},t.getPath=function(){if(!i.isEmpty(t.pathString)){return e.translatePath("Person."+t.getValue())}return null}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccShareableAttributePath",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/shareableattributepathpicker/shareableattributepathpicker"),restrict:"E",controller:t};function t(e,t,i){angular.extend(this,t("AbstractPathPickerController",{$scope:e}))}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccShareableAttributePathPicker",e)}(),function(){"use strict";function e(e){return t.$inject=["GradingService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/staticgradepicker/staticgradepicker"),restrict:"E",controller:t};function t(e,t,i){function n(){const n=t.getValue();i.isNil(n.gradingSystem)?(t.gradingSystem={name:{id:"common.noValue"}},t.gradeSpecifications=[],t.gradeSpecificationsExists=0):e.loading().then(function(){if(t.gradingSystem=e.getGradingSystem(n.gradingSystem),!i.isNil(t.gradingSystem)){t.gradeSpecifications=e.getGradeSpecifications(n.gradingSystem),t.gradeSpecificationsExists=t.gradingSystem.gradeSpecifications.length;const i=e.isNumeric(n.gradingSystem),a=e.hasFixedNumericScale(n.gradingSystem),o=e.isNumericGradeInScale(n);i&&(!a||a&&!o)&&(t.freeInput.value=n.numericGrade)}})}t.dirty=!1,t.freeInput={value:null},function(){e.linkGradingApi(t),n(),t.$watch(function(){return t.getValue().gradingSystem},function(e,t){e!==t&&n()})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccStaticGradePicker",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/tag/tag"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTag",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/text/text"),restrict:"E",controller:t};function t(e,t,i){this.$onInit=function(){e.loading().then(function(){t.maxSize=e.getAttributeSize(t.objectModel.entity,t.field.name)})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccText",e)}(),function(){"use strict";function e(e){return t.$inject=["ModelService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/textarea/textarea"),restrict:"E",controller:t};function t(e,t,i){this.$onInit=function(){e.loading().then(function(){t.maxSize=e.getAttributeSize(t.objectModel.entity,t.field.name)})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTextarea",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/time/time"),restrict:"E",controller:t};function t(e,t,i){e.getFormattedTime=function(){return t(e.getValue()[0]._item+":"+e.getValue()[1]._item,"HH:mm").format("HH:mm")}
1,e.isEmptyTime=function(){var t=e.getValue();return i.isEmpty(t)||!Array.isArray(t)||t.length<2||i.isNil(t[0]._item)||i.isNil(t[1]._item)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTime",e)}(),function(){"use strict";function e(e){return t.$inject=["CCUtils","$scope","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/timepicker/timepicker"),restrict:"E",controller:t};function t(e,t,i,n){t.selectorId=e.getUuid(),t.selectTime=function(){(function(){var e=t.valuePath,n=i(t.time,t.pattern);if(n.isValid()){var a=[];a.push(n.hour()),a.push(n.minute()),t.setValue(a,!0,e)}else t.setValue([],!0,e)})(),t.dirty=!0},t.pattern="HH:mm",function(){var e=t.getValue();!n.isEmpty(e)&&Array.isArray(e)&&e.length>=2&&!n.isNil(e[0]._item)&&!n.isNil(e[1]._item)&&(t.time=i(e[0]._item+":"+e[1]._item,t.pattern))}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTimePicker",e)}(),function(){"use strict";function e(e){return t.$inject=["I18nService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/translationfield/translationfield"),restrict:"E",controller:t};function t(e,t,i){t.getTranslatedValue=function(){var n=t.getValue();return e.addTranslationField(n),i.isEmpty(n)?null:e.getTranslation(n.id)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTranslationField",e)}(),function(){"use strict";function e(e,t,i){return n.$inject=["TypeaheadService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/typeahead/typeahead"),restrict:"E",link:function(e){e.removeHtml=function(e){return i.isNil(e)?"":"string"==typeof e?t.removeHtml(e):t.removeHtml(e.$displayName)}},controller:n};function n(e,i,n){i.lookupValue=function(){var a=i.getValue(),o=[];if(!n.isEmpty(a)){var r=null;n.isString(a)&&t.isUuid(a)&&(r=a),n.isString(a)||n.isNil(a.id)||!t.isUuid(a.id)||(r=a.id),n.isNil(r)||(o=[r])}return e.lookupValue(i,o).then(function(e){n.isNil(e[0])?i.setValue(null,!0):(n.isNil(e[0].$displayPattern)&&(e[0].$displayPattern=i.getAllowedValuesModel()[e[0].$viewDefinition].displayPattern),i.setValue(e[0],!0))},function(){})}}}e.$inject=["UrlService","CCUtils","_"],angular.module("ccFrontend").directive("ccTypeahead",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/url/url"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccUrl",e)}(),function(){"use strict";function e(e){return t.$inject=["NavigationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/viewdefinition/viewdefinition"),restrict:"E",controller:t};function t(e,t,i){t.go=function(t){e.go("viewDefinition",!0,{viewDefinitionId:t})}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccViewDefinition",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/viewfield/viewfield"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccViewField",e)}(),function(){"use strict";function e(e){return t.$inject=["$scope","CalendarWeekService","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/weekofdate/weekofdate"),restrict:"E",controller:t};function t(e,t,i){e.getFormattedDate=function(){return t.getStartDateWithCalendarWeek(e.getValue())},e.isEmptyDate=function(){var t=e.getValue();return i.isEmpty(t)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccWeekOfDate",e)}(),function(){"use strict";function e(e){return t.$inject=["CalendarWeekService","$scope","$controller","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/fieldrenderer/weekofdateperiod/weekofdateperiod"),restrict:"E",controller:t};function t(e,t,i,n){angular.extend(this,i("AbstractDatePeriodController",{$scope:t})),t.getStartDate=function(){var i=t.getValue();return e.getStartDateWithCalendarWeek(i.startDate)},t.getEndDate=function(){var i=t.getValue();return e.getEndDateWithCalendarWeek(i.endDate)},t.getPeriod=function(){var i=t.getValue();return e.getPeriodWithCalendarWeeks(i.startDate,i.endDate)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccWeekOfDatePeriod",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionInvocationService","ModelService","$scope","CCUtils","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/formdefaultvalue"),restrict:"E",scope:{widget:"=",field:"=",valuePath:"="},controller:t};function t(e,t,i,n,a){function o(e){var t=!1,n=e[Object.keys(e)[0]];if(!a.isNil(n[0])&&!a.isNil(n[0].i18nKey)){var o,s=n[0].i18nKey;o=a.isNil(s.i18n)?s:s.i18n,a.isNil(o)||(t=a.startsWith(o,"validation."))}r(i,t?"defaultValue.validationError":"defaultValue.unknownError")}function r(e,t){var i=e.valuePath.replace(/widget\.data\./,"").replace(/_item\./g,"");e.widget.api.status.addMessage(i,t,e)}i.restore=function(){i.loading=!0,i.widget.api.status.clearStatus(i,!1),e.runInstance("GetDefaultValuesAction",i.widget,null,{suppressActionResult:!0}).then(function(e){var s,c=e.getOneResult(1);200===c.status?function(e,i){var o=e.getOneResult(1).result,r=a.get(o,i.valuePath.replace(/widget\.data\./,"").replace(/_item\./g,""));a.isPlainObject(r)&&(r=a.cloneDeep(r));n.isDateOrDateTime(r)?r=n.transformDate(r):a.isArray(r)?r=a.map(r,function(e){var t={};
1return a.isPlainObject(e)?t._item=a.cloneDeep(e):a.forEach(i.field.getAllowedValueItems(),function(i){i.id===e&&(t._item=i)}),t}):a.forEach(i.field.getAllowedValueItems(),function(e){e.id===r&&(r=e)});var s=t.resolveValuePath(i.valuePath,i.widget.model);!a.isNil(s)&&s.enum?i.widget.api.field.setValue(i.valuePath,r.id,!0,i.widget._scope):i.widget.api.field.setValue(i.valuePath,r,!0,i.widget._scope);i.widget._scope.$broadcast("form.updateDates",i.valuePath)}(e,i):a.isNil(c.error["*"])?o(c.error):(s=c.error["*"][0],a.isNil(s.i18nKey.i18n)?r(i,s.i18nKey):r(i,s.i18nKey.i18n));i.loading=!1},function(e){o(e),i.loading=!1})},i.loading=!1}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFormDefaultValue",e)}(),function(){"use strict";function e(e){return t.$inject=["ActionService","LogService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/form/formfilecollectiondownload"),restrict:"E",scope:{widget:"=",valuePath:"="},controller:t};function t(e,t,i){function n(e,i,n){t.debug(`[ccFormFileCollectionDownload] ${i}-${n}: ${e}`)}i.download=function(){i.loading=!0;const t=i.widget.data.id,a=i.valuePath.replace("widget.data.",""),o=i.widget.model.baseModel.viewDefinitionId;return n("Download startet.",o,a),e.downloadFilesAsZipFromFieldAction(i.widget,t,a).then(()=>{i.loading=!1,n("Download finished.",o,a)}).catch(()=>{i.loading=!1,n("Download failed.",o,a)})},i.loading=!1}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFormFileCollectionDownload",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","NoteService","I18nService","$scope","$filter","CCUtils","moment","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/note"),restrict:"E",controller:t};function t(e,t,i,n,a,o,r,s){n.deleteNote=function(e,i){const n=e.note.id;return t.deleteNote(e,n)},n.editNote=function(e){const i=e.note.id;return t.editNote(e,i)},n.getFormattedCreatedAt=function(e){return a("amDateFormat")(r(o.transformDate(e.note.createdAt)),"DD.MM.YYYY, HH:mm")},n.getFormattedModifiedAt=function(e){return a("amDateFormat")(r(o.transformDate(e.note.modifiedAt)),"DD.MM.YYYY, HH:mm")},n.isEditingMode=e.isEditingMode,n.markNoteAsDeleted=function(e){const i=e.note.id;return t.markNoteAsDeleted(e,i)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccNote",e)}(),function(){"use strict";function e(e){return t.$inject=["NoteService","ApplicationService","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/notes"),restrict:"E",controller:t,scope:{i18n:"@",displayName:"=",notes:"=",visible:"@ ",canCreate:"=",objectId:"="}};function t(e,t,i,n){i.isEditingMode=t.isEditingMode,i.createNote=function(t){e.createNote(t,t.objectId)},i.hasNotes=function(e){return!(n.isNil(e.notes)||!e.notes.length)}}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccNotes",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","FormWidgetApiService","$scope","NoteService","_"],{templateUrl:e.directiveTemplate("uiitem/widget/form/widget"),restrict:"E",controller:t};function t(e,t,i,n,a){i.widget={form:{initialFocus:null,notesVisible:!1,objectTemplates:{},sortableOptions:{handle:".drag-icon",update:function(e,t){i.widget.api.setDirty(i)},change:function(e,t){var n=t.item.scope(),o=n.valuePath.replace(/widget\.data\./,"");o=(o=a.dropRight(o.split(".")).join(".")).substring(0,o.lastIndexOf("[")),a.each(a.keys(i.widget.status.messages),function(e){a.startsWith(e,o)&&delete n.widget.status.messages[e]})}},crudActions:{},crudActionsInitialized:!1},isEditingMode:e.isEditingMode},function(){i.$on("formController",function(e,n){e.stopPropagation(),i.$formCtrl=n,t.create(i)}),i.$on("notes.reload",function(e,t){n.reloadNotes(i)})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccFormWidget",e).directive("ccFormReference",function(){return{restrict:"A",require:"^form",link:function(e,t,i,n){e.$emit("formController",n)}}})}(),function(){"use strict";function e(e,t){e.registerGraphRenderer(t)}e.$inject=["WidgetService","ProcessDefinitionGraphRenderer"],angular.module("cc3.app").factory("ProcessDefinitionGraphRenderer",function(){return{getOptions:function(){return{hideEdgesOnViewport:!0}},getLayout:function(){return{name:"dagre",fit:!0,roots:["start"],nodeSep:250,edgeSep:250,rankSep:250,rankDir:"LR"}},getStyle:function(){return[{selector:"node",style:{content:"data(name)","font-size":"12pt","text-valign":"bottom","text-halign":"center","text-margin-y":5,"background-color":"#2f4050"}},{selector:"edge",style:{"font-style":"italic",content:"data(name)",color:"#9dbaea",width:4,"font-size":"12pt","target-arrow-shape":"triangle","line-color":"#9dbaea","target-arrow-color":"#9dbaea","text-margin-y":-12,"curve-style":"bezier"}},{selector:".start-node",style:{"background-color":"#9dbaea"}},{selector:".autorotate",style:{"edge-text-rotation":"autorotate"}},{selector:".primary",style:{color:"#2f4050","line-color":"#2f4050","target-arrow-color":"#2f4050"}},{selector:".secondary",style:{color:"#1ab394","line-color":"#1ab394","target-arrow-color":"#1ab394"}},{selector:".danger",style:{color:"#800000","line-color":"#800000","target-arrow-color":"#800000"}},{selector:".success",style:{color:"#008000","line-color":"#008000","target-arrow-color":"#008000"}}]},systemName:"ProcessDefinitionGraphRenderer"}}).run(e)}(),function(){"use strict";function e(e,t){return i.$inject=["GraphWidgetApiService","$scope"],{templateUrl:t.directiveTemplate("uiitem/widget/graph/widget"),restrict:"E",controller:i};function i(t,i){i.widget={graph:{instance:{},metadata:{},selected:null,crudActions:{},crudActionsInitialized:!1}},i.isEditingMode=e.isEditingMode,function(){t.create(i)}()}}e.$inject=["ApplicationService","UrlService"],angular.module("ccFrontend").directive("ccGraphWidget",e)}(),function(){"use strict";function e(e,t,i){return{templateUrl:e.directiveTemplate("uiitem/widget/help"),restrict:"E",transclude:!0,link:function(e){e.getActionIconAsTag=function(e){if(e)return e.substring(e.indexOf(":")+1,e.length);return null},e.getActionName=function(e){if(void 0===e)return null;if(void 0!==e.config.name)return i.isString(e.config.name)?e.config.name:e.config.name.id;return"actions."+e.id},e.hasHotkeyHelpInformation=function(){if(i.isNil(e.widget.hotkeyHelpInformation))return!1;return Object.keys(e.widget.hotkeyHelpInformation).length>0},e.isTagIcon=function(e){return i.startsWith(e,"tag:")},function(){e.$on("action.update",function(){!function(){e.widget.showHelpMode&&t.loadWidgetHelpTexts(e.widget)}()})}()}}}e.$inject=["UrlService","HelpService","_"],angular.module("ccFrontend").directive("ccWidgetHelp",e)}(),function(){"use strict";function e(e){return t.$inject=["IFrameWidgetApiService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/iframe"),restrict:"E",controller:t};function t(e,t){t.widget={iframe:{url:null}},function(){e.create(t)}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccIframeWidget",e)}(),function(){"use strict";function e(e,t){return{framework:"highcharts",icon:"fa-chart-bar",type:"TWO_DIMENSIONAL",isDefault:!1,render:function(t,i){return e.getChartRenderConfiguration("c
1olumn",t,i)},systemName:"ColumnChartRenderer"}}function t(e,t){e.registerReportRenderer(t.type,t)}e.$inject=["ReportService","_"],t.$inject=["WidgetService","ColumnChartRenderer"],angular.module("cc3.app").factory("ColumnChartRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{framework:"highcharts",icon:"fa-chart-line",type:"TWO_DIMENSIONAL",isDefault:!1,render:function(t,i){return e.getChartRenderConfiguration("line",t,i)},systemName:"LineChartRenderer"}}function t(e,t){e.registerReportRenderer(t.type,t)}e.$inject=["ReportService","_"],t.$inject=["WidgetService","LineChartRenderer"],angular.module("cc3.app").factory("LineChartRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{framework:"highcharts",icon:"fa-chart-pie",type:"TWO_DIMENSIONAL",isDefault:!0,render:function(i,n){var a=t.filter(i,"isRelative",!1);return a.length>1?function(t){var i=t.map(e=>e.name),n=e.getColors("tol-rainbow",i.length),a=t.map((t,i)=>({id:e.getUuid(),color:n[i],data:t.data,name:t.name+" ("+t.sum+")",y:t.sum})),o=a.flatMap(e=>e.data.map((t,i)=>({id:t.id,parentId:e.id,color:Highcharts.Color(e.color).brighten(.25-i/e.data.length/4).get(),name:e.name,x:t.x,y:t.y})));return delete a.data,{options:{chart:{type:"pie"},plotOptions:{pie:{cursor:"pointer",tooltip:{pointFormatter:function(){return this.parentId?this.x+" ("+this.y+")":null}},point:{events:{legendItemClick:function(){this.series.chart.series[1].data.filter(e=>e.parentId===this.id).forEach(e=>e.setVisible(!e.visible))}}}}}},series:[{data:a,size:"60%",showInLegend:!0,dataLabels:{enabled:!1}},{data:o,size:"80%",showInLegend:!1,innerSize:"60%",dataLabels:{format:"{point.x} ({y})",style:{fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',fontSize:"9pt"}}}]}}(a):function(i){const n=e.getColors("tol-rainbow",i[0].data.length);return{options:{chart:{type:"pie"},legend:{title:{text:t.isEmpty(i)?"":i[0].name+" ("+i[0].sum+")",style:{fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',fontSize:"9pt"}},labelFormat:"{x} ({y})"},tooltip:{enabled:!1},plotOptions:{pie:{cursor:"pointer",colors:n,dataLabels:{format:"{point.x} ({y})",style:{fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',fontSize:"9pt"}},showInLegend:!0}}},series:i}}(a)},systemName:"PieChartRenderer"}}function t(e,t){e.registerReportRenderer(t.type,t)}e.$inject=["CCUtils","_"],t.$inject=["WidgetService","PieChartRenderer"],angular.module("cc3.app").factory("PieChartRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{framework:"agGrid",icon:"fa-table",type:"TWO_DIMENSIONAL",isDefault:!1,render:function(o,r){return function(o,r){const s=1===o.length,c=t.getLetters(o.length),l=r.widget.api.getReportGroupings(o,"$grouping",r),d=[];s&&d.push(function(){return{headerName:"",field:"$color",maxWidth:30,cellStyle:function(e){return{"background-color":e.value}},cellRenderer:function(e){return""},cellClass:a}}());d.push(function(){return{headerName:"",field:"$grouping",minWidth:400,cellRenderer:function(e){var t=e.value;return'<span title="'+t+'">'+t+"</span>"},cellClass:a}}());const u={$color:"",$grouping:e.getTranslation("widget.report.sum"),$totalsRow:!0};o.forEach((e,t)=>{const o="$reportSeries_"+t,r=function(e,t,o){var r=i.getTableCellRenderer(e.isRelative?"percent":"label");if(n.isNil(r))throw new Error("Couldn't find renderer.");return{headerName:e.name,headerTooltip:e.name,field:t,maxWidth:150,cellRenderer:e=>-1===e.value?"":r.render(e,null,o),cellClass:a}}(e,o);s||(r.headerName=c[t]),d.push(r),e.data.forEach(e=>{l[e.id]||(l[e.id]={}),l[e.id][o]=e.y}),u[o]=e.sum});const g=Object.values(l);return g.push(u),{columnDefs:d,rowData:g}}(o,r)},systemName:"TableRenderer"};function a(e){var t=[];return n.contains(["$grouping","$color"],e.colDef.field)||t.push("text-center"),e.data.$totalsRow&&t.push("report-sum"),t}}function t(e,t){e.registerReportRenderer(t.type,t)}e.$inject=["I18nService","CCUtils","WidgetService","_"],t.$inject=["WidgetService","TableRenderer"],angular.module("cc3.app").factory("TableRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{getChartRenderConfiguration:function(n,a,o){const r=e.filter(a,"isRelative",!1),s=r.length>1,c=o.widget.api.getReportGroupings(r,"name"),l=r.map(e=>{const t=e.data.map(e=>e.y);return{name:e.name,data:t,colorByPoint:!s||void 0,total:t.reduce((e,t)=>
1e+t,0)}}),d=function(e,t,i){return{options:{chart:{type:e},xAxis:{categories:Object.values(i).map(e=>e.name),crosshair:!0,labels:{rotation:-90,style:{fontWeight:"bold"}}},yAxis:{min:0,title:""},legend:{labelFormatter:function(){return this.name+" ("+this.userOptions.total+")"}},series:t},series:t}}(n,l,c);(function(e,i,n,a){if(a)e.options.colors=t.getColors("tol-rainbow",n);else{const t=Object.values(i).map(e=>e.$color);e.options.plotOptions={column:{colors:t}}}})(d,c,r.length,s),s||function(e){e.options.chart.events={load:function(){const e=this.xAxis[0].categories,t=this.series;this.xAxis[0].setCategories(i(e,t))}}}(d);return d},getSeriesLabel:i};function i(e,t){return Object.values(e).map((e,i)=>{const n=" ("+t[0].data[i].y+")";return e.endsWith(n)?e:e+n})}}e.$inject=["_","CCUtils"],angular.module("ccFrontend").factory("ReportService",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ApplicationService","ReportWidgetApiService","ClientService","$scope","$q"],{templateUrl:e.directiveTemplate("uiitem/widget/report/widget"),restrict:"E",controller:i};function i(e,i,n,a,o){const r=o.defer();a.widget={report:{chart:i.getDefaultChartConfig(a),grid:i.getDefaultGridConfig(a),i18n:{}},isEditingMode:e.isEditingMode},t.extend(a.widget.report.grid,{onGridReady:function(){r.resolve()}}),function(){r.promise.then(function(){i.create(a)}),a.$on("chart.rendered",()=>{n.doLayout()})}()}}e.$inject=["UrlService","_"],angular.module("ccFrontend").directive("ccReportWidget",e)}(),function(){"use strict";function e(e){return{templateUrl:e.directiveTemplate("uiitem/widget/status"),restrict:"E"}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccWidgetStatus",e)}(),function(){"use strict";function e(e,t,i,n){t(function(){e.focus()});var a="MANDATORY"===i.data.priority?[!0,!1]:[!0,!1,null];function o(e){var o=function(e,t){return(e%t+t)%t}(n.indexOf(a,i.data.value)+e,a.length);t(function(){i.data.value=a[o]})}i.hotkeysConfig={defaultHotKeysEnabled:!1,additionalHotKeys:[{eventName:"increaseBooleanValue",keys:"space"},{eventName:"increaseBooleanValue",keys:"right"},{eventName:"decreaseBooleanValue",keys:"left"}]},i.$on("hotkey.pressed.increaseBooleanValue",function(e,t){o(1),t.preventDefault()}),i.$on("hotkey.pressed.decreaseBooleanValue",function(e,t){o(-1),t.preventDefault()}),i.setValueAndFinish=function(e){i.data.value=e,i.data.finishEditFn()}}e.$inject=["$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccCheckboxTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){function c(e){s.isEmpty(e)||(t.$displayName=a("amDateFormat")(e,d()))}function l(){return"LocalDate"===t.data.type}function d(){return l()?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm"}function u(){if(s.isEmpty(t.$displayName))t.data.value=null;else{var i=e(t.$displayName,d()),n=[];i.isValid()?(n.push(i.year()),n.push(i.month()),n.push(i.date()),t.isDateTimeField()&&(n.push(i.hour()),n.push(i.minute())),t.data.value=n):t.data.value=[]}c(t.data.value)}o.put("templates/datetimepicker.html",r.getDatePickerTemplate()),n(function(){i.find("input")[0].focus()}),t.isDateField=l,t.isDateTimeField=function(){return"LocalDateTime"===t.data.type},t.getInputMask=function(){return t.isDateField()?"99.99.9999":"99.99.9999, 99:99"},t.getPickerIcon=function(){return t.isDateField()?"fa-calendar-alt":"fa-clock"},t.getPickerOptions=function(){return{minView:t.isDateField()?"day":"minute"}},t.selectDate=function(i){e.isMoment(i)||Array.isArray(i)||(i=e(i,d()));c(i),u(),t.dirty=!0,t.dropdownIsOpen=!1},t.updateDate=u,t.date=null,t.dropdownIsOpen=!1,t.activeDayOfWeekNumber=void 0,t.calendarWeeksVisible=!1,t.numberOfColumns=5,t.selectableArrayItem=null,function(){!s.isEmpty(t.data.value)&&Array.isArray(t.data.value)&&(t.date=e(t.data.value));c(t.date)}()}e.$inject=["moment","$scope","$element","$timeout","$filter","$templateCache","DatePickerService","_"],angular.module("ccFrontend").controller("ccDatePickerTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){o(function(){a.find("input")[0].focus()});var c=[];e.readObjects(t.view.durationUnits,r.widget).then(function(e){var t=r.$parent.data;c=n.getDurationUnitsInRange(e,t.minDurationUnitMillis,t.maxDurationUnitMillis)}),r.setValueAndFinish=function(e){var t=e.value,i=e.unit.milliseconds;r.data.value=t*i,r.data.finishEditFn()},r.getValueSuggestions=function(e){var t=[];return s.each(c,function(n){t.push(function(e,t){return{value:e,unit:t,$displayName:e+" "+i.getTranslation(t.name.id)}}(e,n))}),t}}e.$inject=["ActionService","CMS_DATA","I18nService","DurationService","$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccDurationPickerTableCellEditor",e)}
1(),function(){"use strict";function e(e,t,i,n,a){function o(e){if(a.isString(e)){var t=e;if(e=a.find(n.currencies,function(e){return e.iso===t}),a.isUndefined(e))throw new Error("unknown currency: "+t)}n.selectedCurrency=e,n.data.value={amount:a.isNil(n.data.value)?null:n.data.value.amount,currency:e.iso}}i(function(){t.find("input")[0].focus()}),e.getCurrencies().then(function(e){n.currencies=e;var t=n.data.value;a.isNil(t)?o("EUR"):a.isNil(t.currency)?o("EUR"):n.selectedCurrency=a.find(n.currencies,function(e){return e.iso===t.currency})}),n.selectCurrency=o,n.bindAmountValuePath=function(e){if(a.isUndefined(e))return a.isNil(n.data.value)?null:n.data.value.amount;n.data.value={amount:e,currency:a.isNil(n.data.value)?null:n.data.value.currency}},n.selectedCurrency=null}e.$inject=["MoneyService","$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccMoneyPickerTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n){t(function(){e.find("input")[0].focus()}),i.bindValue=function(e){if(n.isUndefined(e))return i.data.value;i.data.value=e}}e.$inject=["$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccNumberTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){n.find("a");a(function(){n.find("input")[0].focus()});var s,c=e.getGradingSystem(o.data.value.gradingSystem.value);if(e.isNumeric(o.data.value.gradingSystem.value))s=!0,o.type="number",o.title=t.getTranslation("entity.GradingSystem.numericGrades"),o.icon="fa-calculator";else{if(!e.isAlphanumeric(o.data.value.gradingSystem.value))throw new Error("Invalid grading system.");s=!1,o.type="text",o.title=t.getTranslation("entity.GradeSpecification.fixedAlphanumericGrade"),o.icon="fa-font"}o.gradingSystemPopOverText=function(e){var i=c.freeInputMinimumValue,n=c.freeInputMaximumValue,a=r.map(c.gradeSpecifications,function(e){return c.numericGrades?e.fixedNumericGrade:e.fixedAlphanumericGrade});a=r.sortBy(a,function(e){return e});var o=t.getTranslation("helpText.GradingSystem.numericGrade.fixedGrades",{GRADES:a.join(", ")});if(e.onlyPredefinedGradesAllowed.value||!c.numericGrades)return o;return t.getTranslation("helpText.GradingSystem.numericGrade.freeInput",{MIN:i,MAX:n})+" "+o}(o.data.value),o.bindValue=function(t){if(r.isUndefined(t))return s?o.data.value.numericGrade.value:o.data.value.alphanumericGrade.value;s?o.data.value.numericGrade.value=e.calculateGradeByUserInput(t,c,i.reduceRecord(o.data.value)):o.data.value.alphanumericGrade.value=t}}e.$inject=["GradingService","I18nService","CCUtils","$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccStaticGradePickerTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n){t(function(){e.find("input")[0].focus()}),i.bindValue=function(e){if(n.isUndefined(e))return i.data.value;i.data.value=n.isEmpty(e)?null:e}}e.$inject=["$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccTextTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n,a){n(function(){i.find("td.hours input").focus()}),t.pattern="HH:mm",t.updateTime=function(){var i=e(t.time,t.pattern),n=[];i.isValid()&&(n.push(i.hour()),n.push(i.minute()),t.data.value=n)},t.time=void 0,function(){!a.isEmpty(t.data.value)&&Array.isArray(t.data.value)&&t.data.value.length>=2&&(t.time=e(t.data.value[0]+":"+t.data.value[1],t.pattern))}(),t.hotkeysConfig={defaultHotKeysEnabled:!1,additionalHotKeys:[{eventName:"focusHours",keys:"left"},{eventName:"focusMinutes",keys:"right"}]},t.$on("hotkey.pressed.focusHours",function(e,t){i.find("td.hours input").focus(),t.preventDefault()}),t.$on("hotkey.pressed.focusMinutes",function(e,t){i.find("td.minutes input").focus(),t.preventDefault()})}e.$inject=["moment","$scope","$element","$timeout","_"],angular.module("ccFrontend").controller("ccTimePickerTableCellEditor",e)}(),function(){"use strict";function e(e,t,i,n,a){function o(){var e="de"===n.visibleLocale.iso?"en":"de";i(function(){n.visibleLocale=a.find(n.locales,function(t){return t.iso===e}),i(function(){t.find('input[data-locale="'+e+'"]')[0].focus()},0)},0)}n.bindValueDe=function(e){if(a.isUndefined(e))return n.data.value.de.value;n.data.value.de.value=e},n.bindValueEn=function(e){if(a.isUndefined(e))return n.data.value.en.value;n.data.value.en.value=e},n.selectLocale=function(e){n.visibleLocale=e},n.currentLocale=void 0,n.locales=[],n.visibleLocale=void 0,e.getAvailableLocalesAsPromise().then(function(o){n.locales=o,n.currentLocale=a.find(o,function(t){return t.iso===e.getCurrentLocale().iso}),n.visibleLocale=n.currentLocale,i(function(){t.find('input[data-locale="'+n.visibleLocale.iso+'"]')[0].focus()})}),n.hotkeysConfig={defaultHotKeysEnabled:!1,additionalHotKeys:[{eventName:"showPreviousLocale",keys:"up"},{eventName:"showNextLocale",keys:"down"}]},n.$on("hotkey.pressed.showPreviousLocale",function(e,t){o(),t.preventDefault()}),n.$on("hotkey.pressed.showNextLocale",function(e,t){o(),t.preventDefault()})}e.$inject=["I18nLocaleService","$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccTranslationFieldTableCellEditor",e)}
1(),function(){"use strict";function e(e,t,i,n,a,o){var r="80a8b62f-faf2-40de-a35f-3a90fd624f97",s={title:"common.lookupValue",noUserInteractionRequired:!1,singleSelection:!a.isArray(n.data.value),preselectedIds:function(){if(n.data.enum)return[n.data.value];return a.isNil(n.data.value)?[]:a.isArray(n.data.value)?a.map(n.data.value,"id"):[n.data.value.id]}(),readObjectsAction:n.data.enum?function(){var t={data:e.getEnumValues(n,n.data.type),model:function(){return{"5ac5ec50-ad9d-401a-afba-c8d470662251":{fields:[{editDisplayType:"DISPLAYNAME",viewDisplayType:"DISPLAYNAME",name:"$displayName",type:n.data.type,priority:n.data.priority,collection:!1,editableInTable:!1,embeddedObjectView:null,enum:!0,filterAllowedValues:!1,filterIsCollectionOperator:!1,hideBecauseOfReferencedSystemSetting:!1,hideEditLabel:!1,hideViewLabel:!1,selectAllowManualInput:!1,selectFromModel:!1,selectFromModelActions:!1,selectFromModelAttributes:!1,selectable:!1,nameOverride:{id:r,version:-1,de:"Name",en:"Name"}}]}}}(),viewDefinitionId:"5ac5ec50-ad9d-401a-afba-c8d470662251"};return o.when(t)}:n.data.fetchAllowedValuesFn,allowFocusInViewMode:!0};i.getTable(s,[],t.getLookupControls(),{size:"lg"}).result.then(function(e){n.data.value=function(e){return n.data.enum?e[0].id:e[0]}(e)||null,n.data.finishEditFn()},function(){n.data.finishEditFn()})}e.$inject=["AllowedValuesService","ControlService","ModalService","$scope","_","$q"],angular.module("ccFrontend").controller("ccTypeaheadTableCellEditor",e)}(),function(){"use strict";function e(e,t){var i=", ";return{id:"AddressCellRenderer",title:"renderer.table cell.AddressCellRenderer",isDefault:!1,plainValue:n,render:n};function n(e,n){var o=e.value;if(t.isNil(o))return"";var r=[];return r.push(function(e){if(!t.isNil(e)&&t.isArray(e))return t.map(e,function(e){return e.line}).join(i);return""}(o.lines)),r.push(function(e,n){var a=[];t.isNil(e)||a.push(e);t.isNil(n)||a.push(n);return a.join(i)}(o.zipcode,o.city)),r.push(a(o.county)),r.push(a(o.region)),r.push(a(o.country)),t.filter(r,function(e){return!t.isNil(e)&&e.length>0}).join(i)}function a(i){var n=e.getCurrentLocale().iso;return t.isNil(i)?"":"de"===n?i.name.de:i.name.en}}function t(e,t){e.registerTableCellRenderer("address",t)}e.$inject=["I18nService","_"],t.$inject=["WidgetService","AddressCellRenderer"],angular.module("ccFrontend").factory("AddressCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{id:"ArchivePathCellRenderer",title:"renderer.table cell.ArchivePathCellRenderer",init:function(e,i,n,a){r.isNil(e.entity)&&(e.entity=t.getContext("$modelContext")||t.getContext("filterEntity"));return o.when()},plainValue:function(t,n){var a=t.value;if(r.isNil(a))return"";var o=n.entity+".",s="",c=i.translatePath(o+a);return r.forEach(c,function(t){s=s.concat(e.getTranslation(t))}),s},render:function(t,n){var o=n.entity;t.value&&(o+="."+t.value);for(var r=i.translatePath(o),s="",c=0;c<r.length;c++){var l=r[c],d=c+1===r.length,u=e.getTranslation(l);s=s.concat("<span>"+a(u)),d||(s=s.concat('<i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i>')),s.concat("<span>")}return s}}}function t(e,t){e.registerTableCellRenderer("archivepath",t)}e.$inject=["I18nService","NavigationService","ModelService","CCUtils","$sanitize","$q","_"],t.$inject=["WidgetService","ArchivePathCellRenderer"],angular.module("ccFrontend").factory("ArchivePathCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"AuthAttributeMappingPathCellRenderer",title:"renderer.table cell.AuthAttributeMappingPathCellRenderer",plainValue:function(t,i){var o=t.value;if(n.isNil(o))return"";var r=a.translatePath("Person."+o),s="";return n.forEach(r,function(t){s=s.concat(e.getTranslation(t))}),s},render:function(t,n){for(var o=t.value,r=a.translatePath("Person."+o),s="",c=0;c<r.length;c++){var l=r[c],d=c+1===r.length,u=e.getTranslation(l);s=s.concat("<span>"+i(u)),d||(s=s.concat('<i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i>')),s.concat("<span>")}return s}}}function t(e,t){e.registerTableCellRenderer("authattributemappingpath",t)}e.$inject=["I18nService","CCUtils","$sanitize","_","ModelService"],t.$inject=["WidgetService","AuthAttributeMappingPathCellRenderer"],angular.module("ccFrontend").factory("AuthAttributeMappingPathCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"BirthdayCellRenderer",title:"renderer.table cell.BirthdayCellRenderer",isDefault:!1,plainValue:r,render:function(e,t){let o=i(r(e,t));if(""===o)return"";
1o+=` (${n.getTranslation("common.ui.cellRenderer.birthday.willBe")} `;const s=a(),c=a(e.value);let l=s.diff(c,"years"),d="";c.month()===s.month()&&c.date()===s.date()?d='<i class="fa fa-birthday-cake gradient-icon suffix-icon" style="background: linear-gradient(to top, deeppink 55%, gold 70%)"></i>':l+=1;return`<span title="${o+=`${l})`}">${o} ${d}</span>`},sortOverride:function(e,t,i){return s(e)-s(t)}};function r(t,i){const a=t.value;return a&&o.isArray(a)?o.isArray(a)&&0===a.length?n.getTranslation("validation.format.nonconvertible_simple_type"):"LocalDate"!==t.field.type?n.getTranslation("validation.format.nonconvertible_simple_type"):a?e("amDateFormat")(a,"DD.MM.YYYY"):"":""}function s(e){if(!e)return 1e7;const t=new Date,i=e.getMonth()<t.getMonth()||e.getMonth()===t.getMonth()&&e.getDate()<t.getDate();return e.getFullYear()+1e4*e.getDate()+1e6*e.getMonth()+(i?1e7:0)}}function t(e,t){e.registerTableCellRenderer("birthday",t)}e.$inject=["$filter","CCUtils","$sanitize","I18nService","moment","_"],t.$inject=["WidgetService","BirthdayCellRenderer"],angular.module("ccFrontend").factory("BirthdayCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"BooleanCellRenderer",title:"renderer.table cell.BooleanCellRenderer",isDefault:!1,plainValue:function(i,n){var a=i.value;if(t.isNil(a))return"";if(!0===a)return e.getTranslation("common.true");return e.getTranslation("common.false")},render:function(e,i){var n=e.value;if(t.isNil(n))return"";if(!0===n)return'<i class="fa fa-check text-green"></i>';return'<i class="fa fa-times text-red"></i>'},sortOverride:function(e,i,n){return t.isNil(e)?t.isNil(i)?0:1:t.isNil(i)?-1:e?i?0:-1:i?1:0}}}function t(e,t){e.registerTableCellRenderer("boolean",t)}e.$inject=["I18nService","_"],t.$inject=["WidgetService","BooleanCellRenderer"],angular.module("ccFrontend").factory("BooleanCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"CategoryCellRenderer",title:"renderer.table cell.CategoryCellRenderer",isDefault:!1,plainValue:n,render:function(t,a){var o=t.value;if(i.isNil(o))return"";e.addTranslationField(o.name);var r=i.escape(n(t,a).toUpperCase());return'<span class="label label-primary" title="'+r+'">'+r+"</span>"}};function n(t,n){var a=t.value;return i.isNil(a)?"":(e.addTranslationField(a.name),e.getTranslation(a.name.id))}}function t(e,t){e.registerTableCellRenderer("category",t)}e.$inject=["I18nService","CCUtils","_"],t.$inject=["WidgetService","CategoryCellRenderer"],angular.module("ccFrontend").factory("CategoryCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){var n="common.displaytype.checkresult.undefined",a="common.displaytype.checkresult.checked",o="common.displaytype.checkresult.unchecked";return{id:"CheckResultCellRenderer",title:"renderer.table cell.CheckResultCellRenderer",isDefault:!1,plainValue:r,render:function(e,i){return"<span>"+t(r(e,i))+"</span>"}};function r(t,r){return function(t){var r;r=i.isNil(t)?n:!0===t?a:o;return e.getTranslation(r)}(t.value)}}function t(e,t){e.registerTableCellRenderer("checkresult",t)}e.$inject=["I18nService","$sanitize","_"],t.$inject=["WidgetService","CheckResultCellRenderer"],angular.module("ccFrontend").factory("CheckResultCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"CollectionSizeCellRenderer",title:"renderer.table cell.CollectionSizeCellRenderer",plainValue:n,render:n};function n(e,t){return i.isArray(e.value)?e.value.length:0}}function t(e,t){e.registerTableCellRenderer("collectionsize",t)}e.$inject=["$filter","I18nService","_"],t.$inject=["WidgetService","CollectionSizeCellRenderer"],angular.module("ccFrontend").factory("CollectionSizeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"ColorCellRenderer",title:"renderer.table cell.ColorCellRenderer",isDefault:!1,plainValue:function(e,i){var n=e.value;if(t.isNil(n))return"";return e.value},render:function(i,n){var a=e(i.value);t.isNil(a)&&(a="");if(""===a)return"";return'<i class="fa fa-square prefix-icon cc-solid-icon" style="color: '+a+'" title="'+a+'"></i>'}}}function t(e,t){e.registerTableCellRenderer("color",t)}e.$inject=["$sanitize","_"],t.$inject=["WidgetService","ColorCellRenderer"],angular.module("ccFrontend").factory("ColorCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"DateCellRenderer",title:"renderer.table cell.DateCellRenderer",isDefault:!1,plainValue:r,render:function(e,t){const n=i(r(e));if(""===n)return n;return`<span title="${n}">${n}</span>`},sortOverride:function(e,t,i){return a.dateComparator(e,t,i)}};function r(t){const i=t.value;if(!i||!o.isArray(i))return"";if(o.isArray(i)&&0===i.length)return n.getTranslation("validation.format.nonconvertible_simple_type");const a="LocalDate"===t.field.type?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm:ss";return i?e("amDateFormat")(i,a):""}}function t(e,t){e.registerTableCellRenderer("date",t)}e.$inject=["$filter","CCUtils","$sanitize","I18nService","DatePeriodService","_"],t.$inject=["WidgetService","DateCellRenderer"],angular.module("ccFrontend").factory("DateCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"DatePeriodCellRenderer",title:"renderer.table cell.DatePeriodCellRenderer",isDefault:!1,plainValue:t,render:function(i,n,a){const o=t(i);return e.isActive(i.value)?`<span data-ng-class="text-green" "title="${o}">${o}
1</span>`:`<span data-ng-class="text-red" "title="${o}">${o}</span>`},sortOverride:function(t,i,n){return e.dateComparator(t.startDate,i.startDate,n)}};function t(t,i){const n=t.value;if(!n)return"";const a=!(e.isDateTimePeriod(n.startDate)||e.isDateTimePeriod(n.endDate));return`${e.getDateDisplayName(n,"startDate",a)} - ${e.getDateDisplayName(n,"endDate",a)}`}}function t(e,t){e.registerTableCellRenderer("dateperiod",t)}e.$inject=["DatePeriodService"],t.$inject=["WidgetService","DatePeriodCellRenderer"],angular.module("ccFrontend").factory("DatePeriodCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"DisplayNameCellRenderer",title:"renderer.table cell.DisplayNameCellRenderer",init:function(e,t,i,n){o.isNil(e.fullModel)&&(e.fullModel=n.widget.model.fullModel);return a.when()},plainValue:r,render:function(e,t){var n=i(r(e,t));if(""===n)return"";return'<span title="'+n.replace(/<i class="(.*)"><\/i>/,"")+'">'+n+"</span>"}};function r(i,a){var r=i.value;if("$displayName"===i.field.name)return n("displayPattern")({},r,{});if(o.isNil(r))return"";if(o.isPlainObject(r)&&r.hasOwnProperty("$displayName"))return n("displayPattern")({},r.$displayName,{});if(o.isArray(r)){var c=o.map(r,function(e){return o.isPlainObject(e)&&e.hasOwnProperty("$displayName")?n("displayPattern")({},e.$displayName,{}):(t.resolveDisplayName(e,a.fullModel),s(e))});return c.sort(e.getStringSortComparator),c.join(", ")}return t.resolveDisplayName(r,a.fullModel),s(r)}function s(e){return o.isNil(e)?"":e.$displayName}}function t(e,t){e.registerTableCellRenderer("displayname",t)}e.$inject=["SortService","CCUtils","$sanitize","$filter","$q","_"],t.$inject=["WidgetService","DisplayNameCellRenderer"],angular.module("ccFrontend").factory("DisplayNameCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){return{id:"DurationCellRenderer",title:"renderer.table cell.DurationCellRenderer",init:function(t,o,c,l){var d=a.resolveValuePath(o,l.widget.model),u=a.getAttribute(d.entity,d.name);if(s.isNil(t.durationUnits)||s.isNil(t.defaultUnit))return e.readObjects(i.view.durationUnits,l.widget).then(function(e){t.durationUnits=n.getDurationUnitsInRange(e,u.minDurationUnitMillis,u.maxDurationUnitMillis),t.defaultUnit=n.getDefaultDurationUnit(e,u.minDurationUnitMillis,u.maxDurationUnitMillis)});return r.when()},plainValue:c,render:function(e,t){var i=c(e,t);if(""===i)return"";return'<span title="'+i+'">'+i+"</span>"}};function c(e,i){var a=e.value;return s.isNil(a)?"":function(e){if(s.isNil(e.unit))return e.number.toString();return o(e.number.toString()+" "+t.getTranslation(e.unit.name.id))}(n.durationToNumberAndUnit(a,i.defaultUnit,i.durationUnits))}}function t(e,t){e.registerTableCellRenderer("duration",t)}e.$inject=["ActionService","I18nService","CMS_DATA","DurationService","ModelService","$sanitize","$q","_"],t.$inject=["WidgetService","DurationCellRenderer"],angular.module("ccFrontend").factory("DurationCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"EmailCellRenderer",title:"renderer.table cell.
1EmailCellRenderer",isDefault:!1,plainValue:function(t,i){const n=t.value;if(e.isNil(n))return"";return t.value},render:function(i,n){const a=i.value;if(e.isNil(a))return"";let o;if(e.isArray(a)){const i=e.map(a,t);o=i.join(", ")}else o=t(a);return o}};function t(t){const i=e.escape(t);return'<span title="'+i+'"><i class="fa fa-envelope prefix-icon"></i><a href="mailto:'+i+'" target="_blank">'+i+"</a></span>"}}function t(e,t){e.registerTableCellRenderer("email",t)}e.$inject=["_"],t.$inject=["WidgetService","EmailCellRenderer"],angular.module("ccFrontend").factory("EmailCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{id:"EntityNameCellRenderer",title:"renderer.table cell.EntityNameCellRenderer",plainValue:function(e,i){var a=e.value;if(n.isNil(a))return"";return t.getTranslation("entity."+a+".$entity")},render:function(o,r){var s=o.value,c=n.escape(t.getTranslation("entity."+s+".$entity")),l='<span style="width: 100%; display: flex">';l+='<span title="'+c+'" class="text-ellipsis" style="flex-shrink: 1;">'+c+"</span>",l+='<span style="flex-grow: 1"></span>',o.data.signature&&o.data.signature.value&&(l+=a("fa-tags","common.signature"));e.isFeatureActive(i.feature.transferValueLists)&&o.data.canBeTransferred&&o.data.canBeTransferred.value&&(l+=a("fa-exchange-alt","common.transferable"));o.data.system&&o.data.system.value&&(l+=a("fa-laptop","common.system"));return l+="</span>"}};function a(e,i){return'<i class="fa '+e+'" style="margin-left: 5px" title="'+n.escape(t.getTranslation(i))+'"></i>'}}function t(e,t){e.registerTableCellRenderer("entityname",t)}e.$inject=["FeatureService","I18nService","CMS_DATA","_"],t.$inject=["WidgetService","EntityNameCellRenderer"],angular.module("ccFrontend").factory("EntityNameCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{id:"EnumValueCellRenderer",title:"renderer.table cell.
1EnumValueCellRenderer",init:function(e,t,a,o){n.isNil(e.fieldType)&&(e.fieldType=a);return i.when()},plainValue:function(i,a){var o=i.value;if(n.isNil(o))return"";if(n.isArray(o)){var r=n.map(o,function(t){return e.getLabel(i.field.type,t)});return r.sort(t.getStringSortComparator),r.join(", ")}return e.getLabel(i.field.type,o)},render:function(t,i){var a=t.value,o=t.field.type;if(n.isNil(t.value))return"";return n.isArray(a)?n.map(a,function(t){return e.renderOne(o,t)}).join(", "):e.renderOne(o,a)}}}function t(e,t){e.registerTableCellRenderer("enumvalue",t)}e.$inject=["EnumService","SortService","$q","_"],t.$inject=["WidgetService","EnumValueCellRenderer"],angular.module("ccFrontend").factory("EnumValueCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"EnumValueCounterCellRenderer",title:"renderer.table cell.EnumValueCounterCellRenderer",init:function(e,n,a,o){i.isNil(e.fieldType)&&(e.fieldType=a);return t.when()},plainValue:function(t,n){var a=t.value;if(i.isNil(a)||i.isEmpty(a)||0===a.length)return"";var o=n.fullModel[t.field.embeddedObjectView],r=e.getEnumValuesFromWithinObjectCollection(o,a),s=e.getEnumTypeFromWithinObjectCollection(o);return e.renderEnumValuesAndCountsAsText(r,s)},render:function(t,n){var a=t.value;if(i.isNil(a)||i.isEmpty(a)||0===a.length)return"";var o=n.fullModel[t.field.embeddedObjectView],r=e.getEnumValuesFromWithinObjectCollection(o,a),s=e.getEnumTypeFromWithinObjectCollection(o);return e.renderEnumValuesAndCountsAsHtml(r,s)}}}function t(e,t){e.registerTableCellRenderer("enumvaluecounter",t)}e.$inject=["EnumService","$q","_"],t.$inject=["WidgetService","EnumValueCounterCellRenderer"],angular.module("ccFrontend").factory("EnumValueCounterCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"EventPeriodCellRenderer",title:"renderer.table cell.
1EventPeriodCellRenderer",render:function(e,i,n){const a=t(e);return`<span "title="${a}">${a}</span>`},plainValue:t};function t(t){const i=t.value;return i?`${e.getDateDisplayName(i,"startTime",i.allDay)} - ${e.getDateDisplayName(i,"endTime",i.allDay)}`:""}}function t(e,t){e.registerTableCellRenderer("eventperiod",t)}e.$inject=["DatePeriodService"],t.$inject=["WidgetService","EventPeriodCellRenderer"],angular.module("ccFrontend").factory("EventPeriodCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"FileCellRenderer",title:"renderer.table cell.FileCellRenderer",plainValue:t,render:function(i,n){var a=e.escape(t(i,n));return'<span title="'+a+'">'+a+"</span>"}};function t(t,i){var n=t.value;return e.isNil(n)?"":n.name.toString()}}function t(e,t){e.registerTableCellRenderer("file",t)}e.$inject=["_"],t.$inject=["WidgetService","FileCellRenderer"],angular.module("ccFrontend").factory("FileCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"FileSizeCellRenderer",title:"renderer.table cell.FileSizeCellRenderer",plainValue:n,render:n};function n(n,a){var o=e("filesize")(n.value);return i.isNil(o)?t.getTranslation("common.noValue"):o}}function t(e,t){e.registerTableCellRenderer("filesize",t)}e.$inject=["$filter","I18nService","_"],t.$inject=["WidgetService","FileSizeCellRenderer"],angular.module("ccFrontend").factory("FileSizeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"FileTypeCellRenderer",title:"renderer.table cell.FileTypeCellRenderer",plainValue:i,render:function(e,n){return'<span class="label label-primary" style="margin-right: 5px">'+t(i(e,n))+"</span>"}};function i(t,i){var n;return n=t.value?"common.contentType."+t.value:"common.contentType.application/octet-stream",e.getTranslation(n)}}function t(e,t){e.registerTableCellRenderer("filetype",t)}e.$inject=["I18nService","$sanitize"],t.$inject=["WidgetService","FileTypeCellRenderer"],angular.module("ccFrontend").factory("FileTypeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"GradeCellRenderer",title:"renderer.table cell.GradeCellRenderer",plainValue:function(e,t){var i=e.value;if(n.isNil(i))return"";return a.resolveDisplayName(i,t.fullModel),i.$displayName},render:function(e,t,a){var o,r=e.value,s="";!n.isNull(r)&&n.isObject(r)?(o=n.isNil(r.numericGrade)?n.isNil(r.alphanumericGrade)?"":r.alphanumericGrade.toString():r.numericGrade.toString(),!0===r.withDistinction&&(s='<i class="fa fa-trophy suffix-icon text-yellow" title="'+i.getTranslation("entity.Grade.withDistinction")+'"></i>')):o="";return'<span "title="'+o+'">'+o+s+"</span>"},sortOverride:function(i,a,o){if(n.isNil(i))return n.isNil(a)?0:1;{if(n.isNil(a))return-1;if(i.gradingSystem!==a.gradingSystem)return e.getDefaultSortComparator(i.gradingSystem,a.gradingSystem);const o=t.getGradingSystem(i.gradingSystem);return n.isNil(o)?e.getDefaultSortComparator(i.id,a.id):o.numericGrades?function(t,i,a){if(n.isNil(t.numericGrade))return n.isNil(i.numericGrade)?e.getDefaultSortComparator(t.id,i.id):1;{if(n.isNil(i.numericGrade))return-1;const o=Number(t.numericGrade),r=Number(i.numericGrade);return o===r?t.withDistinction&&!i.withDistinction?-1:!t.withDistinction&&i.withDistinction?1:e.getDefaultSortComparator(t.id,i.id):a.isLowestGradeTheBetterGrade?o<r?-1:1:o>r?-1:1}}(i,a,o):function(t,i,a){if(n.isNil(t.alphanumericGrade))return n.isNil(i.alphanumericGrade)?e.getDefaultSortComparator(t.id,i.id):1;{if(n.isNil(i.alphanumericGrade))return-1;let o,r;return n.each(a.gradeSpecifications,e=>{e.fixedAlphanumericGrade===t.alphanumericGrade&&(o=e.position),e.fixedAlphanumericGrade===i.alphanumericGrade&&(r=e.position)}),n.isNil(o)?n.isNil(r)?e.getDefaultSortComparator(t.id,i.id):1:n.isNil(r)?-1:o===r?t.withDistinction&&!i.withDistinction?-1:!t.withDistinction&&i.withDistinction?1:e.getDefaultSortComparator(t.id,i.id):o<r?-1:1}}(i,a,o)}}}}function t(e,t){e.registerTableCellRenderer("grade",t)}e.$inject=["SortService","GradingService","I18nService","_","CCUtils"],t.$inject=["WidgetService","GradeCellRenderer"],angular.module("ccFrontend").factory("GradeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"IconCellRenderer",title:"renderer.table cell.IconCellRenderer",plainValue:function(e,i){var n=e.value;if(t.isNil(n))return"";return e.value},render:function(t,i){return'<i class="fa fa-fw '+e(t.value)+'"></i>'}}}function t(e,t){e.registerTableCellRenderer("icon",t)}e.$inject=["$sanitize","_"],t.$inject=["WidgetService","IconCellRenderer"],angular.module("ccFrontend").factory("IconCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"InDefaultCellRenderer",title:"renderer.table cell.InDefaultCellRenderer",isDefault:!1,plainValue:i,render:function(e,n){var a=e.value,o=t.escape(i(e,n));if(t.isNil(a))return"";if(!0===a)return'<span title="'+o+'"><i class="fa fa-credit-card text-red"></i> '+o+"</span>";return'<span title="'+o+'"><i class="fa fa-money-bill-alt text-green"></i> '+o+"</span>"},sortOverride:function(e,i,n){return t.isNil(e)?t.isNil(i)?0:1:t.isNil(i)?-1:e?i?0:-1:i?1:0}};function i(i,n){var a=i.value;
1return t.isNil(a)?"":!0===a?e.getTranslation("common.true"):e.getTranslation("common.false")}}function t(e,t){e.registerTableCellRenderer("indefault",t)}e.$inject=["I18nService","_"],t.$inject=["WidgetService","InDefaultCellRenderer"],angular.module("ccFrontend").factory("InDefaultCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"IsNullCellRenderer",title:"renderer.table cell.IsNullCellRenderer",isDefault:!1,plainValue:function(i,n){var a=i.value;if(t.isNil(a))return e.getTranslation("common.true");return e.getTranslation("common.false")},render:function(e,t){var i;i=e.value?'<i class="fa fa-check text-green"></i>':'<i class="fa fa-times text-red"></i>';return i}}}function t(e,t){e.registerTableCellRenderer("isnull",t)}e.$inject=["I18nService","_"],t.$inject=["WidgetService","IsNullCellRenderer"],angular.module("ccFrontend").factory("IsNullCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{id:"JsonCellRenderer",title:"renderer.table cell.JsonCellRenderer",isDefault:!1,plainValue:function(e,t){var i=e.value;if(n.isNil(i))return"";return e.value},render:function(e,t){var i=e.value;return"<span>"+a(n.isNil(i)?null:JSON.parse(i))+"</span>"}};function a(o){return n.isNil(o)?"":e.isTranslationField(o)?(t.addTranslationField(o),n.escape(t.getTranslation(o.id))):!0===o?'<i class="fa fa-check text-green"></i>':!1===o?'<i class="fa fa-times text-red"></i>':n.isPlainObject(o)&&n.has(o,"$displayPattern")?n.escape(i.resolveDisplayName(o,null)):n.isArray(o)?n.escape(n.map(o,a)):n.escape(o)}}function t(e,t){e.registerTableCellRenderer("json",t)}e.$inject=["ModelService","I18nService","CCUtils","_"],t.$inject=["WidgetService","JsonCellRenderer"],angular.module("ccFrontend").factory("JsonCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"LabelCellRenderer",title:"renderer.table cell.LabelCellRenderer",isDefault:!0,plainValue:t,render:function(i,n){var a=e.escape(t(i,n));if(""===a)return"";return'<span title="'+a+'">'+a+"</span>"}};function t(t,i){var n=t.value;return e.isNil(n)?"":n.toString()}}function t(e,t){e.registerTableCellRenderer("label",t)}e.$inject=["_"],t.$inject=["WidgetService","LabelCellRenderer"],angular.module("ccFrontend").factory("LabelCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"LinkCellRenderer",title:"renderer.table cell.LinkCellRenderer",plainValue:function(t,i){var n=t.value;if(e.isNil(n))return"";return e.isNil(n.name)||""===n.name?n.url:n.name},render:function(t,i){var n=t.value,a=e.escape(n.url),o=a;e.isUndefined(n.name)||null===n.name||""===n.name||(o=e.escape(n.name));var r=a;e.isUndefined(n.description)||null===n.description||""===n.description||(r=e.escape(n.description));return'<a href="'+a.replace(/(")/g,"&quot;")+'" title="'+r+'" target="_blank" title=>'+o+"</a>"}}}function t(e,t){e.registerTableCellRenderer("link",t)}e.$inject=["_"],t.$inject=["WidgetService","LinkCellRenderer"],angular.module("ccFrontend").factory("LinkCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"MessageRecipientCellRenderer",title:"renderer.table cell.MessageRecipientCellRenderer",plainValue:function(e,i){if(!e.data)return"";const a=n.reduceRecord(e.data);switch(a.type){case"PERSON":return`${a.person.masterData.lastName}, ${a.person.masterData.firstName} ${t.getTranslation("entity.Person.$entity")}`;case"ROLE":return t.addTranslationField(n.reduceRecord(a.role.name)),`${t.getTranslation(a.role.name.id)} ${t.getTranslation("entity.Role.$entity")}`;case"MAILING_LIST":return t.addTranslationField(n.reduceRecord(a.mailingList.name)),`${t.getTranslation(a.mailingList.name.id)} ${t.getTranslation("entity.MailingList.$entity")}`;case"CONTACT_LIST":return t.addTranslationField(n.reduceRecord(a.contactList.name)),`${t.getTranslation(a.contactList.name.id)} ${t.getTranslation("entity.ContactList.$entity")}`;default:return""}},render:function(e,i){if(!e.data)return"";const o=n.reduceRecord(e.data);let r,s,c,l;switch(o.type){case"PERSON":r="fa-user",c=`${o.person.masterData.lastName}, ${o.person.masterData.firstName}`,s="primary",l="Person";break;case"ROLE":t.addTranslationField(n.reduceRecord(o.role.name)),r="fa-users",c=t.getTranslation(o.role.name.id),s="secondary",l="Role";break;case"MAILING_LIST":t.addTranslationField(n.reduceRecord(o.mailingList.name)),r="fa-random",c=t.getTranslation(o.mailingList.name.id),s="info",l="MailingList";break;case"CONTACT_LIST":t.addTranslationField(n.reduceRecord(o.contactList.name)),r="fa-rectangle-history-circle-user",c=t.getTranslation(o.c
1ontactList.name.id),s="warning",l="ContactList";break;default:return""}const d=t.getTranslation(`entity.${l}.$entity`);return a(`<i class="fa fa-fw ${r} prefix-icon text-${s}" title="${d}"></i>\n                            <span>${c}</span>\n                            <span class="flex-spacer"></span>\n                            <span class="label label-${s} horizontal-offset-15-right text-uppercase">${d}</span>`)}}}function t(e,t){e.registerTableCellRenderer("messagerecipient",t)}e.$inject=["NavigationService","I18nService","$filter","CCUtils","$sanitize","_"],t.$inject=["WidgetService","MessageRecipientCellRenderer"],angular.module("ccFrontend").factory("MessageRecipientCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{id:"MessageSubjectCellRenderer",title:"renderer.table cell.MessageSubjectCellRenderer",plainValue:s,render:function(e,t){return"<span>"+o(s(e,t))+"</span>"}};function s(e,t){var n=e.data.messageContents.value;if(r.isNil(n)||0===n.length)return"";var a=i.getCurrentLocale().iso,o=r.find(n,function(e){if(e.locale.value.iso.value===a)return!0});return r.isNil(o)?n[0].subject.value:o.subject.value}}function t(e,t){e.registerTableCellRenderer("messagesubject",t)}e.$inject=["NavigationService","I18nService","I18nLocaleService","$filter","CCUtils","$sanitize","_"],t.$inject=["WidgetService","MessageSubjectCellRenderer"],angular.module("ccFrontend").factory("MessageSubjectCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"MoneyCellRenderer",title:"renderer.table cell.MoneyCellRenderer",isDefault:!1,plainValue:o,render:function(e,t){return"<span>"+n(o(e,t))+"</span>"},iconOverride:{sortAscending:'<i class="fa fa-sort-amount-down text-bold prefix-icon"></i>',sortDescending:'<i class="fa fa-sort-amount-up text-bold prefix-icon"></i>'},sortOverride:function(e,i,n){if(a.isNil(e)&&a.isNil(i))return 0;if(a.isNil(e))return 1;if(a.isNil(i))return-1;var o=Number(t.getMonetaryValue(e)),r=Number(t.getMonetaryValue(i));if(o>r)return 1;if(o<r)return-1;return 0}};function o(e,i){var n=e.value;return a.isNil(n)?"":t.getDisplayName(n)}}function t(e,t){e.registerTableCellRenderer("money",t)}e.$inject=["$filter","MoneyService","CCUtils","$sanitize","_"],t.$inject=["WidgetService","MoneyCellRenderer"],angular.module("ccFrontend").factory("MoneyCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"MonthDayCellRenderer",title:"renderer.table cell.MonthDayCellRenderer",isDefault:!1,plainValue:o,render:function(e,t){var i=n(o(e,t));return'<span title="'+i+'">'+i+"</span>"},iconOverride:{sortAscending:'<i class="fa fa-sort-amount-down text-bold prefix-icon"></i>',sortDescending:'<i class="fa fa-sort-amount-up text-bold prefix-icon"></i>'},sortOverride:function(e,t,i){if(a.isNil(e)&&a.isNil(t))return 0;if(a.isNil(e))return-1;if(a.isNil(t))return 1;var n=e[2]+e[3],o=e[5]+e[6],r=t[2]+t[3],s=t[5]+t[6],c=new Date(1972,n,o),l=new Date(1972,r,s),d=c-l;return d>0?1:d<0?-1:0}};function o(e,t){var i=e.value;if(a.isNil(i))return"";var n=i[2]+i[3];return i[5]+i[6]+"."+n+"."}}function t(e,t){e.registerTableCellRenderer("monthday",t)}e.$inject=["$filter","CCUtils","moment","$sanitize","_"],t.$inject=["WidgetService","MonthDayCellRenderer"],angular.module("ccFrontend").factory("MonthDayCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"PercentCellRenderer",title:"renderer.table cell.PercentCellRenderer",plainValue:i,render:function(t,n){var a=e(i(t,n));return'<span title="'+a+'">'+a+"</span>"}};function i(e,i){var n=e.value;return t.isNil(n)&&(n=0),(n>1?n:(100*n).toFixed(2))+"%"}}function t(e,t){e.registerTableCellRenderer("percent",t)}e.$inject=["$sanitize","_"],t.$inject=["WidgetService","PercentCellRenderer"],angular.module("ccFrontend").factory("PercentCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"RelationshipCellRenderer",title:"renderer.table cell.RelationshipCellRenderer",plainValue:r,render:function(e,t){return a(r(e,t))}};function r(a,r){var s,c=a.data,l=e.getContext("personId")||e.getContext("currentUser");if(o.isNil(c))return"";o.isNil(c.sourcePerson.value)||c.sourcePerson.value.id.value!==l?o.isNil(c.targetPerson.value)||c.targetPerson.value.id.value!==l||(t.addTranslationField(n.reduceRecord(c.relationshipType.value.inverseDirection.value.name.value)),s=t.getTranslation(c.relationshipType.value.inverseDirection.value.name.value.id.value)+" "+c.sourcePerson.value.masterData.value.firstName.value+" "+c.sourcePerson.value.masterData.value.lastName.value):(t.addTranslationField(n.reduceRecord(c.relationshipType.value.primaryDirection.value.name.value)),s=t.getTranslation(c.relationshipType.value.primaryDirection.value.name.value.id.value)+" "+c.targetPerson.value.masterData.value.firstName.value+" "+c.targetPerson.value.masterData.value.lastName.value);var d=o.isNil(c.duration.value.startDate.value)?"":i("amDateFormat")(c.duration.value.startDate.value,"DD.MM.YYYY, HH:mm:ss"),u=o.isNil(c.duration.value.endDate.value)?"":i("amDateFormat")(c.duration.value.endDate.value,"DD.MM.YYYY, HH:mm:ss");return""===d&&""===u?s:s+" ("+d+" -- "+u+")"}}function t(e,t){e.registerTableCellRenderer("relationship",t)}e.$inject=["NavigationService","I18nService","$filter","CCUtils","$sanitize","_"],t.$inject=["WidgetService","RelationshipCellRenderer"],angular.module("ccFrontend").factory("RelationshipCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"ReleaseNoteTypeCellRenderer",title:"renderer.table cell.ReleaseNoteTypeCellRenderer",plainValue:function(e,i){var n=e.value;if(t.isNil(n))return"";return e.value},render:function(i,n){var a=e(i.value);return'<i class="prefix-icon fa '+function(e){if("BUGFIX"===e)return"fa-circle icon-bug";if("ADMIN"===e)return"fa-keyboard icon-admin";if("IMPROVEMENT"===e)return"fa-angle-double-up icon-improvement";if("NEW_FEATURE"===e)return"fa-plus-square icon-new-feature";return"fa-ticket-alt"}(a)+'"></i> '+function(e){return t.startCase(t.snakeCase(e))}(a)}}}function t(e,t){e.registerTableCellRenderer("releasenotetype",t)}e.$inject=["$sanitize","_"],t.$inject=["WidgetService","ReleaseNoteTypeCellRenderer"],angular.module("ccFrontend").factory("ReleaseNoteTypeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"RRuleCellRenderer",title:"renderer.table cell.RRuleCellRenderer",isDefault:!1,plainValue:n,render:function(e,i){return"<span>"+t(n(e,i))+"</span>"}};function n(t,n){var a=t.value;return i.isNil(a)?"":e.getDisplayName(a)}}function t(e,t){e.registerTableCellRenderer("rrule",t)}e.$inject=["RRuleService","$sanitize","_"],t.$inject=["WidgetService","RRuleCellRenderer"],angular.module("ccFrontend").factory("RRule
1CellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a){return{id:"ShareableAttributePathCellRenderer",title:"renderer.table cell.ShareableAttributePathCellRenderer",plainValue:function(t,i){var o=t.value;if(n.isNil(o))return"";var r=a.translatePath("Person."+o),s="";return n.forEach(r,function(t){s=s.concat(e.getTranslation(t))}),s},render:function(t,n){for(var o=t.value,r=a.translatePath("Person."+o),s="",c=0;c<r.length;c++){var l=r[c],d=c+1===r.length,u=e.getTranslation(l);s=s.concat("<span>"+i(u)),d||(s=s.concat('<i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i>')),s.concat("<span>")}return s}}}function t(e,t){e.registerTableCellRenderer("shareableattributepath",t)}e.$inject=["I18nService","CCUtils","$sanitize","_","ModelService"],t.$inject=["WidgetService","ShareableAttributePathCellRenderer"],angular.module("ccFrontend").factory("ShareableAttributePathCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"TagCellRenderer",title:"renderer.table cell.TagCellRenderer",isDefault:!1,plainValue:t,render:function(i,n){var a=e.escape(t(i,n));return'<span class="label label-primary" title="'+a+'">'+a+"</span>"}};function t(t,i){var n=t.value;return e.isNil(n)?"":t.value}}function t(e,t){e.registerTableCellRenderer("tag",t)}e.$inject=["_"],t.$inject=["WidgetService","TagCellRenderer"],angular.module("ccFrontend").factory("TagCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"TimeCellRenderer",title:"renderer.table cell.TimeCellRenderer",isDefault:!1,plainValue:r,render:function(e,t){return"<span>"+r(e,t)+"</span>"},iconOverride:{sortAscending:'<i class="fa fa-sort-amount-down text-bold prefix-icon"></i>',sortDescending:'<i class="fa fa-sort-amount-up text-bold prefix-icon"></i>'},sortOverride:function(e,t,i){if(o.isNil(e)&&o.isNil(t))return 0;if(o.isNil(e))return-1;if(o.isNil(t))return 1;var n=new Date(e[0],e[1],e[2],e[3]||0,e[4]||0,e[5]||0),a=new Date(t[0],t[1],t[2],t[3]||0,t[4]||0,t[5]||0),r=n-a;return r>0?1:r<0?-1:0}};function r(t,i){var n=t.value;return function(e){return o.isEmpty(e)||!Array.isArray(e)||e.length<2||o.isNil(e[0])||o.isNil(e[1])}(n)?"":function(e){return a(e[0]+":"+e[1],"HH:mm").format("HH:mm")}(n)+" "+e.getTranslation("common.time")}}function t(e,t){e.registerTableCellRenderer("time",t)}e.$inject=["I18nService","CCUtils","$filter","$sanitize","moment","_"],t.$inject=["WidgetService","TimeCellRenderer"],angular.module("ccFrontend").factory("TimeCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i){return{id:"TranslationFieldCellRenderer",title:"renderer.table cell.TranslationFieldCellRenderer",plainValue:n,render:function(t,a){var o=i.escape(n(t,a));if(""===o)return"";var r='<span title="'+o+'">'+o+"</span>";t.data.system&&t.data.system.value&&(r+='<span class="pull-right" style="margin-right: 20px"><i class="fa fa-laptop suffix-icon" title="'+i.escape(e.getTranslation("common.system"))+'"></i></span>');return r}};function n(t,n){var a=t.value;if(i.isNil(a))return"";var o=t.data.system&&t.data.system.value?" ("+e.getTranslation("common.system")+")":"";return e.addTranslationField(a),e.getTranslation(a.id)+o}}function t(e,t){e.registerTableCellRenderer("translationfield",t)}e.$inject=["I18nService","CCUtils","_"],t.$inject=["WidgetService","TranslationFieldCellRenderer"],angular.module("ccFrontend").factory("TranslationFieldCellRenderer",e).run(t)}(),function(){"use strict";function e(e){return{id:"UrlCellRenderer",title:"renderer.table cell.UrlCellRenderer",plainValue:function(t,i){var n=t.value;if(e.isNil(n))return"";return t.value},render:function(t,i){var n=t.value,a=e.escape(n);return'<a href="'+n.replace(/(")/g,"&quot;")+'" target="_blank" title="'+a+'">'+a+"</a>"}}}function t(e,t){e.registerTableCellRenderer("url",t)}e.$inject=["_"],t.$inject=["WidgetService","UrlCellRenderer"],angular.module("ccFrontend").factory("UrlCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o){return{id:"WeekOfDateCellRenderer",title:"renderer.table cell.WeekOfDateCellRenderer",isDefault:!1,plainValue:r,render:function(e,t){var n=i(r(e,t));if(""===n)return"";return'<span title="'+n+'">'+n+"</span>"},iconOverride:{sortAscending:'<i class="fa fa-sort-amount-down text-bold prefix-icon"></i>',sortDescending:'<i class="fa fa-sort-amount-up text-bold prefix-icon"></i>'}};function r(e,i){var a=e.value;return o.isNil(a)||!o.isArray(a)?"":o.isArray(a)&&0===a.length?n.getTranslation("validation.format.nonconvertible_simple_type"):t.getStartDateWithCalendarWeek(a)}}function t(e,t){e.registerTableCellRenderer("weekofdate",t)}e.$inject=["CCUtils","CalendarWeekService","$sanitize","I18nService","moment","_"],t.$inject=["WidgetService","WeekOfDateCellRenderer"],angular.module("ccFrontend").factory("WeekOfDateCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{id:"WeekOfDatePeriodCellRenderer",title:"renderer.table cell.WeekOfDatePeriodCellRenderer",isDefault:!1,plainValue:s,render:function(e,t){const i=a(s(e));if(""===i)return"";return`<span title="${i}">${i}</span>`},sortOverride:function(t,i,n){return e.dateComparator(t.startDate,i.startDate,n)}};function s(e){const i=e.value;if(!i)return"";if(r.isArray(i)&&0===i.length)return o.getTranslation("validation.format.nonconvertible_simple_type");const n=i.startDate?i.startDate:i.startTime,a=i.endDate?i.endDate:i.endTime;return r.isArray(n)||r.isArray(a)?n&&!a?t.getStartDateWithCalendarWeek(n)+" - ":!n&&a?" - "+t.getStartDateWithCalendarWeek(a):n&&a?t.getPeriodWithCalendarWeeks(n,a):"":""}}function t(e,t){e.registerTableCellRenderer("weekofdateperiod",t)}e.$inject=["DatePeriodService","CalendarWeekService","$filter","CCUtils","$sanitize","I18nService","_"],t.$inject=["WidgetService","WeekOfDatePeriodCellRenderer"],angular.module("ccFrontend").factory("WeekOfDatePeriodCellRenderer",e).run(t)}(),function(){"use strict";function e(e,t,i,n){const a=this;function o(e){if(n.isNil(e))return a.value="",a.advanced=!1,void(a.caseSensitive=!1);a.caseSensitive=e.caseSensitive,0===e.filterValues.length?(a.value="",a.advanced=!1):e.filterValues.length>1||"contains"!==e.filterValues[0].operator?(a.value=function(e){return n.map(e.filterValues,function(e){return"contains"===e.operator?"*"+e.value+"*":"notContains"===e.operator?"!*"+e.value+"*":"equals"===e.operator?e.value:"notEquals"===e.operator?"!"+e.value:"startsWith"===e.operator?e.value+"*":"notStartsWith"===e.operator?"!"+e.value+"*":"endsWith"===e.operator?"*"+e.value:"notEndsWith"===e.operator?"!*"+e.value:"INVALID"}).join(" "+e.groupMatcher+" ")}(e),a.advanced=!0):(a.value=e.filterValues[0].value,a.advanced=!1)}a.field=i.field,o(i.getParentModelValue()),t(function(){e.focus()},0),i.registerOnModelChangeCallback(o),a.toggleCaseSensitive=function(){a.caseSensitive=!a.caseSensitive,a.uiChanged()},a.uiChanged=function(){i.onFilterChanged({groupMatcher:"&",caseSensitive:a.caseSensitive,filterValues:[{operator:"contains",value:a.value}]})}}e.$inject=["$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccFloatingTextTableFilter",e)}(),function(){"use strict";function e(e,t,i,n,a){const o=this;function r(e){if(a.isNil(e))return o.groupMatcher="&",o.caseSensitive=!1,void(o.filterValues=[]);o.groupMatcher=e.groupMatcher,o.caseSensitive=e.caseSensitive,o.filterValues=a.map(e.filterValues,function(e){return{operator:e.operator,value:e.value}})}
1function s(t){t.operator={contains:e.getTranslation("common.ui.table.filter.operator.contains"),notContains:e.getTranslation("common.ui.table.filter.operator.notContains"),equals:e.getTranslation("common.ui.table.filter.operator.equals"),notEquals:e.getTranslation("common.ui.table.filter.operator.notEquals"),startsWith:e.getTranslation("common.ui.table.filter.operator.startsWith"),notStartsWith:e.getTranslation("common.ui.table.filter.operator.notStartsWith"),endsWith:e.getTranslation("common.ui.table.filter.operator.endsWith"),notEndsWith:e.getTranslation("common.ui.table.filter.operator.notEndsWith")}}r(n.getModel()),o.translations={operator:{}},s(o.translations),n.$on("i18n.switch",function(){s(o.translations)}),i(function(){t.focus()}),n.registerOnModelChangeCallback(r),o.uiChanged=function(){a.some(o.filterValues,function(e){return a.isNil(e.value)})||n.onFilterChanged({groupMatcher:o.groupMatcher,caseSensitive:o.caseSensitive,filterValues:a.map(a.filter(o.filterValues,function(e){return!a.isEmpty(e.value)}),function(e){return{operator:e.operator,value:e.value}})})},o.addFilter=function(){o.filterValues.push({operator:"contains",value:""}),o.uiChanged()},o.removeFilter=function(e){o.filterValues.splice(e,1),o.uiChanged()},o.setGroupMatcher=function(e){o.groupMatcher=e,o.uiChanged()},o.setCaseSensitive=function(e){o.caseSensitive=e,o.uiChanged()},o.clear=function(){r(null),o.addFilter(),o.uiChanged()}}e.$inject=["I18nService","$element","$timeout","$scope","_"],angular.module("ccFrontend").controller("ccTextTableFilter",e)}(),function(){"use strict";function e(e,t){return i.$inject=["ApplicationService","TableWidgetApiService","HotkeyService","$element","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/table/widget"),restrict:"E",controller:i};function i(e,t,i,n,a){var o=[];a.$on("$destroy",function(){i.unregisterHotkeys(o,n)}),a.widget={dirty:!1,isEditingMode:e.isEditingMode,focus:function(e){document.activeElement instanceof HTMLInputElement||a.widget.api.refocusCell(a,n.parent(),e)},table:{crudActions:{},crudActionsInitialized:!1,enableInlineEditing:!1,grid:{},inlineEditingActive:!1,mode:"view",preselectedIds:[]}},a.widget.table.getAgGridDiv=function(){return n.find(".cc-table")[0]},function(){(function(){o.push(i.registerHotkey("tab","Table.forwardTab",n)),o.push(i.registerHotkey("shift+tab","Table.backwardsTab",n)),o.push(i.registerHotkey("enter","Table.enter",n)),o.push(i.registerHotkey("esc","Table.escape",n))})(),a.$watch(function(){return n.is(":visible")},function(e,i){if(e){var n=document.getElementById(a.id).clientWidth;t.restoreGridLayout(n,a)}}),t.create(a)}()}}e.$inject=["UrlService","_"],angular.module("ccFrontend").directive("ccTableWidget",e)}(),function(){"use strict";function e(e){return t.$inject=["ApplicationService","TreeWidgetApiService","$scope"],{templateUrl:e.directiveTemplate("uiitem/widget/tree/widget"),restrict:"E",controller:t};function t(e,t,i){i.widget={tree:{uiTree:{handlers:{dragStart:function(e){i.widget.api.handleDragStart(e,i)},dropped:function(e){i.widget.api.handleDrop(e,i)},accept:function(e,t,n){return i.widget.api.acceptNodeDrop(e,t,n,i)}}},options:{},allowedChildrenModels:[],drills:[],partials:{},partialLeafs:{},partialColors:{},nodeReferences:{},selected:null,crudActions:{},crudActionsInitialized:!1},isEditingMode:e.isEditingMode},function(){t.create(i)}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccTreeWidget",e)}(),function(){"use strict";function e(e){return t.$inject=["WidgetService","ApplicationService","NavigationEditorService","CCUtils","EnumService","$element","$timeout","$scope","_"],{templateUrl:e.directiveTemplate("uiitem/widget/widget"),restrict:"E",scope:{itemConfig:"="},controller:t};function t(e,t,i,n,a,o,r,s,c){var l=/{.*}/;s.editViewDefinition=i.editViewDefinition,s.editWidget=i.editWidget,s.getEnumIcon=a.getEnumIcon,s.id=s.itemConfig.widgetId=e.getNextId(),s.isBasedOnViewDefinition=function(){return c.has(s.itemConfig,"viewDefinition")},s.isDevMode=t.isDevMode,s.isDesignMode=t.isDesignMode,s.isEditingMode=t.isEditingMode,s.itemStyle={},s.initializer={loading:!0},s.removeUiItem=i.removeUiItem,s.determineIcon=i.determineIcon,s.showConfigFailure=function(){if(!s.initializer.failed)return!1;if(c.isNil(s.itemConfig.viewDefinition)||l.test(s.itemConfig.viewDefinition))return!s.itemConfig.hideIfNoViewDefinition;return!0},s.hotkeysConfig={defaultHotKeysEnabled:!1,additionalHotKeys:[{eventName:"continueOnWidget",keys:"enter"},{eventName:"editOnWidget",keys:"e"},{eventName:"abortOnWidget",keys:"esc"},{eventName:"saveOnWidget",keys:"ctrl+s"}]},function(){r(function(){o.children()[0].focus()}),c.isUndefined(s.itemConfig.height)||c.extend(s.itemStyle,{height:s.itemConfig.height+"px"});c.extend(s,{utils:n})}()}}e.$inject=["UrlService"],angular.module("ccFrontend").directive("ccWidget",e)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return t.getContextAsPromise("activityId").then(t=>e.readObjects({viewDefinitionId:i.view.activityChecklist,objectId:t}).then(e=>!!e.data[0].checkListPositions&&!n.isEmpty(e.data[0].checkListPositions)))}}}function t(e){e.registerExtension("activity.ActivitiesChecklistPositionVisibilityExtension")}function i(e,t){e.resolveExtension("activity.ActivitiesChecklistPositionVisibilityExtension",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivitiesChecklistPositionVisibilityExtension"],angular.module("cc3.app").factory("ActivitiesChecklistPositionVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onSelectFn:function(t,i){e.setContext("activityId",t.activity.id,!1,i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("activity.ActivityEventsList")}function i(e,t){e.resolveExtension("activity.ActivityEventsList",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivityEventsListExtension"],angular.module("cc3.app").factory("ActivityEventsListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("activityId").then(function(e){return t.readObjects({viewDefinitionId:i.view.activityRegistrationProcedure,pathId:e}).then(function(e){return!n.isEmpty(e.data[0].activityRegistrationProcedure)})})}}}function t(e){e.registerExtension("activity.ActivityRegistrationProcedureChildVisibilityExtension")}function i(e,t){e.resolveExtension("activity.ActivityRegistrationProcedureChildVisibilityExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivityRegistrationProcedureChildVisibilityExtension"],angular.module("cc3.app").factory("ActivityRegistrationProcedureChildVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.achievementRegistrationIsNotDeregistered=function(t){var i=t.widget.api.selection.get(t.widget._scope);return!e.isNil(i)&&!e.isEmpty(i)&&e.every(i,function(t){var i=t.status;return e.isNil(i)||"DEREGISTERED"!==i})}},onSelectFn:function(t,i){i.api.hasAchievementAttempt=function(i){return!e.isNil(t.attemptNumber)}}}}function t(e){e.registerExtension("activity.ExaminationProtocol")}function i(e,t){e.resolveExtension("activity.ExaminationProtocol",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationProtocolExtension"],angular.module("cc3.app").factory("ExaminationProtocolExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.hasAchievementAttempt=function(i){return!e.isNil(t.data.attemptNumber)},t.api.achievementRegistrationIsNotDeregistered=function(i){if(!e.isNil(t.data)){var n=t.data.status;return e.isNull(n)||"DEREGISTERED"!==n}return!1}}}}function t(e){e.registerExtension("activity.ExaminationProtocolDetailVie
1w")}function i(e,t){e.resolveExtension("activity.ExaminationProtocolDetailView",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationProtocolDetailViewExtension"],angular.module("cc3.app").factory("ExaminationProtocolDetailViewExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onActivateFn:function(i,n){return e.setContext("activityId",i.customData.activityId,!1,n._scope.itemConfig.widgetState),t.when()}}}function t(e){e.registerExtension("activityDirectory.calendar")}function i(e,t){e.resolveExtension("activityDirectory.calendar",t)}e.$inject=["NavigationService","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivityDirectoryCalendarExtension"],angular.module("cc3.app").factory("ActivityDirectoryCalendarExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return t.getContextAsPromise("activityDirectoryId",a.scope).then(t=>e.readReducedObjects({viewDefinitionId:n.view.activityDirectory,objectId:t}).then(e=>{if(e[0]&&e[0].defaultTableView)return i.applyTableView(a._scope,e[0].defaultTableView)}))}}}function t(e){e.registerExtension("activityDirectory.view")}function i(e,t){e.resolveExtension("activityDirectory.view",t)}e.$inject=["ActionService","NavigationService","TableViewService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivityDirectoryViewExtension"],angular.module("cc3.app").factory("ActivityDirectoryViewExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onSelectFn:function(t,i){e.setContext("targetEntities",t.targetEntityNames,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("targetEnumNames",t.targetEnumNames,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("administration.import.ObjectMapping")}function i(e,t){e.resolveExtension("administration.import.ObjectMapping",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ObjectMappingExtension"],angular.module("cc3.app").factory("ObjectMappingExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){e.setContext("filterEntity","Person",!1,t._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("administration.PersonSharedAttributes")}function i(e,t){e.resolveExtension("administration.PersonSharedAttributes",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonSharedAttributesExtension"],angular.module("cc3.app").factory("PersonSharedAttributesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){var o=t.defer();return e.getContextAsPromise("valueListEntity").then(function(e){o.resolve("ResourceType"===e)}),o.promise}}}function t(e){e.registerExtension("administration.ResourceTypeResource")}function i(e,t){e.resolveExtension("administration.ResourceTypeResource",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ResourceTypeResourceExtension"],angular.module("cc3.app").factory("ResourceTypeResourceExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onActivateFn:function(t,i){e.setContext("valueListEntity",t.name,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("valueListValuesViewDefinitionId",t.valuesViewDefinitionId,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("valueListDetailViewDefinitionId",t.detailViewDefinitionId,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("valueListWithSignatures",t.signature,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("administration.ValueLists")}function i(e,t){e.resolveExtension("administration.ValueLists",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ValueListsExtension"],angular.module("cc3.app").factory("ValueListsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){var o=t.defer();return o.resolve(e.getContext("valueListWithSignatures")),o.promise}}}function t(e){e.registerExtension("administration.ValueListSignatureMappings")}function i(e,t){e.resolveExtension("administration.ValueListSignatureMappings",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ValueListsSignatureMappingsExtension"],angular.module("cc3.app").factory("ValueListsSignatureMappingsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onAfterSelectFn:function(t,o){var r=t.id;i.readReducedObjects({viewDefinitionId:n.view.applicationRegulationVersionPeriodIndependentProcessConfiguration,objectId:r}).then(function(t){var i=a.isNil(t[0].processDefinition)?void 0:t[0].processDefinition.periodIndependentConfigurationViewDefinition,n=t[0].periodIndependentConfiguration;
1e.setContext("periodIndependentConfigurationViewDefinitionId",i,!1,o._scope.itemConfig.widgetState),e.setContext("periodIndependentConfigurationId",n,!1,o._scope.itemConfig.widgetState)})},onSelectFn:function(i,n){e.setContext("appRegTree",i.contents,!1,n._scope.itemConfig.widgetState),t.broadcast("visible.update")},onBeforeActivateFn:function(t,i){e.removeContextFromState("periodIndependentConfigurationViewDefinitionId",i._scope.itemConfig.widgetState),e.removeContextFromState("periodIndependentConfigurationId",i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("applicationregulation.AppRegVersionsList")}function i(e,t){e.resolveExtension("applicationregulation.AppRegVersionsList",t)}e.$inject=["NavigationService","ApplicationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegListExtension"],angular.module("cc3.app").factory("AppRegListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.isFeatureActive(t.feature.defineMinorSubjectsInApplicationProcedures)||e.isFeatureActive(t.feature.defineMajorSubjectsInApplicationProcedures)}}}function t(e){e.registerExtension("applicationregulation.StudySpecificationsForApplicationProcedures")}function i(e,t){e.resolveExtension("applicationregulation.StudySpecificationsForApplicationProcedures",t)}e.$inject=["FeatureService","CMS_DATA","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudySpecificationsForApplicationProceduresExtension"],angular.module("cc3.app").factory("StudySpecificationsForApplicationProceduresExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onSelectFn:function(a,o){var r=o._scope.itemConfig.widgetState,s=n.isNil(a.applicationToUniversity)?a.applicationForAdmissionAchievementAttempt.applicationToUniversity.id:a.applicationToUniversity.id,c=n.isNil(a.gradedAchievement)?a.applicationForAdmissionAchievementAttempt.gradedAchievement.assessmentType:a.gradedAchievement.assessmentType;n.isNil(c)&&(c="OVERALL_ASSESSMENT");return o._scope.itemConfig.overrideChildState="ExaminerAssessment_"+c,t.setContext("processGroupId",i.processGroup.applicationToUniversity,!1,r),t.setContext("processableObjectId",s,!1,r),e.getProcessUiDetailInformation(i.processGroup.applicationToUniversity,s).then(function(e){t.setContext("processDefinitionStatusId",e.currentStatus,!1,r),t.setContext("processSummaryViewId",e.summaryViewDefinitionId,!1,r),n.isUndefined(e.summaryViewDefinitionForStatusCombinationId)||t.setContext("processableSummaryViewForStatusCombinationId",e.summaryViewDefinitionForStatusCombinationId,!1,r),t.setContext("processQuickAccessUiItem",e.quickAccessUiItem,!1,o._scope.itemConfig.widgetState),t.setContext("processVisibleDetailUiItems",e.visibleDetailUiItems,!1,r)})}}}function t(e){e.registerExtension("applicationtouniversity.ApplicationDetailsBasedOnAttemptOrAssessment")}function i(e,t){e.resolveExtension("applicationtouniversity.ApplicationDetailsBasedOnAttemptOrAssessment",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationDetailsBasedOnAttemptOrAssessmentExtension"],angular.module("cc3.app").factory("ApplicationDetailsBasedOnAttemptOrAssessmentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope,!0)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(e,r,s){var c=a.defer();return t.getContextAsPromise("achievementAttemptId",r).then(function(e){return i.readReducedObjects({viewDefinitionId:n.view.applicationRegulationVersionInApplicationProcess.achievementAttemptAssessmentConfiguration,objectId:e},r.widget).then(function(e){if(e&&e[0]){var t=e[0].gradedAchievement.numberOfExaminers;c.resolve((o.isNil(t)||t>0)&&"SINGLE_ASSESSMENT"!==e[0].gradedAchievement.assessmentType)}else c.resolve(!1)})}),c.promise}}}function t(e){e.registerExtension("application.achievementAttempt.achievementAssessment.ExaminerAssessment")}function i(e,t){e.resolveExtension("application.achievementAttempt.achievementAssessment.ExaminerAssessment",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationToUniversityExaminerAssessmentExtension"],angular.module("cc3.app").factory("ApplicationToUniversityExaminerAssessmentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope,!0)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(e,r,s){var c=a.defer();return t.getContextAsPromise("achievementAttemptId",r).then(function(e){return i.readReducedObjects({viewDefinitionId:n.view.applicationRegulationVersionInApplicationProcess.achievementAttemptAssessmentConfiguration,objectId:e},r.widget).then(function(e){if(e&&e[0]){var t=e[0].gradedAchievement.numberOfExaminers;c.resolve((o.isNil(t)||t>0)&&"SINGLE_ASSESSMENT"===e[0].gradedAchievement.assessmentType)}else c.resolve(!1)})}),c.promise}}}function t(e){e.registerExtension("application.achievementAttempt.achievementAssessment.ExaminerAssessmentWithEvaluation")}function i(e,t){e.resolveExtension("application.achievementAttempt.achievementAssessment.ExaminerAssessmentWithEvaluation",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationToUniversityExaminerAssessmentWithEvaluationExtension"],angular.module("cc3.app").factory("ApplicationToUniversityExaminerAssessmentWithEvaluationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onSelectFn:function(a,o){var r=a.id;t.readReducedObjects({viewDefinitionId:i.view.applicationPeriodDependentProcessConfiguration,pathId:r}).then(function(t){var i=n.isNil(t[0])||n.isNil(t[0].processDefinition)?void 0:t[0].processDefinition.periodRelatedConfigurationViewDefinition,a=r;
1e.setContext("periodDependentConfigurationViewDefinitionId",i,!1,o._scope.itemConfig.widgetState),e.setContext("periodDependentConfigurationId",a,!1,o._scope.itemConfig.widgetState)})},onBeforeActivateFn:function(t,i){e.removeContextFromState("periodDependentConfigurationViewDefinitionId",i._scope.itemConfig.widgetState),e.removeContextFromState("periodDependentConfigurationId",i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("applicationPeriod.PeriodDependentConfiguration")}function i(e,t){e.resolveExtension("applicationPeriod.PeriodDependentConfiguration",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationPeriodDependentConfigurationExtension"],angular.module("cc3.app").factory("ApplicationPeriodDependentConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(i,n,a){return e.getContextAsPromise("periodDependentConfigurationViewDefinitionId",n).then(function(i){return e.getContextAsPromise("periodDependentConfigurationId",n).then(function(e){return!t.isNil(i)&&!t.isNil(e)})})}}}function t(e){e.registerExtension("applicationPeriod.PeriodDependentConfigurationVisibility")}function i(e,t){e.resolveExtension("applicationPeriod.PeriodDependentConfigurationVisibility",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationPeriodDependentConfigurationVisibilityExtension"],angular.module("cc3.app").factory("ApplicationPeriodDependentConfigurationVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.getContextAsPromise("appRegNodeSelectedEntity").then(function(e){return"AppRegVersionAchievement"===e})}}}function t(e){e.registerExtension("appreg.ApplicationForAdmissionAchievementAttempts")}function i(e,t){e.resolveExtension("appreg.ApplicationForAdmissionAchievementAttempts",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationForAdmissionAchievementAttemptsExtension"],angular.module("cc3.app").factory("ApplicationForAdmissionAchievementAttemptsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){e.isDeveloper().then(function(e){t._scope.isDeveloper=e})},onLoadFn:function(e){e.api.isDeveloper=function(t){return e._scope.isDeveloper}}}}function t(e){e.registerExtension("application.AppRegDependencyGraph")}function i(e,t){e.resolveExtension("application.AppRegDependencyGraph",t)}e.$inject=["AuthService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegDependencyGraphExtension"],angular.module("cc3.app").factory("AppRegDependencyGraphExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return e.getContextAsPromise(a._scope.itemConfig.receivesContext).then(function(e){t.readObjects({viewDefinitionId:i.view.applicationRegulationVersionContentsAccess,objectId:e},a,{reduced:!1}).then(function(e){n.isNil(e)||n.isNil(e.data)||n.isNil(e.data[0])||n.isNil(e.data[0].contents)||e.data[0].contents.$write||(a.api.hasCreateConfiguration=function(e){return!1},a.api.hasDeleteConfiguration=function(e){return!1})})})},onSelectFn:function(t,a){var o=a._scope.itemConfig.widgetState,r=a.model.baseModel[t.$viewDefinition],s=n.isNil(r)?null:r.entity,c=function(e){switch(e){case i.view.appRegContainer.details:return i.view.appRegContainer;case i.view.appRegAchievement.details:return i.view.appRegAchievement;default:throw new Error("Unknown object in app reg tree")}}(t.$viewDefinition);e.setContext("appRegNodeSelectedEntity",s,!1,o),e.setContext("appRegNodeViewDefinitionId",t.$viewDefinition,!1,o),e.setContext("appRegNodeStudySpecificationsViewDefinitionId",c.studySpecifications||null,!1,o),e.setContext("appRegNodeRulesViewDefinitionId",c.rules||null,!1,o)}}}function t(e){e.registerExtension("appreg.AppRegTree")}function i(e,t){e.resolveExtension("appreg.AppRegTree",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegExtension"],angular.module("cc3.app").factory("AppRegExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){var o=e.getContext("processableObjectId");n.isNil(o)&&(o=e.getContext("applicationToUniversityId"),e.setContext("processableObjectId",o,!1,a._scope.itemConfig.widgetState));return t.readObjects({viewDefinitionId:i.view.applicationAppRegRulesValid,objectId:o}).then(function(e){var t=e.data[0];a.tree.appRegRuleResultsValid=t.appRegRuleResultsValid,a.tree.appRegRuleResults=n.reduce(t.appRegRuleResults,function(e,t){return e[t.appRegVersionRules]=t,e},{})})},onSelectFn:function(t,i){var a=i._scope.itemConfig.widgetState,o=i.model.baseModel[t.$viewDefinition],r=n.isNil(o)?null:o.entity;e.setContext("appRegNodeSelectedEntity",r,!1,a)}}}function t(e){e.registerExtension("appreg.AppRegTreeInApplicationToUniversity")}function i(e,t){e.resolveExtension("appreg.AppRegTreeInApplicationToUniversity",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegTreeInApplicationToUniversityExtension"],angular.module("cc3.app").factory("AppRegTreeInApplicationToUniversityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){var r=t.defer();return e.getContextAsPromise("appRegNodeRulesViewDefinitionId").then(function(e){r.resolve(!i.isNull(e))}),r.promise}}}function t(e){e.registerExtension("appreg.AppRegVersionRulesVisibility")}function i(e,t){e.resolveExtension("appreg.AppRegVersionRulesVisibility",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegVersionRulesVisibilityExtension"],angular.module("cc3.app").factory("AppRegVersionRulesVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return a._scope.$watch(function(){return a.data&&(a.data.appRegVersionAchievementContainer||a.data.appRegVersionAchievement)},function(i,o){if(!n.isNil(i)&&(n.isNil(o)||i.id!==o.id)&&"object"==typeof i&&!n.isNil(i.id)){var r=t.view.appRegRules.gradingSystem[a.data.appRegRulesComponentType];e.readReducedObjects({viewDefinitionId:r,pathId:"CONTAINER"===a.data.appRegRulesComponentType?i.id:null,objectId:"ACHIEVEMENT"===a.data.appRegRulesComponentType?i.id:null}).then(function(e){if(!n.isNil(e)&&Array.isArray(e)){var t=void 0===e[0].gradingSystem?e[0].gradingSystemForApplication:e[0].gradingSystem;
1t.id!==a.data.grade.gradingSystem&&(a._scope.widget.api.field.setValue("grade.gradingSystem",t.id,!0,a._scope),a._scope.widget.api.field.setValue("grade.numericGrade",null,!0,a._scope),a._scope.widget.api.field.setValue("grade.alphanumericGrade",null,!0,a._scope),a._scope.widget.api.field.setValue("grade.withDistinction",null,!0,a._scope))}})}}),i.when()}}}function t(e){e.registerExtension("appreg.CompletionRuleDetails")}function i(e,t){e.resolveExtension("appreg.CompletionRuleDetails",t)}e.$inject=["ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegCompletionRuleDetailsExtension"],angular.module("cc3.app").factory("AppRegCompletionRuleDetailsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(n){return t.getContextAsPromise("applicationRegulationVersionId").then(function(t){e.readObjects({viewDefinitionId:i.view.applicationRegulationVersionContentsAccess,objectId:t},n,{reduced:!1}).then(function(e){e.data[0].contents.$write||(n.api.hasCreateConfiguration=function(e){return!1},n.api.hasDeleteConfiguration=function(e){return!1})})})},onSelectFn:function(e,i){t.setContext("appRegNodeCompletionRuleViewId",e.$viewDefinition,!1,i._scope.itemConfig.widgetState)},visibleFn:function(e,n,a){return t.getContextAsPromise("completionRuleCalculatorId",n).then(function(e){return angular.equals(e,i.completionRule.individualConfigurationCompletionRule)})}}}function t(e){e.registerExtension("appreg.CompletionRules")}function i(e,t){e.resolveExtension("appreg.CompletionRules",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AppRegCompletionRulesExtension"],angular.module("cc3.app").factory("AppRegCompletionRulesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(i,n,a){return e.getContextAsPromise("periodIndependentConfigurationViewDefinitionId",n).then(function(i){return e.getContextAsPromise("periodIndependentConfigurationId",n).then(function(e){return!t.isNil(i)&&!t.isNil(e)})})}}}function t(e){e.registerExtension("appreg.periodIndependentConfiguration")}function i(e,t){e.resolveExtension("appreg.periodIndependentConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PeriodIndependentConfigurationExtension"],angular.module("cc3.app").factory("PeriodIndependentConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onLoadFn:function(t){return e.setContext("filterEntity",t.data.entity.id,!1,t._scope.itemConfig.linkToSubParentState),a.when()},visibleFn:function(a,o,r){return e.getContextAsPromise("archivingLogEntryId").then(function(e){return t.readReducedObjects({viewDefinitionId:i.view.archivingLogEntry,objectId:e}).then(function(e){return!n.isNil(e[0].logDetails)})})}}}function t(e){e.registerExtension("archiving.ArchivingLogExtension")}function i(e,t){e.resolveExtension("archiving.ArchivingLogExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ArchivingLogExtension"],angular.module("cc3.app").factory("ArchivingLogExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(n){return e.getContextAsPromise("archivingRuleId").then(function(a){return t.readReducedObjects({viewDefinitionId:i.view.archivingRule,objectId:a}).then(function(t){e.setContext("filterEntity",t[0].archivingTrigger.entity,!1,n._scope.itemConfig.linkToSubParentState)})})}}}function t(e){e.registerExtension("archiving.ArchivingRuleExtension")}function i(e,t){e.resolveExtension("archiving.ArchivingRuleExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ArchivingRuleExtension"],angular.module("cc3.app").factory("ArchivingRuleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(t){e.setContext("filterEntity",t.data.entity.id,!1,t._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("archiving.DatePathExtension")}function i(e,t){e.resolveExtension("archiving.DatePathExtension",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DatePathExtension"],angular.module("cc3.app").factory("DatePathExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:(a,o)=>{var r=n.defer();
1return e.getContextAsPromise("identityProviderId",o).then(e=>t.readReducedObjects({viewDefinitionId:i.view.identityProvider,objectId:e}).then(e=>{r.resolve("SAML"===e[0].identityProviderType)})),r.promise}}}function t(e){e.registerExtension("samlServiceProviderInformation.visibility")}function i(e,t){e.resolveExtension("samlServiceProviderInformation.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SamlServiceProviderInformationFormWidgetVisibilityExtension"],angular.module("cc3.app").factory("SamlServiceProviderInformationFormWidgetVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return t.getContextAsPromise("eventId",o).then(function(t){return e.readReducedObjects({viewDefinitionId:i.view.calendarEventHasParentEvent,objectId:t}).then(function(e){return!(n.isNil(e[0])||n.isNil(e[0].parentEvent))})})}}}function t(e){e.registerExtension("calendar.personal.hasParentEvent")}function i(e,t){e.resolveExtension("calendar.personal.hasParentEvent",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonalCalendarParentEventExtension"],angular.module("cc3.app").factory("PersonalCalendarParentEventExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onActivateFn:function(e,o){if(i.setContext("personId",e.person,!1,o._scope.itemConfig.childState),i.setContext("institutionId",e.institution,!1,o._scope.itemConfig.childState),e.person)return n.setTraits(o._scope.itemConfig.setsPersonTraits,t.view.personTraits,e.person,null,o._scope.itemConfig.childState);return a.when()}}}function t(e){e.registerExtension("contact.contact")}function i(e,t){e.resolveExtension("contact.contact",t)}e.$inject=["ActionService","CMS_DATA","NavigationService","PersonTraitsService","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ContactExtension"],angular.module("cc3.app").factory("ContactExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onObjectUpdatedFn:function(e,i,n,a,o){if(["ContactResearch","ContactResearchFilter"].includes(i))return o.widget.api.reload(o);return t.when()}}}function t(e){e.registerExtension("contact.ResearchList")}function i(e,t){e.resolveExtension("contact.ResearchList",t)}e.$inject=["NavigationService","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ResearchListExtension"],angular.module("cc3.app").factory("ResearchListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.getContextAsPromise("achievementAttemptId").then(function(e){return t.getRelevantDisadvantageCompensationRightsForAchievementAttempt(e,n).then(function(e){return 0!==e.length})})}}}function t(e){e.registerExtension("disadvantageCompensationRight.achievementAttempt")}function i(e,t){e.resolveExtension("disadvantageCompensationRight.achievementAttempt",t)}e.$inject=["NavigationService","ActionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DisadvantageCompensationRightsForAchievementAttemptExtension"],angular.module("cc3.app").factory("DisadvantageCompensationRightsForAchievementAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.getContextAsPromise("examinationId").then(function(e){return t.getRelevantDisadvantageCompensationRightsForExamination(e,n).then(function(e){return 0!==e.length})})}}}function t(e){e.registerExtension("disadvantageCompensationRight.examination")}function i(e,t){e.resolveExtension("disadvantageCompensationRight.examination",t)}e.$inject=["NavigationService","ActionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DisadvantageCompensationRightsForExaminationExtension"],angular.module("cc3.app").factory("DisadvantageCompensationRightsForExaminationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.getContextAsPromise("examinationId").then(function(i){return e.getContextAsPromise("examinationEventId").then(function(e){return t.getRelevantDisadvantageCompensationRightsForExaminationEvent(i,e,n).then(function(e){return 0!==e.length})})})}}}function t(e){e.registerExtension("disadvantageCompensationRight.examinationEvent")}function i(e,t){e.resolveExtension("disadvantageCompensationRight.examinationEvent",t)}e.$inject=["NavigationService","ActionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DisadvantageCompensationRightsForExaminationEventExtension"],angular.module("cc3.app").factory("DisadvantageCompensationRightsForExaminationEventExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.getContextAsPromise("achievementRegistrationId").then(function(e){return t.getRelevantDisadvantageCompensationRightsForExamRegExaminationRegistration(e,n).then(function(e){return 0!==e.length})})}}}function t(e){e.registerExtension("disadvantageCompensationRight.examRegExaminationRegistration")}function i(e,t){e.resolveExtension("disadvantageCompensationRight.examRegExaminationRegistration",t)}e.$inject=["NavigationService","ActionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DisadvantageCompensationRightsForExamRegExaminationRegistrationExtension"],angular.module("cc3.app").factory("DisadvantageCompensationRightsForExamRegExaminationRegistrationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onActivateFn:function(i,n){const a=n._scope.itemConfig.widgetState;return e.fetchPublicKeyRetrievalMethodConfigurationView(i.id).then(e=>{t.setContext("publicKeyRetrievalMethodConfigurationViewDefinitionId",e.configurationViewDefinitionId,!1,a),t.setContext("publicKeyRetrievalMethodConfigurationObjectId",e.configurationObjectId,!1,a)})}}}function t(e){e.registerExtension("emailsettings.PublicKeyRetrievalSettings")}function i(e,t){e.resolveExtension("emailsettings.PublicKeyRetrievalSettings",t)}e.$inject=["ActionService","NavigationService","WidgetDynamicViewDefinitionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PublicKeyRetrievalSettingsExtension"],angular.module("cc3.app").factory("PublicKeyRetrievalSettingsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("surveyId").then(function(e){return t.readReducedObjects({viewDefinitionId:i.view.surveyAssessment,pathId:e}).then(function(e){return!(n.isNil(e)||n.isNil(e[0])||n.isNil(e[0].evaluatedAt))})})}}}function t(e){e.registerExtension("evaluation.AnswersExtension")}function i(e,t){e.resolveExtension("evaluation.AnswersExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AnswersExtension"],angular.module("cc3.app").factory("AnswersExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(e){!0===e.data.answered&&e.api.switchTo("view",e._scope)}}}function t(e){e.registerExtension("evaluation.answersheetform")}function i(e,t){e.resolveExtension("evaluation.answersheetform",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AnswerSheetFormExtension"],angular.module("cc3.app").factory("AnswerSheetFormExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(e){e.api.navigateToParent=i}};function i(){e.go("myAnswerSheets")}}function t(e){e.registerExtension("evaluation.answersheetofuser")}function i(e,t){e.resolveExtension("evaluation.answersheetofuser",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AnswerSheetOfUserExtension"],angular.module("cc3.app").factory("AnswerSheetOfUserExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeSelectFn:function(t,i){var n=t.type;e.setContext("answerType",n)}}}function t(e){e.registerExtension("evaluation.AnswerTypeSubtreeNavigationExtension")}function i(e,t){e.resolveExtension("evaluation.AnswerTypeSubtreeNavigationExtension",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AnswerTypeSubtreeNavigationExtension"],angular.module("cc3.app").factory("AnswerTypeSubtreeNavigationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("surveyId").then(function(e){return t.readReducedObjects({viewDefinitionId:i.view.surveyAnswersOfCurrentUser,pathId:e}).then(function(e){return!n.isNil(e)&&e.length>1})})}}}function t(e){e.registerExtension("evaluation.MultipleAnswerSheetsExtension")}function i(e,t){e.resolveExtension("evaluation.MultipleAnswerSheetsExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","MultipleAnswerSheetsExtension"],angular.module("cc3.app").factory("MultipleAnswerSheetsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(n){return e.getContextAsPromise("surveyId").then(function(n){return t.readReducedObjects({viewDefinitionId:i.view.surveyAnswersOfCurrentUser,pathId:n}).then(function(t){var i=t;if(i.length>1)throw new Error("This survey has the single answer type "+t[0].surveyType+" but contains "+i.length+" answers");e.setContext("answerSheetId",i[0].id)})})}}}function t(e){e.registerExtension("evaluation.OwnSingleAnswerSheetExtension")}function i(e,t){e.resolveExtension("evaluation.OwnSingleAnswerSheetExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","OwnSingleAnswerSheetExtension"],angular.module("cc3.app").factory("OwnSingleAnswerSheetExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("surveyId").then(function(e){return t.readReducedObjects({viewDefinitionId:i.view.surveyAnswersOfCurrentUser,pathId:e}).then(function(e){return!n.isNil(e)&&1===e.length})})}}}function t(e){e.registerExtension("evaluation.SingleAnswerSheetExtension")}function i(e,t){e.resolveExtension("evaluation.SingleAnswerSheetExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SingleAnswerSheetExtension"],angular.module("cc3.app").factory("SingleAnswerSheetExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("surveyId").then(function(e){return t.readReducedObjects({viewDefinitionId:i.view.topicAssessment,pathId:e}).then(function(e){return!(n.isNil(e)||n.isNil(e[0])||n.isNil(e[0].evaluatedAt))})})}}}function t(e){e.registerExtension("evaluation.TopicAssessmentsExtension")}function i(e,t){e.resolveExtension("evaluation.TopicAssessmentsExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TopicAssessmentsExtension"],angular.module("cc3.app").factory("TopicAssessmentsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onSelectFn:function(t,i){e.setContext("examContentId",t.examContent,!1,i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("exam.ExamList")}function i(e,t){e.resolveExtension("exam.ExamList",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamListExtension"],angular.module("cc3.app").factory("ExamListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onSelectFn:function(t,i){var n=i._scope.itemConfig.widgetState;e.setContext("examContentNodeViewDefinitionId",t.$viewDefinition,!1,n)}}}function t(e){e.registerExtension("exam.ExamTree")}function i(e,t){e.resolveExtension("exam.ExamTree",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamContentExtension"],angular.module("cc3.app").factory("ExamContentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeSelectFn:function(t,i){e.setContext("examinationType",t.examination.type,!1,i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("examination.ExaminationRegistration.ExaminationType")}function i(e,t){e.resolveExtension("examination.ExaminationRegistration.ExaminationType",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationTypeExtension"],angular.module("cc3.app").factory("ExaminationTypeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:i=>e.fetchAndSetFileContainerIds(i,"activityId",t.view.activityNewFileContainerContents,"publicFiles"),onLoadFn:e.selectFirstItemAndExtendWidgetApi,canDeleteNodeFn:e.canDeleteNodeFn}}function t(e){e.registerExtension("activity.filecontainer.contents")}function i(e,t){e.resolveExtension("activity.filecontainer.contents",t)}e.$inject=["FileTreeService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ActivityFileTreeE
1xtension"],angular.module("cc3.app").factory("ActivityFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:i=>e.fetchAndSetFileContainerIds(i,"institutionId",t.view.contact.institutionFileContainer,"fileContainer"),onLoadFn:e.selectFirstItemAndExtendWidgetApi,canDeleteNodeFn:e.canDeleteNodeFn}}function t(e){e.registerExtension("contact.InstitutionFileContainer.contents")}function i(e,t){e.resolveExtension("contact.InstitutionFileContainer.contents",t)}e.$inject=["FileTreeService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","InstitutionFileTreeExtension"],angular.module("cc3.app").factory("InstitutionFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(n,a,o){return e.getContextAsPromise("partialActivityId",a).then(function(e){return t.readObjects({viewDefinitionId:i.view.partialActivityFileContainerContents,objectId:e},a.widget).then(function(e){return!!e.data[0]})})}}}function t(e){e.registerExtension("activity.partialactivity.filelayout")}function i(e,t){e.resolveExtension("activity.partialactivity.filelayout",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PartialActivityFileLayoutContainerExtension"],angular.module("cc3.app").factory("PartialActivityFileLayoutContainerExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:i=>e.fetchAndSetFileContainerIds(i,"partialActivityId",t.view.partialActivityFileContainerContents,"participantFiles"),onLoadFn:e.selectFirstItemAndExtendWidgetApi,canDeleteNodeFn:e.canDeleteNodeFn}}function t(e){e.registerExtension("activity.partialactivity.filetree")}function i(e,t){e.resolveExtension("activity.partialactivity.filetree",t)}e.$inject=["FileTreeService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PartialActivityFileTreeExtension"],angular.module("cc3.app").factory("PartialActivityFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{onBeforeLoadFn(t){const i=e.hasContext("personId")?"personId":"currentUser";return o.fetchAndSetFileContainerIds(t,i,a.view.personalFileContainer,"fileContainer")},onLoadFn:o.selectFirstItemAndExtendWidgetApi,onObjectUpdatedFn(e,i,n,o,s){if(function(e){return!r.isNil(e.selection)&&!r.isNil(e.selection.selected)&&!r.isNil(e.selection.selected[0])}(s.widget)){const e=s.widget.selection.selected[0];if("FileContainer"===i&&e.isSharedFilesFolder)return t.readObjects({viewDefinitionId:a.view.personFileFolder,objectId:e.id},s.widget).then(function(t){e.files=t.data[0].files})}},canCopyElementFn:e=>"otherFolder"===o.isSelectedElementSharedOrExportedFilesFolder(e),canAddNodeFn:e=>"otherFolder"===o.isSelectedElementSharedOrExportedFilesFolder(e),canDeleteNodeFn:o.canDeleteNodeFn}}function t(e){e.registerExtension("person.filecontainer.contents")}function i(e,t){e.resolveExtension("person.filecontainer.contents",t)}e.$inject=["NavigationService","ActionService","WidgetService","TreeService","CMS_DATA","FileTreeService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonFileTreeExtension"],angular.module("cc3.app").factory("PersonFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(o,r,s){var c=e.hasContext("personId")?"personId":"currentUser",l=n.defer();return e.getContextAsPromise(c,r).then(function(e){return t.readObjects({viewDefinitionId:i.view.personalFileContainer,objectId:e},r.widget).then(function(e){l.resolve(!a.isNil(e.data[0]))})}),l.promise}}}function t(e){e.registerExtension("person.filecontainer.visibility")}function i(e,t){e.resolveExtension("person.filecontainer.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonFileTreeVisibilityExtension"],angular.module("cc3.app").factory("PersonFileTreeVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onBeforeLoadFn:i=>e.fetchAndSetFileContainerIds(i,"projectId",t.view.projectFileContainer,"fileContainer"),onLoadFn:e.selectFirstItemAndExtendWidgetApi,canDeleteNodeFn:e.canDeleteNodeFn}}function t(e){e.registerExtension("project.filecontainer.contents")}function i(e,t){e.resolveExtension("project.filecontainer.contents",t)}e.$inject=["FileTreeService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProjectFileTreeE
1xtension"],angular.module("cc3.app").factory("ProjectFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(o,r,s){var c=n.defer();return e.getContextAsPromise("projectId",r).then(function(e){return t.readObjects({viewDefinitionId:i.view.projectFileContainer,objectId:e},r.widget).then(function(e){c.resolve(!a.isNil(e.data[0]))})}),c.promise}}}function t(e){e.registerExtension("project.filecontainer.visibility")}function i(e,t){e.resolveExtension("project.filecontainer.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProjectFileTreeVisibilityExtension"],angular.module("cc3.app").factory("ProjectFileTreeVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(n){return t.readObjects({viewDefinitionId:i.view.publicFileContainerContents,objectId:i.fileContainer.publicFileContainerId},n).then(function(t){e.setContext("fileContainerContentId",t.data[0].contents.id,!1,n._scope.itemConfig.widgetState),e.setContext("fileContainerId",i.fileContainer.publicFileContainerId,!1,n._scope.itemConfig.linkToSubParentState)})}}}function t(e){e.registerExtension("public.filecontainer.capacity")}function i(e,t){e.resolveExtension("public.filecontainer.capacity",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PublicFileCapacityExtension"],angular.module("cc3.app").factory("PublicFileCapacityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(n){return t.readObjects({viewDefinitionId:i.view.publicFileContainerContents,objectId:i.fileContainer.publicFileContainerId},n).then(function(t){e.setContext("fileContainerContentId",t.data[0].contents.id,!1,n._scope.itemConfig.widgetState),e.setContext("fileContainerId",i.fileContainer.publicFileContainerId,!1,n._scope.itemConfig.linkToSubParentState)})},onLoadFn:function(e){e.data.length>0&&e.api.selection.select(e.data[0],e._scope),e.api.isNoSystemFolder=function(t){return!!a(e)&&!e.selection.selected[0].systemFolder}},canDeleteNodeFn:function(e){return!!a(e)&&!function(e){return e.selection.selected[0].systemFolder}(e)}};function a(e){return!n.isNil(e.selection)&&!n.isNil(e.selection.selected)&&!n.isNil(e.selection.selected[0])}}function t(e){e.registerExtension("public.filecontainer.contents")}function i(e,t){e.resolveExtension("public.filecontainer.contents",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PublicFileTreeExtension"],angular.module("cc3.app").factory("PublicFileTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){return e.readObjects({viewDefinitionId:t.view.publicFileContainerContents,objectId:t.fileContainer.publicFileContainerId},a.widget).then(function(e){return!i.isNil(e.data[0])})}}}function t(e){e.registerExtension("public.filecontainer.visibility")}function i(e,t){e.resolveExtension("public.filecontainer.visibility",t)}e.$inject=["ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PublicFileTreeVisibilityExtension"],angular.module("cc3.app").factory("PublicFileTreeVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){e.broadcast("sharedFileCount.update")}}}function t(e){e.registerExtension("filefolders.UpdateSharedFilesCount")}function i(e,t){e.resolveExtension("filefolders.UpdateSharedFilesCount",t)}e.$inject=["ApplicationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","UpdateSharedFilesCountExtension"],angular.module("cc3.app").factory("UpdateSharedFilesCountExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onAfterSelectFn:i,onAfterDeselectFn:i};function i(i,n){var a=t.pluck(n.api.selection.get(n._scope),"id"),o=n._scope.itemConfig.widgetState.lastIndexOf("dashboard")+9,r=n._scope.itemConfig.widgetState.substr(0,o);e.setContext("incomingMessageIds",a,!1,r)}}function t(e){e.registerExtension("ghini.AssignMessageToPerson")}function i(e,t){e.resolveExtension("ghini.AssignMessageToPerson",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","GhiniAssignMessageToPersonExtension"],angular.module("cc3.app").factory("GhiniAssignMessageToPersonExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onSelectFn:function(n,a){var o=!i.startsWith(n.helpKey,"entity");e.setContext("isSelectedStaticHelpFieldEditable",o,!0),t.broadcast("action.update")}}}function t(e){e.registerExtension("help.CheckIfEditable")}function i(e,t){e.resolveExtension("help.CheckIfEditable",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CheckIfEditableExtension"],angular.module("cc3.app").factory("CheckIfEditableExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){var s=i.defer(),c=t.getContext("uiItemId");return t.getContextAsPromise("uiItemViewDefinitionId").then(function(i){e.readObjects({viewDefinitionId:i,objectId:c}).then(function(e){n.isUndefined(e.data[0].defaultHelpField)?(t.
1setContext("isVisibleVirtualHF",!0,!0),s.resolve(!1)):n.isNil(e.data[0])||n.isNil(e.data[0].defaultHelpField)||n.isNil(e.data[0].defaultHelpField.id)?(t.setContext("isVisibleVirtualHF",!1,!0),s.resolve(!1)):(t.setContext("isVisibleVirtualHF",!0,!0),s.resolve(!0))})}),s.promise}}}function t(e){e.registerExtension("help.DefaultHelpFieldVisible")}function i(e,t){e.resolveExtension("help.DefaultHelpFieldVisible",t)}e.$inject=["ActionService","NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DefaultHelpFieldVisibleExtension"],angular.module("cc3.app").factory("DefaultHelpFieldVisibleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){var s=i.defer(),c=t.getContext("aclUserStoryEntryPointId");return e.readObjects({viewDefinitionId:"515842d1-e0f0-4fed-b135-b58c5dc1c27a",objectId:c}).then(function(e){n.isUndefined(e.data[0].description)?(t.setContext("isVisibleVirtualHF",!0,!0),s.resolve(!1)):n.isUndefined(e.data[0])||n.isNull(e.data[0])||n.isUndefined(e.data[0].description)||n.isNull(e.data[0].description)||n.isNull(e.data[0].description.value)?(t.setContext("isVisibleVirtualHF",!1,!0),s.resolve(!1)):(t.setContext("isVisibleVirtualHF",!0,!0),s.resolve(!0))}),s.promise}}}function t(e){e.registerExtension("help.EntryPointDefaultHelpFieldVisible")}function i(e,t){e.resolveExtension("help.EntryPointDefaultHelpFieldVisible",t)}e.$inject=["ActionService","NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","EntryPointDefaultHelpFieldVisibleExtension"],angular.module("cc3.app").factory("EntryPointDefaultHelpFieldVisibleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){var r=t.getContext("staticHelpFieldId");i.isUndefined(r)&&(r=t.getContext("uiItemId"));i.isUndefined(r)&&(r=t.getContext("aclUserStoryEntryPointId"));return e.findSqlHelpFieldAction([r]).then(function(e){return i.isUndefined(e[0].data[0])||i.isNull(e[0].data[0])?(t.setContext("isVisibleSqlHF",!1,!0),!1):(t.setContext("sqlHelpFieldId",e[0].data[0].id,!0),t.setContext("isVisibleSqlHF",!0,!0),!0)})}}}function t(e){e.registerExtension("help.SqlHelpFieldVisible")}function i(e,t){e.resolveExtension("help.SqlHelpFieldVisible",t)}e.$inject=["HelpService","NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SqlHelpFieldVisibleExtension"],angular.module("cc3.app").factory("SqlHelpFieldVisibleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onLoadFn:function(o){return e.setGradeValidationFunction(o),e.registerPassedWatcher(o),o._scope.$watch(function(){return o.data&&o.data.takenAchievement},function(e,t){a.isNil(e)||!a.isNil(t)&&e.id===t.id||"object"!=typeof e||a.isNil(e.id)?a.isNil(e)&&(o._scope.widget.api.field.setValue("grade.gradingSystem",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.numericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.alphanumericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.withDistinction",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.onlyPredefinedGradesAllowed",!0,!0,o._scope)):i.readReducedObjects({viewDefinitionId:n.view.interimAchievementAttemptGradingSystem,objectId:e.id}).then(function(e){!a.isNil(e)&&Array.isArray(e)&&(e[0].gradingSystem!==o.data.grade.gradingSystem&&(o._scope.widget.api.field.setValue("grade.gradingSystem",e[0].gradingSystem,!0,o._scope),o._scope.widget.api.field.setValue("grade.numericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.alphanumericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("grade.withDistinction",null,!0,o._scope)),o._scope.widget.api.field.setValue("grade.onlyPredefinedGradesAllowed",e[0].onlyPredefinedGradesAllowedInGrade,!0,o._scope))})}),t.when()}}}function t(e){e.registerExtension("import.InterimAchievementAttempt")}function i(e,t){e.resolveExtension("import.InterimAchievementAttempt",t)}e.$inject=["AchievementAttemptService","$q","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","InterimAchievementAttemptExtension"],angular.module("cc3.app").factory("InterimAchievementAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(n){if(t.isNil(n._scope.unregisterWatch))return n._scope.unregisterWatch=n._scope.$on("i18n.switch",function(){i(n._scope),n.api.reload(n._scope)}),e.when()},onReloadFn:i,onDestroyFn:i};function i(t){return t.unregisterWatch&&(t.unregisterWatch(),delete t.unregisterWatch),e.when()}}function t(e){e.registerExtension("messageTemplate.MessageTemplatePlaceholder")}function i(e,t){e.resolveExtension("messageTemplate.MessageTemplatePlaceholder",t)}e.$inject=["$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","MessageTemplateDataPlaceholderExtension"],angular.module("cc3.app").factory("MessageTemplateDataPlaceholderExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(a,o,r){var s=n.defer();return e.getContextAsPromise("activityId",o).then(function(e){return t.readObjects({viewDefinitionId:i.view.newActivity,objectId:e},o.widget).then(function(e){s.resolve(e.data[0].isLecture)})}),s.promise}}}function t(e){e.registerExtension("lectureActivities.visibility")}function i(e,t){e.resolveExtension("lectureActivities.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","LectureActivityTabVisibilityExtension"],angular.module("cc3.app").factory("LectureActivityTabVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(a,o,r){var s=n.defer();return e.getContextAsPromise("activityId",o).then(function(e){return t.readObjects({viewDefinitionId:i.view.newActivity,objectId:e},o.widget).then(function(e){s.resolve(!e.data[0].isLecture)})}),s.promise}}}function t(e){e.registerExtension("nonLectureActivities.visibility")}function i(e,t){e.resolveExtension("nonLectureActivities.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PartialActivityParticipantsBasicTabVisibilityExtension"],angular.module("cc3.app").factory("Parti
1alActivityParticipantsBasicTabVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onRegisterFilterFn:function(n){if(n.api.hasApi(e.filter.id,n._scope))return n.api.filter.activate(t.filter.currentActivityRegistrations,n._scope);return i.when()}}}function t(e){e.registerExtension("newActivity.ownRegistrationsList")}function i(e,t){e.resolveExtension("newActivity.ownRegistrationsList",t)}e.$inject=["WIDGET_API","CMS_DATA","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","OwnActivitiesListExtension"],angular.module("cc3.app").factory("OwnActivitiesListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o){return i.getContextAsPromise("activityId",o).then(function(i){return t.readReducedObjects({viewDefinitionId:e.view.newActivity,objectId:i}).then(function(e){return!n.isNil(e)&&!n.isNil(e[0])&&e[0].isLecture})})}}}function t(e){e.registerExtension("activity.PartialActivityLecturers")}function i(e,t){e.resolveExtension("activity.PartialActivityLecturers",t)}e.$inject=["CMS_DATA","ActionService","NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PartialActivityLecturersExtension"],angular.module("cc3.app").factory("PartialActivityLecturersExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(a,o,r){var s=n.defer();return e.getContextAsPromise("activityId",o).then(function(e){return t.readObjects({viewDefinitionId:i.view.newActivity,objectId:e},o.widget).then(function(e){s.resolve(e.data[0].isPerformance)})}),s.promise}}}function t(e){e.registerExtension("performance.activity.tab.visibility")}function i(e,t){e.resolveExtension("performance.activity.tab.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PerformanceActivityTabVisibilityExtension"],angular.module("cc3.app").factory("PerformanceActivityTabVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(a,o,r){var s=n.defer();return e.getContextAsPromise("activityId",o).then(function(e){return t.readObjects({viewDefinitionId:i.view.newActivity,objectId:e},o.widget).then(function(e){s.resolve(e.data[0].isPublic)})}),s.promise}}}function t(e){e.registerExtension("public.activity.tab.visibility")}function i(e,t){e.resolveExtension("public.activity.tab.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PublicActivityTabVisibilityExtension"],angular.module("cc3.app").factory("PublicActivityTabVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onSelectFn:function(o,r){t.removeContext("prioritizationStrategyConfigurationId"),t.removeContext("prioritizationStrategyConfigurationViewDefinitionId");var s=o.strategy.id;if(!n.isNil(s))return e.getNewPrioritizationStrategyConfigurationViews(s,r._scope).then(function(e){n.isNil(e)?"NewActivityEnrolmentPrioritizationStrategy"===r.model.baseModel.entity?(t.setContext("prioritizationStrategyConfigurationId",o.id,!1,r._scope.itemConfig.linkToSubParentState),t.setContext("prioritizationStrategyConfigurationViewDefinitionId",i.view.activityRegistrationConfigurationPriorizationNoConfiguration,!1,r._scope.itemConfig.linkToSubParentState)):(t.setContext("prioritizationStrategyConfigurationId",o.id,!1,r._scope.itemConfig.linkToSubParentState),t.setContext("prioritizationStrategyConfigurationViewDefinitionId",i.view.activityRegistrationProcedurePriorizationNoConfiguration,!1,r._scope.itemConfig.linkToSubParentState)):(t.setContext("prioritizationStrategyConfigurationId",o.strategyConfiguration,!1,r._scope.itemConfig.linkToSubParentState),t.setContext("prioritizationStrategyConfigurationViewDefinitionId",e,!1,r._scope.itemConfig.linkToSubParentState))});return a.when()}}}function t(e){e.registerExtension("newActivity.PrioritizationStrategyConfiguration")}function i(e,t){e.resolveExtension("newActivity.PrioritizationStrategyConfiguration",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","NewPrioritizationStrategyConfigurationExtension"],angular.module("cc3.app").factory("NewPrioritizationStrategyConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("organisationalUnits",t.organisationalUnits,!1,i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("organisationalstructure.StructureList")}function i(e,t){e.resolveExtension("organisationalstructure.StructureList",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","OrganisationalStructureListExtension"],angular.module("cc3.app").factory("OrganisationalStructureListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){var n=i._scope.itemConfig.widgetState;e.setContext("structureNodeViewDefinitionId",t.$viewDefinition,!1,n)}}}function t(e){e.registerExtension("organisationalstructure.StructureTree")}function i(e,t){e.resolveExtension("organisationalstructure.StructureTree",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","OrganisationalStructureContentExtension"],angular.module("cc3.app").factory("OrganisationalStructureContentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{onLoadFn:function(s){var c=s.data.feeIdentificationStringGenerationStrategy,l=o.dropRight(s._scope.itemConfig.widgetState.split("."),3).join(".");if(!n.isFeatureActive(a.feature.generationStrategiesForIdentificationStrings))return r.when();if(o.isNil(c))return i.setContext("generatorConfigurationId",s.data.id,!1,l),i.setContext("generatorConfigurationViewDefinitionId","b2c9b114-d382-4914-aee3-fcd11670adf8",!1,l),e.broadcast("payment.fee.identificationGenerationStrategyUpdated"),r.when();return t.getFeeIdentificationGeneratorConfigurationViews(c,s._scope).then(function(t){var n=s.data.feeIdentificationStringGenerationConfiguration;return i.setContext("generatorConfigurationId",o.isNil(n)?s.data.id:n,!1,l),i.setContext("generatorConfigurationViewDefinitionId",t.generatorConfigurationViewDefinitionId,!1,l),e.broadcast("payment.fee.identificationGenerationStrategyUpdated"),r.when()})}}}function t(e){e.registerExtension("payment.fee.feeIdentificationGenerationConfiguration")}function i(e,t){e.resolveExtension("payment.fee.feeIdentificationGenerationConfiguration",t)}e.$inject=["ApplicationService","ActionService","NavigationService","FeatureService","CMS_DATA","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","FeeIdentificationGenerationConfigurationExtension"],angular.module("cc3.app").factory("FeeIdentificationGenerationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(i){e.isNil(i._scope.unregisterWatch)&&(i._scope.unregisterWatch=i._scope.$on("payment.fee.identificationGenerationStrategyUpdated",function(){!function(e){e.unregisterWatch&&(e.unregisterWatch(),delete e.unregisterWatch);t.when()}(i._scope),i.api.reload(i._scope)}));return t.when()}}}function t(e){e.registerExtension("payment.fee.generatorConfiguration")}function i(e,t){e.resolveExtension("payment.fee.generatorConfiguration",t)}e.$inject=["_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","GeneratorConfigurationExtension"],angular.module("cc3.app").factory("GeneratorConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(a){return e.getContextAsPromise("paymentTransactionId").then(function(e){t.readReducedObjects({viewDefinitionId:i.view.paymentTransaction,objectId:e},a,{reduced:!1}).then(function(e){n.isNil(e)||n.isNil(e[0])||n.isNil(e[0].paymentStatus)||"9872ad2e-2a22-406f-abc9-c06827b52c00"===e[0].paymentStatus.id||(a.api.hasCreateConfiguration=function(e){return!1},a.api.hasDeleteConfiguration=function(e){return!1})})})}}}function t(e){e.registerExtension("paymenttransaction.paymentdebitposition.createdelete
1configuration")}function i(e,t){e.resolveExtension("paymenttransaction.paymentdebitposition.createdeleteconfiguration",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PaymentDebitPositionCreateDeleteConfigExtension"],angular.module("cc3.app").factory("PaymentDebitPositionCreateDeleteConfigExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.assignedPaymentReceivablesExist=function(t){var i=t.widget.api.selection.get(t);return e.any(i,function(e){return"ASSIGNED_TO_CLAIM"===e.status||"ASSIGNED_TO_PERSON"===e.status})}}}}function t(e){e.registerExtension("payment.PaymentReceipt")}function i(e,t){e.resolveExtension("payment.PaymentReceipt",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PaymentReceiptExtension"],angular.module("cc3.app").factory("PaymentReceiptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.isLockable=function(i){return!e.isNil(t.data)&&!t.data.credential.locked},t.api.isUnlockable=function(i){return!e.isNil(t.data)&&t.data.credential.locked},t.api.isScheduledAccountLockRevokable=function(i){return!e.isNil(t.data)&&(!t.data.credential.locked&&t.data.credential.scheduledLockingDate)}}}}function t(e){e.registerExtension("person.Activation")}function i(e,t){e.resolveExtension("person.Activation",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonActivationExtension"],angular.module("cc3.app").factory("PersonActivationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.matriculationNumberExists=function(t){return!e.isNil(t.widget.data.matriculationNumber)},t.api.europeanStudentIdentifierExists=function(t){return!e.isNil(t.widget.data.europeanStudentIdentifier)}}}}function t(e){e.registerExtension("person.details.StudiesRecord")}function i(e,t){e.resolveExtension("person.details.StudiesRecord",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudiesRecordExtension"],angular.module("cc3.app").factory("StudiesRecordExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onCreateFn:n,onInitFn:n,onReloadFn:n};function n(t){const n=e.getContext("currentUser");e.setContext("personId",n,!1,t.widgetState);const a=e.getContext("personalTraits");return e.setContext("personTraits",a,!1,t.widgetState),i.when()}}function t(e){e.registerExtension("person.mapper.CurrentUserToPersonId")}function i(e,t){e.resolveExtension("person.mapper.CurrentUserToPersonId",t)}e.$inject=["NavigationService","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CurrentUserToPersonIdExtension"],angular.module("cc3.app").factory("CurrentUserToPersonIdExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(o,r){var s,c;e.hasContext("roleToUserStoryId")?(s="roleToUserStoryId",c=i.view.roleuserstoryconstraintsvisibility):e.hasContext("roleTemplateToUserStoryId")&&(s="roleTemplateToUserStoryId",c=i.view.roletemplateuserstoryconstraintsvisibility);var l=n.defer();return e.getContextAsPromise(s,r).then(function(e){return t.readObjects({viewDefinitionId:c,objectId:e},r.widget).then(function(e){l.resolve(!a.isNil(e.data[0].userStory.isRestrictable))})}),l.promise}}}function t(e){e.registerExtension("person.userstoryconstraint.visibility")}function i(e,t){e.resolveExtension("person.userstoryconstraint.visibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonUserConstraintVisibilityExtension"],angular.module("cc3.app").factory("PersonUserConstraintVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("processableObjectId").then(function(e){return t.readObjects({viewDefinitionId:i.view.applicationToUniversityApplicationFee,objectId:e}).then(function(e){return!n.isEmpty(e.data[0].applicationToApplicationPaymentTransaction)})})}}}function t(e){e.registerExtension("process.ApplicationFeeVisibility")}function i(e,t){e.resolveExtension("process.ApplicationFeeVisibility",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationFeeVisibilityExtension"],angular.module("cc3.app").factory("ApplicationFeeVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeLoadFn:function(a){return e.getContextAsPromise("processableObjectId").then(function(o){return t.readReducedObjects({viewDefinitionId:i.view.applicationForReEnrolment.term,objectId:o}).then(function(t){if(!n.isNil(t)){var i=a._scope.itemConfig.widgetState;e.setContext("term",t[0].term,!1,i)}})})}}}function t(e){e.registerExtension("process.ApplicationForReEnrolmentTerm")}function i(e,t){e.resolveExtension("process.ApplicationForReEnrolmentTerm",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationForReEnrolmentTermExtension"],angular.module("cc3.app").factory("ApplicationForReEnrolmentTermExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("processDefinitionDefaultNavigation",t.statusDefaultDetailNavigation,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("process.ProcessDefinitionDefaultNavigation")}function i(e,t){e.resolveExtension("process.ProcessDefinitionDefaultNavigation",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessDefinitionDefaultNavigationExtension"],angular.module("cc3.app").factory("ProcessDefinitionDefaultNavigationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("detailNavigation",t.detailNavigation,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("detailRecordNavigation",t.detailRecordNavigation,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("process.ProcessDefinitionStatusList")}function i(e,t){e.resolveExtension("process.ProcessDefinitionStatusList",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessDefinitionStatusListExtension"],angular.module("cc3.app").factory("ProcessDefinitionStatusListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(i,n,a,o){return e.getContextAsPromise("processQuickAccessUiItem",n).then(function(a){return e.getContextAsPromise("processVisibleDetailUiItems",n).then(function(e){return!t.isNil(a)&&a===i||t.contains(e,i)})})}}}
1function t(e){e.registerExtension("process.ProcessDetails")}function i(e,t){e.resolveExtension("process.ProcessDetails",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessDetailsExtension"],angular.module("cc3.app").factory("ProcessDetailsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(a,o){return e.getContextAsPromise("processQuickAccessUiItem",a).then(function(r){return e.getContextAsPromise("processVisibleDetailUiItems",a).then(function(s){return function(a,o,r,s){let c;c=t.isNil(r)?s:[r].concat(s);if(function e(i,n){if(t.isNil(i)||t.isNil(i.data))return!1;if(t.contains(n,i.data.uiItemId))return!0;return e(i.parent,n)}(e.getCurrentState(),c))return i.when();return e.getContextAsPromise("processableObjectId",a).then(function(i){let c;if(t.isNil(r)||(c=n(o,r)),t.isNil(c)){const e=s[s.length-1];c=n(o,e)}t.isNil(c)||(e.go(c,!1,{processableObjectId:i}),a.$broadcast("layout.refresh"))})}(a,o,r,s)})})}};function n(t,i){const n=t.state+".content.t";let a=0;for(;a<1e3;){const t=a<10?"0"+a:a,o=e.getState(n+t);if(!o)return null;if(o.data.uiItemId===i)return o.name;a+=1}return null}}function t(e){e.registerExtension("process.ProcessDetailsNavigation")}function i(e,t){e.resolveExtension("process.ProcessDetailsNavigation",t)}e.$inject=["NavigationService","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessDetailsNavigationExtension"],angular.module("cc3.app").factory("ProcessDetailsNavigationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(i){var n=e.getProcessGroup(i._scope.itemConfig.id);e.setContext("processGroupId",n,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("processOverviewState",i._scope.itemConfig.linkToSubParentState,!1,i._scope.itemConfig.linkToSubParentState),i.api.applicationNumberExists=function(e){var i=e.widget.api.selection.get(e);return t.any(i,function(e){return!t.isNil(e.applicationNumber)})}},onSelectFn:function(i,n){t.isUndefined(i.processDefinition)||(t.isString(i.processDefinition)?e.setContext("processDefinitionId",i.processDefinition,!1,n._scope.itemConfig.childState):e.setContext("processDefinitionId",i.processDefinition.id,!1,n._scope.itemConfig.childState));t.isUndefined(i.processDefinitionStatus)||(t.isString(i.processDefinitionStatus)?e.setContext("processDefinitionStatusId",i.processDefinitionStatus,!1,n._scope.itemConfig.childState):e.setContext("processDefinitionStatusId",i.processDefinitionStatus.id,!1,n._scope.itemConfig.childState))}}}function t(e){e.registerExtension("process.ProcessExtension")}function i(e,t){e.resolveExtension("process.ProcessExtension",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessExtensionExtension"],angular.module("cc3.app").factory("ProcessExtensionExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(n){t.readObjects({viewDefinitionId:i.view.applicationToUniversityFileContainer,objectId:e.getContext("processableObjectId")}).then(function(t){e.setContext("fileContainerId",t.data[0].applicationRecord.person.fileContainer,!1,n._scope.itemConfig.linkToSubParentState)})}}}function t(e){e.registerExtension("process.ProcessFileContainerExtension")}function i(e,t){e.resolveExtension("process.ProcessFileContainerExtension",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessFileContainerExtension"],angular.module("cc3.app").factory("ProcessFileContainerExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("groupOverviewNavigation",t.overviewNavigation,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("processGroupDefaultNavigation",t.statusDefaultDetailNavigation,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("process.ProcessGroupOverviewNavigation")}function i(e,t){e.resolveExtension("process.ProcessGroupOverviewNavigation",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessGroupOverviewNavigationExtension"],angular.module("cc3.app").factory("ProcessGroupOverviewNavigationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("overviewNavigation",t.overviewNavigation,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("detailNavigation",t.detailNavigation,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("detailRecordNavigation",t.detailRecordNavigation,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("process.ProcessGroupStatusList")}function i(e,t){e.resolveExtension("process.ProcessGroupStatusList",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessGroupStatusListExtension"],angular.module("cc3.app").factory("ProcessGroupStatusListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("aclUserStoryId",t.userStory.id,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("process.ProcessGroupUserStory")}function i(e,t){e.resolveExtension("process.ProcessGroupUserStory",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessGroupUserStoryExtension"],angular.module("cc3.app").factory("ProcessGroupUserStoryExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(t){e.setContext("processOverviewState",t._scope.itemConfig.linkToSubParentState,!1,t._scope.itemConfig.linkToSubParentState),t.api.applicationNumberExists=function(e){var t=e.widget.api.selection.get(e);return i.any(t,function(e){return!i.isNil(e.applicationNumber)})},e.getContextAsPromise("processGroupStatusNameId",t._scope).then(function(e){t.api.ui.setTitle(e,t._scope)}),t._scope.$on("navigation.contextSet",function(e,i){"processGroupStatusNameId"===i.parameter&&t.api.ui.setTitle(i.value,t._scope)})},onAfterActivateFn:function(n,a){i.isUndefined(n.processDefinition)||(i.isString(n.processDefinition)?e.setContext("processDefinitionId",n.processDefinition,!1,a._scope.itemConfig.widgetState):e.setContext("processDefinitionId",n.processDefinition.id,!1,a._scope.itemConfig.widgetState));return e.getContextAsPromise("processGroupId",a._scope).then(function(o){return t.getProcessUiDetailInformation(o,n.id).then(function(t){e.setContext("processDefinitionStatusId",t.currentStatus,!1,a._scope.itemConfig.widgetState),e.setContext("processSummaryViewId",t.summaryViewDefinitionId,!1,a._scope.itemConfig.widgetState),i.isUndefined(t.summaryViewDefinitionForStatusCombinationId)||e.setContext("processableSummaryViewForStatusCombinationId",t.summaryViewDefinitionForStatusCombinationId,!1,a._scope.itemConfig.widgetState),e.setContext("processQuickAccessUiItem",t.quickAccessUiItem,!1,a._scope.itemConfig.widgetState),e.setContext("processVisibleDetailUiItems",t.visibleDetailUiItems,!1,a._scope.itemConfig.widgetState)})})},onBeforeActivateFn:function(t,i){e.removeContextFromState("processDefinitionStatusId",i._scope.itemConfig.widgetState),e.removeContextFromState("processSummaryViewId",i._scope.itemConfig.widgetState),e.removeContextFromState("processableSummaryViewForStatusCombinationId",i._scope.itemConfig.widgetState),e.removeContextFromState("processVisibleDetailUiItems",i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("process.ProcessTable")}function i(e,t){e.resolveExtension("process.ProcessTable",t)}e.$inject=["NavigationService","ActionService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProcessTableExtension"],angular.module("cc3.app").factory("ProcessTableExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onBeforeSelectFn:function(n,a){var o=n.id;return i.readObjects({viewDefinitionId:t.view.projectContent,objectId:o},a).then(function(t){e.setContext("projectContentId",t.data[0].projectContent,!1,a._scope.itemConfig.widgetState)})}}}function t(e){e.registerExtension("projectstructure.ProjectStructureList")}function i(e,t){e.resolveExtension("projectstructure.ProjectStructureList",t)}e.$inject=["NavigationService","CMS_DATA","ActionService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProjectStructureListExtension"],angular.module("cc3.app").factory("ProjectStructureListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{canDeleteNodeFn:function(t){if(function(t){return!e.isNil(t.selection)&&!e.isNil(t.selection.selected)&&!e.isNil(t.selection.selected[0])}(t)){var i=t.selection.selected[0];return!e.isNil(i.$parentId)}return!1}}}function t(e){e.registerExtension("project.projectTree")}function i(e,t){e.resolveExtension("project.projectTree",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProjectTreeE
1xtension"],angular.module("cc3.app").factory("ProjectTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(o,r,s){var c=n.defer(),l=e.getContext("personId")||e.getContext("currentUser"),d=e.getContext("relationshipId");return t.readObjects({viewDefinitionId:i.view.relationship,objectId:d}).then(function(e){var t=!1;a.isArray(e.data)&&1===e.data.length&&(t=e.data[0].sourcePerson.id===l),c.resolve(t)}),c.promise}}}function t(e){e.registerExtension("relationships.SourceRelationship")}function i(e,t){e.resolveExtension("relationships.SourceRelationship",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SourceRelationshipExtension"],angular.module("cc3.app").factory("SourceRelationshipExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(o,r,s){var c=n.defer(),l=e.getContext("personId")||e.getContext("currentUser"),d=e.getContext("relationshipId");return t.readObjects({viewDefinitionId:i.view.relationship,objectId:d}).then(function(t){var i=!1;if(a.isArray(t.data)&&1===t.data.length&&(i=t.data[0].targetPerson.id===l),i){var n=e.getCurrentState().toString().split(".");n[n.length-5]="t01";var o=n.join(".");e.go(o)}c.resolve(i)}),c.promise}}}function t(e){e.registerExtension("relationships.TargetRelationship")}function i(e,t){e.resolveExtension("relationships.TargetRelationship",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TargetRelationshipExtension"],angular.module("cc3.app").factory("TargetRelationshipExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onActivateFn:function(n,a){e.setContext("filter",n.filter.filter,!1,a._scope.itemConfig.linkToSubParentState),e.setContext("filterEntity",i.isObject(n.filter.entity)?n.filter.entity.id:n.filter.entity,!1,a._scope.itemConfig.linkToSubParentState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("reporting.ReportList")}function i(e,t){e.resolveExtension("reporting.ReportList",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ReportListExtension"],angular.module("cc3.app").factory("ReportListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(i,n,a){return e.evaluateWidgetVisibility(n,function(e){var i=e.numberOfExaminers;return(t.isNil(i)||i>0)&&"SINGLE_ASSESSMENT"!==e.assessmentType})}}}function t(e){e.registerExtension("studies.achievementAttempt.achievementAssessment.ExaminerAssessment")}function i(e,t){e.resolveExtension("studies.achievementAttempt.achievementAssessment.ExaminerAssessment",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminerAssessmentExtension"],angular.module("cc3.app").factory("ExaminerAssessmentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(i,n,a){return e.evaluateWidgetVisibility(n,function(e){var i=e.numberOfExaminers;return(t.isNil(i)||i>0)&&"SINGLE_ASSESSMENT"===e.assessmentType})}}}function t(e){e.registerExtension("studies.achievementAttempt.achievementAssessment.ExaminerAssessmentWithEvaluation")}function i(e,t){e.resolveExtension("studies.achievementAttempt.achievementAssessment.ExaminerAssessmentWithEvaluation",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminerAssessmentWithEvaluationExtension"],angular.module("cc3.app").factory("ExaminerAssessmentWithEvaluationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(i,n,a){return e.evaluateWidgetVisibility(n,function(e){var i=e.numberOfReviewers;return(t.isNil(i)||i>0)&&"SINGLE_ASSESSMENT"!==e.assessmentType})}}}function t(e){e.registerExtension("studies.achievementAttempt.achievementAssessment.ReviewerAssessment")}function i(e,t){e.resolveExtension("studies.achievementAttempt.achievementAssessment.ReviewerAssessment",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ReviewerAssessmentExtension"],angular.module("cc3.app").factory("ReviewerAssessmentExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeLoadFn:function(t){return e.writeAssessorModificationFlagToScope(t._scope)},onLoadFn:function(e){e.api.achievementAttemptVisible=function(e){return e.createAssessors}},visibleFn:function(i,n,a){return e.evaluateWidgetVisibility(n,function(e){var i=e.numberOfReviewers;return(t.isNil(i)||i>0)&&"SINGLE_ASSESSMENT"===e.assessmentType})}}}function t(e){e.registerExtension("studies.achievementAttempt.achievementAssessment.ReviewerAssessmentWithEvaluation")}function i(e,t){e.resolveExtension("studies.achievementAttempt.achievementAssessment.ReviewerAssessmentWithEvaluation",t)}e.$inject=["AchievementAttemptAssessmentVisibilityService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ReviewerAssessmentWithEvaluationExtension"],angular.module("cc3.app").factory("ReviewerAssessmentWithEvaluationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onLoadFn:function(o){return e.setGradeValidationFunction(o),e.registerPassedWatcher(o),o._scope.$watch(function(){return o.data&&o.data.acknowledgedAchievementAttempt&&o.data.acknowledgedAchievementAttempt.gradedAchievement},function(e,t){a.isNil(e)||!a.isNil(t)&&e.id===t.id||"object"!=typeof e||a.isNil(e.id)?a.isNil(e)&&(o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.gradingSystem",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.numericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.alphanumericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.withDistinction",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.onlyPredefinedGradesAllowed",!0,!0,o._scope)):i.readReducedObjects({viewDefinitionId:n.view.applicationForCreditTransferAchievementAttemptGradingSystem,objectId:e.id}).then(function(e){!a.isNil(e)&&Array.isArray(e)&&(e[0].gradingSystem!==o.data.acknowledgedAchievementAttempt.grade.gradingSystem&&(o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.gradingSystem",e[0].gradingSystem,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.numericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.alphanumericGrade",null,!0,o._scope),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.withDistinction",null,!0,o._scope)),o._scope.widget.api.field.setValue("acknowledgedAchievementAttempt.grade.onlyPredefinedGradesAllowed",e[0].onlyPredefinedGradesAllowedInGrade,!0,o._scope))})}),t.when()}}}function t(e){e.registerExtension("studies.ApplicationForCreditTransferAchievementAttempt")}function i(e,t){e.resolveExtension("studies.ApplicationForCreditTransferAchievementAttempt",t)}e.$inject=["AchievementAttemptService","$q","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ApplicationForCreditTransferAchievementAttemptExtension"],angular.module("cc3.app").factory("ApplicationForCreditTransferAchievementAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onBeforeSelectFn:function(e,i){t.setContext("achievementAttemptType",e.attemptType,!1,i._scope.itemConfig.widgetState)},onActivateFn:function(e,t){return i.navigateToAchievementAttemptDetailState(t,i.getAchievementAttemptFormType(e.attemptType))}}}function t(e){e.registerExtension("studies.AchievementAttempt.ExaminationAchievementAttemptType")}function i(e,t){e.resolveExtension("studies.AchievementAttempt.ExaminationAchievementAttemptType",t)}e.$inject=["$q","NavigationService","AchievementAttemptService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationAchievementAttemptTypeExtension"],angular.module("cc3.app").factory("ExaminationAchievementAttemptTypeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onBeforeSelectFn:function(t,i){e.setContext("achievementAttemptType",t.attemptType,!1,i._scope.itemConfig.widgetState)},onActivateFn:function(e,i){return t.navigateToAchievementAttemptDetailState(i,t.getAchievementAttemptFormType(e.attemptType))}}}function t(e){e.registerExtension("studies.AchievementAttempt.LecturerAchievementAttemptType")}function i(e,t){e.resolveExtension("studies.AchievementAttempt.LecturerAchievementAttemptType",t)}e.$inject=["NavigationService","AchievementAttemptService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","LecturerAchievementAttemptTypeExtension"],angular.module("cc3.app").factory("LecturerAchievementAttemptTypeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onBeforeLoadFn:function(t){e.getContextAsPromise("transcriptId").then(function(e){return i.readReducedObjects({viewDefinitionId:n.view.examinationRegulationForTranscript,pathId:e}).then(function(e){t.api.areExtraCurricularAttemptsAllowed=function(){return!!e[0].areExtraCurricularAchievementAttemptsAllowed},t.api.areNonCurricularAttemptsAllowed=function(){return!!e[0].areNonCurricularAchievementAttemptsAllowed}})})},onBeforeSelectFn:function(t,i){e.setContext("achievementAttemptType",t.attemptType,!1,i._scope.itemConfig.widgetState)},onActivateFn:function(e,i){return t.navigateToAchievementAttemptDetailState(i,t.getAchievementAttemptFormType(e.attemptType))}}}function t(e){e.registerExtension("studies.AchievementAttempt.StudentAchievementAttemptType")}function i(e,t){e.resolveExtension("studies.AchievementAttempt.StudentAchievementAttemptType",t)}e.$inject=["NavigationService","AchievementAttemptService","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudentAchievementAttemptTypeExtension"],angular.module("cc3.app").factory("StudentAchievementAttemptTypeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onActivateFn:function(e,i){return t.navigateToAchievementAttemptDetailState(i,t.getAchievementAttemptFormType(e.attemptType))},onBeforeSelectFn:function(t,i){e.setContext("achievementAttemptType",t.attemptType,!1,i._scope.itemConfig.widgetState)},visibleFn:function(e,i,n){return t.isAchievementAttemptVisible(e,i,n,"ExamRegAchievement")}}}function t(e){e.registerExtension("studies.AchievementAttempt.TranscriptAchievementAchievementAttempts")}function i(e,t){e.resolveExtension("studies.AchievementAttempt.TranscriptAchievementAchievementAttempts",t)}e.$inject=["NavigationService","AchievementAttemptService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptAchievementAchievementAttemptsExtension"],angular.module("cc3.app").factory("TranscriptAchievementAchievementAttemptsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegElectiveModuleGroup")})}}}function t(e){e.registerExtension("studies.examreg.ElectiveModuleGroupModules")}function i(e,t){e.resolveExtension("studies.examreg.ElectiveModuleGroupModules",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ElectiveModuleGroupModulesExtension"],angular.module("cc3.app").factory("ElectiveModuleGroupModulesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegAchievement")})}}}function t(e){e.registerExtension("studies.examreg.ExamRegAchievement")}function i(e,t){e.resolveExtension("studies.examreg.ExamRegAchievement",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamRegAchievementExtension"],angular.module("cc3.app").factory("ExamRegAchievementExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(e=>"ExamRegModuleVersion"===e)}}}function t(e){e.registerExtension("studies.examreg.ExamRegModuleVersion")}function i(e,t){e.resolveExtension("studies.examreg.ExamRegModuleVersion",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamRegModuleExtension"],angular.module("cc3.app").factory("ExamRegModuleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegModulePartVersion")})}}}function t(e){e.registerExtension("studies.examreg.ExamRegRestrictions")}function i(e,t){e.resolveExtension("studies.examreg.ExamRegRestrictions",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamRegRestrictionsExtension"],angular.module("cc3.app").factory("ExamRegRestrictionsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(n){return e.getContextAsPromise(n._scope.itemConfig.receivesContext).then(e=>{t.readObjects({viewDefinitionId:i.view.examinationRegulationVersionContentsAccess,objectId:e},n,{reduced:!1}).then(e=>{e&&e.data&&e.data[0]&&e.data[0].contents&&!e.data[0].contents.$write&&(n.api.hasCreateConfiguration=(e=>!1),n.api.hasDeleteConfiguration=(e=>!1))})})},onSelectFn:function(t,n){if(!n.model.baseModel)return;const a=n._scope.itemConfig.widgetState,o=n.model.baseModel[t.$viewDefinition],r=o?o.entity:null,s=function(e){switch(e){case i.view.examRegForestView.examRegContainer:return i.view.examRegElementDetailVie
1ws.examRegContainer;case i.view.examRegForestView.examRegModuleVersion:return i.view.examRegElementDetailViews.examRegModuleVersion;case i.view.examRegForestView.examRegModulePartVersion:return i.view.examRegElementDetailViews.examRegModulePartVersion;case i.view.examRegForestView.examRegAchievement:return i.view.examRegElementDetailViews.examRegAchievement;case i.view.examRegForestView.examRegElectiveModuleGroup:return i.view.examRegElementDetailViews.examRegElectiveModuleGroup;case i.view.examRegForestView.examRegModulePlaceholder:return i.view.examRegElementDetailViews.examRegModulePlaceholder;default:throw new Error("Unknown object in exam reg tree")}}(t.$viewDefinition);e.setContext("examRegNodeSelectedEntity",r,!1,a),e.setContext("examRegNodeViewDefinitionId",s.details,!1,a),e.setContext("examRegNodeDescriptionViewDefinitionId",s.description||null,!1,a),e.setContext("examRegNodeRulesViewDefinitionId",s.rules||null,!1,a),e.setContext("examRegNodeGradingViewDefinitionId",s.grading||null,!1,a),e.setContext("examRegNodeRestrictionsViewDefinitionId",s.enrolmentRestrictions||null,!1,a),e.setContext("examRegNodeStudySpecificationsViewDefinitionId",s.studySpecifications||null,!1,a)}}}function t(e){e.registerExtension("studies.examreg.ExamRegTree")}function i(e,t){e.resolveExtension("studies.examreg.ExamRegTree",t)}e.$inject=["NavigationService","ActionService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamRegExtension"],angular.module("cc3.app").factory("ExamRegExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onSelectFn:function(i,n){e.setContext("examRegTree",i.contents,!1,n._scope.itemConfig.widgetState),e.setContext("examinationRegulationId",i.examinationRegulation,!1,n._scope.itemConfig.widgetState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("studies.examreg.ExamRegVersionsList")}function i(e,t){e.resolveExtension("studies.examreg.ExamRegVersionsList",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExamRegListExtension"],angular.module("cc3.app").factory("ExamRegListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegModulePartVersion")})}}}function t(e){e.registerExtension("studies.examreg.ModulePartClearanceConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.ModulePartClearanceConfiguration",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ModulePartClearanceConfigurationExtension"],angular.module("cc3.app").factory("ModulePartClearanceConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(e,i,n){return t.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegModulePartVersion")})}}}function t(e){e.registerExtension("studies.examreg.ModulePartParticipationRestriction")}function i(e,t){e.resolveExtension("studies.examreg.ModulePartParticipationRestriction",t)}e.$inject=["ActionService","NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ModulePartParticipationRestrictionExtension"],angular.module("cc3.app").factory("ModulePartParticipationRestrictionExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegModuleVersion")})}}}function t(e){e.registerExtension("studies.examreg.ModuleRelatedElectiveModuleGroups")}function i(e,t){e.resolveExtension("studies.examreg.ModuleRelatedElectiveModuleGroups",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ModuleRelatedElectiveModuleGroupsExtension"],angular.module("cc3.app").factory("ModuleRelatedElectiveModuleGroupsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(n){return t.getContextAsPromise("examinationRegulationVersionId").then(function(t){e.readObjects({viewDefinitionId:i.view.examinationRegulationVersionContentsAccess,objectId:t},n,{reduced:!1}).then(function(e){e.data[0].contents.$write||(n.api.hasCreateConfiguration=function(e){return!1},n.api.hasDeleteConfiguration=function(e){return!1})})})},visibleFn:function(e,i,n){return t.getContextAsPromise("examRegNodeSelectedEntity",i).then(function(e){return angular.equals(e,"ExamRegModulePlaceholder")})}}}function t(e){e.registerExtension("studies.examreg.PlaceholderModules")}function i(e,t){e.resolveExtension("studies.examreg.PlaceholderModules",t)}e.$inject=["ActionService","NavigationService","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PlaceholderModulesExtension"],angular.module("cc3.app").factory("PlaceholderModulesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(n){var a=i.dropRight(n._scope.itemConfig.widgetState.split("."),3).join(".");
1i.isUndefined(n.data)||i.isNull(n.data)?(t.setContext("studyDurationConfigurationId",null,!1,a),t.setContext("studyProgressConfigurationId",null,!1,a)):e.getExamRegVersionProgressMonitorRuleConfigurationViews(n.data.studyDuration.id,n.data.studyProgress.id,n._scope).then(function(e){t.setContext("studyDurationConfigurationViewDefinitionId",e.studyDurationConfigurationViewDefinitionId,!1,a),t.setContext("studyDurationConfigurationId",n.data.studyDurationConfiguration,!1,a),t.setContext("studyProgressConfigurationViewDefinitionId",e.studyProgressConfigurationViewDefinitionId,!1,a),t.setContext("studyProgressConfigurationId",n.data.studyProgressConfiguration,!1,a)})}}}function t(e){e.registerExtension("studies.examreg.ProgressRuleConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.ProgressRuleConfiguration",t)}e.$inject=["ActionService","NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ProgressRuleConfigurationExtension"],angular.module("cc3.app").factory("ProgressRuleConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("gradeRounderConfigurationForAchievementValuationRuleId")}}}function t(e){e.registerExtension("studies.examreg.AchievementValuationRounderConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.AchievementValuationRounderConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AchievementValuationRounderConfigurationExtension"],angular.module("cc3.app").factory("AchievementValuationRounderConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("achievementValuationRuleConfigurationId")}}}function t(e){e.registerExtension("studies.examreg.AchievementValuationRuleConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.AchievementValuationRuleConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AchievementValuationRuleConfigurationExtension"],angular.module("cc3.app").factory("AchievementValuationRuleConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(i){return t.updateCalculatorConfigurationContext(i,e.getCalculatorConfigurationViews("GetCalculatorConfigurationViewsAction",null==i.data.rules?null:i.data.rules.gradeCalculator,null==i.data.rules?null:i.data.rules.gradeRounder,null==i.data.rules?null:i.data.rules.creditPointsCalculator,null==i.data.rules?null:i.data.rules.completionRuleCalculator,i._scope))}}}function t(e){e.registerExtension("studies.examreg.CalculationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.CalculationConfiguration",t)}e.$inject=["ActionService","CalculatorConfigurationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CalculationConfigurationExtension"],angular.module("cc3.app").factory("CalculationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("completionRuleCalculatorConfigurationId")}}}function t(e){e.registerExtension("studies.examreg.CompletionRuleCalculationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.CompletionRuleCalculationConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CompletionRuleCalculationConfigurationExtension"],angular.module("cc3.app").factory("CompletionRuleCalculationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return a._scope.$watch(function(){return a.data&&(a.data.examRegContainer||a.data.examRegModuleVersion||a.data.examRegModulePartVersion||a.data.examRegElectiveModuleGroup||a.data.examRegModulePlaceholder||a.data.examRegAchievement)},function(i,o){if(!n.isNil(i)&&(n.isNil(o)||i.id!==o.id)&&"object"==typeof i&&!n.isNil(i.id)){var r=t.view.rules.gradingSystem[a.data.examRegRulesComponentType];e.readReducedObjects({viewDefinitionId:r,pathId:i.id}).then(function(e){!n.isNil(e)&&Array.isArray(e)&&e[0].gradingSystem!==a.data.grade.gradingSystem&&(
1a._scope.widget.api.field.setValue("grade.gradingSystem",e[0].gradingSystem,!0,a._scope),a._scope.widget.api.field.setValue("grade.numericGrade",null,!0,a._scope),a._scope.widget.api.field.setValue("grade.alphanumericGrade",null,!0,a._scope),a._scope.widget.api.field.setValue("grade.withDistinction",null,!0,a._scope))})}}),i.when()}}}function t(e){e.registerExtension("studies.examreg.CompletionRuleDetails")}function i(e,t){e.resolveExtension("studies.examreg.CompletionRuleDetails",t)}e.$inject=["ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CompletionRuleDetailsExtension"],angular.module("cc3.app").factory("CompletionRuleDetailsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(n){return t.getContextAsPromise("examinationRegulationVersionId").then(function(t){e.readObjects({viewDefinitionId:i.view.examinationRegulationVersionContentsAccess,objectId:t},n,{reduced:!1}).then(function(e){e.data[0].contents.$write||(n.api.hasCreateConfiguration=function(e){return!1},n.api.hasDeleteConfiguration=function(e){return!1})})})},onSelectFn:function(e,i){t.setContext("examRegNodeCompletionRuleViewId",e.$viewDefinition,!1,i._scope.itemConfig.widgetState)},visibleFn:function(e,n,a){return t.getContextAsPromise("completionRuleCalculatorId",n).then(function(e){return angular.equals(e,i.completionRule.individualConfigurationCompletionRule)})}}}function t(e){e.registerExtension("studies.examreg.CompletionRules")}function i(e,t){e.resolveExtension("studies.examreg.CompletionRules",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CompletionRulesExtension"],angular.module("cc3.app").factory("CompletionRulesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("creditPointsCalculationConfigurationId")}}}function t(e){e.registerExtension("studies.examreg.CreditPointsCalculationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.CreditPointsCalculationConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","CreditPointsCalculationConfigurationExtension"],angular.module("cc3.app").factory("CreditPointsCalculationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("examinationRegulationVersionId").then(function(a){return t.readReducedObjects({viewDefinitionId:n.view.examinationRegulationVersionReportPeriod,objectId:a}).then(function(t){return i.isNil(t[0])||(i.isNil(t[0].evaluationPeriodForEctsGradeDistribution)?(e.setContext("ErhebungszeitraumStart",null,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",null,!1,o.itemConfig.linkToSubParentState)):(e.setContext("ErhebungszeitraumStart",t[0].evaluationPeriodForEctsGradeDistribution.startDate,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",t[0].evaluationPeriodForEctsGradeDistribution.endDate,!1,o.itemConfig.linkToSubParentState))),!0})})}}}function t(e){e.registerExtension("studies.examreg.EctsExamRegVersionConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.EctsExamRegVersionConfiguration",t)}e.$inject=["NavigationService","ActionService","_","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","EctsExamRegVersionReportConfigurationExtension"],angular.module("cc3.app").factory("EctsExamRegVersionReportConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("examRegNodeSelectedEntity",o).then(function(a){return!!angular.equals(a,"ExamRegModuleVersion")&&e.getContextAsPromise("examinationRegulationVersionId").then(function(a){return t.readReducedObjects({viewDefinitionId:n.view.examinationRegulationVersionReportPeriod,objectId:a}).then(function(t){return i.isNil(t[0])||(i.isNil(t[0].evaluationPeriodForEctsGradeDistribution)?(e.setContext("ErhebungszeitraumStart",null,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",null,!1,o.itemConfig.linkToSubParentState)):(e.setContext("ErhebungszeitraumStart",t[0].evaluationPeriodForEctsGradeDistribution.startDate,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",t[0].evaluationPeriodForEctsGradeDistribution.endDate,!1,o.itemConfig.linkToSubParentState))),!0})})})}}}function t(e){e.registerExtension("studies.examreg.EctsModuleConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.EctsModuleConfiguration",t)}e.$inject=["NavigationService","ActionService","_","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","EctsModuleReportConfigurationExtension"],angular.module("cc3.app").factory("EctsModuleReportConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{visibleFn:function(a,o,r){return e.getContextAsPromise("studyProgrammeId").then(function(a){return t.readReducedObjects({viewDefinitionId:n.view.studyProgrammeReportPeriod,objectId:a}).then(function(t){return i.isNil(t[0])||(i.isNil(t[0].evaluationPeriodForEctsGradeDistribution)?(e.setContext("ErhebungszeitraumStart",null,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",null,!1,o.itemConfig.linkToSubParentState)):(e.setContext("ErhebungszeitraumStart",t[0].evaluationPeriodForEctsGradeDistribution.startDate,!1,o.itemConfig.linkToSubParentState),e.setContext("ErhebungszeitraumEnde",t[0].evaluationPeriodForEctsGradeDistribution.endDate,!1,o.itemConfig.linkToSubParentState))),!0})})}}}function t(e){e.registerExtension("studies.examreg.EctsStudyProgrammeConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.EctsStudyProgrammeConfiguration",t)}e.$inject=["NavigationService","ActionService","_","CMS_DATA"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","EctsStudyProgrammeReportConfigurationExtension"],angular.module("cc3.app").factory("EctsStudyProgrammeReportConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return function(i){var a=n.dropRight(i._scope.itemConfig.widgetState.split("."),3).join(".");null==i.data.earliestExaminationRegistrationDateTimeCalculatorConfiguration?t.setContext("earliestExaminationRegistrationDateCalculatorConfigurationId",i.data.id,!1,a):t.setContext("earliestExaminationRegistrationDateCalculatorConfigurationId",i.data.earliestExaminationRegistrationDateTimeCalculatorConfiguration,!1,a);null==i.data.latestExaminationRegistrationDateTimeCalculatorConfiguration?t.setContext("latestExaminationRegistrationDateCalculatorConfigurationId",i.data.id,!1,a):t.setContext("latestExaminationRegistrationDateCalculatorConfigurationId",i.data.latestExaminationRegistrationDateTimeCalculatorConfiguration,!1,a);var o=i.model.baseModel.entity;return e.getExaminationRegistrationCalculatorConfigurationViews(i.data.earliestExaminationRegistrationDateCalculator,i.data.latestExaminationRegistrationDateCalculator,o,i._scope).then(function(e){t.setContext("earliestConfigurationViewDefinitionId",e.earliestConfigurationViewDefinitionId,!1,a),t.setContext("latestConfigurationViewDefinitionId",e.latestConfigurationViewDefinitionId,!1,a)})}(a).then(function(){i.broadcast("examreg.examinationRegistrationRuleUpdated")})}}}function t(e){e.registerExtension("studies.examreg.ExaminationRegistrationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.ExaminationRegistrationConfiguration",t)}e.$inject=["ActionService","NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationRegistrationConfigurationExtension"],angular.module("cc3.app").factory("ExaminationRegistrationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(n){t.isNil(n._scope.unregisterWatch)&&(n._scope.unregisterWatch=n._scope.$on("examreg.examinationRegistrationRuleUpdated",function(){i(n._scope),n.api.reload(n._scope)}));return e.when()},onReloadFn:i,onDestroyFn:i};function i(t){return t.unregisterWatch&&(t.unregisterWatch(),delete t.unregisterWatch),e.when()}}function t(e){e.registerExtension("studies.examreg.ExaminationRegistrationUpdated")}function i(e,t){e.resolveExtension("studies.examreg.ExaminationRegistrationUpdated",t)}e.$inject=["$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ExaminationRegistrationUpdatedExtension"],angular.module("cc3.app").factory("ExaminationRegistrationUpdatedExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("gradeCalculationConfigurationId")}}}function t(e){e.registerExtension("studies.examreg.GradeCalculationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.GradeCalculationConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","GradeCalculationConfigurationExtension"],angular.module("cc3.app").factory("GradeCalculationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("gradeRounderConfigurationId")}}}function t(e){e.registerExtension("studies.examreg.GradeRoundingConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.GradeRoundingConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","GradeRoundingConfigurationExtension"],angular.module("cc3.app").factory("GradeRoundingConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.hasContextAsPromise("gradeRounderConfigurationForOverallAssessmentId")}}}function t(e){e.registerExtension("studies.examreg.OverallAssessmentRounderConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.OverallAssessmentRounderConfiguration",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","OverallAssessmentRounderConfigurationExtension"],angular.module("cc3.app").factory("OverallAssessmentRounderConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onLoadFn:function(n){return t.getContextAsPromise("examinationRegulationVersionId").then(function(t){e.readObjects({viewDefinitionId:i.view.examinationRegulationVersionContentsAccess,objectId:t},n,{reduced:!1}).then(function(e){e.data[0].contents.$write||(n.api.hasCreateConfiguration=function(e){return!1},n.api.hasDeleteConfiguration=function(e){return!1})})})},onSelectFn:function(e,i){t.setContext("examRegNodeRegistrationConditionViewId",e.$viewDefinition,!1,i._scope.itemConfig.widgetState)},visibleFn:function(e,i,o){var r=n.defer();return t.getContextAsPromise("registrationConditionsId",i).then(function(e){r.resolve(!a.isNull(e))}),r.promise}}}function t(e){e.registerExtension("studies.examreg.RegistrationConditions")}function i(e,t){e.resolveExtension("studies.examreg.RegistrationConditions",t)}e.$inject=["ActionService","NavigationService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","RegistrationConditionsExtension"],angular.module("cc3.app").factory("RegistrationConditionsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){var r=t.defer();return e.getContextAsPromise("studyDurationConfigurationId").then(function(e){r.resolve(!i.isNull(e))}),r.promise}}}function t(e){e.registerExtension("studies.examreg.StudyDurationConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.StudyDurationConfiguration",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudyDurationConfigurationExtension"],angular.module("cc3.app").factory("StudyDurationConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){var r=t.defer();return e.getContextAsPromise("studyProgressConfigurationId").then(function(e){r.resolve(!i.isNull(e))}),r.promise}}}function t(e){e.registerExtension("studies.examreg.StudyProgressConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.StudyProgressConfiguration",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudyProgressConfigurationExtension"],angular.module("cc3.app").factory("StudyProgressConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(i,n,a){return e.isFeatureActive(t.feature.defineStudyFocuses)||e.isFeatureActive(t.feature.defineMinorSubjects)||e.isFeatureActive(t.feature.defineMajorSubjects)||e.isFeatureActive(t.feature.defineInDepthSpecialisations)}}}function t(e){e.registerExtension("studies.examreg.StudySpecificationLimitations")}function i(e,t){e.resolveExtension("studies.examreg.StudySpecificationLimitations",t)}e.$inject=["FeatureService","CMS_DATA","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudySpecificationLimitationsExtension"],angular.module("cc3.app").factory("StudySpecificationLimitationsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{visibleFn:function(n,a,o){var r=t.defer();return e.getContextAsPromise("examRegNodeStudySpecificationsViewDefinitionId").then(function(e){r.resolve(!i.isNull(e))}),r.promise}}}function t(e){e.registerExtension("studies.examreg.StudySpecificationsConfiguration")}function i(e,t){e.resolveExtension("studies.examreg.StudySpecificationsConfiguration",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudySpecificationsConfigurationExtension"],angular.module("cc3.app").factory("StudySpecificationsConfigurationExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onSelectFn:function(i,n){e.setContext("modulePartTemplateTreeId",i.contents,!1,n._scope.itemConfig.widgetState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("studies.moduleparttemplate.ModulePartTemplateVersionsList")}function i(e,t){e.resolveExtension("studies.moduleparttemplate.ModulePartTemplateVersionsList",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ModulePartTemplateListExtension"],angular.module("cc3.app").factory("ModulePartTemplateListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onSelectFn:function(i,n){e.setContext("moduleTemplateTreeId",i.contents,!1,n._scope.itemConfig.widgetState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("studies.moduletemplate.ModuleTemplateVersionsList")}function i(e,t){e.resolveExtension("studies.moduletemplate.ModuleTemplateVersionsList",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","ModuleTemplateListExtension"],angular.module("cc3.app").factory("ModuleTemplateListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.getContextAsPromise("achievementAttemptType",i).then(function(e){return"RECOGNIZED_ATTEMPT"===e})}}}function t(e){e.registerExtension("studies.achievementAttemptType.recognizedAttempt")}function i(e,t){e.resolveExtension("studies.achievementAttemptType.recognizedAttempt",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudentRecognizedAchievementAttemptVisibilityExtension"],angular.module("cc3.app").factory("StudentRecognizedAchievementAttemptVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.getContextAsPromise("achievementAttemptType",i).then(function(e){return"REGULAR_ATTEMPT"===e})}}}function t(e){e.registerExtension("studies.achievementAttemptType.regularAttempt")}function i(e,t){e.resolveExtension("studies.achievementAttemptType.regularAttempt",t)}e.$inject=["NavigationServic
1e","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudentRegularAchievementAttemptVisibilityExtension"],angular.module("cc3.app").factory("StudentRegularAchievementAttemptVisibilityExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{visibleFn:function(t,i,n){return e.getContextAsPromise("studiesJournalChapterSelectedEntity",i).then(function(e){return"GuestStudyAdmission"===e})}}}function t(e){e.registerExtension("studies.studiesjournal.StudiesJournalGuestStudyEntitlements")}function i(e,t){e.resolveExtension("studies.studiesjournal.StudiesJournalGuestStudyEntitlements",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudiesJournalGuestStudyEntitlementsExtension"],angular.module("cc3.app").factory("StudiesJournalGuestStudyEntitlementsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(n){if(!e.getCurrentState().params.studiesJournalChapter){var a=t.getAutoSelectChapter(n.data,"studiesJournal.latestEffectiveStudiesJournalChapter");if(a)return n.api.selection.select(a,n._scope)}return i.when()},onSelectFn:function(t,i){var a=i.api.selection.get(i._scope);if(!n.isNil(a)){var o=a[0];e.setContext("selectedChapterName",o.term.shortName,!1,i._scope.itemConfig.childState)}}}}function t(e){e.registerExtension("studies.studiesjournal.StudiesJournal")}function i(e,t){e.resolveExtension("studies.studiesjournal.StudiesJournal",t)}e.$inject=["NavigationService","JournalService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudiesJournalExtension"],angular.module("cc3.app").factory("StudiesJournalExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(t){return e.getContextAsPromise("selectedChapterName").then(function(e){t.api.ui.setTitle(e,t._scope)})},onSelectFn:function(i,n){var a=n.model.baseModel[i.$viewDefinition].entity;e.setContext("studiesJournalChapterSelectedEntity",a,!1,n._scope.itemConfig.widgetState),"GuestStudyAdmission"===a&&e.setContext("guestStudyAdmissionId",i.id,!1,n._scope.itemConfig.widgetState);return t.when()}}}function t(e){e.registerExtension("studies.studiesjournal.StudiesJournalChapter")}function i(e,t){e.resolveExtension("studies.studiesjournal.StudiesJournalChapter",t)}e.$inject=["NavigationService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudiesJournalChapterExtension"],angular.module("cc3.app").factory("StudiesJournalChapterExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.getContextAsPromise("studiesJournalChapterSelectedEntity",i).then(function(e){return"Enrolment"===e})}}}function t(e){e.registerExtension("studies.studiesjournal.StudiesJournalStudyStatistics")}function i(e,t){e.resolveExtension("studies.studiesjournal.StudiesJournalStudyStatistics",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StudiesJournalStudyStatisticsExtension"],angular.module("cc3.app").factory("StudiesJournalStudyStatisticsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(i,n,a){var o=t.defer();return e.getContextAsPromise("transcriptSelectedNodeEntity",n).then(function(e){o.resolve("ExamRegAchievement"===e)},function(){o.resolve(!1)}),o.promise}}}function t(e){e.registerExtension("studies.transcript.AchievementAttempts")}function i(e,t){e.resolveExtension("studies.transcript.AchievementAttempts",t)}e.$inject=["NavigationService","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AchievementAttemptsExtension"],angular.module("cc3.app").factory("AchievementAttemptsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){e.setGradeValidationFunction(t),e.registerPassedWatcher(t)}}}function t(e){e.registerExtension("studies.transcript.AchievementAttemptWithModuleOrModulePart")}function i(e,t){e.resolveExtension("studies.transcript.AchievementAttemptWithModuleOrModulePart",t)}e.$inject=["AchievementAttemptService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AchievementAttemptWithModuleExtension"],angular.module("cc3.app").factory("AchievementAttemptWithModuleExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("examRegTree",t.examinationRegulationVersion.contents,!1,i._scope.itemConfig.widgetState)}}}function t(e){e.registerExtension("studies.transcript.DegreeCourse")}function i(e,t){e.resolveExtension("studies.transcript.DegreeCourse",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","DegreeCourseExtension"],angular.module("cc3.app").factory("DegreeCourseExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(e){i.setGradeValidationFunction(e),i.registerPassedWatcher(e)}}}function t(e){e.registerExtension("studies.transcript.NonCurricularAttempt")}function i(e,t){e.resolveExtension("studies.transcript.NonCurricularAttempt",t)}e.$inject=["NavigationService","$q","AchievementAttemptService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","NonCurricularAttemptExtension"],angular.module("cc3.app").factory("NonCurricularAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{visibleFn:function(a,o,r){var s=n.defer();return e.getContextAsPromise("transcriptId",o).then(function(e){t.readObjects({viewDefinitionId:i.view.transcriptUsingPersonalAcademicTerms,objectId:e},o.widget,{reduced:!1}).then(function(e){s.resolve(e.data[0].personalAcademicTerm.value)})}),s.promise}}}function t(e){e.registerExtension("studies.transcript.PersonalAcademicTerms")}function i(e,t){e.resolveExtension("studies.transcript.PersonalAcademicTerms",t)}e.$inject=["NavigationService","ActionService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","PersonalAcademicTermsExtension"],angular.module("cc3.app").factory("PersonalAcademicTermsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){e.setGradeValidationFunction(t),e.registerPassedWatcher(t)}}}function t(e){e.registerExtension("studies.transcript.RecognizedAchievementAttempt")}function i(e,t){e.resolveExtension("studies.transcript.RecognizedAchievementAttempt",t)}e.$inject=["AchievementAttemptService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","RecognizedAchievementAttemptExtension"],angular.module("cc3.app").factory("RecognizedAchievementAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(i){t.each(["doctorateRecordId","transcriptId"],function(t){e.hasContext(t)||e.setContext(t,null,!1,i._scope.itemConfig.widgetState)})}}}function t(e){e.registerExtension("studies.StaysAbroad")}function i(e,t){e.resolveExtension("studies.StaysAbroad",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","StaysAbroadExtension"],angular.module("cc3.app").factory("StaysAbroadExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){return{onLoadFn:function(e){t.setGradeValidationFunction(e),t.registerPassedWatcher(e),r(e,"reviewerAssessments"),r(e,"examinerAssessments")}};function r(e,t){e._scope.$watch(function(){return!o.isNil(e.data)&&!o.isNil(e.data[t])&&e.data[t].length},function(i,n){if(!o.isNil(e.data))if(i!==n){var a=e.data.grade.gradingSystem,r=e.data.grade.onlyPredefinedGradesAllowed;o.forEach(e.data[t],function(e){o.isNil(e._item.grade)||(e._item.grade.gradingSystem=a,e._item.grade.onlyPredefinedGradesAllowed=r)})}else o.isNil(e.data.grade.gradingSystem)&&o.forEach(e.data[t],function(e){e._item.grade.gradingSystem=null})})}}function t(e){e.registerExtension("studies.transcript.TakenAchievementAttempt")}function i(e,t){e.resolveExtension("studies.transcript.TakenAchievementAttempt",t)}e.$inject=["NavigationService","AchievementAttemptService","$q","ActionService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TakenAchievementAttemptExtension"],angular.module("cc3.app").factory("TakenAchievementAttemptExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(e,i,n){return t.getContextAsPromise("hasTranscriptModuleGroupElection",i)}}}function t(e){e.registerExtension("studies.TranscriptElectedModules")}function i(e,t){e.resolveExtension("studies.TranscriptElectedModules",t)}e.$inject=["_","NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptElectedModulesExtension"],angular.module("cc3.app").factory("TranscriptElectedModulesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){t.api.transcriptMatriculationNumberExists=function(t){return!e.isNil(t.widget.data.transcriptMatriculationNumber)}}}}function t(e){e.registerExtension("studies.transcript.TranscriptForm")}function i(e,t){e.resolveExtension("studies.transcript.TranscriptForm",t)}e.$inject=["_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptFormExtension"],angular.module("cc3.app").factory("TranscriptFormExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.isAchievementAttemptVisible(t,i,n,"ExamRegModuleVersion")}}}function t(e){e.registerExtension("studies.TranscriptModuleAchievementAttempts")}function i(e,t){e.resolveExtension("studies.TranscriptModuleAchievementAttempts",t)}e.$inject=["AchievementAttemptService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptModuleAchievementAttemptsExtension"],angular.module("cc3.app").factory("TranscriptModuleAchievementAttemptsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(t,i,n){return e.isAchievementAttemptVisible(t,i,n,"ExamRegModulePartVersion")}}}function t(e){e.registerExtension("studies.TranscriptModulePartAchievementAttempts")}function i(e,t){e.resolveExtension("studies.TranscriptModulePartAchievementAttempts",t)}e.$inject=["AchievementAttemptService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptModulePartAchievementAttemptsExtension"],angular.module("cc3.app").factory("TranscriptModulePartAchievementAttemptsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){return{onLoadFn:function(r){var s=a.defer();return r.tree.notRelevantForFinalGradeI18n=i.getTranslation("transcript.tree.notRelevantForFinalGrade"),e.getContextAsPromise("transcriptId").then(function(e){var c=t.readObjects({viewDefinitionId:n.view.transcriptExamRegRulesValid,objectId:e}),l=t.readObjects({viewDefinitionId:n.view.transcriptModuleGroupElections,pathId:e});a.all([c,l]).then(function(e){var t=e[0].data[0];r.tree.examRegRuleResultsValid=t.examRegRuleResultsValid,r.tree.examRegRuleResults={},r.tree.electiveModules={},o.forEach(t.examRegRuleResults,function(e){r.tree.examRegRuleResults[e.examRegRules.id]=e,function(e,t){if(!o.isNil(t.examRegRules.examRegModuleVersion)&&!o.isNil(t.examRegRules.examRegModuleVersion.relatedExamRegElectiveModuleGroups)&&!o.isEmpty(t.examRegRules.examRegModuleVersion.relatedExamRegElectiveModuleGroups)){var n=t.examRegRules.examRegModuleVersion.relatedExamRegElectiveModuleGroups,a=o.sortBy(n,function(e){return e.id});e.tree.electiveModules[t.examRegRules.id]=o.map(a,function(e){return i.addTranslationField(e.examRegElectiveModuleGroup.name),{color:e.examRegElectiveModuleGroup.color,nameId:e.examRegElectiveModuleGroup.name.id}})}}(r,e)});var n=e[1];r.tree.transcriptModuleGroupElections={},o.forEach(n.data,function(e){r.tree.transcriptModuleGroupElections[e.examRegElectiveModuleGroup]=e.id}),s.resolve()})}),s.promise},onSelectFn:function(t,i){var n=i._scope.itemConfig.widgetState,a=i.api.model.getFullModel(i._scope)[t.$viewDefinition],o=i.tree.examRegRuleResults?i.tree.examRegRuleResults[t.rules]:void 0;e.setContext("transcriptSelectedNodeEntity",a.entity,!1,n),e.setContext("transcriptValid",
1i.tree.examRegRuleResultsValid,!1,n),e.setContext("transcriptSelectedNodeHasResult",void 0!==o,!1,n);var r=i.tree.transcriptModuleGroupElections||{};e.setContext("hasTranscriptModuleGroupElection",!!r[t.id],!1,n),(!o||!i.tree.examRegRuleResultsValid&&e.getCurrentState().self.name!==n)&&(i.selection.returnToParentState=!0)}}}function t(e){e.registerExtension("studies.transcript.TranscriptTree")}function i(e,t){e.resolveExtension("studies.transcript.TranscriptTree",t)}e.$inject=["NavigationService","ActionService","I18nService","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptTreeExtension"],angular.module("cc3.app").factory("TranscriptTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(n){if(!e.getCurrentState().params.transcriptJournalChapterId){var a=t.getAutoSelectChapter(n.data,"courseJournal.latestEffectiveCourseJournalChapter");if(a)return n.api.selection.select(a,n._scope)}return i.when()},onSelectFn:function(t,i){var a=i.api.selection.get(i._scope);if(n.isNil(a))e.setContext("selectedChapterName",null,!1,i._scope.itemConfig.childState);else{var o=a[0];e.setContext("selectedChapterName",o.term.shortName,!1,i._scope.itemConfig.childState)}}}}function t(e){e.registerExtension("studies.transcriptjournal.TranscriptJournal")}function i(e,t){e.resolveExtension("studies.transcriptjournal.TranscriptJournal",t)}e.$inject=["NavigationService","JournalService","$q","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptJournalExtension"],angular.module("cc3.app").factory("TranscriptJournalExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onLoadFn:function(t){e.getContextAsPromise("selectedChapterName").then(function(e){t.api.ui.setTitle(e,t._scope)})}}}function t(e){e.registerExtension("studies.transcriptjournal.TranscriptJournalChapter")}function i(e,t){e.resolveExtension("studies.transcriptjournal.TranscriptJournalChapter",t)}e.$inject=["NavigationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","TranscriptJournalChapterExtension"],angular.module("cc3.app").factory("TranscriptJournalChapterExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onActivateFn:function(i,n){e.setContext("filter",i.filter.filter,!1,n._scope.itemConfig.linkToSubParentState),e.setContext("filterEntity","Transcript",!1,n._scope.itemConfig.linkToSubParentState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("studies.universityclass.AssignmentConditionTree")}function i(e,t){e.resolveExtension("studies.universityclass.AssignmentConditionTree",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","UniversityClassAssignmentConditionTreeExtension"],angular.module("cc3.app").factory("UniversityClassAssignmentConditionTreeExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{onBeforeSelectFn:function(i,n){return t.fetchAuthenticationTypeViewDefinitionId(i.id).then(function(t){e.setContext("authenticationConfigurationViewId",t,!1,n._scope.itemConfig.linkToSubParentState),e.setContext("authenticationSettingsId",i.settingsObjectId,!1,n._scope.itemConfig.linkToSubParentState)})}}}function t(e){e.registerExtension("system.authenticationsources.AuthenticationSources")}function i(e,t){e.resolveExtension("system.authenticationsources.AuthenticationSources",t)}e.$inject=["NavigationService","ActionService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","AuthenticationSourcesExtension"],angular.module("cc3.app").factory("AuthenticationSourcesExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onLoadFn:function(o){var r=t.getContext("fileContainerId");a.isUndefined(r)&&(r=t.resolveContext(o._scope).then(function(){return e.readObjects({viewDefinitionId:n.view.fileContainerId,objectId:n.fileContainer.systemFileContainerId},o).then(function(e){t.setContext("fileContainerId",e.data[0].id,!1,o._scope.itemConfig.linkToSubParentState);var r=a(e.data[0].$permissions).concat(e.model[n.view.fileContainerId].entityPermissions).value(
1);t.setContext("fileContainerPermissions",r,!1,o._scope.itemConfig.linkToSubParentState),i.broadcast("action.update")})}),t.setContext("fileContainerId",r,!1,o._scope.itemConfig.linkToSubParentState))}}}function t(e){e.registerExtension("system.SystemFileContainer")}function i(e,t){e.resolveExtension("system.SystemFileContainer",t)}e.$inject=["ActionService","NavigationService","ApplicationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SystemFileContainerExtension"],angular.module("cc3.app").factory("SystemFileContainerExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){var r={"f15924b1-2e15-4b5e-9812-7d7f120c285e":"attributePath","2e4595be-4532-4a79-bed6-5cc89c9a3bb8":"attributePath","bf1edeb1-2851-4cf7-9435-9d1b017cbf6a":"attributePath","fe74d8eb-a478-4098-bddc-ace0cd1225fb":"attributePath","fbc6768d-8c0b-4547-87fe-ea202898a03c":"attributePath","f2537fe1-99f9-4f7b-82e1-3983605f171c":"attribute","6a1a943e-6641-496b-b023-4b805d21dd89":"attribute","de4626c1-2dca-4e64-befe-0b817864faa0":"attribute","70ddc8b5-eb4c-4d42-86b6-8a1bbbb484f0":"attribute","b2d5f212-32ef-4ebd-8c06-91a40ff5f98f":"attribute","2607be15-2519-475a-af5c-3e799644b587":"attribute"};return{onAnnotateRecordFn:function(s,c,l){e.loading().then(function(){var d=t.getContext("filterEntity"),u=o.dropRight(c);if(0===u.length)o.extend(s,{$modelContext:d});else{var g,f=o.filter(u,function(e){return o.keys(r).includes(e.$viewDefinition)}),p=o.findLastIndex(f,function(e){var t=e.$viewDefinition===a.view.filter.FilterExistsInTree,i=e.$viewDefinition===a.view.filter.FilterDescendantExistsInTree,n=e.$viewDefinition===a.view.filter.FilterAscendantExistsInTree,o=e.$viewDefinition===a.view.filter.FilterIsPartOf;return t||i||n||o});p>-1?(g=f[p].pathEntity,o.isObject(g)&&(g=g.id),f=o.drop(f,p+1)):g=d;var m=o.map(f,function(e){return e[r[e.$viewDefinition]]}),v=o.union([g],m).join(".");o.extend(s,{$modelContext:v})}if(s.$viewDefinition===a.view.filter.FilterExistsInTree||s.$viewDefinition===a.view.filter.FilterAscendantExistsInTree||s.$viewDefinition===a.view.filter.FilterDescendantExistsInTree||s.$viewDefinition===a.view.filter.FilterIsPartOf)return void o.extend(s,{$modelContextEntity:o.isObject(s.pathEntity)?s.pathEntity.id:s.pathEntity,$modelCreationContext:o.isObject(s.pathEntity)?s.pathEntity.id:s.pathEntity});const h=e.getNameOfTypeAtEndOfStringPath(s.$modelContext);if(o.isNil(h)||o.extend(s,{$modelContextEntity:h}),t.setContext("$modelContext",s.$modelContext,!1,l._scope.itemConfig.subParentState),o.keys(r).includes(s.$viewDefinition)?o.extend(s,{$modelCreationContext:[s.$modelContext,s.attribute||s.attributePath].join(".")}):o.extend(s,{$modelCreationContext:s.$modelContext}),t.setContext("$modelCreationContext",s.$modelCreationContext,!1,l._scope.itemConfig.subParentState),o.has(s,"attributePath")){const t=e.getNameOfTypeAtEndOfStringPath(s.$modelContext);o.isNil(t)||(s.$modelCreationContextTranslations=e.translatePath(t+"."+s.attributePath))}if(o.has(s,"objectValue")||o.has(s,"values")){var b=e.resolvePath(t.getContext("$modelContext")),w=e.getEntity(b.name);if(n.isUuid(s.objectValue)){var y=s.objectValue;i.readFilterValues({entity:w.name,objectId:y},l).then(function(e){var t=n.transformArrays(e.data)[0];s.$name=n.resolveDisplayName(t,e.model)})}else o.isArray(s.values)&&o.each(s.values,function(e){n.isUuid(e.objectValue)&&i.readFilterValues({entity:w.name,objectId:e.objectValue},l).then(function(t){var i=n.transformArrays(t.data)[0];e.$name=n.resolveDisplayName(i,t.model)})})}})},onClearSelectionFn:function(e){var i=t.getContext("filterEntity");t.setContext("$modelContext",i,!1,e._scope.itemConfig.subParentState),t.setContext("$modelCreationContext",i,!1,e._scope.itemConfig.subParentState)},onSelectFn:function(e,i){t.setContext("filterViewDefinitionId",e.$viewDefinition,!1,i._scope.itemConfig.subParentState),t.setContext("$modelContext",e.$modelContext,!1,i._scope.itemConfig.subParentState),t.setContext("$modelCreationContext",e.$modelCreationContext,!1,i._scope.itemConfig.subParentState)}}}function t(e){e.registerExtension("system.namedfilters.NamedFilter")}function i(e,t){e.resolveExtension("system.namedfilters.NamedFilter",t)}e.$inject=["ModelService","NavigationService","ActionService","CCUtils","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","NamedFilterExtension"],angular.module("cc3.app").factory("NamedFilterExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{onActivateFn:function(i,n){e.setContext("filter",i.filter.filter,!1,n._scope.itemConfig.linkToSubParentState),e.setContext("filterEntity",a.isObject(i.filter.entity)?i.filter.entity.id:i.filter.entity,!1,n._scope.itemConfig.linkToSubParentState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("system.namedfilters.NamedFilterList")}function i(e,t){e.resolveExtension("system.namedfilters.NamedFilterList",t)}e.$inject=["NavigationService","ApplicationService","AuthService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","NamedFilterListExtension"],angular.module("cc3.app").factory("NamedFilterListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onLoadFn:function(e){e.api.ui.setTitle("entity."+e.api.model.getBaseModel(e._scope).entity+".$entity",e._scope),"BaseSettings"===e.api.model.getBaseModel(e._scope).entity&&(i.isNil(e.api.isAuditLogActive)&&(e.api.isAuditLogActive=function(e){return e.widget.data.writeAuditLog}),i.isNil(e.api.isAuditLogInactive)&&(e.api.isAuditLogInactive=function(e){return!e.widget.data.writeAuditLog}))},onObjectUpdatedFn:function(i,n,a,o,r){i===t.emailsettings.emailTransmissionSettingsObjectId&&e.broadcast("settings.emailsettings.update")}}}function t(e){e.registerExtension("system.systemSettings.SettingCategory")}function i(e,t){e.resolveExtension("system.systemSettings.SettingCategory",t)}e.$inject=["ApplicationService","CMS_DATA","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SettingCategoryExtension"],angular.module("cc3.app").factory("SettingCategoryExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onActivateFn:function(t,i){e.setContext("systemSettingEntity",t.name,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("systemSettingDetailVie
1wDefinitionId",t.detailViewDefinitionId,!1,i._scope.itemConfig.linkToSubParentState),e.setContext("systemSettingObjectId",t.objectId,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("system.systemSettings.SystemSettings")}function i(e,t){e.resolveExtension("system.systemSettings.SystemSettings",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","SystemSettingsExtension"],angular.module("cc3.app").factory("SystemSettingsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("filterViewDefinitionId",t.$viewDefinition,!1,i._scope.itemConfig.linkToSubParentState)}}}function t(e){e.registerExtension("system.uibuilder.Filter")}function i(e,t){e.resolveExtension("system.uibuilder.Filter",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","FilterExtension"],angular.module("cc3.app").factory("FilterExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{visibleFn:function(i,n,a){var o=t.defer(),r=!!e.getContext("filter");return o.resolve(r),o.promise}}}function t(e){e.registerExtension("system.uibuilder.FilterDisplay")}function i(e,t){e.resolveExtension("system.uibuilder.FilterDisplay",t)}e.$inject=["NavigationService","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","FilterDisplayExtension"],angular.module("cc3.app").factory("FilterDisplayExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onSelectFn:function(t,i){e.setContext("uiItemViewDefinitionId",t.$viewDefinition,!1,i._scope.itemConfig.linkToSubParentState);let n=null;t.toolbar&&(n="string"==typeof t.toolbar?t.toolbar:t.toolbar.id);e.setContext("uiItemToolbarId",n,!1,i._scope.itemConfig.childState),t.defaultHelpField&&e.setContext("uiItemDefaultHelpId",t.defaultHelpField.id,!1,i._scope.itemConfig.childState)}}}function t(e){e.registerExtension("system.uibuilder.UIBuilder")}function i(e,t){e.resolveExtension("system.uibuilder.UIBuilder",t)}e.$inject=["NavigationService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","UIBuilderExtension"],angular.module("cc3.app").factory("UIBuilderExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onActivateFn:function(i,n){e.setContext("viewDefinitionUiEntity",i.entity,!1,n._scope.itemConfig.linkToSubParentState),e.setContext("filter",i.filter,!1,n._scope.itemConfig.linkToSubParentState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("system.uibuilder.ViewDefinition")}function i(e,t){e.resolveExtension("system.uibuilder.ViewDefinition",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","UIBuilderViewDefinitionExtension"],angular.module("cc3.app").factory("UIBuilderViewDefinitionExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{onActivateFn:function(n,a){e.setContext("filter",n.filter.filter,!1,a._scope.itemConfig.linkToSubParentState),e.setContext("filterEntity",i.isObject(n.filter.entity)?n.filter.entity.id:n.filter.entity,!1,a._scope.itemConfig.linkToSubParentState),t.broadcast("visible.update")}}}function t(e){e.registerExtension("system.userstory.UserStoryConstraintList")}function i(e,t){e.resolveExtension("system.userstory.UserStoryConstraintList",t)}e.$inject=["NavigationService","ApplicationService","_"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","UserStoryConstraintListExtension"],angular.module("cc3.app").factory("UserStoryConstraintListExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return function(e){e._scope.$on("unreadMessageCount.updated",(n,a)=>{i.isNil(e.selection.selected[0])||t.objectUpdated([{entity:"MessageBox",objectId:e.selection.selected[0].id}],e.api.model.getAffectedEntities(e._scope),e.id)})}(a),function(t){const i=e.getCurrentState().params,a=t.data[0];return i.boxId||!a?n.when():t.api.selection.select(a,t._scope)}(a)}}}function t(e){e.registerExtension("user.MessageBox")}function i(e,t){e.resolveExtension("user.MessageBox",t)}e.$inject=["NavigationService","WidgetService","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","MessageBoxExtension"],angular.module("cc3.app").factory("MessageBoxExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{onLoadFn:function(a){return function(e){e._scope.$on("unreadMessageCount.updated",(n,a)=>{i.isNil(e.selection.selected[0])||t.objectUpdated([{entity:"MessageFolder",objectId:e.selection.selected[0].id}],e.api.model.getAffectedEntities(e._scope),e.id)})}(a),function(t){const i=e.getCurrentState().params,a=t.data[0];return i.folderId||!a?n.when():t.api.selection.select(a,t._scope)}(a)}}}function t(e){e.registerExtension("user.MessageFolder")}function i(e,t){e.resolveExtension("user.MessageFolder",t)}e.$inject=["NavigationService","WidgetService","_","$q"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","MessageFolderExtension"],angular.module("cc3.app").factory("MessageFolderExtension",e).config(t).run(i)}(),function(){"use strict";function e(e){return{onLoadFn:function(t){return e.applyTableView(t._scope,"678052be-5d53-4b6a-a88a-d73c97efadc4")}}}function t(e){e.registerExtension("user.MyOrganisationalUnits")}function i(e,t){e.resolveExtension("user.MyOrganisationalUnits",t)}e.$inject=["TableViewService"],t.$inject=["WidgetServiceProvider"],i.$inject=["WidgetService","MyOrganisationalUnitsExtension"],angular.module("cc3.app").factory("MyOrganisationalUnitsExtension",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return function(i,n){return t.filter(i,function(i){return!!i.$displayName&&t.contains(e.removeHtml(i.$displayName).toLowerCase(),n.toLowerCase())})}}e.$inject=["CCUtils","_"],angular.module("ccFrontend").filter("displayName",e)}
1(),function(){"use strict";function e(e,t,i,n,a,o,r){const s="DD.MM.YYYY",c="DD.MM.YYYY, HH:mm:ss",l=/{([0-9a-zA-Z.]*)}/g,d=/\[i18n:([a-zA-Z0-9.$_]*)]/g,u=/\[icon:([^(,#\]]*)(?:,#([abcdef\d]{6}))?]/g,g=/\[if:(?:([^;\]]*);([^;\]]+)?(?:;([^;\]]+)?)?)?]/g,f=/\[global:([a-zA-Z]+)]/g,p=/^.*([<>]=?).*$/,m=/^\d+(\.\d+)?$/,v=/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/,h=/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}, [0-9]{2}:[0-9]{2}:[0-9]{2}$/;return w;function b(e,t,i,n,a){let o=i.replace(e,(e,i,a,o)=>(n.p1=i,n.p2=a,n.p3=o,t(n)));return a?o:o.trim()}function w(e,t,i,n=!1){if(r.isNil(t)&&r.has(e,"$displayPattern")&&(t=e.$displayPattern),null===t)return"";const a={value:e,models:i};return t=b(l,y,t,a,n),t=b(f,C,t,a,n),t=b(d,E,t,a,n),t=b(u,S,t,a,n),t=b(g,A,t,a,n)}function y(e){const i=e.p1,o=r.cloneDeep(r.get(e.value,i));return void 0===o||null===o?"":r.isObject(o)&&t.isMoney(o)?t.getDisplayName(o):Array.isArray(o)?a.isDate(o)?n("amDateFormat")(o,s):a.isDateTime(o)?n("amDateFormat")(o,c):r.map(o,t=>r.isObject(t)?r.has(t,"_item")?r.isObject(t._item)?x(t._item,e.models):t._item:x(t,e.models):t).join(", "):r.isObject(o)?x(o,e.models):o}function x(t,n){return t.$displayName?t.$displayName:r.isNil(t.$viewDefinition)||r.isNil(n)?r.has(t,"$displayPattern")?"{de} {en}"===t.$displayPattern?(e.addTranslationField(t),e.getTranslation(t.id)):w(t):i.isTranslationField(t)?(e.addTranslationField(t),e.getTranslation(t.id)):"":"TranslationField"===n[t.$viewDefinition].entity?(e.addTranslationField(t),e.getTranslation(t.id)):w(t,n[t.$viewDefinition].displayPattern,n)}function C(t){return"currentDate"===t.p1?n("amDateFormat")(new Date,"DD.MM.YYYY"):"currentDateTime"===t.p1?n("amDateFormat")(new Date,"DD.MM.YYYY, HH:mm:ss"):"activeLanguage"===t.p1?e.getCurrentLocale().iso:""}function S(e){const t=e.p1,i=e.p2;if(r.isNil(t)||0===t.length)return"";let n;return r.isNil(i)||0===i.length?n="":(n="color-"+i,0===$("#"+n).length&&$('<style id="'+n+'" type="text/css">.'+n+" { color: #"+i+"}</style>").appendTo("head")),'<i class="fa '+t+" "+n+' prefix-icon"></i>'}function E(t){const i=t.p1,n=e.getTranslation(i);return a.isEmpty(n)?"":n}function A(e){const t=e.p1,i=w(e.value,e.p2||"",e.models,!0),n=w(e.value,e.p3||"",e.models,!0);return r.isNil(t)||0===t.length?"":function e(t,i,n){if(t.includes("&&")){const a=t.split("&&").map(t=>e(t.trim(),!0,!1)).reduce((e,t)=>e&&t,!0);return a?i:n}if(t.includes("||")){const a=t.split("||").map(t=>e(t.trim(),!0,!1)).reduce((e,t)=>e||t,!1);return a?i:n}if(t.includes("==")||t.includes("!="))return function(e,t,i){let n;if(e.includes("=="))return(n=e.split("=="))[0]===n[1]?t:i;if(e.includes("!="))return(n=e.split("!="))[0]!==n[1]?t:i}(t,i,n);const a=t.match(p);if(a)return function(e,t,i,n){const a=n[1],o=e.substr(0,e.indexOf(a)),r=e.substr(e.indexOf(a)+a.length);return function(e,t,i){if(!e||!t)return!1;switch(i){case">":return e>t;case">=":return e>=t;case"<":return e<t;case"<=":return e<=t;default:throw new Error("invalid operator: "+i)}}(I(o.trim()),I(r.trim()),a)?t:i}(t,i,n,a);return r.contains(["null","undefined",""],t)?n:i}(t,i,n)}function I(e){return e.match(m)?parseInt(e):e.match(v)?o(e,s).toDate():e.match(h)?o(e,c).toDate():e}}e.$inject=["I18nService","MoneyService","ModelService","$filter","CCUtils","moment","_"],angular.module("ccFrontend").filter("displayPattern",e)}(),function(){"use strict";function e(e){return function(t){if(e.isNil(t))return null;if(t<=0||!e.isFinite(t))return 0;var i=Math.floor(Math.log(t)/Math.log(1024));return(t/Math.pow(1024,Math.floor(i))).toFixed(2)+" "+["bytes","KiB","MiB","GiB","TiB","PiB"][i]}}e.$inject=["_"],angular.module("ccFrontend").filter("filesize",e)}(),function(){"use strict";function e(e,t){return function(i,n){if(t.isNil(n))return i;var a=i.match(e.htmlRegExp),o=(i=i.replace(e.htmlRegExp,"%TOKEN_SEPERATOR%$1%TOKEN_SEPERATOR%")).split("%TOKEN_SEPERATOR%");return t.map(o,function(e){return t.includes(a,e)?e:(""+e).replace(new RegExp(function(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(n),"gi"),"<strong>$&</strong>")}).join("")}}e.$inject=["CMS_DATA","_"],angular.module("ccFrontend").filter("highlight",e)}(),function(){"use strict";function e(e){return function(t,i){return e.track(t,i)}}e.$inject=["I18nService"],angular.module("ccFrontend").filter("i18n",e)}(),function(){"use strict";function e(e,t){return function(i,n,a){return e.resolve(i,t.isUndefined(n)?"*":n,a)}}e.$inject=["ValidationService","_"],angular.module("ccFrontend").filter("validation",e)}(),function(){"use strict";angular.module("ccFrontend").factory("ExceptionHandler",function(){return{handle:function(e){}}})}(),function(){"use strict";function e(e,t,i,n){!function(){t.getBasicInfo().then(function(e){n.version=e.app.version}),e.readReducedObjects({viewDefinitionId:i.view.welcomeSettings}).then(function(e){n.widget.custom.params=e[0]})}()}e.$inject=["ActionService","ApplicationService","CMS_DATA","$scope"],angular.module("cc3.app").controller("modules.about.CampusCoreController",e)}(),function(){"use strict";function e(e,t,i){!function(){e.readReducedObjects({viewDefinitionId:t.view.welcomeSettings}).then(function(e){i.widget.custom.params=e[0]})}()}e.$inject=["ActionService","CMS_DATA","$scope"],angular.module("ccFrontend").controller("modules.about.ImprintController",e)}(),function(){"use strict";function e(e,t,i,n){i.widget.api.reload=o,i.actionInput={examinationId:null},i.errorsDeregistration=null,i.loadingDeregistrations=!0,i.errorsRegistration=null,i.loadingRegistrations=!0;var a=null;function o(){t.getContextAsPromise("examinationId",i).then(function(t){a=t,i.actionInput.examinationId=t,function(){i.loadingRegistrations=!0,e.validateExaminationRegistration(a,i.widget).then(function(e){i.errorsRegistration=e,i.loadingRegistrations=!1})}(),function(){i.loadingDeregistrations=!0,e.validateExaminationDeregistration(a,i.widget).then(function(e){i.errorsDeregistration=e,i.loadingDeregistrations=!1})}()})}o()}e.$inject=["ActionService","NavigationService","$scope","_"],angular.module("cc3.app").controller("modules.activity.examination.SelfRegisterToExaminationController",e)}(),function(){"use strict";function e(e,t,i,n,a,o){function r(){return t.getContextAsPromise("activityId").then(t=>e.invokeInstance("GetQuotaInformationAction",{},a.widget,n.noTransformationFn,e=>({activityId:t}),function(e){return e.getResults(1)}).then(function(e){a.widget.model={},a.widget.model.fullModel=e.model,a.widget.model.baseModel=e.model[e.viewDefinitionId];var t=e.model[e.viewDefinitionId];a.widget.custom.viewDefinitionId=e.viewDefinitionId,a.widget.custom.allowedActions=o.union(t.allowedActions,t.allowedPathActions);var n=e.data;o.forEach(n,function(e){i.addTranslationField(e.name)}),a.widget.data=o.sortBy(n,function(e){return i.getTranslation(e.name.id).toLowerCase()}),function(){var e=0;o.forEach(a.widget.data,function(t){t.minimumSeats&&(e+=Math.max(t.minimumSeats-t.currentSeats,0
1))}),a.widget.custom.reservedLeftForQuotas=e}(),a.widget.custom.loading=!1}))}a.widget.custom.loading=!0,a.widget.custom.reservedLeftForQuotas=0,a.executeFulfillAction=function(t){return e.invokeInstance("FindRegistrationsForQuotaAction",{quotaId:t.quotaId},a.widget,n.noTransformationFn,n.noTransformationFn,n.noTransformationFn,{originViewDefinitionIdOverride:a.widget.custom.viewDefinitionId}).then(function(){return r()})},a.loadData=r,r()}e.$inject=["ActionInvocationService","NavigationService","I18nService","CCUtils","$scope","_"],angular.module("cc3.app").controller("modules.activity.quotas.QuotasController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){l.widget.custom.dirty=!1,l.widget.custom.edit=!0,l.widget.custom.entityModels={},l.widget.custom.objects={},l.widget.custom.enumValues={},l.widget.custom.selectedEntity=null,l.widget.custom.selectedEnumName=null,l.widget.custom.source={mappings:[]},l.widget.custom.targetEntities=[],l.widget.custom.targetEnumNames=[];var g=[],f=!1;function p(e){if(u.contains(u.pluck(g,"id"),e.id)){var t=u.find(g,function(t){return t.id===e.id});e=u.merge(t,u.pick(e,"id","targetEntityName","targetObjectId","targetEnumName","targetSimpleEnumName","targetEnumValue","isAssigned"))}else g.push({id:e.id,targetEntityName:e.targetEntityName,targetObjectId:e.targetObjectId,targetEnumName:e.targetEnumName,targetSimpleEnumName:e.targetSimpleEnumName,targetEnumValue:e.targetEnumValue,isAssigned:e.isAssigned});P()}function m(){return!l.widget.custom.edit}function v(e){e.isAssigned=!0,p(e)}function h(){u.each(l.widget.custom.source.mappings,function(e){v(e)})}function b(){return l.widget.custom.dirty}function w(e){var t=u.find(g,function(t){return t.id===e.id});return!u.isNull(t)&&!u.isUndefined(t)}function y(e){return!(u.isUndefined(l.widget.custom.selectedEntity)||u.isNull(l.widget.custom.selectedEntity)||u.isUndefined(e))&&e.id===l.widget.custom.selectedEntity.id}function x(e){return!u.isNil(l.widget.custom.selectedEnumName)&&!u.isNil(e)&&e===l.widget.custom.selectedEnumName}function C(){return e.readObjects({viewDefinitionId:c.view.importObjectMappings,pathId:n.getContext("importMapperId")},l.widget).then(function(e){l.widget.custom.source.mappings=u.sortBy(u.map(e.data,function(e){return u.extend(e,{targetSimpleEnumName:u.isNil(e.targetEnumName)?null:e.targetEnumName.slice(e.targetEnumName.lastIndexOf(".")+1),linkedObjects:[]})}),"sourceObjectDisplayName"),i.isDeveloper().then(function(e){f=e}),function(){var e=n.getContext("targetEntities");if(u.isUndefined(e)){var t=d.defer();return l.$on("navigation.contextSet",function(e,i){"targetEntities"===i.parameter&&E(i.value).then(function(){t.resolve()})}),t.promise}return E(e)}().then(function(){D()}),function(){var e=n.getContext("targetEnumNames");if(u.isUndefined(e)){var t=d.defer();return l.$on("navigation.contextSet",function(e,i){"targetEnumNames"===i.parameter&&A(i.value).then(function(){t.resolve()})}),t.promise}return A(e)}().then(function(){D()})})}function S(e,t,i,n,a){var o=$(e.target).scope();u.isNull(o)||(!function(e,t){e.linkedObjects=[t],e.isAssigned=!1,e.targetEntityName=u.isNil(l.widget.custom.selectedEntity)?null:l.widget.custom.selectedEntity.dataEntity,e.targetObjectId=u.isNil(l.widget.custom.selectedEntity)?null:t.id,e.targetSimpleEnumName=u.isNil(l.widget.custom.selectedEnumName)?null:l.widget.custom.selectedEnumName.simpleEnumName,e.targetEnumName=u.isNil(l.widget.custom.selectedEnumName)?null:l.widget.custom.selectedEnumName.enumName,e.targetEnumValue=u.isNil(l.widget.custom.selectedEnumName)?null:t.enumValue,p(e)}(o.mapping,i),P())}function E(t){return l.widget.custom.targetEntities=u.sortBy(t,"$displayName"),!u.isEmpty(l.widget.custom.targetEntities)&&u.isNull(l.widget.custom.selectedEntity)?a.loading().then(function(){var t=[];return u.each(l.widget.custom.targetEntities,function(i){var n=a.getEntity(i.dataEntity).selectionViewDefinitionId;t.push(e.readObjects(n,l.widget,{forceAllUserStories:!0}).then(function(e){l.widget.custom.objects[i.dataEntity]=e.data,l.widget.custom.entityModels=u.merge(l.widget.custom.entityModels,e.model)}))}),d.all(t).then(function(){R(),k(l.widget.custom.targetEntities[0])})}):d.when(!0)}function A(e){if(l.widget.custom.targetEnumNames=e,u.isEmpty(l.widget.custom.targetEnumNames)||null!==l.widget.custom.selectedEnumName)return d.when(!0);const t=[];
1return l.widget.custom.targetEnumNames.forEach(e=>{t.push(a.getEnumAsPromise(e.simpleEnumName).then(t=>{l.widget.custom.enumValues[e.simpleEnumName]=[],Object.keys(t).forEach(t=>{l.widget.custom.enumValues[e.simpleEnumName].push({enumValue:t})})}))}),d.all(t).then(()=>{!function(){u.each(l.widget.custom.targetEnumNames,function(e){l.widget.custom.enumValues[e.simpleEnumName]=u.sortBy(u.map(l.widget.custom.enumValues[e.simpleEnumName],function(t){return u.extend(t,{$displayName:s.getTranslation("entity."+e.simpleEnumName+"."+t.enumValue)})}),"$displayName")})}(),T(l.widget.custom.targetEnumNames[0])})}function I(e){N(),g=[],e.dirty=!1,C()}function D(){u.each(l.widget.custom.source.mappings,function(e){if(u.isNull(e.targetEntityName)||u.isNull(e.targetObjectId)){if(!u.isNull(e.targetEnumName)&&!u.isNull(e.targetEnumValue)){var t=l.widget.custom.enumValues[e.targetSimpleEnumName];if(!u.isEmpty(t)){var i=u.find(t,function(t){return t.enumValue===e.targetEnumValue});u.isNull(i)||u.isUndefined(i)||(e.linkedObjects=[i])}}}else{var n=l.widget.custom.objects[e.targetEntityName];if(!u.isEmpty(n)){var a=u.find(n,function(t){return t.id===e.targetObjectId});u.isNull(a)||u.isUndefined(a)||(e.linkedObjects=[a])}}})}function k(e){l.widget.custom.selectedEntity=e}function T(e){l.widget.custom.selectedEnumName=e}function P(){l.widget.custom.dirty=!0,t.broadcast("action.update")}function N(){l.widget.custom.dirty=!1,t.broadcast("action.update")}function R(){u.each(l.widget.custom.targetEntities,function(e){l.widget.custom.objects[e.dataEntity]=u.sortBy(u.map(l.widget.custom.objects[e.dataEntity],function(e){return u.extend(e,{$displayName:r.resolveDisplayName(r.transformArrays(e),l.widget.custom.entityModels)})}),"$displayName")})}function M(e){e.linkedObjects=[],e.targetEntityName=null,e.targetObjectId=null,e.targetEnumValue=null,e.targetEnumName=null,e.isAssigned=!1;var t=u.find(g,function(t){return t.id===e.id});u.isNull(t)||u.isUndefined(t)?p({id:e.id,targetEntityName:null,targetObjectId:null,targetEnumName:null,targetEnumValue:null,isAssigned:!1}):(t.targetEntityName=null,t.targetObjectId=null,t.targetEnumName=null,t.targetEnumValue=null,t.isAssigned=!1),P()}function F(){return g}function j(){return f}function V(e){return e.widget.custom.edit}!function(){C().then(function(){u.extend(l.widget.api,{canEdit:m,confirm:v,confirmAll:h,isDirty:b,isDeveloper:j,isEditMode:V,isModified:w,isSelected:y,isSelectedEnum:x,onDrop:S,reload:I,select:k,selectEnum:T,setPristine:N,unlink:M}),u.extend(l.widget.api.action,{getCustomInput:F}),l.$on("i18n.switch",function(){R()})})}()}e.$inject=["ActionService","ApplicationService","AuthService","NavigationService","ModelService","EnumService","CCUtils","I18nService","CMS_DATA","$scope","$q","_"],angular.module("cc3.app").controller("modules.administration.import.ObjectMappingController",e)}(),function(){"use strict";function e(e,t,i,n,a){function o(){i.widget.custom.loading=!0,e.invokeInstance("GetSamlServiceProviderInformationAction",{},i.widget,t.noTransformationFn,t.noTransformationFn,function(e){return e.getResults(1)}).then(function(e){i.serviceProviderInformation.idpInitiatedLogoutEndpoint=e.idpInitiatedLogoutEndpoint,i.serviceProviderInformation.x509Certificate=e.x509Certificate,i.serviceProviderInformation.certificateValidityPeriodInYears=e.certificateValidityPeriodInYears,i.serviceProviderInformation.ccMetadataUrl=e.ccMetadataUrl,i.widget.custom.loading=!1})}i.widget.custom.loading=!0,i.serviceProviderInformation={},function(){i.subscribeToEntityChanges("IdentityProvider"),o()}(),i.$on("customWidget.update",function(){o()})}e.$inject=["ActionInvocationService","CCUtils","$scope","$q","_"],angular.module("cc3.app").controller("modules.authentication.SamlServiceProviderInformationController",e)}(),function(){"use strict";function e(e,t,i){function n(t){e.$apply(e=>{e.widget.custom.image=t})}function a(){r(270).then(e=>n(e))}function o(){r(90).then(e=>n(e))}function r(t){const n=e.widget.custom.image;return new Promise(function(e,a){t=t&&i.isNumber(t)?t:90;const o=document.createElement("canvas");o.setAttribute("id","hidden-canvas"),o.style.display="none",document.body.appendChild(o);const r=o.getContext("2d"),s=new Image;s.src=(-1===n.indexOf(",")?"data:image/png;base64,":"")+n,s.onload=function(){const i=s.width,n=s.height,a=t*Math.PI/180;let c=Math.cos(a),l=Math.sin(a);l<0&&(l=-l),c<0&&(c=-c),o.width=n*l+i*c,o.height=n*c+i*l,r.translate(o.width/2,o.height/2),r.rotate(t*Math.PI/180),r.drawImage(s,-s.width/2,-s.height/2),e(o.toDataURL()),document.body.removeChild(o)},s.onerror=function(){a("Unable to rotate image\n"+s.src)}})}function s(t){e.widget.custom.croppedDataUri=t}e.widget.custom.image="",e.widget.custom.croppedImage="",t(function(){!function(){e.widget.api.storeCroppedDataUri=s,e.widget.api.rotateLeft=a,e.widget.api.rotateRight=o;const t=new FileReader;t.onload=function(e){n(e.target.result)}
1,t.readAsDataURL(e.widget.data.file)}()},0)}e.$inject=["$scope","$timeout","_"],angular.module("cc3.app").controller("modules.common.CropImageController",e)}(),function(){"use strict";function e(e,t,i){t.getResponseTypes=function(){return i.mapValues(i.pick(e.$responseCodes.pending,i.keys(t.widget.data.results)),function(e,t,n){return i.extend(e,{code:t})})},t.hasAllChecked=function(){return!i.has(i.groupBy(t.widget.data.checked),!1)},t.getSingleResultDisplayName=e.getSingleResultDisplayName}e.$inject=["ActionInvocationService","$scope","_"],angular.module("cc3.app").controller("modules.common.interactiveRequest.InteractionRequiredController",e)}(),function(){"use strict";function e(e,t){}e.$inject=["$scope","_"],angular.module("cc3.app").controller("modules.common.loggedout.LoggedOutController",e)}(),function(){"use strict";function e(e){e.uiItemTypes=[{name:"CustomWidget",icon:"fa-magic"},{name:"FormWidget",icon:"fa-edit"},{name:"GraphWidget",icon:"fa-code-branch"},{name:"IFrameWidget",icon:"fa-browser"},{name:"ReportWidget",icon:"fa-chart-pie"},{name:"TableWidget",icon:"fa-table"},{name:"TreeWidget",icon:"fa-sitemap"}],e.selectEntity=function(t){e.widget.api._modal.close(t)}}e.$inject=["$scope"],angular.module("cc3.app").controller("modules.common.navigation.EntitySelectionController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m){var v={};function h(){f.viewDefinition=null,f.viewDefinitionFields=[],f.viewDefinitionModel=null,f.availableFields=[],f.activePath=[],f.activeEntity=null,f.baseEntity=null}function b(){var e=function(e){var t=f.viewDefinition;return m.each(e,function(e){var i=m.find(t.fields,function(t){return t.attribute===e});t=i.embeddedObjectView}),t}(f.activePath);if(e){f.viewDefinitionFields=e.fields,f.viewDefinitionModel=v[e.entity],f.activeEntity=e.entity;var t=m.map(e.fields,function(e){return e.attribute});f.availableFields=[],m.each(v[e.entity],function(e){m.contains(t,e.name)||f.availableFields.push(function(e){var t={attribute:e.name,embeddedObjectView:null,immutableEmbeddedObjectViewId:null,editDisplayType:null,viewDisplayType:null,priority:"DEFAULT",bulkField:null,collectionOverride:null,convertObjectToString:null,defaultValue:null,featureConfiguration:null,fileCategory:null,fileContainerPath:null,filterAllowedValuesByContextParameter:null,filterAllowedValuesByField:null,filterAllowedValuesByFieldAsFilterVariable:null,filterFieldAttributeTypes:[],filterIsCollectionOperator:null,filterOperatorAttributeTypes:[],hideEditLabel:!1,hideInEditIfEquals:null,hideInViewIfEquals:null,hideIfReferencedFieldEquals:null,hideViewLabel:!1,maximumCollectionSize:null,minimumCollectionSize:null,initialCollectionSize:null,nameOverride:null,referencedField:null,showInEditIfEquals:null,showInViewIfEquals:null,showIfReferencedFieldEquals:null,simpleTypeOverride:null,staticValue:null,alias:null,typeOverride:null,usePriorityOnlyIfReferencedFieldEquals:null,validFileMimeTypes:null,includeOnRetrieval:!0};return m.extend(t,l.getDefaultConfiguration(e))}(e))}),f.availableFields=m.sortBy(f.availableFields,function(e){return s.getTranslation("entity."+f.activeEntity+"."+e.attribute)})}}function w(){m.isUndefined(f.viewDefinition)||m.isNull(f.viewDefinition)||t.createOrUpdateObject([{viewDefinitionId:u.view.viewDefinition,entity:"ViewDefinition",object:d.removeEmptyObjects(c.createMissingEmbeddedObjects(f.fullModel,u.view.viewDefinition,!0,f.viewDefinition,f.defaultValues))}]).then(function(e){f.viewDefinition.id=e[0],m.has(f.viewDefinition,"id")&&d.isUuid(f.viewDefinition.id)?t.updateUiItemViewDefinition(f.widget.data.itemConfigId,f.widget.data.widgetEntity,f.viewDefinition.id).then(function(){p.location.reload()}):f.widget.data.widget&&f.widget.data.widget.api&&f.widget.data.widget.api.reload?f.widget.data.widget.api.reload(f.widget._scope):p.location.reload()})}function y(e){return{entity:e,fields:[],defaultOrder:null,displayPattern:null,namedFilter:null,path:null,resolveObjects:[],validation:null}}f.createViewDefinition=function(e){var t=f.viewDefinition?f.viewDefinition.id:null;h(),f.baseEntity=e,f.viewDefinition=y(e),f.viewDefinition.id=t,b()},f.editField=function(e){r.setContext("viewDefinitionUiEntity",f.activeEntity);var t=m.find(f.viewDefinitionFields,function(t){return t.attribute===e});if(!t)return;var i={viewDefinition:u.view.viewFields,title:"entity."+f.activeEntity+"."+t.attribute,initialData:t};a.getForm(i,[],[{icon:"fa-long-arrow-alt-right",style:"success",title:"common.modalControl.goForward",visible:function(e){return!0},fn:function(e){e.api._modal.close(e.api.getChanges(e._scope))}},o.getControl("cancel")],{}).result.then(function(e){m.extend(t,e)})},f.getTemplate=function(){return n.customModule("common.viewdefinitioneditor.typeahead-item-template")},f.getTypeDefinition=function(e){return i.getEntity(e)}
1,f.navigateToAttribute=function(e){var t=m.find(f.viewDefinitionFields,function(t){return t.attribute===e});if(!t)return;t.embeddedObjectView||(t.embeddedObjectView=y(f.viewDefinitionModel[e].type));f.activePath.push(e),b()},f.navigateBack=function(){f.activePath.pop(),b()},f.save=w,f.allEntities=i.getEntityNames(),f.isImmutableViewDefinition=!0,h(),function(){if(e.isDevMode()){var n,a=i.loading().then(function(){m.each(i.getEntities(),function(e){var t={};m.each(e.attributes,function(e){t[e.name]=e}),v[e.name]=t})}),o=f.widget.data.viewDefinitionId;m.isUndefined(o)||m.isNull(o)?(f.isImmutableViewDefinition=!1,n=g.when()):n=t.readObjects({viewDefinitionId:u.view.viewDefinition,objectId:o},f.widget.data.widget).then(function(e){f.fullModel=e.model,f.viewDefinition=e.data[0],f.defaultValues=e.defaultValues,m.isUndefined(f.viewDefinition)||m.isNull(f.viewDefinition)||(f.baseEntity=f.viewDefinition.entity,f.isImmutableViewDefinition=!1)}),g.all([a,n]).then(function(){b()}),f.widget.action.control.splice(0,0,{icon:"fa-check",style:"secondary",title:"common.save",visible:function(e){return!0},fn:function(e){w()}})}}()}e.$inject=["ApplicationService","ActionService","ModelService","UrlService","ModalService","ControlService","NavigationService","I18nService","ViewDefinitionModelService","FieldService","CCUtils","CMS_DATA","$q","$scope","$window","_"],angular.module("cc3.app").controller("modules.common.ViewDefinitionEditorController",e)}(),function(){"use strict";function e(e,t){var i;t.has(e,"itemConfig.customData.errors.globalMessages")&&(i=e.itemConfig.customData.errors.globalMessages),e.entries=i,e.loading=!0,e.title="validation.action.errorAlert.title",e.loading=!1}e.$inject=["$scope","_"],angular.module("cc3.app").controller("modules.common.widget.ErrorAlertController",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.load=function(){return e.readReducedObjects({viewDefinitionId:o.view.contact.widget.contactData,objectId:n.receivedContext}).then(e=>{if(!e[0])return a.reject();const t=e[0].institutionContactData,i=e[0].contact;return n.email=(t.emailAddresses||[]).map(e=>e.address).filter(e=>null!==e),n.phone=(t.phone||[]).map(e=>e.number).filter(e=>null!==e),n.fax=(t.fax||[]).map(e=>e.number).filter(e=>null!==e),n.website=e[0].website,n.contactDesired=i.contactDesired,n.mailContactDesired=i.mailContactDesired||!1,n.emailContactDesired=i.emailContactDesired||!1,n.phoneContactDesired=i.phoneContactDesired||!1,e})},n.title="contactInformation.title",n.email=void 0,n.phone=void 0,n.fax=void 0,n.website=void 0,n.isEditingMode=t.isEditingMode}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","$q","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.institutionfactsheet.ContactInformation",e)}(),angular.module("cc3.app").controller("modules.landingpages.contact.institution.memos",PersonMemoController),function(){"use strict";function e(e,t,i,n){t.load=function(){return e.readReducedObjects({viewDefinitionId:n.view.contact.widget.name,objectId:t.receivedContext}).then(e=>e[0]?e[0].name:i.reject())},t.name=void 0,t.title="$defaults.attribute.name"}e.$inject=["ActionService","$scope","$q","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.institutionfactsheet.name",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){a.isEditingMode=t.isEditingMode,a.termTypes={},a.title="activityfactsheet.AcademicTerms.title",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:s.view.activityFactSheet.academicTerms,pathId:t.receivedContext}).then(function(e){if(t.noResult=o.isNil(e)||o.isEmpty(e),!t.noResult){var n=e.sort(function(e,t){return r(e.termPeriod.startDate)<r(t.termPeriod.startDate)?-1:r(e.termPeriod.startDate)>r(t.termPeriod.startDate)?1:0});o.each(n,function(e){var n=e.termType;i.addTranslationField(e.name),i.addTranslationField(n.name),i.addTranslationField(e.shortName),o.isNil(t.termTypes[n.id])&&(t.termTypes[n.id]={id:n.id,name:n.name,icon:n.icon,terms:[]}),t.termTypes[n.id].terms.push(e)})}})},[c.status.id])}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","_","moment","CMS_DATA","WIDGET_API"],angular.module("cc3.app").controller("modules.landingpages.activityfactsheet.AcademicTerms",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){a.isEditingMode=t.isEditingMode,a.activity=void 0,a.title=void 0,a.subtitle=void 0,a.shortTitle=void 0,function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.activityFactSheet.activityTitle,objectId:t.receivedContext}).then(function(e){t.noResult||(t.activity=e[0],o.isNil(t.activity)||(o.isNil(t.activity.title)||i.addTranslationField(t.activity.title),o.isNil(t.activity.subtitle)||i.addTranslationField(t.activity.subtitle),o.isNil(t.activity.shortTitle)||i.addTranslationField(t.activity.shortTitle)))})},[s.status.id])}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","_","CMS_DATA","WIDGET_API"],angular.module("cc3.app").controller("modules.landingpages.activityfactsheet.ActivityTitle",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){s.isEditingMode=t.isEditingMode,s.title="activityfactsheet.ModulePartClearances.title",s.showExistingRegistrationHint=void 0,s.transcriptModulePartClearances=void 0,s.modulePartClearances=void 0,s.registrationExists=!1,s.canSelfRegister=!1,s.loadModulePartClearances=f;var g=["APPROVED","REJECTED","REQUESTED"];function f(){return e.readObjects({viewDefinitionId:d.view.activityFactSheet.modulePartClearances}).then(function(e){a.hasUserStories([d.userStories.selfRegisterForActivities]).then(function(t){if(s.canSelfRegister=t[0],s.noResult=l.isNil(e.data)||l.isEmpty(e.data),s.canSelfRegister&&!s.noResult&&!s.registrationExists){var n=l.find(l.values(e.model),function(e){return"ExamRegModulePartVersion"===e.entity});s.displayPattern=n.displayPattern,l.forEach(e.data,function(t){t.$displayName=r.resolveDisplayName(t,e.model),t.transcriptModulePartRejectionReason&&i.addTranslationField(t.transcriptModulePartRejectionReason.name)}),s.modulePartClearances=l.sortBy(e.data,function(e,t){var i=g.indexOf(e.transcriptModulePartClearanceStatus)-g.indexOf(t.transcriptModulePartClearanceStatus);return 0!==i?i:e.$displayName.localeCompare(t.$displayName)})}})})}!function(){n.applyConfiguration(s,function(t){return o.getContextAsPromise("activityId",t).then(function(e){return t.customActionInput={activityId:e},c.when(e)}).then(function(i){return e.validateRegistrationAvailability(i,t.widget).then(function(e){return l.isNil(e.registration)||(t.registrationExists="REJECTED"!==e.registration.status&&"DEREGISTERED"!==e.registration.status),f()})})},[u.status.id])}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","AuthService","NavigationService","CCUtils","$scope","$q","_","CMS_DATA","WIDGET_API"],angular.module("cc3.app").controller("modules.landingpages.activityfactsheet.ModulePartClearances",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d){function u(){return e.validateRegistrationAvailability(r.actionInput.activityId,r.widget).then(function(e){r.actionValidation.deregister=e.deregistrationResults,r.actionValidation.registerPublic=e.publicRegistrationResults,r.actionValidation.registerGuestStudy=e.guestStudiesRegistrationResults,r.actionValidation.registerLecture=e.lectureResults,e.registration&&(r.registration={status:e.registration.status,statusI18n:"entity.NewActivityRegistrationStatus."+e.registration.status,waitingListPlace:e.registration.waitingListPlace,active:e.registration.active},e.registration.partialActivity&&(n.addTranslationField(e.registration.partialActivity),r.registration.partialActivityNameId=e.registration.partialActivity.id)),r.actionsLoading=!1})}function g(e){var t=!0;
1return s.forEach(s.get(r,e),function(e){e.suppressAction&&(t=!1)}),t}r.isEditingMode=t.isEditingMode,r.title="activityfactsheet.RegistrationDeregistration.placeAllocation",r.registrationPeriod={startDateTime:void 0,endDateTime:void 0},r.deregistrationPeriod={startDateTime:void 0,endDateTime:void 0},r.actionInput={activityId:null},r.participants={freeSeats:null,placeAllocationBeanTriggeredAt:null},r.actionValidation={SelfDeregisterAction:{suppressAction:!0,validationMessages:[]}},r.registration={status:null,statusI18n:null,waitingListPlace:null,active:!1},r.showRegisterLectureValidationMessages=!1,r.showRegisterPublicValidationMessages=!1,r.showDeregisterValidationMessages=!1,r.toggle=function(e){r[e]=!r[e]},r.actionsLoading=!0,r.getI18nOfMessage=function(e){return e.error.messages["*"][0].i18nKey.i18n},r.isActive=function(e){var t=a.getLatestRequestMoment();if(e.startDateTime&&e.endDateTime)return t.isSameOrAfter(e.startDateTime)&&t.isSameOrBefore(e.endDateTime);if(e.startDateTime)return t.isSameOrAfter(e.startDateTime);if(e.endDateTime)return t.isSameOrBefore(e.endDateTime);return!1},r.loadActionVisibilities=u,r.showAction=g,r.showLectureAndPublicHint=function(){return g("actionValidation.registerLecture")&&!r.actionValidation.registerLecture.length&&g("actionValidation.registerPublic")&&!r.actionValidation.registerPublic.length},function(){i.applyConfiguration(r,function(t){return e.readReducedObjects({viewDefinitionId:l.view.activityFactSheet.registrationDeregistration,pathId:t.receivedContext}).then(function(e){if(!s.isNil(e[0])){var i=e[0].effectiveRegistrationPeriod||{};t.registrationPeriod={startDateTime:i.startDate?c(o.transformDate(i.startDate)):void 0,endDateTime:i.endDate?c(o.transformDate(i.endDate)):void 0},t.deregistrationPeriod={startDateTime:i.startDate?c(o.transformDate(i.startDate)):void 0,endDateTime:e[0].effectiveDeregistrationDeadline?c(o.transformDate(e[0].effectiveDeregistrationDeadline)):void 0},t.participants={freeSeats:e[0].freeSeats,placeAllocationBeanTriggeredAt:e[0].placeAllocationBeanTriggeredAt,showPlaceAllocationHint:function(e,t){if(!s.isNil(e))return!1;if(s.isNil(t))return!0;return t!==l.placeAllocationStrategies.firstComeFirstServe}(e[0].placeAllocationBeanTriggeredAt,e[0].allocationStrategy)}}return a.getContextAsPromise("activityId",t).then(function(e){return t.actionInput.activityId=e,u()})})},[d.status.id])}()}e.$inject=["ActionService","ApplicationService","LandingPageService","I18nService","NavigationService","CCUtils","$scope","_","moment","CMS_DATA","WIDGET_API"],angular.module("cc3.app").controller("modules.landingpages.activityfactsheet.RegistrationDeregistration",e)}(),function(){"use strict";function e(e,t,i){i.isEditingMode=e.isEditingMode,i.title="controlHelp.title",function(){t.applyConfiguration(i)}()}e.$inject=["ApplicationService","LandingPageService","$scope"],angular.module("cc3.app").controller("modules.landingpages.startpage.ControlHelp",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){function c(e,t){const i=e.filter(e=>t.indexOf(e.id)>=0);return s.sortBy(i,e=>t.indexOf(e.id))}function l(e){if(!s.isEmpty(o.filter.searchEntryPoints)){var t=i.getCurrentLocale().iso;return e.name[t].toLowerCase().indexOf(o.filter.searchEntryPoints.toLowerCase())>-1}return!1}function d(){return s.filter(o.entryPoints,function(e){return!s.contains(s.pluck(o.hiddenEntryPoints,"id"),e.id)})}o.entryPoints=[],o.favouriteEntryPoints=[],o.hiddenEntryPoints=[],o.execute=function(e){s.isEmpty(e.target)||a.go(e.target);s.has(o.extensions,e.id)&&o.extensions[e.id]();if(!s.isEmpty(e.action))return t.executeEntryPointAction(e.action.name);return r.resolve()},o.getDescription=function(e){return s.map(e.description,function(e){return i.getTranslation(e.id)}).join("<br />")},o.getEntryPointName=function(e){return i.getTranslation(e.name.id)},o.getVisibleEntryPoints=d,o.isAnyVisibleForCurrentFilter=function(){if(!s.isEmpty(o.filter.searchEntryPoints))return s.reduce(s.map(d(),l),function(e,t){return e||t});return!1},o.isVisibleForCurrentFilter=l,o.filter={searchEntryPoints:""},o.isEditingMode=e.isEditingMode,o.title="entryPoints.title",function(){n.applyConfiguration(o,function(e){return t.readEntryPoints().then(function(t){e.noResult=0===t.result.length,s.each(t.result,function(e){i.addTranslationField(e.name),s.each(e.description,function(e){i.addTranslationField(e)}),e.$displayName=i.getTranslation(e.name.id)}),e.entryPoints=t.result,s.isNull(e.widgetConfig)||(e.favouriteEntryPoints=c(e.entryPoints,e.widgetConfig.favouriteEntryPoints),e.hiddenEntryPoints=c(e.entryPoints,e.widgetConfig.hiddenEntryPoints))})})}()}e.$inject=["ApplicationService","ActionService","I18nService","LandingPageService","NavigationService","$scope","$q","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.EntryPoints",e)}(),function(){"use strict";function e(e,t,i){i.showResponse=function(n){var a=n.getOneResult(1);
1200===a.status?(i.message=e.getTranslation("common.ghini.connectivity.ok"),i.error=!1):400===a.status?(i.message=t.resolve(a.error["*"],void 0,i)[0],i.error=!0):(i.message=e.getTranslation("common.ghini.connectivity.error"),i.error=!0)},i.message=void 0,i.error=void 0,i.title="common.ghini.connectivity.title"}e.$inject=["I18nService","ValidationService","$scope"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniConnectivity",e)}(),function(){"use strict";function e(e,t){t.title="common.ghini.errorsandwarnings.title",t.load=function(){return e.fetchGhiniErrorsAndWarnings()}}e.$inject=["ActionService","$scope"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniErrorsAndWarnings",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){var s;function c(){r.isNil(s)?o.message=void 0:r.isString(s)?r.startsWith(s,"common.")?o.message=n.getTranslation(s):o.message=s:o.message=a.resolve(s,void 0,o)[0]}o.showResponse=function(e){var t=e.getOneResult(1);200===t.status?(r.isArray(t.result)&&1===t.result.length&&t.result[0].file?(o.files.push(t.result[0].file),s=void 0):(s=r.isNil(t.result)?"common.ghini.importexport.importOk":t.result,o.files=[]),o.error=!1):400===t.status?(s=t.error["*"],o.error=!0,o.files=[]):(s="common.ghini.importexport.error",o.error=!0,o.files=[]);c()},o.download=function(t){e.downloadOwnFile(t)},o.cleanupError=function(){o.error=void 0,s=void 0,c()},o.error=void 0,o.files=[],o.title="common.ghini.importexport.title",o.updateI18n=c,t.hasUserStories([i.userStories.manageGhiniMessages]).then(function(e){o.hasPermissions=e[0]})}e.$inject=["ActionService","AuthService","CMS_DATA","I18nService","ValidationService","$scope","_"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniImportExport",e)}(),function(){"use strict";function e(e,t,i,n){n.chart={credits:{enabled:!1},options:{chart:{type:"bar"},title:{text:""},xAxis:{categories:["???","???"]},yAxis:{type:"logarithmic",minTickInterval:1,title:{text:""}},legend:{itemStyle:{fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',fontSize:"9pt"},symbolHeight:12,symbolWidth:12,symbolRadius:6},colors:i.getColors("tol-rainbow",3),plotOptions:{},exporting:{enabled:!1}},series:[{name:"???",data:[0,0]},{name:"???",data:[0,0]},{name:"???",data:[0,0]}]},n.title="common.ghini.report.title",n.load=function(){return e.fetchGhiniReport().then(function(e){return n.chart.series[0].data[0]=e.incomingMessagesLastYear,n.chart.series[0].data[1]=e.outgoingMessagesLastYear,n.chart.series[1].data[0]=e.incomingMessagesLastMonth,n.chart.series[1].data[1]=e.outgoingMessagesLastMonth,n.chart.series[2].data[0]=e.incomingMessagesLastWeek,n.chart.series[2].data[1]=e.outgoingMessagesLastWeek,e})},n.updateI18n=function(){n.chart.options.xAxis.categories[0]=t.getTranslation("common.ghini.report.xAxis.incomingMessages"),n.chart.options.xAxis.categories[1]=t.getTranslation("common.ghini.report.xAxis.outgoingMessages"),n.chart.series[0].name=t.getTranslation("common.ghini.report.series.year"),n.chart.series[1].name=t.getTranslation("common.ghini.report.series.month"),n.chart.series[2].name=t.getTranslation("common.ghini.report.series.week")}}e.$inject=["ActionService","I18nService","CCUtils","$scope"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniReport",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){o.load=function(){t.getTranslation("common.time");return e.fetchGhiniStatusInformation().then(function(e){return o.status.activationDate=function(e){if(r.isNil(e))return t.getTranslation("common.error");return a("amDateFormat")(n(i.transformDate(e)),"DD.MM.YYYY")}(e.activationDate),o.status.highestIncomingMessageSerialNumber=e.highestIncomingMessageSerialNumber,o.status.highestOutgoingMessageUpdateSerialNumber=e.highestOutgoingMessageUpdateSerialNumber,e})},o.title="common.ghini.status.title",o.status={}}e.$inject=["ActionService","I18nService","CCUtils","moment","$filter","$scope","_"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniStatus",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){function l(e,n){return c.isNil(e)?t.getTranslation("c
1ommon.ghini.transmissions.noTransmissionYet"):r("amDateFormat")(o(i.transformDate(e)),"DD.MM.YYYY HH:mm")+" "+n}s.elements={left:{group:"nodes",data:{label:"???"},position:{x:100,y:100},selectable:!1,locked:!0,grabbable:!1,classes:"left"},center:{group:"nodes",data:{label:"???"},position:{x:500,y:100},selectable:!1,locked:!0,grabbable:!1,classes:"center"},right:{group:"nodes",data:{label:"???"},position:{x:900,y:100},selectable:!1,locked:!0,grabbable:!1,classes:"right"},leftToCenter:{group:"edges",data:{source:"left",target:"center"},selectable:!1,locked:!0,grabbable:!1,classes:"bottom"},centerToRight:{group:"edges",data:{source:"center",target:"right"},selectable:!1,locked:!0,grabbable:!1,classes:"top"},centerToLeft:{group:"edges",data:{source:"center",target:"left"},selectable:!1,locked:!0,grabbable:!1,classes:"top"},rightToCenter:{group:"edges",data:{source:"right",target:"center"},selectable:!1,locked:!0,grabbable:!1,classes:"bottom"}},s.style=[{selector:"node",style:{shape:"rectangle",label:"data(label)","border-width":0,"text-valign":"top","text-halign":"center","text-wrap":"wrap","font-family":'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',"text-margin-y":-20,width:150,height:100,"background-color":"#FFFFFF"}},{selector:"node.left",style:{"background-image":"data:image/svg+xml;utf8,"+encodeURIComponent('<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M480 288H32c-17.62 0-32 14.38-32 32v128c0 17.62 14.38 32 32 32h448c17.62 0 32-14.38 32-32v-128C512 302.4 497.6 288 480 288zM352 408c-13.25 0-24-10.75-24-24s10.75-24 24-24s24 10.75 24 24S365.3 408 352 408zM416 408c-13.25 0-24-10.75-24-24s10.75-24 24-24s24 10.75 24 24S429.3 408 416 408zM480 32H32C14.38 32 0 46.38 0 64v128c0 17.62 14.38 32 32 32h448c17.62 0 32-14.38 32-32V64C512 46.38 497.6 32 480 32zM352 152c-13.25 0-24-10.75-24-24S338.8 104 352 104S376 114.8 376 128S365.3 152 352 152zM416 152c-13.25 0-24-10.75-24-24S402.8 104 416 104S440 114.8 440 128S429.3 152 416 152z"></path></svg>')}},{selector:"node.center",style:{"background-image":"data:image/svg+xml;utf8,"+encodeURIComponent('<svg width="120" height="100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 198.54 140"><defs><style>.d{fill:#006531;}.e{fill:#013a1a;}</style></defs><path class="d" d="M14.31,87.57c-4.63,0-8.18-1.2-10.63-3.59-2.46-2.39-3.68-5.65-3.68-9.78v-12.12c0-4.15,1.23-7.43,3.68-9.82,2.45-2.39,6-3.59,10.63-3.59,4.38,0,7.8,1.06,10.27,3.19,2.47,2.13,3.86,4.98,4.19,8.55v9.1H6.12v4.68c0,2.9,.7,4.91,2.11,6.04,.91,.71,1.93,1.15,3.06,1.34,1.13,.19,2.14,.28,3.02,.28,.83,0,1.79-.08,2.87-.23,3.68-.6,5.51-3.08,5.51-7.44v-2.42h6.08v2.42c0,4.31-1.3,7.61-3.91,9.91s-6.12,3.46-10.56,3.46Zm8.38-23.75c0-2.12-.15-3.77-.43-4.97-.29-1.2-.99-2.2-2.1-3-.91-.63-1.9-1.03-2.98-1.21-1.08-.18-2.04-.26-2.87-.26-.88,0-1.89,.09-3.02,.28s-2.15,.65-3.06,1.38c-.98,.81-1.58,1.8-1.79,2.98-.21,1.18-.32,2.78-.32,4.8H22.7Z"/><path class="d" d="M66.07,86.89h-6.12v-24.96c0-2.89-.71-4.87-2.11-5.93-.93-.7-1.96-1.15-3.08-1.34-1.12-.19-2.12-.28-3-.28s-1.84,.09-2.95,.28c-1.11,.19-2.1,.64-2.98,1.34-1.38,1.08-2.08,3.06-2.08,5.93v24.96h-6.12V49.39h5.85l.08,1.1c2.19-1.21,4.92-1.81,8.2-1.81,4.46,0,7.96,1.1,10.5,3.3,2.54,2.2,3.81,5.52,3.81,9.95v24.96Z"/><path class="d" d="M108.66,87.57c-4.63,0-8.18-1.2-10.63-3.59-2.46-2.39-3.68-5.65-3.68-9.78v-12.12c0-4.15,1.23-7.43,3.68-9.82,2.45-2.39,6-3.59,10.63-3.59,3.22,0,6.02,.64,8.38,1.93v-1.17h6.08l.04,37.46h-5.66l-.11-1.44c-2.42,1.41-5.33,2.11-8.72,2.11Zm0-5.7c.83,0,1.79-.08,2.87-.23,3.68-.6,5.51-3.08,5.51-7.44v-12.42c-.03-2.77-.86-4.75-2.49-5.93-.93-.63-1.94-1.03-3.02-1.21-1.08-.18-2.04-.26-2.87-.26-.88,0-1.89,.09-3.02,.28s-2.15,.65-3.06,1.38c-1.41,1.08-2.11,3.1-2.11,6.04v12.12c0,2.9,.7,4.91,2.11,6.04,.91,.71,1.93,1.15,3.06,1.34,1.13,.19,2.14,.28,3.02,.28Z"/><path class="d" d="M146.33,87.57c-4.63,0-8.18-1.2-10.63-3.59-2.46-2.39-3.68-5.65-3.68-9.78v-12.12c0-4.15,1.23-7.43,3.68-9.82,2.45-2.39,6-3.59,10.63-3.59,3.22,0,6.02,.64,8.38,1.93v-17.86h6.08v48.98l.11,5.17h-5.51l-.23-1.51c-2.42,1.46-5.36,2.19-8.84,2.19Zm0-5.7c.83,0,1.79-.08,2.87-.25,1.08-.16,2.08-.57,2.98-1.23,1.69-1.18,2.53-3.25,2.53-6.19v-12.16c0-2.92-.84-4.98-2.53-6.19-.91-.63-1.9-1.03-2.98-1.21-1.08-.18-2.04-.26-2.87-.26-.88,0-1.89,.09-3.02,.28s-2.15,.65-3.06,1.38c-1.41,1.13
1-2.11,3.15-2.11,6.04v12.12c0,2.95,.7,4.96,2.11,6.04,.91,.71,1.93,1.15,3.06,1.34,1.13,.19,2.14,.28,3.02,.28Z"/><path class="d" d="M184.08,87.57c-4.63,0-8.18-1.2-10.63-3.59-2.46-2.39-3.68-5.65-3.68-9.78v-12.12c0-4.15,1.23-7.43,3.68-9.82,2.45-2.39,6-3.59,10.63-3.59s7.98,1.12,10.57,3.36c2.59,2.24,3.89,5.59,3.89,10.05v12.12c0,4.31-1.3,7.61-3.91,9.91s-6.12,3.46-10.56,3.46Zm0-5.7c.83,0,1.79-.08,2.87-.23,3.68-.6,5.51-3.08,5.51-7.44v-12.12c0-4.38-1.84-6.86-5.51-7.44-1.08-.18-2.04-.26-2.87-.26-.88,0-1.89,.09-3.02,.28s-2.15,.65-3.06,1.38c-1.41,1.13-2.11,3.15-2.11,6.04v12.12c0,2.9,.7,4.91,2.11,6.04,.91,.71,1.93,1.15,3.06,1.34,1.13,.19,2.14,.28,3.02,.28Z"/><path class="e" d="M103.1,39.96c-6.15,2.38-8.18,3.68-20.41,5.15v-.72h.03l3.75-.31,1.03-7.14h-4.81v-1.22h.08l3.69-.19v-9.72h-3.02v-5.01h-1.92V0h-1.1V20.81h-1.92v5.01h-3.02v9.72l3.77,.18v1.22h-4.81l1.03,7.14,3.77,.31v1.14c-4.16,.46-8.01,.67-13.09,.64v5.17c2.25,.05,7.6-.23,12.61-.64l-1.17,36.86h6.76l-1.27-37.26c.61-.06,1.21-.13,1.76-.2l5.45-.8c6.62-1.27,12.35-2.54,17-3.9-1.71-2.36-2.59-3.09-4.18-5.45Z"/></svg>')}},{selector:"node.right",style:{"background-image":"data:image/svg+xml;utf8,"+encodeURIComponent('<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M272 0C298.5 0 320 21.49 320 48V367.8C281.8 389.2 256 430 256 476.9C256 489.8 259.6 501.8 265.9 512H48C21.49 512 0 490.5 0 464V384H144C152.8 384 160 376.8 160 368C160 359.2 152.8 352 144 352H0V288H144C152.8 288 160 280.8 160 272C160 263.2 152.8 256 144 256H0V48C0 21.49 21.49 0 48 0H272zM152 64C143.2 64 136 71.16 136 80V104H112C103.2 104 96 111.2 96 120V136C96 144.8 103.2 152 112 152H136V176C136 184.8 143.2 192 152 192H168C176.8 192 184 184.8 184 176V152H208C216.8 152 224 144.8 224 136V120C224 111.2 216.8 104 208 104H184V80C184 71.16 176.8 64 168 64H152zM512 272C512 316.2 476.2 352 432 352C387.8 352 352 316.2 352 272C352 227.8 387.8 192 432 192C476.2 192 512 227.8 512 272zM288 477.1C288 425.7 329.7 384 381.1 384H482.9C534.3 384 576 425.7 576 477.1C576 496.4 560.4 512 541.1 512H322.9C303.6 512 288 496.4 288 477.1V477.1z"></path></svg>')}},{selector:"edge",style:{"target-arrow-shape":"triangle",label:"data(label)","curve-style":"bezier"}},{selector:"edge.top",style:{"text-margin-y":-20}},{selector:"edge.bottom",style:{"text-margin-y":20}}],s.layout={name:"grid"},s.options={userZoomingEnabled:!1,userPanningEnabled:!1,autoungrabify:!0,autolock:!0,autounselectify:!0,boxSelectionEnabled:!1},s.graph={},s.title="common.ghini.transmissions.title",s.init=function(){a.getGraph().then(function(e){s.graph=e,s.graph.fit(),n.onResize(function(){s.graph&&c.isFunction(s.graph.fit)&&s.graph.fit()})})},s.load=function(){return e.fetchGhiniTransmissionDates()},s.updateI18n=function(){var e=t.getTranslation("common.time");s.elements.left.data.label=t.getTranslation("common.ghini.transmissions.systemCms"),s.elements.center.data.label=t.getTranslation("common.ghini.transmissions.systemGhini"),s.elements.right.data.label=t.getTranslation("common.ghini.transmissions.systemHealthInsuranceCompany"),s.elements.leftToCenter.data.label=l(s.data.transmittedToGhiniAt,e),s.elements.centerToRight.data.label=l(s.data.transmittedToHealthInsuranceCompanyAt,e),s.elements.centerToLeft.data.label=l(s.data.transmittedFromGhiniAt,e),s.elements.rightToCenter.data.label=l(s.data.transmittedFromHealthInsuranceCompanyAt,e)}}e.$inject=["ActionService","I18nService","CCUtils","ClientService","cytoData","moment","$filter","$scope","_"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniTransmissionDates",e)}(),function(){"use strict";function e(e,t){t.title="common.ghini.unprocessedmessages.title",t.load=function(){return e.fetchGhiniUnprocessedMessages()}}e.$inject=["ActionService","$scope"],angular.module("cc3.app").controller("modules.landingpages.ghini.GhiniUnprocessedMessages",e)}(),function(){"use strict";function e(e,t){!function(){e.applyConfiguration(t,e=>{t.content=e.widgetConfig.content,t.loading=!1})}()}e.$inject=["LandingPageService","$scope"],angular.module("cc3.app").controller("modules.landingpages.information",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){function g(){return s.loading=!0,e.getModulePartClearances(i.getCurrentLocale().iso).then(function(e){if(s.noResult=l.isNil(e.data)||l.isEmpty(e.data),!s.noResult){const t=r.reduceRecords(e.data);s.selection={}
1,t.forEach(e=>s.selection[e.id]=!1),s.modulePartClearances=l.mapValues(l.groupBy(t.map(e=>({id:e.id,degree:`${e.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name.$displayName} in ${e.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.name.$displayName}: ${e.transcript.examinationRegulationVersion.examinationRegulation.name.$displayName} (${e.transcript.examinationRegulationVersion.name.$displayName})`,personName:`${e.transcript.studiesRecord.person.masterData.lastName}, ${e.transcript.studiesRecord.person.masterData.firstName}`,modulePartVersion:`${e.examRegModulePartVersion.name.$displayName} (${e.examRegModulePartVersion.identification}) in ${e.examRegModulePartVersion.parentExamRegModule.$displayName}`})),"degree"),function(e,t){return l.groupBy(e,"modulePartVersion")})}s.loading=!1})}function f(e){return Object.keys(e.selection).filter(e=>s.selection[e]).map(e=>({id:e}))}s.changeTranscriptModulePartClearanceStatusInputView=d.view.changeTranscriptModulePartClearanceStatusInput,s.isEditingMode=t.isEditingMode,s.hasSelection=function(){return l.has(l.groupBy(s.selection),!0)},s.modulePartClearances=void 0,s.noResult=!0,s.selection={},s.title="pendingModulePartClearingRequests.title",s.toggleSelection=function(e){s.selection[e]?s.selection[e]=!1:s.selection[e]=!0},s.update=g,function(){s.widget.$origin={viewDefinitionId:s.changeTranscriptModulePartClearanceStatusInputVie
1w,objectId:null,pathId:null};n.applyConfiguration(s,function(e){return g()},[u.status.id,u.selection.id],void 0,{selection:{get:f}})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","AuthService","NavigationService","CCUtils","$scope","$q","_","CMS_DATA","WIDGET_API"],angular.module("cc3.app").controller("modules.landingpages.startpage.PendingModulePartClearanceRequests",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.showPerson=function(){i.go("person",!1,{personId:a.person.id})},a.isEditingMode=e.isEditingMode,a.title="personLink.title",function(){n.applyConfiguration(a,function(e){return t.readReducedObjects({viewDefinitionId:o.view.personLink,objectId:e.widgetConfig.person}).then(function(t){e.noResult=r.isNil(t[0]),e.noResult||(e.person=t[0])})})}()}e.$inject=["ApplicationService","ActionService","NavigationService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.PersonLink",e)}(),function(){"use strict";function e(e,t){!function(){e.addTranslationField(t.widget.name),t.showFeatureMissing=!t.softwareFeatureIsActive(t.widget),t.showTraitMissing=!t.compliesToPersonTraitRequirements(t.widget)}()}e.$inject=["I18nService","$scope"],angular.module("cc3.app").controller("modules.landingpages.placeholder",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){function c(){a.loading=!0;try{a.reportItemConfig={id:n.getUuid(),noPadding:!0,fixedRenderer:!0,preventEditingModeForTitle:!0,showFooter:!1,showHeader:!1,showHelpAction:!1,type:"ReportWidget"},a.widgetConfig=JSON.parse(a.widget.configuration),a.reportItemConfig.report=a.widgetConfig.report,a.reportItemConfig.renderer=a.widgetConfig.renderer,a.widget.width=a.widgetConfig.width||400,"10b7d179-5e3e-43a7-a380-674e75cbb02b"===a.widgetConfig.renderer?a.reportItemConfig.fixedHeight=300:delete a.reportItemConfig.fixedHeight,t.readObjects({viewDefinitionId:r.view.adhocReportName,objectId:a.widgetConfig.report}).then(function(e){s.isUndefined(e.data[0])||(i.addTranslationField(e.data[0].name),a.title=e.data[0].name.id),a.loading=!1,a.configurationError=!1})}catch(e){a.configurationError=!0}}a.loading=!0,a.configurationError=!1,a.noResult=!1,a.title=void 0,a.isEditingMode=e.isEditingMode,function(){c(),a.$on("landingPageWidget.configurationChanged",function(e,t){t.landingPageWidgetId===a.widget.id&&(a.widget.configuration=t.newConfiguration,c(),$("#report-content_"+a.widget.id).replaceWith(o('<cc-widget id="report-content_'+a.widget.id+'" data-item-config="reportItemConfig"></cc-widget>')(a)))})}()}e.$inject=["ApplicationService","ActionService","I18nService","CCUtils","$scope","$compile","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.Report",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){r.personBallots=void 0,r.isEditingMode=e.isEditingMode,r.title="futureballots.title",function(){n.applyConfiguration(r,function(e){return t.readReducedObjects({viewDefinitionId:l.view.rightsToVoteFutureBallots,pathId:a.getContext("currentUser")}).then(function(t){e.noResult=s.isNil(t)||s.isUndefined(t)||s.isEmpty(t)||0===t.length,e.noResult||(s.each(t,function(e){i.addTranslationField(e.election.eligibleRole.name),i.addTranslationField(e.election.electionGroup.name),e.name&&i.addTranslationField(e.name),e.electionDays.endDate=c(o.transformDate(e.electionDays.endDate)),e.electionDays.startDate=c(o.transformDate(e.electionDays.startDate))}),e.personBallots=t)})})}()}e.$inject=["ApplicationService","ActionService","I18nService","LandingPageService","NavigationService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.startpage.RightsToVoteBallots",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){let d,u;c.message=void 0,c.error=void 0,c.title="common.rss.feed.title",c.titleParams=void 0,c.feedTitle=void 0,c.feedItems=[],c.loading=!0,c.showRssFeedItem=function(e){const i=c.feedItems.filter(t=>t.id===e).map(e=>e.itemWithPermissions);1!==i.length&&console.error(`Found more than one item with the same id for id ${e}`);const a={viewDefinition:t.view.rss.item,title:{id:"c60c6a45-fd3a-4f82-9ed3-0afa192add69",de:c.feedTitle,en:c.feedTitle},prefetchedData:{data:i,model:d,viewDefinitionId:t.view.rss.item},initialMode:"view"};s.getForm(a,[],[{},n.getControl("close")],{})},function(){(function(){a.applyConfiguration(c,t=>{const n=t.widgetConfig.rssFeed,a=t.widgetConfig.itemsToShow;e.readRssFeed(n,a,t).then(e=>{if(void 0===c.titleParams||void 0===c.feedTitle){const t="de"===u?e.data[0].name.de:e.data[0].name.en;c.titleParams={feedTitle:t},c.feedTitle=t}c.feedItems=e.data[0].item.value.map(e=>({id:e.id,author:i.removeHtml(e.author.value),title:i.removeHtml(e.title.value),description:i.removeHtml(e.description.value),link:e.link.value,pubDate:l("amDateFormat")(r(e.pubDate.value),"DD.MM.YYYY, HH:mm"),itemWithPermissions:e})),d=e.model})})})(),c.loading=!1,u=o.getCurrentLocale().iso}()}e.$inject=["ActionService","CMS_DATA","CCUtils","ControlService","LandingPageService","I18nService","moment","ModalService","$scope","$filter"],angular.module("cc3.app").controller("modules.landingpages.rss.feed",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){function d(e){return i.getCurrentUser().then(t=>{if(!e.length)return[];let i=[],n=[],a=[];return r.widgetConfig.showAssignedToMe&&(i=e.filter(e=>!!e.assignedTo&&e.assignedTo.id===t.id)),r.widgetConfig.showReportedByMe&&(n=e.filter(e=>!!e.reportedBy&&e.reportedBy.id===t.id)),r.widgetConfig.showVisibleToMe&&(a=e.filter(e=>{const i=e.visibleToPersons.map(e=>e.id),n=e.visibleToRoles.map(e=>e.id),a=t.roles.map(e=>e.id);return l.contains(i,t.id)||l.intersection(n,a).length})),l.uniq([...i,...n,...a],"id")})}function u(e){if(r.openTasks=e.filter(e=>!e.isDone),r.widgetConfig.showDone&&r.widgetConfig.showDoneLimit>0){const t=e.filter(e=>e.isDone);t.sort((e,t)=>
1c(t.doneAt).diff(c(e.doneAt))),r.doneTasks=t.slice(0,r.widgetConfig.showDoneLimit),r.doneTasksTotal=t.length}}r.tasks=[],r.openTasks=[],r.doneTasks=[],r.doneTasksTotal=void 0,r.toggleTask=function(e){r.$originData.objectId=e.id;const i=e.isDone?t.markTaskAsNotDone:t.markTaskAsDone,n={originViewDefinitionIdOverride:r.originViewDefinitionId};i(e.id,r,n).then(t=>{const i=r.tasks.find(t=>t.id===e.id);i.isDone=t.isDone,i.doneAt=t.doneAt,u(r.tasks),r.$originData.objectId=null})},r.manageTasks=function(){n.go("tasks")},r.isEditingMode=e.isEditingMode,r.originViewDefinitionId=null,function(){a.applyConfiguration(r,function(e){const i=e.widgetConfig.showFullTask?s.view.tasksFull:s.view.tasks;return e.originViewDefinitionId=i,e.$originData={viewDefinitionId:i,objectId:null,pathId:null},t.readReducedObjects({viewDefinitionId:i},void 0,{originViewDefinitionIdOverride:i}).then(t=>{e.noResult=!t||l.isEmpty(t),e.noResult||(t.forEach(t=>{o.addTranslationField(t.name),o.addTranslationField(t.description),e.widgetConfig.showFullTask&&(o.addTranslationField(t.category.name),t.visibleToRoles.forEach(e=>{o.addTranslationField(e.name)}))}),d(t).then(t=>{e.tasks=t,u(t),e.loading=!1}))})})}()}e.$inject=["ApplicationService","ActionService","AuthService","NavigationService","LandingPageService","I18nService","$scope","CMS_DATA","moment","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.Tasks",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){o.canManageAchievementAttempts=!1,o.totalCountUnconfirmedAssessments=0,o.manageAssessments=function(){n.go("examinerAssessments")},o.isEditingMode=e.isEditingMode,o.title="unconfirmedAssessments.title",function(){a.applyConfiguration(o,function(e){return t.readReducedObjects([{viewDefinitionId:r.view.unconfirmedAssessmentsExaminer,pathId:null},{viewDefinitionId:r.view.unconfirmedAssessmentsReviewer,pathId:null}]).then(function(t){var n=(s.isNil(t[0])||s.isEmpty(t[0]))&&(s.isNil(t[1])||s.isEmpty(t[1]));return i.hasUserStories([r.userStories.manageAchievementAttemptsAsExaminerOrReviewer]).then(function(i){e.canManageAchievementAttempts=i[0],e.totalCountUnconfirmedAssessments=n?0:t[0].length+t[1].length,e.loading=!1})})})}()}e.$inject=["ApplicationService","ActionService","AuthService","NavigationService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.UnconfirmedAssessments",e)}(),function(){"use strict";function e(e,t,i,n,a){var o=null;t.init=function(e){o=e.contact},t.load=function(){if(n.isNil(o))return i.reject();return e.readReducedObjects({viewDefinitionId:a.view.universityContacts,objectId:o}).then(function(e){return n.isArray(e)&&1===e.length?(t.name=e[0].name,t.role=e[0].role,t.emailAddress=e[0].emailAddress,t.phone=e[0].phone,t.photo=e[0].photo,e):i.reject()})},t.title="landingpage.widget.noentity.universitycontact.title"}e.$inject=["ActionService","$scope","$q","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.noentity.UniversityContact",e)}(),function(){"use strict";function e(e,t,i,n,a){a.welcome="",a.isEditingMode=e.isEditingMode,function(){t.readReducedObjects({viewDefinitionId:i.view.welcomeSettings}).then(function(e){a.templateSettings=e[0]}),n.applyConfiguration(a)}()}e.$inject=["ApplicationService","ActionService","CMS_DATA","LandingPageService","$scope"],angular.module("cc3.app").controller("modules.landingpages.startpage.Welcome",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){a.absent=void 0,a.currentAbsences=[],a.futureAbsences=[],a.title="absence.title",a.isEditingMode=t.isEditingMode,function(){i.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:s.view.absenceTimes,pathId:t.receivedContext}).then(function(e){if(o.isNil(e[0])||o.isEmpty(e))t.absent=!1;else{e.sort(function(e,t){return e=r(n.transformDate(e.calculatedStartTime)),t=r(n.transformDate(t.calculatedStartTime)),e<t?-1:e>t?1:0}),e.length>10&&e.splice(10,e.length-10);var i,a,s=[],c=[];e.forEach(function(e){i=r(n.transformDate(e.calculatedStartTime)),a=r(n.transformDate(e.calculatedEndTime)),i<=r()&&a>=r()?(e.until=a,s.push(e)):c.push(e)}
1),t.currentAbsences=s,t.absent=s.length>0,c.length>0&&(t.futureAbsences=o.map(c,function(e){e.timeString="";var t=r(n.transformDate(e.calculatedStartTime)),i=r(n.transformDate(e.calculatedEndTime));return t.format("YYYY-MM-DD")===i.format("YYYY-MM-DD")?e.wholeDay?e.timeString=t.format("DD.MM.YYYY"):e.timeString=t.format("DD.MM.YYYY, HH:mm - ")+i.format("HH:mm"):e.wholeDay?e.timeString=t.format("DD.MM.YYYY – ")+i.format("DD.MM.YYYY"):e.timeString=t.format("DD.MM.YYYY, HH:mm - ")+i.format("DD.MM.YYYY, HH:mm"),e}))}})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Absence",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){let d={},u=null;s.title="entity.AchievementAttempt.$entity",s.load=function(){return e.readObjects({viewDefinitionId:l.view.achievementAttemptsOfPersonForLandingPageWidget,pathId:s.receivedContext},s.widget,{reduced:!1}).then(function(e){if(c.isNil(e.data)||c.isEmpty(e.data))return null;let t=[];return c.forEach(e.data,function(e){d[e.id]=e;const i=a.transformArrays(a.reduceRecord(c.cloneDeep(e)));(c.isNil(s.widgetConfig.achievementAttemptsFromStatus)||!0===s.widgetConfig.achievementAttemptsFromStatus||!c.isNil(s.widgetConfig.achievementAttemptsFromStatus)&&"IN_PROCESS"!==i.status)&&(c.isNil(s.widgetConfig.achievementAttemptsOfType)||!0===s.widgetConfig.achievementAttemptsOfType||!c.isNil(s.widgetConfig.achievementAttemptsOfType)&&"REGULAR_ATTEMPT"===i.attemptType)&&(i.printedAchievement=function(e){if("RECOGNIZED_ATTEMPT"===e.attemptType){if(!c.isNil(e.examRegModulePartVersion))return e.examRegModulePartVersion;if(!c.isNil(e.examRegModuleVersion))return e.examRegModuleVersion}if("NON_CURRICULAR_ATTEMPT"===e.attemptType)return{name:e.extraCurricularAchievementName};if(!c.isNil(e.gradedAchievement))return e.gradedAchievement;if(!c.isNil(e.takenAchievement))return e.takenAchievement}(i),o.addTranslationField(i.printedAchievement.name),c.isNil(i.printedAchievement.parentExamRegModulePart)||o.addTranslationField(i.printedAchievement.parentExamRegModulePart.name),o.addTranslationField(i.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name),o.addTranslationField(i.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.name),i.symbol=function(e){return e.passed?e.freeAttempt?"fa-check-circle fa-3x text-grey":"fa-check-circle fa-3x text-green":e.freeAttempt?"fa-times-circle fa-3x text-grey":"fa-times-circle fa-3x text-red"}(i),t.push(i))}),c.isEmpty(t)?null:(t=c.sortBy(t,"modifiedAt").reverse(),s.widgetConfig.numberOfAttempts>0&&t.length>s.widgetConfig.numberOfAttempts&&(t.length=s.widgetConfig.numberOfAttempts),u=e.model,t)})},s.showAttempt=function(e){if(t.isEditingMode())return;const a={viewDefinition:l.view.achievementAttemptsOfPersonForLandingPageWidget,title:e.printedAchievement.name.id,prefetchedData:{data:[d[e.id]],model:u,viewDefinitionId:l.view.achievementAttemptsOfPersonForLandingPageWidget},initialMode:"view"};i.getForm(a,[],[{},n.getControl("close")],{})},s.downloadFile=function(t,i,n){e.downloadFile(l.view.achievementAttemptsOfPersonForLandingPageWidget,t,s.receivedContext,i,n)}}e.$inject=["ActionService","ApplicationService","ModalService","ControlService","CCUtils","I18nService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.AchievementAttempts",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.acronym=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.StudiesRecord.acronym",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.acronym,pathId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].acronym),t.noResult||(t.acronym=e[0].acronym),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Acronym",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){r.relationshipGroups=void 0,r.showPerson=function(e){const t=n.getStateByAlias("persons");n.go(t.name+".table",!0,{personId:e,$filteredExternally:!0})},r.title="relationships.title",r.isEditingMode=t.isEditingMode,function(){a.applyConfiguration(r,function(t){return e.readObjects({viewDefinitionId:s.view.relationships,requestContext:{personId:t.receivedContext}}).then(function(e){t.noResult=c.isNil(e.data)||c.isEmpty(e.data),t.noResult||(t.relationshipGroups=c.pairs(c.groupBy(c.map(e.data,function(e){var n=t.receivedContext===e.sourcePerson.id;return n?i.addTranslationField(e.relationshipType.primaryDirection.name):i.addTranslationField(e.relationshipType.inverseDirection.name),{startDate:o.transformDate(e.duration.startDate),endDate:o.transformDate(e.duration.endDate),relationshipName:n?e.relationshipType.primaryDirection.name.id:e.relationshipType.inverseDirection.name.id,otherPerson:n?e.targetPerson:e.sourcePerson}}),"relationshipName"))),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","I18nService","NavigationService","LandingPageService","CCUtils","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Relationships",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.applicantNumber=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.ApplicationRecord.applicantNumber",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.applicantNumber,pathId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].applicantNumber),t.noResult||(t.applicantNumber=e[0].applicantNumber)})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.ApplicantNumber",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){a.isEditingMode=t.isEditingMode,a.title="entity.ApplicationRecord.applications",a.reloadOnI18nSwitch=!1,a.load=function(){return e.readReducedObjects({viewDefinitionId:l.view.applicationsToUniversity,pathId:a.receivedContext}).then(t=>(function(t){if(r.isNil(t)||r.isEmpty(t))return s.when(null);
1return t.forEach(e=>{i.addTranslationField(e.applicationRegulationVersion.applicationRegulation.studyProgramme.degree.name),i.addTranslationField(e.applicationRegulationVersion.applicationRegulation.studyProgramme.name),i.addTranslationField(e.applicationRegulationVersion.name),i.addTranslationField(e.processDefinitionStatus.name),i.addTranslationField(e.applicationPeriod.applicationForAdmissionApplicationPeriod.term.name)}),a.widgetConfig.showLogEntries?function(t){const n=t.map(e=>({processGroupId:e.processDefinition.processGroup,processableObjectId:e.id}));return e.getProcessTransitionLogs(n).then(e=>{for(let n=0;n<e.length;n++){const s=e[n].entries;s.forEach(e=>{e.createdAt=c(o.transformDate(e.createdAt)),e.processTransitionId&&i.addTranslationField(e.processTransitionId.name)}),t[n].logEntries=r.sortBy(s,"createdAt").reverse(),t[n].expandLogEntries=a.widgetConfig.expandLogEntries}return t},()=>t)}(t):s.when(t)})(t))},a.toggleLogEntries=function(e){a.data[e].expandLogEntries=!a.data[e].expandLogEntries}}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","CCUtils","_","$q","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.ApplicationsToUniversity",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.artisticName=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.Person.artisticName",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.artisticName,pathId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].artisticName),t.noResult||(t.artisticName=e[0].artisticName)})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.ArtisticName",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.balance=void 0,a.positive=!1,a.isEditingMode=t.isEditingMode,a.title="balance.title",function(){i.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.paymentRecordBalance,pathId:t.receivedContext}).then(function(e){t.noResult=o.isNil(e[0].calculatedAttributes.balance)||o.isEmpty(e[0].calculatedAttributes.balance),t.noResult||(t.balance=n.getDisplayName(e[0].calculatedAttributes.balance),e[0].calculatedAttributes.balance.amount>=0&&(t.positive=!0))})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","MoneyService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Balance",e)}(),function(){"use strict";function e(e,t,i,n,a,o){function r(){try{a.widgetConfig=JSON.parse(a.widget.configuration),!o.isNil(a.widgetConfig.eventSources)&&o.isArray(a.widgetConfig.eventSources)&&a.widgetConfig.eventSources.length>0&&(a.calendarReadOnlyEventSourcesOverrides=a.widgetConfig.eventSources)}catch(e){a.configurationError=!0}}a.title="landingpage.widget.person.calendar.title",a.afterDomLoad=function(){e.create(a,n.find(".cc-calendar-content").get(0))},a.itemConfig={id:a.widget.id,widgetId:a.widget.id,type:"landing-page-widget",calendarUseCase:"SEE_PERSONALEVENTS_ON_LANDINGPAGE"},a.initializer={loading:!0},a.afterWidgetRemoveFn=function(){t.clear(a)},function(){r(),i.setContext("personId",a.receivedContext,!1),a.$on("landingPageWidget.configurationChanged",function(e,t){t.landingPageWidgetId===a.widget.id&&(a.widget.configuration=t.newConfiguration,r())})}()}e.$inject=["CalendarWidgetApiService","CalendarStorageService","NavigationService","$element","$scope","_"],angular.module("cc3.app").controller("modules.landingpages.person.Calendar",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.load=function(){return a.contactFeatureActive=i.isFeatureActive(r.feature.contacts),e.readReducedObjects({viewDefinitionId:r.view.contactInformation,objectId:a.receivedContext}).then(e=>{if(!e[0])return o.reject();const t=e[0].masterData,i=e[0].credential,n=e[0].contact,r=[];return r.push(i.username),(t.otherEmailAddresses||[]).map(e=>e.address).filter(e=>null!=e).forEach(e=>r.push(e)),a.email=r,a.phone=(t.phone||[]).map(e=>e.number).filter(e=>null!=e),a.fax=(t.fax||[]).map(e=>e.number).filter(e=>null!=e),a.website=t.website,a.contactDesired=n.contactDesired,a.mailContactDesired=n.mailContactDesired||!1,a.emailContactDesired=n.emailContactDesired||!1,a.phoneContactDesired=n.phoneContactDesired||!1,e})},a.title="contactInformation.title",a.email=void 0,a.phone=void 0,a.fax=void 0,a.website=void 0,a.isEditingMode=t.isEditingMode,a.contactFeatureActive=void 0}e.$inject=["ActionService","ApplicationService","FeatureService","LandingPageService","$scope","$q","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.ContactInformation",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){function l(){o.categories=[{id:"schoolEducation",icon:"fa-graduation-cap",name:"entity.SchoolEducation.$entity",active:d("SchoolEducation")},{id:"academicEducation",icon:"fa-university",name:"entity.AcademicEducation.$entity",active:d("AcademicEducation")},{id:"grantedScholarship",icon:"fa-money-bill-alt",name:"entity.GrantedScholarship.$entity",active:d("GrantedScholarships")},{id:"achievedCertificate",icon:"fa-certificate",name:"entity.AchievedCertificate.$entity",active:d("AchievedCertificates")},{id:"publication",icon:"fa-book",name:"entity.Publication.$entity",active:d("Publications")},{id:"conference",icon:"fa-users",name:"entity.Conference.$entity",active:d("Conferences")},{id:"exhibition",icon:"fa-image",name:"entity.Exhibition.$entity",active:d("Exhibitions")},{id:"recital",icon:"fa-music",name:"entity.Recital.$entity",active:d("Recitals")},{id:"project",icon:"fa-wrench",name:"entity.PersonalProject.$entity",active:d("Projects")},{id:"workExperience",icon:"fa-briefcase",name:"entity.WorkExperience.$entity",active:d("WorkExperience")},{id:"advancedTrainingCourse",icon:"fa-lightbulb",name:"entity.AdvancedTrainingCourse.$entity",active:d("AdvancedTrainingCourses")},{id:"award",icon:"fa-trophy",name:"entity.Award.$entity",active:d("Awards")},{id:"associationMembership",icon:"fa-id-card",name:"entity.AssociationMembership.$entity",active:d("AssociationMemberships")},{id:"networkPartnership",icon:"fa-handshake",name:"entity.NetworkPartnershipsAndCommunityAffiliations.$entity",active:d("NetworkPartnershipsAndCommunityAffiliations")}];var e=a.getColors("tol-rainbow",o.categories.length);r.each(o.categories,function(t,i){t.color=e[i]})}function d(e){return o.widgetConfig.showAllCVSections||o.widgetConfig["show"+e]}o.curriculumVitae=void 0,o.categories=[],o.timeline=[],o.getActiveCategories=function(){return r.filter(o.categories,function(e){return e.active})},o.getCategory=function(e){return r.find(o.categories,function(t){return t.id===e})},o.isEditingMode=t.isEditingMode,o.title="entity.CurriculumVitae.$entity",function(){i.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:c.view.curriculumVitae,pathId:t.receivedContext}).then(function(e){if(t.noResult=r.isNil(e[0]),!t.noResult){if(t.curriculumVitae=e[0],t.categories=[],t.timeline=[],l(),d("SchoolEducation")&&!r.isNil(t.curriculumVitae.sc
1hoolEducation)){var i=t.curriculumVitae.schoolEducation,o=a.getUuid();n.addTranslationField({id:o,de:i.schoolName,en:i.schoolName}),r.isNil(i.universityEntranceQualificationType)||n.addTranslationField(i.universityEntranceQualificationType.name);var u=a.transformDate(i.schoolEducationFrom),g=a.transformDate(i.schoolEducationTo);t.timeline.push({category:"schoolEducation",from:u?s(u):void 0,to:g?s(g):void 0,i18nTitle1:r.isNil(i.universityEntranceQualificationType)?void 0:i.universityEntranceQualificationType.name.id,i18nSubtitle:o})}if(d("AcademicEducation")&&!r.isNil(t.curriculumVitae.academicEducations)&&!r.isEmpty(t.curriculumVitae.academicEducations)){var f=t.curriculumVitae.academicEducations;r.sortBy(f,function(e){return e.studyPeriod?e.studyPeriod.endDate:void 0}),t.widgetConfig.showAcademicEducationAll||(f=r.filter(f,function(e){return!r.isNil(e.degreeStatus)&&e.degreeStatus.id===c.status.degreeComplete&&!r.isNil(e.studyPeriod)&&!r.isNil(e.studyPeriod.endDate)}).slice(-1)),r.each(f,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.courseOfStudies,en:e.courseOfStudies}),r.isNil(e.degreeType)||n.addTranslationField(e.degreeType.name),r.isNil(e.degreeStatus)||n.addTranslationField(e.degreeStatus.name);var o=e.studyPeriod?a.transformDate(e.studyPeriod.startDate):void 0,c=e.studyPeriod?a.transformDate(e.studyPeriod.endDate):void 0;t.timeline.push({category:"academicEducation",from:o?s(o):void 0,to:c?s(c):void 0,i18nTitle1:r.isNil(e.degreeType)?void 0:e.degreeType.name.id,i18nTitle2:i,i18nSubtitle:r.isNil(e.degreeStatus)?void 0:e.degreeStatus.name.id})})}
1!d("GrantedScholarships")||r.isNil(t.curriculumVitae.scholarships)||r.isEmpty(t.curriculumVitae.scholarships)||r.each(t.curriculumVitae.scholarships,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.type.name,en:e.type.name});var o=e.period?a.transformDate(e.period.startDate):void 0,r=e.period?a.transformDate(e.period.endDate):void 0;t.timeline.push({category:"grantedScholarship",from:o?s(o):void 0,to:r?s(r):void 0,i18nTitle1:i,title:e.name})}),!d("AchievedCertificates")||r.isNil(t.curriculumVitae.achievedCertificates)||r.isEmpty(t.curriculumVitae.achievedCertificates)||r.each(t.curriculumVitae.achievedCertificates,function(e){n.addTranslationField(e.certificate.name),t.timeline.push({category:"achievedCertificate",fromYear:e.year,toYear:e.year,i18nTitle1:e.certificate.name.id})}),!d("Publications")||r.isNil(t.curriculumVitae.publications)||r.isEmpty(t.curriculumVitae.publications)||r.each(t.curriculumVitae.publications,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.title,en:e.title}),t.timeline.push({category:"publication",fromYear:e.year,toYear:e.year,i18nTitle1:i})}),!d("Conferences")||r.isNil(t.curriculumVitae.conferences)||r.isEmpty(t.curriculumVitae.conferences)||r.each(t.curriculumVitae.conferences,function(e){var i,n;e.multipleDays?(i=e.datePeriod?a.transformDate(e.datePeriod.startDate):void 0,n=e.datePeriod?a.transformDate(e.datePeriod.endDate):void 0):i=e.date?a.transformDate(e.date):void 0,t.timeline.push({category:"conference",from:i?s(i):void 0,to:n?s(n):void 0,title:e.title+" ("+e.placeOfConference+")"})}),!d("Exhibitions")||r.isNil(t.curriculumVitae.exhibitions)||r.isEmpty(t.curriculumVitae.exhibitions)||r.each(t.curriculumVitae.exhibitions,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.title,en:e.title});var o=e.period?a.transformDate(e.period.startDate):void 0,r=e.period?a.transformDate(e.period.endDate):void 0;t.timeline.push({category:"exhibition",from:o?s(o):void 0,to:r?s(r):void 0,i18nTitle1:i})}),!d("Recitals")||r.isNil(t.curriculumVitae.recitals)||r.isEmpty(t.curriculumVitae.recitals)||r.each(t.curriculumVitae.recitals,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.title,en:e.title}),t.timeline.push({category:"recital",from:e.date?s(a.transformDate(e.date)):void 0,to:e.date?s(a.transformDate(e.date)):void 0,i18nTitle1:i})}),!d("Projects")||r.isNil(t.curriculumVitae.projects)||r.isEmpty(t.curriculumVitae.projects)||r.each(t.curriculumVitae.projects,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.name,en:e.name});var o=e.period?a.transformDate(e.period.startDate):void 0,r=e.period?a.transformDate(e.period.endDate):void 0;t.timeline.push({category:"project",from:o?s(o):void 0,to:r?s(r):void 0,i18nTitle1:i})}),!d("WorkExperience")||r.isNil(t.curriculumVitae.workExperiences)||r.isEmpty(t.curriculumVitae.workExperiences)||r.each(t.curriculumVitae.workExperiences,function(e){var i=a.getUuid(),o=a.getUuid();n.addTranslationField({id:i,de:e.nameOfCompany,en:e.nameOfCompany}),n.addTranslationField({id:o,de:e.city,en:e.city});var r=e.workExperiencePeriod?a.transformDate(e.workExperiencePeriod.startDate):void 0,c=e.workExperiencePeriod?a.transformDate(e.workExperiencePeriod.endDate):void 0;t.timeline.push({category:"workExperience",from:r?s(r):void 0,to:c?s(c):void 0,i18nTitle1:i,i18nSubtitle:o})}),!d("AdvancedTrainingCourses")||r.isNil(t.curriculumVitae.advancedTrainingCourses)||r.isEmpty(t.curriculumVitae.advancedTrainingCourses)||r.each(t.curriculumVitae.advancedTrainingCourses,function(e){var i,o;n.addTranslationField(e.advancedTrainingCourseType.name),n.addTranslationField(e.areaOfAdvancedTrainingCourse.name),e.multipleDays?(i=e.datePeriod?a.transformDate(e.datePeriod.startDate):void 0,o=e.datePeriod?a.transformDate(e.datePeriod.endDate):void 0):i=e.date?a.transformDate(e.date):void 0,t.timeline.push({category:"advancedTrainingCourse",from:i?s(i):void 0,to:o?s(o):void 0,i18nTitle1:e.advancedTrainingCourseType.name.id,i18nTitle2:e.areaOfAdvancedTrainingCourse.name.id})}),!d("Awards")||r.isNil(t.curriculumVitae.awards)||r.isEmpty(t.curriculumVitae.awards)||r.each(t.curriculumVitae.awards,function(e){e.awardType&&n.addTranslationField(e.awardType.n
1ame),t.timeline.push({category:"award",fromYear:e.year,toYear:e.year,i18nTitle1:e.awardType?e.awardType.name.id:null,title:e.title})}),!d("AssociationMemberships")||r.isNil(t.curriculumVitae.associationMemberships)||r.isEmpty(t.curriculumVitae.associationMemberships)||r.each(t.curriculumVitae.associationMemberships,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.institution,en:e.institution});var o=a.transformDate(e.startDate),r=a.transformDate(e.endDate);t.timeline.push({category:"associationMembership",from:o?s(o):void 0,to:r?s(r):void 0,i18nTitle1:i})}),!d("NetworkPartnershipsAndCommunityAffiliations")||r.isNil(t.curriculumVitae.networkPartnershipsAndCommunityAffiliations)||r.isEmpty(t.curriculumVitae.networkPartnershipsAndCommunityAffiliations)||r.each(t.curriculumVitae.networkPartnershipsAndCommunityAffiliations,function(e){var i=a.getUuid();n.addTranslationField({id:i,de:e.networkOrCommunity,en:e.networkOrCommunity});var o=a.transformDate(e.startDate),r=a.transformDate(e.endDate);t.timeline.push({category:"networkPartnership",from:o?s(o):void 0,to:r?s(r):void 0,i18nTitle1:i})}),t.timeline=r.sortBy(t.timeline,function(e){return!r.isNil(e.to)&&e.to.isValid()?e.to:r.isNil(e.toYear)?!r.isNil(e.from)&&e.from.isValid()?e.from:r.isNil(e.fromYear)?0:s(e.fromYear+"-01-01"):s(e.toYear+"-01-01")}).reverse()}t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","I18nService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.CurriculumVitae",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){o.currentDate=s(),o.isEditingMode=t.isEditingMode,o.title="dataOfBirth.title",o.showPlaceOfBirth=!0,o.reloadOnI18nSwitch=!1,o.init=function(e){o.showPlaceOfBirth=e.showPlaceOfBirth},o.load=function(){return e.readReducedObjects({viewDefinitionId:c.view.personDateOfBirth,objectId:o.receivedContext}).then(function(e){if(r.isNil(e[0])||r.isNil(e[0].masterData))return;const t=e[0].masterData,n={dateOfBirth:void 0,isBirthday:void 0,placeOfBirth:void 0,countryOfBirthName:void 0};if(!r.isNil(t.dateOfBirth)){n.dateOfBirth=a.transformDate(e[0].masterData.dateOfBirth);const t=o.currentDate.date()===s(n.dateOfBirth).date(),i=o.currentDate.month()===s(n.dateOfBirth).month();n.isBirthday=t&&i}return n.placeOfBirth=t.placeOfBirth,r.isNil(t.countryOfBirth)||(n.countryOfBirthName=t.countryOfBirth.name,i.addTranslationField(t.countryOfBirth.name)),r.isNil(n.dateOfBirth)&&(!o.showPlaceOfBirth||r.isNil(n.placeOfBirth)&&r.isNil(n.countryOfBirthName))?void 0:n})}}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.PersonDataOfBirth",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.hasRightForDisadvantageCompensation=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.StudiesRecordCalculatedAttributes.hasRightForDisadvantageCompensation",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.disadvantageCompensationRights,pathId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].hasRightForDisadvantageCompensation),t.noResult||(t.hasRightForDisadvantageCompensation=e[0].hasRightForDisadvantageCompensation),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.DisadvantageCompensationRights",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.checked=void 0,a.duplicates=[],a.failed=!1,a.triggerDuplicateCheck=function(){e.performDuplicateCheck({originViewDefinitionIdOverride:r.view.duplicates,originPathIdOverride:a.receivedContext}).then(function(e){!o.isUndefined(e)&&o.contains(o.keys(n.$responseCodes.error),e.status.toString())?a.failed=!0:(a.failed=!1,a.$broadcast("landingPageWidget.configurationChanged",{landingPageWidgetId:a.widget.id,newConfiguration:a.widget.configuration}))})},a.isEditingMode=t.isEditingMode,a.title="duplicates.title",function(){i.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.duplicates,objectId:t.receivedContext}).then(function(e){if(t.noResult=o.isNil(e[0])||o.isEmpty(e[0]),!t.noResult){var i=e[0];t.checked=!!i.checkedForDuplicates;var n=[];o.each(i.personDuplicates,function(e){e.otherPerson=e.firstPerson.id===i.id?e.secondPerson:e.firstPerson,n.push(e)}),o.each(i.personDuplicatedBy,function(e){e.otherPerson=e.firstPerson.id===i.id?e.secondPerson:e.firstPerson,n.push(e)}),o.sortBy(n,"different"),t.duplicates=n}})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","ActionInvocationService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Duplicates",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){function c(e,i,n){t.debug(`[ccFormFileCollectionDownload] ${i}-${n}: ${e}`)}o.title="$defaults.attribute.enrolmentFiles",o.reloadOnI18nSwitch=!0,o.load=function(){return e.readObjects({viewDefinitionId:s.view.enrolmentFiles,pathId:o.receivedContext}).then(function(e){return e.data.sort(i.comparing(e=>e.term.termPeriod.startDate,i.getDateTimeSortComparator)).map(t=>{let i,n;return!r.isNil(t.enrolment)&&!r.isNil(t.enrolment.enrolmentFiles)&&t.enrolment.enrolmentFiles.length>0?(i="enrolment.enrolmentFiles",n=t.enrolment.enrolmentFiles):(i="reEnrolment.reEnrolmentFiles",n=t.reEnrolment.reEnrolmentFiles),{id:t.id,termName:a.resolveDisplayName(t.term,e.model),personId:o.receivedContext,attributePath:i,files:n}})})},o.downloadFile=function(t,i,n,a){e.downloadFile(s.view.enrolmentFiles,i,t,n,a)},o.downloadZippedFiles=function(t,i,n){o.downloading=!0;const a=s.view.enrolmentFiles;return c("Download startet.",a,n),e.downloadFilesAsZip(a,i,t,n).then(()=>{o.downloading=!1,c("Download finished.",a,n)}).catch(()=>{o.downloading=!1,c("Download failed.",a,n)})},o.downloading=!1}e.$inject=["ActionService","LogService","SortService","I18nService","CCUtils","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.person.EnrolmentFiles",e)}(),function(){"use strict";function e(e,t,i,n,a){i.load=function(){return e.readReducedObjects({viewDefinitionId:a.view.personName,objectId:i.receivedContext}).then(function(e){return i.noResult=n.isNil(e[0]),i.noResult||(n.isNil(e[0].masterData.salutation)||t.addTranslationField(e[0].masterData.salutation.name),n.isNil(e[0].masterData.title)||t.addTranslationField(e[0].masterData.title.abbreviation),n.isNil(e[0].masterData.academicDegree)||(n.isNil(e[0].masterData.academicDegree.prefix)||t.addTranslationField(e[0].masterData.academicDegree.prefix),n.isNil(e[0].masterData.academicDegree.suffix)||t.addTranslationField(e[0].masterData.academicDegree.suffix)),n.isNil(e[0].masterData.pronoun)||t.addTranslationField(e[0].masterData.pronoun.name),i.masterData=e[0].masterData),e})},i.title="common.fullName",i.masterData={}}e.$inject=["ActionService","I18nService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.FullName",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.gender=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.MasterData.gender",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.gender,pathId:t.receivedContext}).then(function(e){t.noResult=o.isNil(e[0])||o.isNull(e[0].gender),t.noResult||(i.addTranslationField(e[0].gender.name),t.gender=e[0].gender),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Gender",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.homeAddress=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.MasterData.homeAddress",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:o.view.homeAddress,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e[0]),t.noResult||(t.homeAddress=e[0].homeAddress,r.isNil(t.homeAddress)||(r.isNil(t.homeAddress.country)||i.addTranslationField(t.homeAddress.country.name),r.isNil(t.homeAddress.county)||i.addTranslationField(t.homeAddress.county.name),r.isNil(t.homeAddress.region)||i.addTranslationField(t.homeAddress.region.name)))})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.HomeAddress",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){o.inquiries=void 0,o.openCount=void 0,o.closedAdditional=void 0,o.isEditingMode=t.isEditingMode,function(){n.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:s.view.inquiries,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e)||r.isEmpty(e);var n=[],o=0,s=0,c=0;t.noResult||(r.each(e,function(e){i.addTranslationField(e.category.name),r.each(e.topics,function(e){i.addTranslationField(e.name)}),e.createdAt=a.transformDate(e.createdAt),e.isDone&&t.widgetConfig.showClosedInquiries?(c++,t.widgetConfig.showClosedInquiriesLimit>s&&(n.push(e),s++)):e.isDone||(n.push(e),o++)}),t.inquiries=r.sortBy(n,"isDone"),t.openCount=o,t.closedAdditional=c-s)})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","CCUtils","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Inquiries",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){o.load=function(){return e.readReducedObjects({viewDefinitionId:c.view.institution,objectId:o.receivedContext}).then(e=>{if(!e[0]||!e[0].primaryInstitution)return r.reject();const t={},i=e[0].primaryInstitution.institutionContactData;return t.id=e[0].primaryInstitution.id,t.name=e[0].primaryInstitution.name,t.contactId=e[0].primaryInstitution.contact,t.emailAddresses=(i.emailAddresses||[]).map(e=>e.address).filter(e=>null!=e),t.addresses=(i.addresses||[]).map(e=>(e.country&&a.addTranslationField(e.country.name),e.county&&a.addTranslationField(e.county.name),e.region&&a.addTranslationField(e.region.name),{lines:e.lines.map(e=>e.line),city:e.city,zipcode:e.zipcode,country:e.country?e.country.name.id:null,county:e.county?e.county.name.id:null,region:e.region?e.region.name.id:null})),o.primaryInstitution=t,o.institutions=(e[0].institutions||[]).filter(e=>t.id!==e.institution.id).map(e=>({id:e.institution.id,name:e.institution.name,contactId:e.institution.contact})),e})},o.title="$defaults.attribute.primaryInstitution",o.primaryInstitution=void 0,o.institutions=void 0,o.isEditingMode=i.isEditingMode,o.navigateToInstitution=function(e,i){const n=t.getStateByAlias("contacts");t.go(n.name+".table",!0,{contactId:i,$filteredExternally:!0})}}e.$inject=["ActionService","NavigationService","ApplicationService","LandingPageService","I18nService","$scope","$q","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.institution",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){function d(e,t,i,n){return{titleI18
1n:"entity."+e+".$entity",icon:t,termName:i.term.name,effectiveDate:c.isNil(n.effectiveDate)?null:a.transformDate(n.effectiveDate),effectivenessStatusI18n:"entity.EffectivenessStatus."+n.effectivenessStatus,isEffective:"EFFECTIVE"===n.effectivenessStatus,totalTermsEnrolled:i.totalTermsEnrolled,firstEnrolment:n.firstEnrolment,reasonForTermination:n.reasonForTermination}}function u(e,t,i,n,o){return{examRegVersionName:a.resolveDisplayName(i.courseJournal.transcript.examinationRegulationVersion,o),titleI18n:"entity."+e+".$entity",icon:t,effectiveDate:c.isNil(n.effectiveDate)?null:a.transformDate(n.effectiveDate),effectivenessStatusI18n:"entity.EffectivenessStatus."+n.effectivenessStatus,isEffective:"EFFECTIVE"===n.effectivenessStatus,termsStudied:i.termsStudied,leaveOfAbsenceReason:n.leaveOfAbsenceReason,oldExamRegVersionName:c.isNil(n.changeIntoExamRegVersion)?null:a.resolveDisplayName(n.changeIntoExamRegVersion.courseJournalChapter.courseJournal.transcript.examinationRegulationVersion,o),newExamRegVersionName:c.isNil(n.examinationRegulationVersion)?null:a.resolveDisplayName(n.examinationRegulationVersion,o),studiesTerminationReason:n.studiesTerminationReason,studyStatus:i.courseJournal.studyStatus}}function g(e,t){if(c.isNil(e)&&c.isNil(t))return null;if(c.isNil(e))return!0;if(c.isNil(t))return!1;const i=e.effectiveDate,o=t.effectiveDate;return c.isNil(i)&&c.isNil(o)?null:!!c.isNil(i)||!c.isNil(o)&&n(a.transformDate(i))<n(a.transformDate(o))}e.title="entity.StudiesJournal.latestStudiesJournalEntry",e.showCourseJournalEntries=!1,e.reloadOnI18nSwitch=!0,e.init=function(t){e.showCourseJournalEntries=t.showCourseJournalEntries},e.load=function(){return t.readObjects({viewDefinitionId:l.view.studiesJournal,pathId:e.receivedContext,locale:o.getCurrentLanguageTag()}).then(function(e){if(c.isNil(e.data)||e.data.isEmpty)return;const t=e.data[0].studiesJournal,i=function(e,t){let i=null,n=null,a=[];c.isNil(e.lastEffectiveTerminationOfEnrolment.id)||(i=e.lastEffectiveTerminationOfEnrolment,n=d("TerminationOfEnrolment","fa-sign-out-alt",e.lastEffectiveTerminationOfEnrolment.studiesJournalChapter,e.lastEffectiveTerminationOfEnrolment),a=e.lastEffectiveTerminationOfEnrolment.studiesJournalChapter.courseJournalChapters);c.isNil(e.latestEffectiveStudiesJournalChapter.id)||(!c.isNil(e.latestEffectiveStudiesJournalChapter.enrolment.id)&&g(i,e.latestEffectiveStudiesJournalChapter.enrolment)&&(i=e.latestEffectiveStudiesJournalChapter.enrolment,n=d("Enrolment","fa-sign-in-alt",e.latestEffectiveStudiesJournalChapter,e.latestEffectiveStudiesJournalChapter.enrolment),a=e.latestEffectiveStudiesJournalChapter.courseJournalChapters),!c.isNil(e.latestEffectiveStudiesJournalChapter.reEnrolment.id)&&g(i,e.latestEffectiveStudiesJournalChapter.reEnrolment)&&(i=e.latestEffectiveStudiesJournalChapter.reEnrolment,n=d("ReEnrolment","fa-redo",e.latestEffectiveStudiesJournalChapter,e.latestEffectiveStudiesJournalChapter.reEnrolment),a=e.latestEffectiveStudiesJournalChapter.courseJournalChapters),!c.isNil(e.latestEffectiveStudiesJournalChapter.guestStudyAdmission.id)&&g(i,e.latestEffectiveStudiesJournalChapter.guestStudyAdmission)&&(n=d("GuestStudyAdmission","fa-random",e.latestEffectiveStudiesJournalChapter,e.latestEffectiveStudiesJournalChapter.guestStudyAdmission),a=e.latestEffectiveStudiesJournalChapter.courseJournalChapters));const o=c.map(a,e=>(function(e,t){if(!c.isNil(e.changeIntoExamRegVersion.id))return u("ChangeIntoExamRegVersion","fa-sign-out-alt",e,e.changeIntoExamRegVersion,t);if(!c.isNil(e.endOfStudy.id))return u("EndOfStudy","fa-stop",e,e.endOfStudy,t);if(!c.isNil(e.temporaryWithdrawal.id))return u("TemporaryWithdrawal","fa-pause",e,e.temporaryWithdrawal,t);if(!c.isNil(e.changeFromExamRegVersion.id))return u("ChangeFromExamRegVersion","fa-arrow-right-to-bracket",e,e.changeFromExamRegVersion,t);if(!c.isNil(e.resumptionOfStudy.id))return u("ResumptionOfStudy","fa-arrow-right",e,e.resumptionOfStudy,t);if(!c.isNil(e.startOfStudy.id))return u("StartOfStudy","fa-play",e,e.startOfStudy,t);if(!c.isNil(e.studyEntry.id))return u("StudyEntry","fa-chevron-right",e,e.studyEntry,t);return null})(e,t)).filter(e=>!c.isNil(e)).sort(s.thenComparing(s.reversed(s.comparing(e=>e.studyStatus,s.comparingEnum("StudyStatus"))),s.comparing(e=>e.examRegVersionName,s.getStringSortComparator)));return{studiesJournalEntry:n,courseJournalEntries:o}}(t,e.model);return c.isNil(i.studiesJournalEntry)?void 0:(c.isNil(i.studiesJournalEntry)||(c.isNil(i.studiesJournalEntry.termName)||o.addTranslationField(i.studiesJournalEntry.termName),c.isNil(i.studiesJournalEntry.reasonForTermination)||o.addTranslationField(i.studiesJournalEntry.reasonForTermination.name),i.courseJournalEntries.forEac
1h(e=>{c.isNil(e.studiesTerminationReason)||o.addTranslationField(e.studiesTerminationReason.name),c.isNil(e.leaveOfAbsenceReason)||o.addTranslationField(e.leaveOfAbsenceReason.name)})),i)})}}e.$inject=["$scope","ActionService","ApplicationService","moment","CCUtils","I18nService","LandingPageService","SortService","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.LatestStudiesJournalEntry",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.matriculationNumber=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.StudiesRecord.matriculationNumber",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.matriculationNumber,pathId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].matriculationNumber),t.noResult||(t.matriculationNumber=e[0].matriculationNumber),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.MatriculationNumber",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){o.memberships=[],o.isEditingMode=t.isEditingMode,o.title="memberships.title",function(){n.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:c.view.memberships,pathId:t.receivedContext}).then(function(e){if(t.noResult=s.isNil(e)||s.isEmpty(e),!t.noResult){var n=[];s.each(e,function(e){i.addTranslationField(e.role.name);var o=e.startDate?r(a.transformDate(e.startDate)):void 0,s=e.endDate?r(a.transformDate(e.endDate)):void 0;e.active=void 0===o&&s>=r()||o<=r()&&void 0===s||void 0===o&&void 0===s||o<=r()&&s>=r(),(e.active||t.widgetConfig.showInactiveMemberships)&&(e.startDate=o,e.endDate=s,n.push(e))}),t.memberships=s.sortBy(n,"active").reverse()}})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","CCUtils","$scope","moment","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Memberships",e)}(),angular.module("cc3.app").controller("modules.landingpages.contact.person.memos",PersonMemoController),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){r.downloadFile=function(t,i,n){e.downloadFile(c.view.moduleGuidesDownload,i,t,"moduleGuide",n)},r.transcriptsWithModuleGuides=[],r.title="moduleGuides.title",r.requiredStudyStatus=["ACTIVE"],r.reloadOnI18nSwitch=!0,r.init=function(e){r.requiredStudyStatus=e.requiredStudyStatus},r.load=function(){return e.readReducedObjectsNeo({viewDefinitionId:c.view.moduleGuides,pathId:r.receivedContext,locale:n.getCurrentLanguageTag()}).then(function(e){return r.transcriptsWithModuleGuides=e.data.filter(e=>s.contains(r.requiredStudyStatus,e.courseJournal.studyStatus)&&!!e.examinationRegulationVersion.moduleGuide).sort(o.thenComparing(o.reversed(o.comparing(e=>e.courseJournal.studyStatus,o.comparingEnum("StudyStatus"))),o.comparing(e=>e.createdAt,o.getDateTimeSortComparator))).map(function(e){return{id:e.id,examRegVersionId:e.examinationRegulationVersion.id,examRegVersionName:i.resolveDisplayName(e.examinationRegulationVersion,{}),studyStatus:e.courseJournal.studyStatus,moduleGuide:e.examinationRegulationVersion.moduleGuide}}),e})},r.hasResult=function(){return r.transcriptsWithModuleGuides.length>0},r.result=void 0}e.$inject=["ActionService","ApplicationService","CCUtils","I18nService","LandingPageService","SortService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.startpage.ModuleGuides",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.nationalities=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.MasterData.nationalities",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.nationalities,pathId:t.receivedContext}).then(function(e){t.noResult=o.isNil(e[0])||o.isNull(e[0].nationalities)||o.isEmpty(e[0].nationalities),t.noResult||(o.each(e[0].nationalities,function(e){i.addTranslationField(e.name)}),t.nationalities=e[0].nationalities),t.loading=!1})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Nationalities",e)}(),function(){"use strict";function e(e,t,i){t.title="landingpage.widget.person.Notes.title",t.reloadOnI18nSwitch=!1,t.load=function(){return e.loadLandingPageWidgetNotes(t,t.receivedContext,t.widgetConfig.showNotesFromPersonRecord,t.widgetConfig.showNotesFromApplications,t.widgetConfig.showNotesFromInactiveAp
1plications,t.widgetConfig.showDeletedNotes).then(i=>(e.setNotesVisibility(t,!0),i))},this.$onInit=function(){t.$on("notes.reload",function(i,n){e.reloadLandingPageWidgetNotes(t)})}}e.$inject=["NoteService","$scope","_"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Notes",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){var l="85a2f140-5750-4f5d-9a79-eaf1d563dedb";o.obligations=void 0,o.openCount=void 0,o.settledAdditional=void 0,o.isEditingMode=t.isEditingMode,function(){n.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:t.widgetConfig.showFullObligation?c.view.obligationsFull:c.view.obligations,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e)||r.isEmpty(e);var n=[],o=0,c=0,d=0;t.noResult||(r.each(e,function(e){i.addTranslationField(e.obligationStatus.name),i.addTranslationField(e.obligationType.name),r.isNil(e.category)||i.addTranslationField(e.category.name),e.isSettled=e.obligationStatus.name.id===l,e.dueDate=a.transformDate(e.dueDate),e.demandedDate=a.transformDate(e.demandedDate),e.fulfilledDate=a.transformDate(e.fulfilledDate),e.isOverdue=s(e.dueDate)-s()<0,e.isSettled&&t.widgetConfig.showSettledObligations?(d++,t.widgetConfig.showSettledObligationsLimit>c&&(n.push(e),c++)):e.isSettled||(n.push(e),o++)}),t.obligations=r.sortBy(n,function(e){return e.isSettled?2:e.isOverdue?0:1}),t.openCount=o,t.settledAdditional=d-c)})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Obligations",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){function l(){r.each(o.officeHours,function(e){e.rruleDisplayName=n.getDisplayName(e.recurrenceRule)})}o.officeHours=void 0,o.weeksPreview="",o.isEditingMode=t.isEditingMode,o.title="officeHours.title",function(){i.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:c.view.officeHours,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e)||r.isEmpty(e),t.noResult||(e.sort(function(e,t){return e=s(a.transformDate(e.calculatedStartTime)),t=s(a.transformDate(t.calculatedStartTime)),e<t?-1:e>t?1:0}),t.officeHours=r.map(e,function(e){e.timeString="";var t=s(a.transformDate(e.calculatedStartTime)),i=s(a.transformDate(e.calculatedEndTime));return t.format("YYYY-MM-DD")===i.format("YYYY-MM-DD")?e.wholeDay?e.timeString=t.format("DD.MM.YYYY"):e.timeString=t.format("DD.MM.YYYY, HH:mm - ")+i.format("HH:mm"):e.wholeDay?e.timeString=t.format("DD.MM.YYYY – ")+i.format("DD.MM.YYYY"):e.timeString=t.format("DD.MM.YYYY, HH:mm - ")+i.format("DD.MM.YYYY, HH:mm"),e}),l())})})}(),l(),o.$on("i18n.switch",l)}e.$inject=["ActionService","ApplicationService","LandingPageService","RRuleService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.OfficeHours",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.paymentAddress=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.MasterData.paymentAddress",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:o.view.paymentAddress,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e[0]),t.noResult||(t.paymentAddress=e[0].paymentAddress,r.isNil(t.paymentAddress)||(r.isNil(t.paymentAddress.country)||i.addTranslationField(t.paymentAddress.country.name),r.isNil(t.paymentAddress.county)||i.addTranslationField(t.paymentAddress.county.name),r.isNil(t.paymentAddress.region)||i.addTranslationField(t.paymentAddress.region.name)))})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.PaymentAddress",e)}(),function(){"use strict";function e(e,t,i,n,a){i.title="landingpage.widget.person.PeriodsOfEnrolment.title",i.reloadOnI18nSwitch=!1,i.load=function(){return e.fetchPeriodsOfEnrolment(i.receivedContext).then(function(e){return e.map(e=>(t.addTranslationField(e.enrolmentTermShortName),n.isNil(e.terminationOfEnrolmentTermShortName)||t.addTranslationField(e.terminationOfEnrolmentTermShortName),n.isNil(e.terminationOfEnrolmentReasonName)||t.addTranslationField(e.terminationOfEnrolmentReasonName),{startTermName:e.enrolmentTermShortName.id,startDate:a.transformDate(e.enrolmentEffectiveDate),isFirstEnrolment:e.firstEnrolment,endTermName:n.isNil(e.terminationOfEnrolmentTermShortName)?null:e.terminationOfEnrolmentTermShortName.id,endDate:a.transformDate(e.terminationOfEnrolmentEffectiveDate),terminationReasonName:n.isNil(e.terminationOfEnrolmentReasonName)?null:e.terminationOfEnrolmentReasonName.id}))})}}e.$inject=["ActionService","I18nService","$scope","_","CCUtils"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Per
1iodsOfEnrolment",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.personLocations=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.PersonLocation.$entity",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:r.view.personLocations,pathId:t.receivedContext}).then(function(e){t.noResult=o.isNil(e)||o.isEmpty(e),t.noResult||(o.each(e,function(e){i.addTranslationField(e.name),e.location&&i.addTranslationField(e.location.name),e.campus&&i.addTranslationField(e.campus.name),e.building&&i.addTranslationField(e.building.name),e.room&&i.addTranslationField(e.room.name)}),t.personLocations=e)})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.PersonLocations",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.personNumber=void 0,n.isEditingMode=t.isEditingMode,n.title="entity.Person.uniquePersonIdNumber",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.personNumber,objectId:t.receivedContext}).then(function(e){t.noResult=a.isNil(e[0])||a.isNull(e[0].uniquePersonIdNumber),t.noResult||(t.personNumber=e[0].uniquePersonIdNumber)})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.PersonNumber",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.isEditingMode=t.isEditingMode,n.title="personPhoto.title",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:a.view.photo,objectId:t.receivedContext}).then(function(e){t.noResult=o.isNil(e[0]),t.noResult||(t.person=e[0])})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Photo",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){a.postalAddress=void 0,a.salutation=void 0,a.title=void 0,a.degree=void 0,a.firstName=void 0,a.lastName=void 0,a.nameAddition=void 0,a.namePrefix=void 0,a.isEditingMode=t.isEditingMode,a.title="entity.MasterData.termAddress",function(){n.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:o.view.postalAddress,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e[0]),t.noResult||(t.widgetConfig.recipientView&&(t.salutation=e[0].salutation,r.isNil(t.salutation)||i.addTranslationField(t.salutation.name),t.academicDegree=e[0].academicDegree,r.isNil(t.academicDegree)||(r.isNil(t.academicDegree.prefix)||i.addTranslationField(t.academicDegree.prefix),r.isNil(t.academicDegree.suffix)||i.addTranslationField(t.academicDegree.suffix)),t.firstName=e[0].firstName,t.lastName=e[0].lastName,t.nameAddition=e[0].nameAddition,t.namePrefix=e[0].namePrefix),t.postalAddress=e[0].termAddress,r.isNil(t.postalAddress)||(r.isNil(t.postalAddress.country)||i.addTranslationField(t.postalAddress.country.name),r.isNil(t.postalAddress.county)||i.addTranslationField(t.postalAddress.county.name),r.isNil(t.postalAddress.region)||i.addTranslationField(t.postalAddress.region.name)))})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","$scope","CMS_DATA","_"],angular.module("cc3.app").controller("modules.landingpages.startpage.PostalAddress",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){a.proceedings=void 0,a.ongoingCount=void 0,a.isEditingMode=t.isEditingMode,function(){i.applyConfiguration(a,function(t){return e.readReducedObjects({viewDefinitionId:s.view.proceedings,pathId:t.receivedContext}).then(function(e){if(t.noResult=o.isNil(e)||o.isEmpty(e),!t.noResult){var i=0,a=o.map(e,function(e){return e.status=0,e.oppositionProceedingOngoing&&(e.status=1),e.legalProceedingFiled&&(e.status=2),e.legalProceedingOngoing&&(e.status=3),e.status>0&&i++,e.createdAt=n.transformDate(e.createdAt),e});t.proceedings=o.sortBy(a,function(e){return new Date(r(n.transformDate(e.createdAt)))}),t.ongoingCount=i}})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Proceedings",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){s.projectParticipations=void 0,s.showProject=function(e){r.go("project",!1,{projectId:e.projectParticipation.project.id,structureId:e.projectParticipation.project.projectStructure})},s.isEditingMode=t.isEditingMode,s.title="entity.ProjectParticipant.$entity",function(){a.applyConfiguration(s,function(t){return e.readReducedObjects({viewDefinitionId:l.view.projects,pathId:t.receivedContext}).then(function(e){if(t.noResult=c.isNil(e)||c.isEmpty(e),!t.noResult){var a=[];c.each(e,function(e){n.addTranslationField(e.project.name),n.addTranslationField(e.projectParticipationType.n
1ame);var r=e.startDate?o(i.transformDate(e.startDate)):void 0,s=e.endDate?o(i.transformDate(e.endDate)):void 0;e.active=void 0===r&&s>=o()||r<=o()&&void 0===s||void 0===r&&void 0===s||r<=o()&&s>=o(),(e.active||t.widgetConfig.showInactiveParticipations)&&(e.startDate=r,e.endDate=s,a.push(e))}),t.projectParticipations=c.sortBy(a,"active").reverse()}})})}()}e.$inject=["ActionService","ApplicationService","CCUtils","I18nService","LandingPageService","moment","NavigationService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.ProjectParticipations",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){o.personBallots=void 0,o.isEditingMode=t.isEditingMode,o.title="futureballots.title",function(){n.applyConfiguration(o,function(t){return e.readReducedObjects({viewDefinitionId:c.view.rightsToVoteFutureBallots,pathId:t.receivedContext}).then(function(e){t.noResult=r.isNil(e)||r.isUndefined(e)||r.isEmpty(e)||0===e.length,t.noResult||(r.each(e,function(e){i.addTranslationField(e.election.eligibleRole.name),i.addTranslationField(e.election.electionGroup.name),e.name&&i.addTranslationField(e.name),e.electionDays.endDate=s(a.transformDate(e.electionDays.endDate)),e.electionDays.startDate=s(a.transformDate(e.electionDays.startDate))}),t.personBallots=e)})})}()}e.$inject=["ActionService","ApplicationService","I18nService","LandingPageService","CCUtils","$scope","_","moment","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.RightsToVoteBallots",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){function d(e){const i=c.getLatestRequestMoment();return t.filter(e,function(e){return u(e,i)})}function u(e,i){if(!t.isNil(e.term)&&!t.isNil(e.term.termPeriod)){const t=s(l.transformDate(e.term.termPeriod.startDate));const n=s(l.transformDate(e.term.termPeriod.endDate));return i.isAfter(t)&&i.isBefore(n)}return false}e.studiesStatus=void 0,e.effectivenessStatus=void 0,e.isEditingMode=n.isEditingMode,e.title="entity.StudiesRecord.studiesStatus",function(){r.applyConfiguration(e,function(e){return i.readReducedObjects({viewDefinitionId:a.view.studiesStatus,pathId:e.receivedContext}).then(function(i){if(e.noResult=t.isNil(i[0])||t.isNil(i[0].studiesJournal),!e.noResult){const n=i[0].studiesJournal.studiesJournalChapters,a=d(n);if(0===a.length)return e.noResult=!0,void(e.loading=!1);const r=a[0];t.isNil(r.studiesStatus)?e.noResult=!0:(o.addTranslationField(r.studiesStatus.name),e.studiesStatus=r.studiesStatus,e.effectivenessStatus=function(e){return{i18nKey:"entity.EffectivenessStatus."+e,effective:"EFFECTIVE"===e}}(r.effectivenessStatus))}e.loading=!1})})}()}e.$inject=["$scope","_","ActionService","ApplicationService","CMS_DATA","I18nService","LandingPageService","moment","NavigationService","CCUtils"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.StudiesStatus",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){o.title="landingpage.widget.person.StudyProgramCoordinators.title",o.requiredStudyStatus=["ACTIVE"],o.numberOfCoordinators=2,o.reloadOnI18nSwitch=!0,o.init=function(e){o.requiredStudyStatus=e.requiredStudyStatus,o.numberOfCoordinators=e.numberOfCoordinators},o.load=function(){return t.readObjects({viewDefinitionId:c.view.studyProgramCoordinators,pathId:o.receivedContext,locale:n.getCurrentLanguageTag()}).then(function(e){const t=e.data.filter(e=>s.contains(o.requiredStudyStatus,e.courseJournal.studyStatus)).sort(a.thenComparing(a.reversed(a.comparing(e=>e.courseJournal.studyStatus,a.comparingEnum("StudyStatus"))),a.comparing(e=>e.createdAt,a.getDateTimeSortComparator))).map(e=>e.examinationRegulationVersion.examinationRegulation.studyProgram);let n=[];for(const e of t)n.find(t=>t.id===e.id)||n.push(e);return s.map(n,t=>{const n=i.resolveDisplayName(t,e.model),a=s.map(t.coordinators,e=>{const t=e.masterData.photo;return{firstName:e.masterData.firstName,lastName:e.masterData.lastName,emailAddress:e.credential.username,phone:s.map(e.masterData.phone,e=>e.number).join(", "),photo:s.isNil(t)||s.isNil(t.data)?null:t}});return o.numberOfCoordinators>0&&a.length>o.numberOfCoordinators&&(a.length=o.numberOfCoordinators),{name:n,coordinators:a}})})},o.hasResult=function(){return o.data.length>0}}e.$inject=["ApplicationService","ActionService","CCUtils","I18nService","SortService","$scope","$q","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.person.StudyProgramCoordinators",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){r.transcripts=[],r.isEditingMode=t.isEditingMode,r.title="entity.StudiesRecord.transcripts",r.requiredStudyStatus=["ACTIVE"],r.showChosenMajorSubjects=!0,r.showChosenMinorSubjects=!0,r.showChosenAreasOfFocus=!0,r.showChosenInDepthSpecialisations=!0,r.reloadOnI18nSwitch=!0,r.init=function(e){r.requiredStudyStatus=e.requiredStudyStatus,r.showChosenMajorSubjects=!!e.showChosenMajorSubjects,r.showChosenMinorSubjects=!!e.showChosenMinorSubjects,r.showChosenAreasOfFocus=!!e.showChosenAreasOfFocus,r.showChosenInDepthSpecialisations=!!e.showChosenInDepthSpecialisations},r.load=function(){return e.readObjects({viewDefinitionId:l.view.transcriptsLandingPageWidget,pathId:r.re
1ceivedContext}).then(function(e){return r.transcripts=e.data.filter(e=>s.contains(r.requiredStudyStatus,e.courseJournal.studyStatus)).sort(o.thenComparing(o.reversed(o.comparing(e=>e.courseJournal.studyStatus,o.comparingEnum("StudyStatus"))),o.comparing(e=>e.createdAt,o.getDateTimeSortComparator))).map(function(t){return{id:t.id,examRegVersionName:c.resolveDisplayName(t.examinationRegulationVersion,e.model),active:"ACTIVE"===t.courseJournal.studyStatus,studyStatus:t.courseJournal.studyStatus,createdAt:t.createdAt,areMajorSubjectsAvailable:t.examinationRegulationVersion.majorSubjects.length>0,areMinorSubjectsAvailable:t.examinationRegulationVersion.minorSubjects.length>0,areAreasOfFocusAvailable:t.examinationRegulationVersion.studyFocuses.length>0,areDepthSpecialisationsAvailable:t.examinationRegulationVersion.inDepthSpecialisations.length>0,chosenMajorSubjectNames:s.map(t.majorSubjects,e=>(n.addTranslationField(e.courseOfStudies.name),e.courseOfStudies.name.id)),chosenMinorSubjectNames:s.map(t.minorSubjects,e=>(n.addTranslationField(e.courseOfStudies.name),e.courseOfStudies.name.id)),chosenAreaOfFocusNames:s.map(t.examRegVersionStudyFocuses,e=>(n.addTranslationField(e.name),e.name.id)),chosenInDepthSpecialisationNames:s.map(t.chosenInDepthSpecialisations,e=>(n.addTranslationField(e.name),e.name.id))}}),e})},r.hasResult=function(){return r.transcripts.length>0},r.downloadTranscriptOfRecordFiles=function(t){const i=t.getOneResult(1);200===i.status&&s.isArray(i.result)&&2===i.result.length&&i.result[0].file&&i.result[1].file&&e.downloadOwnFile(i.result[0].file.id).then(()=>e.downloadOwnFile(i.result[1].file.id))},r.originViewDefinitionId=l.view.transcriptsLandingPageWidget}e.$inject=["ActionService","ApplicationService","EnumService","I18nService","LandingPageService","SortService","$scope","_","CCUtils","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.Transcripts",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){s.title="entity.StudiesRecord.transcripts",s.requiredStudyStatus=["ACTIVE"],s.heightInPixels=400,s.reloadOnI18nSwitch=!0,s.init=function(e){s.requiredStudyStatus=e.requiredStudyStatus,s.heightInPixels=e.heightInPixels,s.treeItemConfig={id:s.treeWidgetId,noPadding:!0,preventEditingModeForTitle:!0,showFooter:!1,showHeader:!0,showHelpAction:!1,type:"TreeWidget",forestView:"afa9a151-db75-4b64-bc22-6725b9f001ac",treenodeTemplate:"transcript",extension:"studies.transcript.TranscriptTree",singleRoot:!0,referenceNodes:!1,allowDragAndDrop:!1,fetchForestViewActionOverride:"FetchTranscriptForestViewAction"}},s.load=function(){return e.readReducedObjectsNeo({viewDefinitionId:u.view.transcriptTreeLandingPageWidget,pathId:s.receivedContext,locale:n.getCurrentLanguageTag()}).then(function(e){return s.transcripts=e.data.filter(e=>l.contains(s.widgetConfig.requiredStudyStatus,e.courseJournal.studyStatus)).sort(r.thenComparing(r.reversed(r.comparing(e=>e.courseJournal.studyStatus,r.comparingEnum("StudyStatus"))),r.comparing(e=>e.createdAt,r.getDateTimeSortComparator))).map(function(e){const t=i.getLabel("StudyStatus",e.courseJournal.studyStatus).toLowerCase();return{id:e.id,name:`${e.$displayName} (${t})`,tree:e.examinationRegulationVersion.contents}}),s.transcripts.length>0&&s.selectTranscript(s.transcripts[0]),e})},s.hasResult=function(){return s.transcripts.length>0},s.transcripts=[],s.selectTranscript=function(e){if(e){s.treeItemConfig.forest=e.tree,o.setContext("transcriptId",e.id,s.widget.state);const t=$("#tree-content_"+s.treeWidgetId),i=$("#tree-wrapper_"+s.treeWidgetId),n=c('<cc-widget id="tree-content_'+s.treeWidgetId+'" data-item-config="treeItemConfig"></cc-widget>')(s);t?t.replaceWith(n):i.appendChild(n),s.selectedTranscript=e}},s.selectedTranscript=null,s.treeWidgetId=d.getUuid(),s.downloadTranscriptOfRecordFiles=function(t){var i=t.getOneResult(1);200===i.status&&l.isArray(i.result)&&2===i.result.length&&i.result[0].file&&i.result[1].file&&e.downloadOwnFile(i.result[0].file.id).then(()=>e.downloadOwnFile(i.result[1].file.id))},s.originViewDefinitionId=u.view.transcriptTreeLandingPageWidget}e.$inject=["ActionService","ApplicationService","EnumService","I18nService","LandingPageService","NavigationService","SortService","$scope","$compile","_","CCUtils","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.TranscriptTree",e)}(),function(){"use strict";function e(e,t,i,n,a,o){n.unreadMessageCount=0,n.isEditingMode=t.isEditingMode,n.title="unreadMessages.title",function(){i.applyConfiguration(n,function(t){return e.readReducedObjects({viewDefinitionId:o.view.unreadNonPersonalMessageCount,pathId:t.receivedContext}).then(function(e){t.unreadMessageCount=a.isUndefined(e[0])?0:e[0].unreadNonPersonalMessageCount})})}()}e.$inject=["ActionService","ApplicationService","LandingPageService","$scope","_","CMS_DATA"],angular.module("cc3.app").controller("modules.landingpages.personfactsheet.UnreadMessages",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){function c(e){var t=!0;if(!s.isEmpty(r.widget.custom.quickFilterText)&&!s.isNull(e.name)){var i=s.filter(r.widget.custom.defaultAttributePaths,function(e){return s.contains(e,r.widget.custom.quickFilterText)});t=t&&(s.intersection(i,e.$matchOnPaths).length>0||s.contains(e.name.toLowerCase(),r.widget.custom.quickFilterText.toLowerCase()))}
1return!0===r.widget.custom.filterByInUi&&(t=t&&e.inUi),t}function l(i){if(s.isNull(i.name))return e.getTranslation("entity."+r.widget.custom.baseEntity+".$entity");if(!i.valid)return i.name;var n=t.translatePath(i.attributePath);return e.getTranslation(n[n.length-1])}function d(e,t){return s.find(r.widget.custom.statusIdToAttributeTree[t.id],function(t){return t.attributePath===e.attributePath})||null}function u(e,t,i){var n,a=d(e,t)||null;return s.isNull(a)||s.isNull(a[i])?g(e,i).replace(/green/g,"grey").replace(/red/g,"grey"):[!1===(n=a[i])?"fa-times":"write"===i?"fa-pencil-alt":"fa-eye",!1===n?"text-red":"text-green"].join(" ")}function g(e,t){var i;if(!s.isNull(e))return i=e[t],[s.isNull(i)||!1===i?"fa-times":"write"===t?"fa-pencil-alt":"fa-eye",s.isNull(i)||!1===i?"text-red":"text-green"].join(" ");throw new Error("no default "+t+" permissions found for "+e.attributePath)}function f(e){return!s.isNull(r.widget.custom.statusIdToAssignmentId[e])}function p(e){for(var t="",i=0;i<e.$depth;i++)t+='<span class="horizontal-offset-20"></span>';return t}function m(e){return s.contains(s.pluck(r.widget.custom.selectedStatuses,"id"),e.id)}function v(){return i.readProcessDefinitionPermissions({processDefinitionToUserStoryAssignmentId:r.widget.context.contextId}).then(function(i){r.widget.custom.baseEntity=i.entity,r.widget.custom.statusIdToAssignmentId=s.zipObject(s.map(s.cloneDeep(i.statusPermissions),function(e){return[e.statusDetails.id,e.id]}));var n=s.cloneDeep(i.defaultStatusPermissions.permissions);a.walk(n,function(e,i,n){e.$depth=i,e.$type=e.valid?t.resolvePath(e.attributePath||r.widget.custom.baseEntity):null,e.$displayName=l(e),r.widget.custom.defaultAttributes.push(e),r.widget.custom.defaultAttributePaths.push(e.attributePath)},"attributes"),a.reverseWalk(n,function(e,t,i){return e.$matchOnPaths=s.isUndefined(i)?[]:s.pluck(i,"path"),{path:e.attributePath}},"attributes"),r.widget.custom.statusIdToAttributeTree=s.zipObject(s.map(s.cloneDeep(i.statusPermissions),function(e){var t=[];return s.isNull(e.permissions)||a.walk(e.permissions,function(e,i,n){t.push(e)},"attributes"),[e.statusDetails.id,t]})),r.widget.custom.statuses=s.map(i.statusPermissions,function(t){return e.addTranslationField(t.statusDetails.processGroupStatus.name),t.statusDetails}),function(){s.each(r.widget.custom.statuses,function(t){s.extend(t,{$displayName:e.getTranslation(t.processGroupStatus.name.id)})})}(),o.isDeveloper()&&(r.widget.custom.selectedStatuses=[],w())})}function h(e){b(),r.widget.custom.addRoleMappings={},r.widget.custom.removeRoleMappings={},e.dirty=!1,v()}function b(){r.widget.custom.dirty=!1,r.widget.custom.edit=!1,r.widget.custom.changelog={create:[],update:[],delete:[]},r.widget.custom.statuses=[],r.widget.custom.selectedStatuses=[],r.widget.custom.statusIdToAssignmentId={},r.widget.custom.defaultAttributes=[],r.widget.custom.defaultAttributePaths=[],r.widget.custom.statusIdToAttributeTree={},r.widget.custom.filterByInUi=!0}function w(){r.widget.custom.selectedStatuses.length===r.widget.custom.statuses.length?r.widget.custom.selectedStatuses=[]:(r.widget.custom.selectedStatuses=[],s.each(r.widget.custom.statuses,function(e){r.widget.custom.selectedStatuses.push(e)}))}function y(e,t){var i=d(e,t);s.isNull(i)?r.widget.custom.changelog.create.push({attribute:e.attributePath,status:t.id,permissions:{read:!0,write:null,actions:null}}):s.isNull(i.actions)&&!1===i.read&&!1===i.write&&r.widget.custom.changelog.delete.push({attribute:e.attributePath,status:t.id})}function x(e){m(e)?r.widget.custom.selectedStatuses=s.filter(r.widget.custom.selectedStatuses,function(t){return t.id!==e.id}):r.widget.custom.selectedStatuses.push(e)}!function(){b(),s.extend(r.widget.api,{filter:c,getAttributeName:l,getAttributeStatusPermissionsIcon:u,getDefaultPermissionsIcon:g,hasMapping:f,indent:p,isDevMode:n.isDevMode,isStatusSelected:m,reload:h,toggleAllStatuses:w,togglePermission:y,toggleStatus:x}),v()}()}e.$inject=["I18nService","ModelService","ActionService","ApplicationService","TreeService","AuthService","$scope","_"],angular.module("cc3.app").controller("modules.process.processdefinitionpermissions.ProcessDefinitionPermissionsController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){var c,l;o.entries=[],o.loading=!0;var d=t.getContextAsPromise("processableObjectId",o).then(function(e){l=e}),u=t.getContextAsPromise("processGroupId",o).then(function(e){c=e});a.all([d,u]).then(function(){o.entries=[],o.loading=!0,e.getProcessTransitionLog(c,l,o.widget).then(function(e){o.entries=r.sortBy(r.each(e.entries,function(e){e.createdAt=s(n.transformDate(e.createdAt)),i.addTranslationField(e.processTransitionId.name)}),"createdAt").reverse(),o.loading=!1})})}e.$inject=["ActionService","NavigationService","I18nService","CCUtils","$q","$scope","_","moment"],angular.module("cc3.app").controller("modules.process.ShowTransitionLogController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){o.execute=function(e){o.loading=!0,a.executeTransition(e,[c],o).then(function(){n.getContextAsPromise("processOverviewState",o).then(function(a){n.go(a),e.usesSuccessMessage&&(t.addTranslationField(e.successMessage),i.getAlert(e.successMessage.id,"common.information"))})}).finally(function(){o.loading=!1})},o.transitions=[];var c,l=["GetExecutableTransitionsAction","ReadObjectAction","EditObjectAction","CancelEditOb
1jectAction","GetTransitionLogAction","ReadNotesAction","UploadFileAction","FetchAllowedValuesAction","HideFloatingTableFiltersAction","ShowFloatingTableFiltersAction","ShowWidgetHelpAction"],d=n.getProcessGroup(o.itemConfig.id);function u(i,n){if(!(n&&n.$action&&s.includes(l,n.$action.id))){if(n&&n.$response&&n.$response.data&&n.$response.data.changes&&n.$response.data.changes.deletedObjects){s.any(n.$response.data.changes.deletedObjects,e=>e.objectId===c)&&(c=null)}c&&(o.loading=!0,e.getExecutableProcessTransitions(d,c,o.widget).then(function(e){o.hasTransitions=!s.isNil(e)&&!s.isNil(e.transitions)&&0!==e.transitions.length,s.each(e.transitions,function(e){t.addTranslationField(e.name)}),o.transitions=s.filter(e.transitions,{executable:!0}),o.loading=!1}))}}!function(){var e;e=s.isNil(d)?n.getContextAsPromise("processGroupId",o).then(function(e){d=e}):r.when();e.then(function(){n.getContextAsPromise("processableObjectId",o).then(function(e){c=e,u(),o.$on("action.finished",u)})})}()}e.$inject=["ActionService","I18nService","ModalService","NavigationService","TransitionService","$scope","$q","_"],angular.module("cc3.app").controller("modules.process.ShowTransitionsController",e)}(),function(){"use strict";function e(e,t,i,n){n.showUserGuide=function(){i.getContextAsPromise("processDefinitionStatusId",n).then(function(i){var n={title:"common.userGuide",module:"process.userguide.userguidemodal",receivesContext:i,preventDesignMode:!0,preventEditingMode:!0};e.getCustom(n,[],[t.getControl("close")],[])})}}e.$inject=["ModalService","ControlService","NavigationService","$scope"],angular.module("cc3.app").controller("modules.process.userguide.UserGuideController",e)}(),function(){"use strict";function e(e,t,i,n){n.getTranslation=t.getTranslation,n.loading=!0,n.userGuide=null,function(){e.readObjects({viewDefinitionId:i.view.processDefinitionStatusUserGuide,objectId:n.itemConfig.receivesContext}).then(function(e){if(1===e.data.length){var i=e.data[0].userGuide;t.addTranslationField(i),n.userGuide=i.id}n.loading=!1})}()}e.$inject=["ActionService","I18nService","CMS_DATA","$scope"],angular.module("cc3.app").controller("modules.process.userguide.UserGuideModalController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){var s;function c(){o.entries=[],r.forEach(s,function(e){i.addTranslationField(e.title)}),o.entries=r.map(s,function(e){var t=[];return{title:e.title.id,titleObject:e.titleObject,errors:r.map(e.messages,function(e,i){return r.map(n.resolve(e,i,o),function(e){return t.includes(e)?void 0:(t.push(e),e)})})}}),o.loading=!1}function l(e){return r.contains(o.expandedEntries,e)}r.has(o,"widget.data.transitionErrors")?(s=o.widget.data.transitionErrors,o.expandedEntries=r.filter(r.map(s,function(e,t){return r.isEmpty(e.messages)?-1:t}),function(e){return-1!==e})):o.expandedEntries=[],o.entries=[],o.loading=!0,o.title=r.has(o,"widget.data.transitionErrorsTitle")?o.widget.data.transitionErrorsTitle:"process.stateValidationDescription",o.toggleEntry=function(e){l(e)?r.remove(o.expandedEntries,function(t){return t===e}):o.expandedEntries.push(e)},o.isExpandedEntry=l,s?c():function(){o.loading=!0;var i=t.getContextAsPromise("processDefinitionStatusId",o),n=t.getContextAsPromise("processableObjectId",o);a.all([i,n]).then(function(t){e.validateProcessableObject(t[0],t[1],o.widget).then(function(e){s=e,c()})})}(),o.$on("i18n.switch",c)}e.$inject=["ActionService","NavigationService","I18nService","ValidationService","$q","$scope","_"],angular.module("cc3.app").controller("modules.process.ProcessableValidationController",e)}(),function(){"use strict";function e(e,t,i){e.result=i.contains(i.pluck(e.itemConfig.customData.permissionResults,"permissionAccessEvaluation"),!0),i.forEach(e.itemConfig.customData.permissionResults,function(e){i.forEach(e.userStoryResults,function(e){t.addTranslationField(e.userStory),e.visible=!1})}),e.selectEntity=function(t){e.widget.api._modal.close(t)}}e.$inject=["$scope","I18nService","_"],angular.module("cc3.app").controller("modules.user.accesshelper.AccessHelperController",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d){function u(){if(1===c.widget.data.messageContents.length)c.messageContent=c.widget.data.messageContents[0];else{const e=o.getCurrentLocale().iso;c.messageContent=d.find(c.widget.data.messageContents,t=>{if(t.locale.iso===e)return!0})}}c.moment=l,c.download=function(t){const i=c.widget;e.downloadFile(i.data.$viewDefinition,i.data.id,i.context.contextId,"attachments",t.id)},c.userCanReply=!1,c.messageContent=null,function(){const o=n.getContext("messageId"),l=n.isInApplicationModule("user")?
1s.view.messageDetailsUser:s.view.messageDetails;c.widget.$origin={viewDefinitionId:l,objectId:o},e.readObjects({viewDefinitionId:l,objectId:o},c.widget).then(e=>{c.widget.data=e.data[0],c.widget.data._date=r.transformDate(c.widget.data.createdAt),n.isInApplicationModule("user")&&null===c.widget.data.messageFolder.messageBoxSent&&(c.userCanReply=!0),c.widget.data.category&&(a.addTranslationField(c.widget.data.category.name),n.isInApplicationModule("user")&&!c.widget.data.viewed&&t.runInstance("MarkMessagesAsReadAction",c.widget,null,{suppressActionResult:!0}).then(()=>{c.widget.data.viewed=!0,i.broadcast("unreadMessageCount.update","message")})),u(),function(){const e={id:"2c4c15d7-7a71-4b40-83f5-23e8b4467f28",de:c.messageContent.subject,en:c.messageContent.subject};d.forEach(c.widget.data.messageContents,t=>{e[t.locale.iso]=t.subject}),a.addTranslationField(e),c.widget.title=e.id}()}),c.$on("i18n.switch",u)}()}e.$inject=["ActionService","ActionInvocationService","ApplicationService","NavigationService","I18nService","I18nLocaleService","CCUtils","CMS_DATA","$scope","moment","_"],angular.module("cc3.app").controller("modules.user.messages.MessageController",e)}(),function(){"use strict";function e(e,t,i,n){return{getAchievementAttemptFormType:function(e){switch(e){case"REGULAR_ATTEMPT":case"SUBSTITUTE_ATTEMPT":case"EXTRA_CURRICULAR_ATTEMPT":return"TAKEN_ATTEMPT";case"RECOGNIZED_ATTEMPT":return"RECOGNIZED_ATTEMPT";case"NON_CURRICULAR_ATTEMPT":return"NON_CURRICULAR_ATTEMPT"}},isAchievementAttemptVisible:function(i,n,a,o){var r=e.defer();return t.getContextAsPromise("transcriptSelectedNodeEntity",n).then(function(e){e!==o&&r.resolve(!1),t.getContextAsPromise("transcriptValid",n).then(function(e){e||r.resolve(!1),t.getContextAsPromise("transcriptSelectedNodeHasResult",n).then(function(e){e?r.resolve(!0):r.resolve(!1)},function(){r.resolve(!1)})},function(){r.resolve(!1)})},function(){r.resolve(!1)}),r.promise},navigateToAchievementAttemptDetailState:function(i,a){var o=t.getCurrentState().toString(),r=t.getAllSubStates(o);return n.forEach(r,function(e){if(e.alias===a)return i.selection.overrideChildState=e.state,!1}),e.when()},registerPassedWatcher:function(e){e._scope.$watch(function(){return!n.isNil(e.data)&&e.data.passed},function(t,a){if(!n.isNil(e.data)){var o=e._scope.widget.api.field.getValue("widget.data.grade",e._scope),r=null;n.isNil(o)||(r=i.findGradeSpecification(o.gradingSystem,o)),n.isNil(r)||t===r.passed||(e._scope.widget.api.field.setValue("widget.data.grade.numericGrade",null,!0,e._scope),e._scope.widget.api.field.setValue("widget.data.grade.alphanumericGrade",null,!0,e._scope),e._scope.widget.api.field.setValue("widget.data.grade.withDistinction",null,!0,e._scope))}})},setGradeValidationFunction:function(e){e._scope.$on("grade.select",function(t,i){if(!i.isFreeInput&&"widget.data.grade"===i.valuePath){var n=e._scope.widget.api.field.getValue("widget.data.passed",e._scope),a=i.gradeSpecification.passed;n!==a&&e._scope.widget.api.field.setValue("widget.data.passed",a,!0,e._scope)}})}}}e.$inject=["$q","NavigationService","GradingService","_"],angular.module("ccFrontend").factory("AchievementAttemptService",e)}(),function(){"use strict";function e(e,t,i,n,a){return{evaluateWidgetVisibility:function(a,o){var r=e.defer();return t.getContextAsPromise("achievementAttemptId",a).then(function(e){return i.readReducedObjects({viewDefinitionId:n.view.transcriptAchievementAttemptAssessmentConfiguration,objectId:e},a.widget).then(function(e){if(e&&e[0]){var t=e[0].takenAchievement;r.resolve(o(t))}else r.resolve(!1)})}),r.promise},writeAssessorModificationFlagToScope:function(e,a){return t.getContextAsPromise("achievementAttemptId",e).then(function(t){return i.readReducedObjects({viewDefinitionId:a?n.view.applicationAchievementAttemptStatus:n.view.transcriptAchievementAttemptStatus,objectId:t}).then(function(t){if(t&&t[0]){var i=t[0].status;e.createAssessors="IN_PROCESS"===i||"VISIBLE_WITHOUT_EVALUATION"===i}else e.createAssessors=!1})})}}}e.$inject=["$q","NavigationService","ActionService","CMS_DATA","_"],angular.module("ccFrontend").factory("AchievementAttemptAssessmentVisibilityService",e)}(),function(){"use strict";function e(e,t,i,n,a,o){return{addLandingPageLayoutColumnToLandingPageLayout:function(t){const i={objectId:t};return e.invokeInstance("AddLandingPageLayoutColumnToLandingPageLayoutAction",i,null,e=>s(e,["objectId"]),c,e=>e.getResults(1))},addLandingPageWidgetToLandingPageLayoutColumn:function(t){const i={objectId:t};return e.invokeInstance("AddLandingPageWidgetToLandingPageLayoutColumnAction",i,null,e=>s(e,["objectId"]),c,e=>e.getResults(1))},changeActiveSoftwareModule:function(t){const i={softwareModule:t};
1return e.invokeInstance("ChangeSoftwareModuleAction",i,null,e=>s(e,["softwareModule"]),c,e=>e.getResults(1))},changeLandingPageWidgetPosition:function(t,i,n,a){const o={sourceColumnId:t,sourceIndex:i,targetColumnId:n,targetIndex:a};return e.invokeInstance("ChangeLandingPageWidgetPositionAction",o,null,e=>s(e,["sourceColumnId","sourceIndex","targetColumnId","targetIndex"]),c,e=>e.getResults(1))},createActionTranslationOverride:function(t){return e.invokeInstance("CreateActionTranslationOverrideAction",{actionId:t},void 0,c,c,function(e,t){return e.getResults(1)})},createNote:function(t,i){return e.invokeInstance("CreateNoteAction",{objectId:t},i,e=>s(e,["objectId"]),c,e=>e.getResults(1))},createOrUpdateCustomObject:function(t,i,n){return e.invokeInstance("CreateOrUpdateObjectCustomAction",t,i,c,c,e=>e.getResults(1),n)},createCalendarEventAction:function(i,n,a,o,r,l){const d={startTime:t.detransformDate([n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes()]),endTime:t.detransformDate([a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes()]),allDay:o,resourceId:r};return e.invokeInstance(i,d,l,e=>s(e,["startTime","endTime","allDay"]),c,e=>e.getResults(1))},updateCalendarEventAction:function(i,n,a){let r=n.start,l=n.end;Array.isArray(r)||o.isNil(n.start)||(r=[n.start.getFullYear(),n.start.getMonth(),n.start.getDate(),n.start.getHours(),n.start.getMinutes()]);Array.isArray(l)||o.isNil(n.start)||(l=[n.end.getFullYear(),n.end.getMonth(),n.end.getDate(),n.end.getHours(),n.end.getMinutes()]);return e.invokeInstance(i,{title:n.title,startTime:t.detransformDate(r),endTime:t.detransformDate(l),allDay:n.allDay,eventId:n.id,resourceIds:n.resourceIds},a,e=>s(e,["allDay","eventId","resourceIds"]),c,e=>e.getResults(1))},createOrUpdateObject:function(t,i){return e.invokeInstance("CreateOrUpdateObjectInternalAction",t,i,c,function(e){return{viewDefinitionId:e.viewDefinitionId,entity:e.entity||[],object:e.object||null,pathId:e.pathId||null}},e=>e.getResults(1))},createGlobalLandingPageLayoutFromGlobalLandingPageLayout:function(t,i){return e.invokeInstance("CreateGlobalLandingPageLayoutFromGlobalLandingPageLayoutAction",{landingPageLayoutType:t,landingPageLayoutId:i},null,e=>s(e,["landingPageLayoutType","landingPageLayoutId"]),c,e=>e.getResults(1))},createIndividualLandingPageLayoutFromGlobalLandingPageLayout:function(t,i,n){return e.invokeInstance("CreateIndividualLandingPageLayoutFromGlobalLandingPageLayoutAction",{landingPageLayoutType:t,contextId:n},null,e=>s(e,["landingPageLayoutType","landingPageLayoutId","contextId"]),c,e=>e.getResults(1))},createIndividualLandingPageLayoutFromPersonalLandingPageLayout:function(t,i){return e.invokeInstance("CreateIndividualLandingPageLayoutFromPersonalLandingPageLayoutAction",{landingPageLayoutType:t,contextId:i},null,e=>s(e,["landingPageLayoutType","contextId"]),c,e=>e.getResults(1))},createPersonalLandingPageLayoutFromGlobalLandingPageLayout:function(t,i){return e.invokeInstance("CreatePersonalLandingPageLayoutFromGlobalLandingPageLayoutAction",{landingPageLayoutType:t,landingPageLayoutId:i},null,e=>s(e,["landingPageLayoutType","landingPageLayoutId"]),c,e=>e.getResults(1))},createTranslationOverride:function(t,i){return e.invokeInstance("CreateTranslationOverrideAction",{i18nKey:t,i18nEntity:i||null},void 0,c,c,function(e,t){return e.getResults(1)})},createTableView:function(t,i){return e.invokeInstance("CreateTableViewAction",{tableViewConfiguration:t,viewDefinitionId:i.model.baseModel.viewDefinitionId},i,e=>s(e,["tableViewConfiguration","viewDefinitionId"]),c,e=>!0)},determineIcon:function(t,i){return e.invokeInstance("DetermineIconForLayoutContainerViewAction",void 0,void 0,function(e){return e},c,i,{originViewDefinitionIdOverride:"4ebb9ada-1fd2-457b-a49f-dbf05e0f94c8",originObjectIdOverride:t})},currentUserHasUserStories:function(t){return e.invokeInstance("CurrentUserHasUserStoriesAction",{userStoryIds:t},void 0,c,c,function(e){return e.getResults(1)})},deleteCalendarEventAction:function(t,i,n){return e.invokeInstance(t,{eventId:i.id},n,function(e){return e},c,function(e){return e.getResults(1)})},deleteGlobalLandingPageLayout:function(t,i){return e.invokeInstance("DeleteGlobalLandingPageLayoutAction",{landingPageLayoutType:t,landingPageLayoutId:i},null,e=>s(e,["landingPageLayoutType","landingPageLayoutId"]),c,e=>e.getResults(1))},deleteIndividualLandingPageLayout:function(t,i){return e.invokeInstance("DeleteIndividualLandingPageLayoutAction",{landingPageLayoutType:t,personId:i},null,e=>s(e,["landingPageLayoutType","personId"]),c,e=>e.getResults(1))},deleteLandingPageLayoutColumn:function(t){return e.invokeInstance("DeleteLandingPageLayoutColumnAction",{landingPageLayoutColumnId:t},null,e=>s(e,["landingPageLayoutColumnId"]),c,e=>e.getResults(1))},deleteLandingPageWidget:function(t){return e.invokeInstance("DeleteLandingPageWidgetAction",{landingPageWidgetId:t},null,e=>s(e,["landingPageWidgetId"]),c,e=>e.getResults(1))},deleteNote:function(t){return e.invokeInstance("DeleteNoteAction",{},null,c,c,e=>e.getResults(1),{originViewDefinitionIdOverride:i.view.note,originObjectIdOverride:t})},deletePersonalLandingPageLayout:function(t){return e.invokeInstance("DeletePersonalLandingPageLayoutAction",{landingPageLayoutType:t},null,e=>s(e,["landingPageLayoutType"]),c,e=>e.getResults(1))},deleteTableView:function(t,i){return e.invokeInstance("DeleteTableViewAction",{id:t},i,e=>s(e,["id"]),c,()=>!0)},downloadFile:function(i,n,r,s,l){const d={viewDefinitionId:i,objectId:n,attribute:s.replace(/\[[0-9]*\]\._item/,""),pathId:o.isNil(r)?null:r,fileId:l};return e.invokeInstance("DownloadFileAction",d,null,e=>{if(!t.isUuid(e.viewDefinitionId))throw new Error("viewDefinitionId was not a UUID");if(!t.isUuid(e.objectId))throw new Error("objectId was not a UUID");if(!o.isNull(e.pathId)&&!t.isUuid(e.pathId))throw new Error("pathId must be null or a UUID");if(!t.isUuid(e.fileId))throw new Error("fileId was not a UUID");if(o.isNil(e.attribute))throw new Error("attributeValuePath must be provided");return e},c,e=>(a.location.href="/pub/file/token/"+e.getResults(1),e))},downloadFilesAsZip:function(t,i,n,a){const r={valuePath:a,objectId:i};return e.invokeInstance("DownloadFilesAsZipFromFieldAction",r,null,e=>s(e,Object.keys(r)),c,t=>{const i=e.getResultHandler("FileDownloadActionResult");return i.handle(t.getResults(1)[0]),t},{originViewDefinitionIdOverride:t,originPathIdOverride:o.isNil(n)?null:n})},downloadFilesAsZipFromFieldAction:function(i,n,a){const o={valuePath:a,objectId:n};return e.invokeInstance("DownloadFilesAsZipFromFieldAction",o,i,e=>s(e,Object.keys(o)),c,t.noopFn,{forceActionResult:!0})},downloadOwnFile:r,editLandingPageConfiguration:function(t,i){return e.invokeInstance("EditLandingPageLayoutConfigurationAction",{landingPageLayoutType:t,landingPageLayoutId:i},null,e=>s(e,["landingPageLayoutType","landingPageLayoutId"]),c,e=>e.getResults(1))},editLandingPageWidgetConfiguration:function(t){return e.invokeInstance("EditLandingPageWidgetConfigurationAction",{landingPageWidgetId:t},null,e=>s(e,["landingPageWidgetId"]),c,e=>e.getResults(1))},editNote:function(t){return e.invokeInstance("EditNoteAction",{},null,c,c,e=>e.getResults(1),{originViewDefinitionIdOverride:i.view.note,originObjectIdOverride:t})},executeProcessGroupTransition:function(t,i,n,a){const o=i.map(e=>({processableObjectId:e,processGroupTransitionId:t}));a||(a={});return a.forceActionResult=!0,e.invokeInstance("ExecuteGroupTransitionAction",o,n||null,e=>s(e,["processGroupTransitionId","processableObjectId"]),c,e=>e.getResults(1),a)},executeProcessTransition:function(t,i,n,a){const o=i.map(e=>({processTransitionId:t,processableObjectId:e}));void 0===a&&(a={});return e.invokeInstance("ExecuteTransitionAction",o,n||null,e=>s(e,["processTransitionId","processableObjectId"]),c,e=>e.getResults(1),a)},executeEntryPointAction:function(t){return e.invokeInstance(t,[{}],void 0,c,c,function(e){return e.getOneResult(1)})},fetchAllowedValues:function(t,i,n,a,r,l){const d={viewDefinitionId:t,pathObjectId:i,attributeName:n,object:a,forestViewId:o.isNil(r)?null:r.forest
1ViewId,forestId:o.isNil(r)?null:r.forestId,forestSelectedObjectIdPath:o.isNil(r)?null:r.forestSelectedObjectIdPath,additionalFilters:l};return e.invokeInstance("FetchAllowedValuesAction",d,null,e=>s(e,["viewDefinitionId","attributeName","object"]),c,i=>e.readHandleViewDefinitionResult(i.getResults(1),[t],!1))},fetchAuthenticationTypeViewDefinitionId:function(t){const i={authenticationSourceId:t};return e.invokeInstance("FetchAuthenticationSourceTypeViewDefinitionIdAction",i,null,c,c,e=>e.getResults(1))},fetchCalendarEvents:function(t,i,n,a,o,r){const l={calendarEventSource:i,periodStart:a,periodEnd:o,userSpecificFilters:r,currentView:n};return e.invokeInstance("FetchEventsAction",l,null,e=>s(e,["calendarEventSource","periodStart","periodEnd","userSpecificFilters"]),c,e=>e.getResults(1))},fetchNearestEvent:function(t,i,n,a,o,r){const s={calendarEventSource:i,userSpecificFilters:n,direction:r,periodStart:a,periodEnd:o};return e.invokeInstance("FetchNearestEventAction",s,null,c,c,e=>e.getResults(1))},fetchCalendarResources:function(t,i,n,a){const o={calendarUseCase:t,periodStart:i,periodEnd:n,userSpecificFilters:a};return e.invokeInstance("FetchResourcesAction",o,null,e=>s(e,["calendarUseCase","periodStart","periodEnd","userSpecificFilters"]),c,e=>e.getResults(1))},fetchCollectionWidgetData:e.fetchCollectionWidgetData,fetchGhiniErrorsAndWarnings:function(){return e.invokeInstance("FetchGhiniErrorsAndWarningsAction",[],null,c,c,function(e,t){return e.getResults(1)[0]})},fetchGhiniReport:function(){return e.invokeInstance("FetchGhiniReportAction",[],null,c,c,function(e,t){return e.getResults(1)[0]})},fetchGhiniTransmissionDates:function(){return e.invokeInstance("FetchGhiniTransmissionDatesAction",[],null,c,c,function(e,t){return e.getResults(1)[0]})},fetchGhiniStatusInformation:function(){return e.invokeInstance("FetchGhiniStatusAction",[],null,c,c,function(e,t){return e.getResults(1)[0]})},fetchGhiniUnprocessedMessages:function(){return e.invokeInstance("FetchGhiniUnprocessedMessagesAction",[],null,c,c,function(e,t){return e.getResults(1)[0]})},fetchPeriodsOfEnrolment:function(t){const i={personId:t};return e.invokeInstance("FetchPeriodsOfEnrolmentAction",i,null,c,c,e=>e.getResults(1))},fetchPublicKeyRetrievalMethodConfigurationView:function(t){const i={emailEncryptionSettingsId:t};return e.invokeInstance("FetchPublicKeyRetrievalMethodConfigurationForMailEncryptionAction",i,null,c,c,e=>e.getResults(1))},fetchLandingPageLayouts:function(t,i){const n={landingPageLayoutType:t,contextId:i||null};return e.invokeInstance("FetchLandingPageLayoutsAction",n,null,e=>s(e,["landingPageLayoutType"]),c,e=>e.getResults(1))},fetchLandingPageLayoutColumn:function(t){return e.invokeInstance("FetchLandingPageLayoutColumnAction",{landingPageLayoutColumnId:t},null,e=>s(e,["landingPageLayoutColumnId"]),c,e=>e.getResults(1))},fetchLandingPageWidget:function(t){return e.invokeInstance("FetchLandingPageWidgetAction",{landingPageWidgetId:t},null,e=>s(e,["landingPageWidgetId"]),c,e=>e.getResults(1))},getAchievementValuationRuleConfigurationView:function(t,i){const n={achievementValuationRule:t||null};return e.invokeInstance("GetAchievementValuationRuleConfigurationViewAction",n,i||null,c,c,e=>e.getResults(1))},getActiveSoftwareModule:function(){return e.invokeInstance("GetActiveSoftwareModuleAction",[],null,c,c,function(e,t){return e.getOneResult(1).result})},getAvailableProcessGroupTransitions:function(t,i){return e.invokeInstance("GetAvailableGroupTransitionsAction",{processGroupStatusId:t},i||null,e=>s(e,["processGroupStatusId"]),c,e=>e.getResults(1))},getCalendarWidgetConfiguration:function(t,i){const n={calendarUseCase:t,context:i};return e.invokeInstance("GetCalendarWidgetConfigurationAction",n,null,c,c,e=>e.getResults(1))},getCalculatorConfigurationViews:function(t,i,n,a,o,r){const s={gradeCalculator:i||null,gradeRounder:n||null,creditPointsCalculator:a||null,completionRuleCalculator:o||null};return e.invokeInstance(t,s,r||null,c,c,e=>e.getResults(1))},getFeeIdentificationGeneratorConfigurationViews:function(t,i){const n={generatorId:t||null};return e.invokeInstance("GetFeeIdentificationGeneratorConfigurationViewsAction",n,i||null,c,c,e=>e.getResults(1))},getExaminationRegistrationCalculatorConfigurationViews:function(t,i,n,a){const o={earliestExaminationRegistrationDateCalculator:t||null,latestExaminationRegistrationDateCalculator:i||null,entity:n};return e.invokeInstance("GetExaminationRegistrationCalculatorConfigurationViewsAction",o,a||null,c,c,e=>e.getResults(1))},getExamRegVersionProgressMonitorRuleConfigurationViews:function(t,i,n){const a={studyDuration:t||null,studyProgress:i||null};return e.invokeInstance("GetExamRegVersionProgressMonitorRuleConfigurationViewsAction",a,n||null,c,c,e=>e.getResults(1))},getExecutableProcessTransitions:function(t,i,n){return e.invokeInstance("GetExecutableTransitionsAction",{processGroupId:t,processableObjectId:i},n||null,e=>s(e,["processGroupId","processableObjectId"]),c,e=>e.getResults(1))},getModalFetchDataHandlerModel:e.getModalFetchDataHandlerModel,getModulePartClearances:function(t){return e.invokeInstance("GetPendingModulePartClearanceRequestsAction",{locale:t||null},void 0,e=>s(e,["locale"]),c,e=>e.getResults(1))},getNextcloudShareContents:function(t,i,n){return e.invokeInstance("GetNextcloudShareContentsForApplicationAction",{id:t,url:i,password:n},void 0,e=>s(e,["id","url","password"]),c,e=>e.getResults(1))},getNewPrioritizationStrategyConfigurationViews:function(t,i){const n={strategyId:t||null};return e.invokeInstance("NewActivityGetPrioritizationStrategyConfigurationViewsAction",n,i||null,c,c,e=>e.getResults(1))},getProcessTransitionLog:function(t,i,n){return e.invokeInstance("GetTransitionLogAction",{processGroupId:t,processableObjectId:i},n||null,e=>s(e,["processGroupId","processableObjectId"]),c,e=>e.getResults(1))},getProcessTransitionLogs:function(t){return e.invokeInstance("GetTransitionLogAction",t,null,e=>s(e,["processGroupId","processableObjectId"]),c,e=>e.getResults(1))},getProcessUiDetailInformation:function(t,i,n){return e.invokeInstance("GetProcessUiDetailInformation",{processGroupId:t,processableObjectId:i},n||null,e=>s(e,["processGroupId","processableObjectId"]),c,e=>e.getResults(1))},getRelevantDisadvantageCompensationRightsForAchievementAttempt:function(t){return e.invokeInstance("GetRelevantDisadvantageCompensationRightsForAchievementAttemptAction",{achievementAttemptId:t},null,e=>s(e,["achievementAttemptId"]),c,e=>e.getResults(1))},getRelevantDisadvantageCompensationRightsForExamination:function(t){return e.invokeInstance("GetRelevantDisadvantageCompensationRightsForExaminationAction",{examinationId:t},null,e=>s(e,["examinationId"]),c,e=>e.getResults(1))},getRelevantDisadvantageCompensationRightsForExaminationEvent:function(t,i){return e.invokeInstance("GetRelevantDisadvantageCompensationRightsForExaminationEventAction",{examinationId:t,examinationEventId:i},null,e=>s(e,["examinationId","examinationEventId"]),c,e=>e.getResults(1))},getRelevantDisadvantageCompensationRightsForExamRegExaminationRegistration:function(t){return e.invokeInstance("GetRelevantDisadvantageCompensationRightsForExamRegExaminationRegistrationAction",{achievementRegistrationId:t},null,e=>s(e,["achievementRegistrationId"]),c,e=>e.getResults(1))},getRounderConfigurationView:function(t,i){const n={gradeRounderId:t||null};return e.invokeInstance("GetGradeRounderConfigurationViewAction",n,i||null,c,c,e=>e.getResults(1))},readTableViewConfiguration:function(t,i){return e.invokeInstance("ReadTableViewConfigurationAction",{tableViewId:t},i,c,c,function(e){return e.getResults(1)})},getTableViews:function(t,i){return e.invokeInstance("ReadTableViewsAction",{viewDefinitionId:t},i,c,c,function(e){return e.getResults(1)})},getUserDetails:function(t){return e.invokeInstance("GetUserDetailsAction",[],t,c,c,function(e,t){return e.getOneResult(1).result})},getPersonTraits:function(t,i,n){return e.invokeInstance("FetchPersonTraitsAction",{viewDefinitionId:t,pathId:n,personId:i},void 0,e=>s(e,["viewDefinitionId","personId"]),c,e=>e.getResults(1))},getViewDefinitionFieldsHelpAction:function(t,i){return e.invokeInstance("GetViewDefinitionFieldsHelpAction",t,i,c,c,e=>e.getResults(1))},getWidgetHelpAction:function(t,i){return e.invokeInstance("GetWidgetHelpAction",t,i,c,e=>({widgetType:e.widgetType,widgetId:e.widgetId}),e=>e.getResults(1))},giveConsents:function(){return e.invokeInstance("GiveConsentsAction",null,null,c,c,c,{cantCancel:!0})},invokeFetchDataHandler:e.invokeFetchDataHandler,markNoteAsDeleted:function(t){return e.invokeInstance("MarkNoteAsDeletedAction",{},null,c,c,e=>e.getResults(1),{originViewDefinitionIdOverride:i.view.note,originObjectIdOverride:t})},markTaskAsDone:function(t,i,n){return e.invokeInstance("MarkTaskAsDoneAction",{taskId:t},i,e=>s(e,["taskId"]),c,e=>e.getResults(1),n)},markTaskAsNotDone:function(t,i,n){return e.invokeInstance("MarkTaskAsNotDoneAction",{taskId:t},i,e=>s(e,["taskId"]),c,e=>e.getResults(1),n)},moveForestNode:function(t,i){return e.invokeInstance("MoveForestNodeAction",t,i,c,function(e){return{targetObjectIdPath:e.targetObjectIdPath,sourceObjectIdPath:e.s
1ourceObjectIdPath,insertAsFirstChild:e.insertAsFirstChild,keepOld:e.keepOld}},function(e,t){return e.getResults(1)})},performDuplicateCheck:function(t){return e.invokeInstance("PerformDuplicateCheckForPersonAction",null,null,c,c,function(e,t){return e.getResults(1)},t)},readEntryPoints:function(){return e.invokeInstance("GetAvailableAclUserStoryEntryPointAction",[{}],void 0,c,c,function(e){return e.getOneResult(1)})},readFilterValues:e.readFilterValues,readTranslationFieldFromSettingsForFieldHint:e.readTranslationFieldFromSettingsForFieldHint,readForest:function(t,i,n){const a=o.isNil(n)?"FetchForestViewAction":n;return e.invokeInstance(a,t,i,c,e=>({forestViewId:e.forestViewId,forestId:e.forestId,pathObjectId:e.pathObjectId,forestSelectedObjectIdPath:[]}),e=>e.getResults(1))},readNotes:function(t,i){return e.invokeInstance("ReadNotesAction",{objectId:t,showDeletedNotes:i},null,e=>s(e,["objectId","showDeletedNotes"]),c,e=>e.getResults(1))},readLandingPageWidgetNotes:function(t,i,n,a,r){return e.invokeInstance("ReadNoteWidgetNotesAction",{personId:t,showNotesFromPersonRecord:i,showNotesFromApplications:n,showNotesFromInactiveApplications:!o.isNil(a)&&a,showDeletedNotes:r},null,e=>s(e,["personId","showNotesFromPersonRecord","showNotesFromApplications","showDeletedNotes"]),c,e=>e.getResults(1))},readRssFeed:function(t,i,n){return e.invokeInstance("ReadRssFeedAction",{rssFeedId:t,itemsToShow:i},n,e=>s(e,["rssFeedId","itemsToShow"]),c,e=>e.getResults(1))},readObjects:e.readObjects,readProcessDefinitionPermissions:function(t,i){return e.invokeInstance("ReadProcessDefinitionPermissionsAction",t,i,e=>s(e,["processDefinitionToUserStoryAssignmentId"]),c,e=>e.getResults(1))},readReducedObjects:e.readReducedObjects,readReducedObjectsNeo:e.readReducedObjectsNeo,readReport:function(t,i,n){return e.invokeInstance("ReadReportAction",{reportId:t,reportVariableValues:i},n,e=>s(e,["reportId"]),c,e=>e.getResults(1))},rearrangeGlobalLandingPageLayouts:function(t){return e.invokeInstance("ChangeLandingPageLayoutOrderAction",{landingPageLayoutType:t},null,e=>s(e,["landingPageLayoutType"]),c,e=>e.getResults(1))},exportReportAsXml:function(t,i,n){return e.invokeInstance("ExportAdHocReportResultTableAsXmlAction",{reportId:t,reportVariableValues:i},n,e=>s(e,["reportId"]),c,e=>l(e))},exportReportAsCsv:function(t,i,n){return e.invokeInstance("ExportAdHocReportResultAsCsvAction",{reportId:t,reportVariableValues:i},n,e=>s(e,["reportId"]),c,e=>l(e))},readViewDefinitionModels:e.readViewDefinitionModels,requestActivePasswordPolicySettings:function(t){return e.invokeInstance("RequestActivePasswordPolicySettingsAction",{},t,c,c,function(e,t){return e.getResults(1)})},setLastUsedCalendarView:function(t){return e.invokeInstance("SetLastUsedCalendarViewAction",{currentCalendarView:t},void 0,c,c,e=>e.getResults(1))},setLocale:function(t){return e.invokeInstance("SetLocaleAction",{localeId:t},void 0,c,c,function(e,t){return e.getResults(1)})},selectFile:function(t,i,n,a,o){const r=d(i,o),s={viewDefinitionId:t,objectId:n||null,attributeValuePath:o.replace(/\[[0-9]*\]\._item/,""),indexedPath:o.replace(/\._item/,""),pathId:a||null};return e.invokeInstance("SelectFileAction",[s],i||null,c,c,r)},updateObjects:function(t,i,n){return e.invokeInstance("UpdateObjectAction",t,i,e=>s(e,["viewDefinitionId"]),e=>({viewDefinitionId:e.viewDefinitionId,entity:e.entity,object:e.object,pathId:e.pathId||null}),e=>e.getResults(1),n)},updateUiItemViewDefinition:function(t,i,n){return e.invokeInstance("UpdateUiItemViewDefinitionAction",[{uiItemId:t,entity:i,viewDefinitionId:n}],void 0,c,c,function(e,t){return e.getResults(1)})},uploadFile:function(i,n,a,r,s,l,u,g){const f=d(n,s),p={viewDefinitionId:i,objectId:a||null,attributeValuePath:s.replace(/\[[0-9]*\]\._item/,""),indexedPath:s.replace(/\._item/,""),pathId:r||null,originalFileName:l.name,includeData:u,progressFunction:g};return e.invokeInstance("UploadFileAction",p,null,e=>{if(!t.isUuid(e.viewDefinitionId))throw new Error("viewDefinitionId was not a UUID");if(!o.isNil(e.objectId)&&!t.isUuid(e.objectId))throw new Error("objectId must be null or a UUID");if(!o.isNil(e.pathId)&&!t.isUuid(e.pathId))throw new Error("pathId must be null or a UUID");if(o.isNil(e.attributeValuePath))throw new Error("attributeValuePath must be provided");return e},c,f,{file:l}).then(function(){},f)},validateRegistrationAvailability:function(t,i){return e.invokeInstance("ValidateRegistrationAvailabilityAction",{activityId:t},i||null,e=>s(e,["activityId"]),c,e=>e.getReducedResults(1))},validateExaminationRegistration:function(t,i){return e.invokeInstance("ValidateExaminationRegistrationAction",{examinationId:t},i||null,e=>s(e,["examinationId"]),c,(e,t)=>e.getResults(1))},validateExaminationDeregistration:function(t,i){return e.invokeInstance("ValidateExaminationDeregistrationAction",{examinationId:t},i||null,e=>s(e,["examinationId"]),c,e=>e.getResults(1))},validateProcessableObject:function(t,i,n){return e.invokeInstance("ValidateProcessableObjectAction",{processDefinitionStatusId:t,processableObjectId:i},n||null,e=>s(e,["processDefinitionStatusId","processableObjectId"]),c,e=>e.getResults(1))}};function r(i){return e.invokeInstance("DownloadOwnFileActionResultAction",{fileId:i},null,e=>{if(!t.isUuid(e.fileId))throw new Error("fileId must be a Uuid");return e},c,e=>(a.location.href="/pub/file/token/"+e.getResults(1),e))}function s(e,t){return void 0===t?t=[]:Array.isArray(t)||(t=[t]),t.forEach(t=>{if(!o.has(e,t)||null===e[t]||void 0===e[t])throw new Error("missing parameter: "+t)}),e}function c(e){return e}function l(e){const t=e.getResults(1);if(!o.isNil(t[0])&&!o.isNil(t[0].file)&&!o.isNil(t[0].file.id))return r(t[0].file.id)}function d(e,t){return function(i){const a=i[1][0].status;if(200===a){const n=i.getOneResult(1).result;e.api.field.setValue(t,n,!0,e._scope),e.api.status.setSuccess({text:"common.action.successful"},e._scope)}else if(413===a){n.getAlert("common.action.failed","validation.file.uploadFailedTitle");const a={text:"common.action.failed",messages:{}};a.messages[t]=i[1][0].data.messages["*"],e.api.status.setError(a,e._scope)}else if(403===a)n.getAlert("validation.action.accessDenied","validation.file.uploadFailedTitle"),e.api.status.setError({text:"validation.action.accessDenied"},e._scope);else if(400===a){const a={text:"common.action.failed",messages:{}};o.isNil(i[1][0].error)?n.getAlert("common.action.failed","validation.file.uploadFailedTitle"):a.messages[t]=i[1][0].error["*"],e.api.status.setError(a,e._scope)}else n.getAlert("validation.genericError","validation.file.uploadFailedTitle"),e.api.status.setError({text:"validation.genericError"},e._scope);return i}}}e.$inject=["ActionInvocationService","CCUtils","CMS_DATA","ModalService","$window","_"],angular.module("ccFrontend").factory("ActionService",e)}(),function(){"use strict";function e(e,t,i){return{id:"AccessHelperActionResult",handle:function(i){e.getCustom({t
1itle:"common.accesshelper.AccessHelperController",module:"user.accesshelper.accesshelper",preventDesignMode:!0,preventEditingMode:!0,customData:i},[],[t.getControl("close")],{size:"lg"})}}}function t(e,t){e.registerResultHandler("AccessHelperActionResult",t)}e.$inject=["ModalService","ControlService","_"],t.$inject=["ActionInvocationService","AccessHelperActionResult"],angular.module("ccFrontend").factory("AccessHelperActionResult",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{id:"FileActionResult",render:function(t,n){return'<a style="margin-right: 5px"><span class="label label-primary">'+e.getTranslation("common.contentType."+t.file.contentType)+'</span><span class="horizontal-offset-5">'+t.file.name+" ("+i("filesize")(t.file.size)+")</span></a>"},onClick:function(e){t.downloadOwnFile(e.file.id)}}}function t(e,t){e.registerResultHandler("FileActionResult",t)}e.$inject=["I18nService","ActionService","$filter","_"],t.$inject=["ActionInvocationService","FileActionResult"],angular.module("ccFrontend").factory("FileActionResult",e).run(t)}(),function(){"use strict";function e(e){return{id:"FileDownloadActionResult",handle:function(t,i){const n=`cc-download-${t.downloadTokenId}`,a=$("#"+n);if(!e.has(a,"0")){const e=document.createElement("iframe");e.id=n,e.style.display="none",document.body.appendChild(e),e.src=`/pub/file/token/${t.downloadTokenId}`}}}}function t(e,t){e.registerResultHandler("FileDownloadActionResult",t)}e.$inject=["_"],t.$inject=["ActionInvocationService","FileDownloadActionResult"],angular.module("ccFrontend").factory("FileDownloadActionResult",e).run(t)}(),function(){"use strict";function e(e){return{id:"ForestViewDefinitionActionResult",handle:function(t,i){e.has(i.$origin.api,"addNode")&&e.isFunction(i.$origin.api.addNode)&&i.$origin.api.addNode(t.data[0],i.$originScope)}}}function t(e,t){e.registerResultHandler("ForestViewDefinitionActionResult",t)}e.$inject=["_"],t.$inject=["ActionInvocationService","ForestViewDefinitionActionResult"],angular.module("ccFrontend").factory("ForestViewDefinitionActionResult",e).run(t)}(),function(){"use strict";function e(e,t){return{id:"ImportChangesResult",render:function(t,i){var n='<div class="import-changes-result">';return n+='<div class="left"><strong>'+t.createdEntries.length+'</strong><i class="fa fa-plus-circle suffix-icon text-success"></i><br/>'+e.getTranslation("action.ImportChangeResult.createdEntries")+"</div>",n+='<div class="center"><strong>'+t.updatedEntries.length+'</strong><i class="fa fa-check-circle suffix-icon text-info"></i><br/>'+e.getTranslation("action.ImportChangeResult.updatedEntries")+"</div>",n+='<div class="right"><strong>'+t.deletedEntries.length+'</strong><i class="fa fa-times-circle suffix-icon text-danger"></i><br/>'+e.getTranslation("action.ImportChangeResult.deletedEntries")+"</div>",n+="</div>"}}}function t(e,t){e.registerResultHandler("ImportChangesResult",t)}e.$inject=["I18nService","_"],t.$inject=["ActionInvocationService","ImportChangesResult"],angular.module("ccFrontend").factory("ImportChangesResult",e).run(t)}(),function(){"use strict";function e(e,t){e.registerResultHandler("NoteActionResult",t)}e.$inject=["ActionInvocationService","NoteActionResult"],angular.module("ccFrontend").factory("NoteActionResult",function(){return{id:"NoteActionResult",handle:function(e,t){t.$origin.notes=e}}}).run(e)}(),function(){"use strict";function e(e){return{id:"OpenUrlActionResult",handle:function(t,i){e.open(t.url,t.target)}}}function t(e,t){e.registerResultHandler("OpenUrlActionResult",t)}e.$inject=["$window"],t.$inject=["ActionInvocationService","OpenUrlActionResult"],angular.module("ccFrontend").factory("OpenUrlActionResult",e).run(t)}(),function(){"use strict";function e(e,t){e.registerResultHandler("String",t)}e.$inject=["ActionInvocationService","StringHandler"],angular.module("ccFrontend").factory("StringHandler",function(){return{id:"StringActionResult",render:function(e,t){return e}}}).run(e)}(),function(){"use strict";function e(e){return{id:"XmlActionResult",render:function(t,i){return"<pre>"+e.escape(t.xmlData)+"</pre>"}}}function t(e,t){e.registerResultHandler("XmlActionResult",t)}e.$inject=["_"],t.$inject=["ActionInvocationService","XmlActionResult"],angular.module("ccFrontend").factory("XmlActionResult",e).run(t)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){return{getEnumValues:t.getEnumValues,initAllowedValues:function(e){s.isUndefined(e.getValue(e))&&e.setValue(null,!0,null,e);if(e.field.selectFromModel)if(e.field.referencedField){var i=s.dropRight(e.valuePath.split(".")).join(".")+"."+e.field.referencedField;e.$watch(i,function(t,i){l(e,c(t,e));var n=e.getAllowedValueItems(e),a=n.length>0&&s.isString(n[0]),o=a?n:s.pluck(n,"id"),r=e.getValue(e);
1s.isEmpty(r)||s.contains(o,s.isString(r)?r:r.id)||e.setValue(null,!0,null,e)})}else{var o=a.getContext("viewDefinitionUiEntity");l(e,c(s.isEmpty(o)?e.field.entity:o,e))}else e.field.enum?l(e,t.getEnumValues(e)):function(e){if(!s.isEmpty(e.field.embeddedObjectView)||e.widget.api.model.getBaseModel(e.widget._scope).useNewPermissions)return function(e){var t=e.valuePath,i=e.field.embeddedObjectView;s.isNil(e.field.allowedValues)&&(e.field.allowedValues={});s.isNil(e.field.allowedValues.items)&&(e.field.allowedValues.items={});return e.field.allowedValues.items[e.valuePath]=[],e.field.filterAllowedValuesByField?(p(t,e,i,e.field.filterAllowedValuesByField),r.when()):e.field.filterAllowedValuesByFieldAsFilterVariable?(p(t,e,i,e.field.filterAllowedValuesByFieldAsFilterVariable),r.when()):e.field.filterAllowedValuesByContextParameter?d(i,e,a.getContext(e.field.filterAllowedValuesByContextParameter)):e.field.referencedField?(p(t,e,i,e.field.referencedField),r.when()):d(i,e,null)}(e);if(!n.isBasicType(e.field.type))return m(e,n.getEntity(e.field.type));if(!s.isEmpty(e.field.referencedField)){var t=e.valuePath.substring(0,e.valuePath.indexOf(e.field.name))+e.field.referencedField;e.$watch(t,function(t,i){m(e,t)}),r.when()}}(e)},filterAllowedValuesSuggestions:function(e,t,n=(e=>e.$displayName),a=10,r=(e=>e.$displayName.length)){const c=o.normalize(t,!1);if(!e)return[];const l=e.filter(e=>{const t=o.normalize(n(e),!1),a=i.removeHtml(t);if(0===a.indexOf(c))return!0;const r=a.split(" ");return!!s.find(r,e=>0===e.indexOf(c))});return s.sortBy(l,r).slice(0,a)},createLoadAllowedValuesNewPermissionsFunction:u};function c(e,t){if(n.isEnum(t.field.type)){if("ViewFieldDisplayType"===t.field.type){const e="viewDisplayType"===t.field.name?"VIEW":"EDIT";return n.getViewFieldDisplayTypeNames(e).map(e=>({id:e,name:`entity.${t.field.type}.${e}`,$displayPattern:`[i18n:entity.${t.field.type}.${e}]`}))}{const e=n.getEnum(t.field.type);return Object.values(e).sort((e,t)=>e.ordinal-t.ordinal).map(e=>({id:e.name,name:`entity.${t.field.type}.${e.name}`,$displayPattern:`[i18n:entity.${t.field.type}.${e.name}]`}))}}if(!0===t.field.selectFromModelAttributes){const t=s.isObject(e)?e.id:e;return s.isNil(e)?[]:s.map(n.getEntity(t).attributes,function(e){return{id:e.name,name:`entity.${t}.${e.name}`,icon:n.getEntity(e.type).icon,$displayPattern:`[i18n:entity.${t}.${e.name}]`}})}return!0===t.field.selectFromModelActions?s.map(n.getNewActions(),function(e){return{id:e,name:e,$displayPattern:"{id}"}}):[]}function l(e,t){return s.isNil(e.field.allowedValues)&&(e.field.allowedValues={}),s.isNil(e.field.allowedValues.items)&&(e.field.allowedValues.items={}),e.field.allowedValues.items[e.valuePath]=[],s.isNil(t)||(e.field.allowedValues.items[e.valuePath]=t,e.updateDisplayNames(e)),r.when()}function d(t,i,n){let a;return i.loading=!0,(a=i.widget.api.model.getBaseModel(i.widget._scope).useNewPermissions?u(i)([]):i.field.filterAllowedValuesByField&&(s.isUndefined(n)||s.isNull(n))?r.when():i.field.filterAllowedValuesByFieldAsFilterVariable?s.isEmpty(t)?r.when():e.readObjects({viewDefinitionId:t,pathId:n,requestContext:{fieldAsFilterVariableAttributeName:i.field.filterAllowedValuesByFieldAsFilterVariable,fieldAsFilterVariableReferencedId:i.getReferencedFieldValue(i.field.filterAllowedValuesByFieldAsFilterVariable,i)}},i.widget,{reduced:!1}):s.isEmpty(t)?r.when():e.readObjects({viewDefinitionId:t,pathId:n},i.widget,{reduced:!1})).then(function(e){g(i,e),i.loading=!1})}function u(t){if(n.isBasicType(t.field.type)&&s.isEmpty(t.field.embeddedObjectView)){let i=(t.widget.api.isCreateMode(t.widget._scope)?a.getContext("$modelCreationContext"):a.getContext("$modelContext"))||a.getContext("filterEntity");if(!s.isNil(i)){const a=n.getNameOfTypeAtEndOfStringPath(i);return function(i){return e.readFilterValues({entity:a},t.widget)}}}var i=t.valuePath.replace(/widget\.data\./,"").replace(/\._item/g,""),o=s.isNil(t.itemConfig.contextId)?null:t.itemConfig.contextId;return o=s.isNil(o)&&!s.isNil(t.widget.context.contextId)?t.widget.context.contextId:o,function(n){return e.fetchAllowedValues(t.widget.api.model.getBaseModel(t.widget._scope).viewDefinitionId,o,i,t.widget.api.getChanges(t.widget._scope),t.itemConfig.forestInformation,n)}}function g(e,t){t&&(e.field.allowedValues||(e.field.allowedValues={}),e.field.allowedValues.data=t.data,s.isNil(e.field.allowedValues.items)&&(e.field.allowedValues.items={}),e.field.allowedValues.items[e.valuePath]=i.reduceRecords(t.data),e.field.allowedValues.model=t.model,e.field.allowedValues.viewDefinitionId=t.viewDefinitionId,s.each(e.field.allowedValues.items[e.valuePath],(t,n)=>{t=i.transformArrays(t),e.field.allowedValues.items[e.valuePath][n]=t}),e.updateDisplayNames(e),function(e){var t,i=e.getAllowedValueItems(e),n=e.getValue(e),a=s.isPlainObject(n)?n.id:n;if(e.isMandatory()&&e.hasExactlyOneAllowedValue(e)&&(!e.field.collection||e.field.minimumCollectionSize>0))if(e.field.collection){if(s.isNil(n)||!s.isArray(n)||1!==n.length)t=!0;else{var o=s.isPlainObject(n[0]._item)?n[0]._item.id:n[0]._item;t=i[0].id!==o}e.setValue(i[0],t,e.valuePath+"[0]._item",e)}else t=s.isNil(a)||i[0].id!==a,e.setValue(i[0],t,null,e);else if(s.isArray(n)){var r=[],c=[],l=s.filter(s.map(n,function(e){var t=s.isPlainObject(e._item)?e._item.id:e._item;s.isNil(t)||r.push(t);var n=s.filter(i,{id:t});return 1===n.length?(c.push(t),{_item:n[0]}):null}),s.negate(s.isNil));e.setValue(l,0!==s.xor(c,r).length,null,e)}else{var d=s.filter(i,{id:a});1===d.length&&e.setValue(d[0],d[0].id!==n.id,null,e)}}(e),f(e))}function f(e){var t=s.pluck(e.getAllowedValueItems(e),"id"),i=e.getValue(e);if(!s.isEmpty(i))if(s.isArray(i)){var n=i.length>0&&s.isString(i[0])?i:s.pluck(i._item,"id");s.intersection(t,n).length!==n.length&&e.setValue(null,!1,null,e)}else s.contains(t,s.isString(i)?i:i.id)||e.setValue(null,!0,null,e)}function p(e,t,i,n){var a=function(e,t,i){var n=function(e){var t=function(e){var t=e.split(".");"_item"===s.last(t)&&(t=s.dropRight(t));return t}(e);return s.dropRight(t).join(".")}(e);return function(e,t){var i=function e(t,i,n){var a=i.indexOf(".");var o=-1===a?i:i.substring(0,a);var r=s.find(t.fields,function(e){return e.name===o});if(-1===a)return r;if(s.isNil(r)||s.isNil(r.embeddedObjectView)||!s.has(n.widget.model.fullModel,r.embeddedObjectView))return;var c=n.widget.model.fullModel[r.embeddedObjectView];return e(c,i.substring(a+1),n)}(e,t);return!(s.isNil(i)||s.isNil(i.embeddedObjectView)&&s.isNil(i.immutableEmbeddedObjectViewId))}(t,i)?n+"."+i+".id":n+"."+i}(e,t,n);t.field.allowedValuesUnregister=t.widget._scope.$watch(a,function(e,n){return s.isUndefined(e)?(function(e){e.field.allowedValues={},e.field.allowedValues.items={},f(e)}(t),r.when()):d(i,t,e)})}function m(t,i){return i=n.resolvePath(i),s.isEmpty(i)?r.when():e.readObjects(i.selectionViewDefinitionId,t.widget).then(function(e){g(t,e)})}}e.$inject=["ActionService","EnumService","CCUtils","ModelService","NavigationService","StringEncodingService","$q","_"],angular.module("ccFrontend").factory("AllowedValuesService",e)}(),function(){"use strict";function e(e,t,i,n){var a,o,r=i.defer(),s={isDevWriteEnabled:!1,canSetDevWriteEnabled:!0,isDebugLogEnabled:!1,canSetDebugLogEnabled:!0,isDebugActionsEnabled:!1,canSetDebugActionsEnabled:!0,isDesignModeEnabled:!1,canSetDesignModeEnabled:!0},c=!1,l=!1;return{broadcast:function(t,i){e.$broadcast(t,i)},createApp:function(){t.location.href="../app"},getBasicInfo:function(){return u().then(function(){return i.when(a)})},getDevConfig:g,getUserAgent:function(){if(navigator.appVersion.includes("Win"))return"WINDOWS";if(navigator.appVersion.includes("Mac"))return"MAC";if(navigator.appVersion.includes("Linux"))return"LINUX";return"ANY"},init:function(e){o=e,d()},isDesignMode:function(){return g("isDesignModeEnabled")},isDevMode:function(){return l},isEditingMode:function(){return c},setEditingMode:function(e){c=e},isLoading:u,load:d,setDevConfig:function(e,t){s[e]=t}};function d(){return 0!==r.promise.$$state.status&&(r=i.defer()),o.then(function(e){return a={app:{version:n.isUndefined(e[0].appVersion)?null:e[0].appVersion,devmode:!n.isUndefined(e[0].devmode)&&e[0].devmode,name:e[0].name}},l="true"===a.app.devmode,r.resolve()},function(e){o.reject(e)}),r.promise}function u(){return r.promise}function g(e){return s[e]}}
1e.$inject=["$rootScope","$window","$q","_"],angular.module("ccFrontend").factory("ApplicationService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p){new BroadcastChannel("logout").addEventListener("message",function(e){if("logout"===e.data){const e={title:"common.loggedOut.title",module:"common.loggedout.loggedout",preventDesignMode:!0,preventEditingMode:!0},t={icon:"fa-undo",style:"primary",title:"common.reloadApplication",visible:()=>!0,fn:()=>{window.location.reload()}};document.getElementById("wrapper").remove();for(const e of document.getElementsByClassName("modal"))e.remove();for(const e of document.getElementsByClassName("dropdown-menu"))e.remove();c.getCustom(e,[],[t],[])}});let m=d.defer();return{checkNeedToUpdateUserDetails:function(i,n){const a=t.getContext("currentUser"),o=t.getContext("currentMasterdata");("MasterData"===i&&n===o||"Person"===i&&n===a)&&(m=d.defer(),b().then(()=>{e.broadcast("auth.userDetails.update")}))},getCurrentUser:h,hasUserStories:function(e){return i.currentUserHasUserStories(e)},init:function(){return b()},isAnonymous:function(){return h().then(e=>e.isAnonymous)},isDeveloper:function(){return h().then(e=>e.isDeveloper)}};function v(e){!function(e){m.resolve(e)}(e),t.setContext("currentUser",e.id,!0),t.setContext("currentUserIsAnonymous",e.isAnonymous,!0),t.setContext("currentMasterdata",e.masterDataId,!0),a.subscribe(l.menuState,o.handleChange),a.subscribe(l.collapseCollectionsIfLengthExceeds,r.handleCollapseCollectionsIfLengthExceedsChange),a.init(e.preferences)}function h(){return m.promise}function b(){return i.getUserDetails().then(e=>{if(p.isNil(e))throw new Error("User details should always be available.");e.hasGivenConsents&&n.setHasGivenConsents(),v(e)})}}e.$inject=["ApplicationService","NavigationService","ActionService","ConsentService","PersonPreferencesService","MenuStateSettingsService","WidgetSettingsService","CMS_DATA","ModalService","PREFERENCES","$q","$window","$rootScope","$location","_"],angular.module("ccFrontend").factory("AuthService",e)}(),function(){"use strict";angular.module("ccFrontend").provider("Base64Service",function(){var e=this,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";this.$get=function(){return{encode:e.encode,decode:e.decode}},this.encode=function(e){var i,n,a,o,r,s,c,l="",d=0;for(e=function(e){var t="";e=e.replace(/\r\n/g,"\n");for(var i=0;i<e.length;i++){var n=e.charCodeAt(i);n<128?t+=String.fromCharCode(n):n>127&&n<2048?(t+=String.fromCharCode(n>>6|192),t+=String.fromCharCode(63&n|128)):(t+=String.fromCharCode(n>>12|224),t+=String.fromCharCode(n>>6&63|128),t+=String.fromCharCode(63&n|128))}return t}(e);d<e.length;)i=e.charCodeAt(d++),n=e.charCodeAt(d++),a=e.charCodeAt(d++),o=i>>2,r=(3&i)<<4|n>>4,s=(15&n)<<2|a>>6,c=63&a,isNaN(n)?s=c=64:isNaN(a)&&(c=64),l+=t.charAt(o)+t.charAt(r)+t.charAt(s)+t.charAt(c);return l},this.decode=function(e){var i,n,a,o,r,s,c,l="",d=0;for(e=e.replace(/[^A-Za-z0-9\+\/=]/g,"");d<e.length;)o=t.indexOf(e.charAt(d++)),r=t.indexOf(e.charAt(d++)),s=t.indexOf(e.charAt(d++)),c=t.indexOf(e.charAt(d++)),i=o<<2|r>>4,n=(15&r)<<4|s>>2,a=(3&s)<<6|c,l+=String.fromCharCode(i),64!==s&&(l+=String.fromCharCode(n)),64!==c&&(l+=String.fromCharCode(a));return function(e){var t="",i=0,n=0,a=0,o=0;for(;i<e.length;)(n=e.charCodeAt(i))<128?(t+=String.fromCharCode(n),i++):n>191&&n<224?(a=e.charCodeAt(i+1),t+=String.fromCharCode((31&n)<<6|63&a),i+=2):(a=e.charCodeAt(i+1),o=e.charCodeAt(i+2),t+=String.fromCharCode((15&n)<<12|(63&a)<<6|63&o),i+=3);return t}(l)}})}(),function(){"use strict";function e(e,t){return function(){i("helpFieldCache")}(),{clearCache:function(t){e.get(t).removeAll()},getEntries:function(i,n){var a={};return t.each(n,function(n){var o=e.get(i).get(n);t.isUndefined(o)||(a[n]=o)}),a},getEntry:function(t,i){return e.get(t).get(i)},initCache:i,knowsEntry:function(i,n){if(!(t.isUndefined(i)||t.isNull(i)||t.isUndefined(n)||t.isNull(n)))return!t.isUndefined(e.get(i).get(n));return!1},putEntry:function(t,i,n){e.get(t).put(i,n)},removeEntry:function(t,i){e.get(t).remove(i)}};function i(t){e.get(t)||e.createCache(t)}}e.$inject=["CacheFactory","_"],angular.module("ccFrontend").factory("CacheService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{updateCalculatorConfigurationContext:function(s,c){var l=[],d=r.dropRight(s._scope.itemConfig.widgetState.split("."),3).join("."),u=s.data.rules,g=!r.isUndefined(u)&&a.isUuid(u.registrationConditions)?u.registrationConditions:null,f=!r.isUndefined(u)&&a.isUuid(u.completionRulesForest)?u.completionRulesForest:null,p=r.isUndefined(u)||r.isNil(u.completionRuleCalculator)||!a.isUuid(u.completionRuleCalculator.id)?null:u.completionRuleCalculator.id;i.setContext("registrationConditionsId",g,!1,d),i.setContext("completionRulesForestId",f,!1,d),i.setContext("completionRuleCalculatorId",p,!1,d),r.isNil(s.data.rules)?(i.setContext("gradeCalculationConfigurationId",null,!1,d),i.setContext("gradeRounderConfigurationId",null,!1,d),i.setContext("creditPointsCalculationConfigurationId",null,!1,d),i.setContext("completionRuleCalculatorConfigurationId",null,!1,d)):(r.isNil(s.data.rules.gradingSystem)&&function(t,i){var a=t._scope.$watch("widget.data.rules.gradeCalculator",function(){var a=r.find(t.model.fullModel,{entity:"ExamRegRules"});if("edit"===t.form.mode&&!r.isNil(a)&&t.api.field.isVisible("widget.data.rules.gradingSystem",t._scope,a)&&r.isNil(t.data.rules.gradingSystem))return n.readObjects({viewDefinitionId:e.view.examRegVersionGradingSystem,objectId:i},t).then(function(e){r.isNil(e)||r.isNil(e.data)||r.isNil(e.data[0])||r.isNil(e.data[0].gradingSystem)||t.api.field.setValue("rules.gradingSystem",e.data[0].gradingSystem,!0,t._scope)})});t._scope.$on("$destroy",a)}(s,s.data.examinationRegulationVersion),i.setContext("gradeCalculationConfigurationId",s.data.rules.gradeCalculatorConfiguration,!1,d),i.setContext("gradeRounderConfigurationId",s.data.rules.gradeRounderConfiguration,!1,d),i.setContext("creditPointsCalculationConfigurationId",s.data.rules.creditPointsCalculatorConfiguration,!1,d),i.setContext("completionRuleCalculatorConfigurationId",s.data.rules.completionRuleCalculatorConfiguration,!1,d),l.push(c.then(function(e){i.setContext("gradeCalculationConfigurationViewDefinitionId",e.gradeCalculationConfigurationViewDefinitionId,!1,d),i.setContext("gradeRounderConfigurationViewDefinitionId",e.gradeRounderConfigurationViewDefinitionId,!1,d),i.setContext("creditPointsCalculationConfigurationViewDefinitionId",e.creditPointsCalculationConfigurationViewDefinitionId,!1,d),i.setContext("completionRuleCalculatorConfigurationViewDefinitionId",e.completionRuleCalculatorConfigurationViewDefinitionId,!1,d)})));r.isNil(s.data.achievementValuationRule)||r.isNil(s.data.achievementValuationRuleConfiguration)?i.setContext("achievementValuationRuleConfigurationId",null,!1,d):(i.setContext("achievementValuationRuleConfigurationId",s.data.achievementValuationRuleConfiguration,!1,d),l.push(n.getAchievementValuationRuleConfigurationView(s.data.achievementValuationRule.id,s._scope).then(function(e){i.setContext("achievementValuationRuleConfigurationViewDefinitionId",e,!1,d)})));r.isNil(s.data.gradeRounderForAchievementValuationRule)||r.isNil(s.data.gradeRounderConfigurationForAchievementValuationRule)?i.setContext("gradeRounderConfigurationForAchievementValuationRuleId",null,!1,d):(i.setContext("gradeRounderConfigurationForAchievementValuationRuleId",s.data.gradeRounderConfigurationForAchievementValuationRule,!1,d),l.push(n.getRounderConfigurationView(s.data.gradeRounderForAchievementValuationRule.id,s._scope).then(function(e){i.setContext("gradeRounderConfigurationForAchievementValuationRuleViewDefinitionId",e,!1,d)})));r.isNil(s.data.gradeRounderForOverallAssessment)||r.isNil(s.data.gradeRounderConfigurationForOverallAssessment)?i.setContext("gradeRounderConfigurationForOverallAssessmentId",null,!1,d):(i.setContext("gradeRounderConfigurationForOverallAssessmentId",s.data.gradeRounderConfigurationForOverallAssessment,!1,d),l.push(n.getRounderConfigurationView(s.data.gradeRounderForOverallAssessment.id,s._scope).then(function(e){i.setContext("gradeRounderConfigurationForOverallAssessmentViewDefinitionId",e,!1,d)})));return o.all(l).then(function(){t.broadcast("visible.update")})}}}e.$inject=["CMS_DATA","ApplicationService","NavigationService","ActionService","CCUtils","$q","_"],angular.module("ccFrontend").factory("CalculatorConfigurationService",e)}(),function(){"use strict";function e(e,t,i,n){var a="campuscore_calendar_",o="widget.calendar.config";return{KEYS:{VIEW:"view",INACTIVE_EVENT_SOURCES:"inactiveEventSources",FILTER:"filter"}
1,clear:function(e){var i=r(e);t.clear(e,o,i)},get:function(e,i){return l(`GET ${i} from local storage`,s(e)),t.get(e,c(i))},initCalendarConfigurationInScope:function(e){return l("init calendar config",s(e)),i.set(e,o,function(e){if(i.isNil(e))return{};var n=r(e);return t.getConfig(n)}(e)),n.when()},remove:function(e,i){l(`REMOVE ${i} from local storage`,s(e));var n=r(e);t.remove(e,o,c(i),n)},replace:function(e,i){l("REPLACE",s(e));var n=r(e);t.replace(e,o,n)},set:function(e,i,n){l(`SET ${i} to local storage`,s(e));var a=r(e);t.set(e,o,c(i),n,a)}};function r(e){if(i.isNil(e))throw new Error("No widget scope defined.");return a+s(e)}function s(e){if(i.isNil(e)||i.isNil(e.itemConfig))throw new Error("Can't determine item config.");return e.itemConfig.id}function c(e){return`${o}.${e}`}function l(t,n){var a="[ccCalendarStorage] ";i.isNil(t)||(a+=t),i.isNil(n)||(a+=` for element with item config id ${n}`),e.debug(a)}}e.$inject=["LogService","PersistedStorageService","_","$q"],angular.module("ccFrontend").factory("CalendarStorageService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g){const f={DAY_RESOURCE_VIEW:"resourceTimeGridDay",DAY_VIEW:"timeGridDay",LIST_VIEW:"listWeek",MONTH_VIEW:"dayGridMonth",RESOURCE_DAY_VIEW:"resourceTimelineDay",RESOURCE_MONTH_VIEW:"resourceTimelineMonth",RESOURCE_WEEK_VIEW:"resourceTimelineWeek",WEEK_VIEW:"timeGridWeek"},p={DAY_RESOURCE_VIEW_BUTTON:"resourceTimeGridDay",DAY_VIEW_BUTTON:"timeGridDay",WEEK_VIEW_BUTTON:"timeGridWeek",MONTH_VIEW_BUTTON:"dayGridMonth",LIST_VIEW_BUTTON:"listWeek",NEXT_BUTTON:"next",PREVIOUS_BUTTON:"prev",RESOURCE_DAY_VIEW_BUTTON:"resourceTimelineDay",RESOURCE_MONTH_VIEW_BUTTON:"resourceTimelineMonth",RESOURCE_WEEK_VIEW_BUTTON:"resourceTimelineWeek",TITLE:"title",TODAY_BUTTON:"today"},m={TITLE:"calendar.conflict.title",ICON:"fa-bolt"},v={weekNumbers:!0,schedulerLicenseKey:"0042738940-fcs-1669971239",nowIndicator:!0,navLinks:!0,progressiveEventRendering:!0,lazyFetching:!1,slotDuration:"00:15:00",eventOrder:"start,end,id",views:{resourceTimelineMonth:{slotDuration:"24:00:00",slotLabelFormat:[{weekday:"short",day:"numeric",month:"numeric"}]},resourceTimelineWeek:{slotDuration:"06:00:00"},day:{titleFormat:{weekday:"long",day:"numeric",month:"long",year:"numeric"}}},viewHint:e=>e},h={stickyHeaderDates:!0,refetchResourcesOnNavigate:!0,resourceAreaWidth:"20%",resourceOrder:"buildingTitle,title,id",resourceGroupField:"buildingTitle"};return{activateEventSource:function(e,t){const i=n.getContext("calendarUseCase");C(e).addEventSource(w(e,t,i))},deactivateEventSource:function(e,t){C(e).getEventSourceById(t.id).remove()},destroy:function(e){return C(e).destroy(),u.when()},focusEventStart:function(e,t){const i=new Date(t.start[0],t.start[1]-1,t.start[2]),n=f[e.widget.calendar.currentView];e.widget.calendar.fullCalendar.changeView(n,s(i).format("YYYY-MM-DD"),t.id)},focusEventEnd:function(e,t){const i=0===t.end[3]&&0===t.end[4]?new Date(t.end[0],t.end[1]-1,t.end[2]-1):new Date(t.end[0],t.end[1]-1,t.end[2]),n=f[e.widget.calendar.currentView];e.widget.calendar.fullCalendar.changeView(n,s(i).format("YYYY-MM-DD"),t.id)},getEventSourceOfEvent:function(e,t){const i=C(e).getEventById(t);if(!i||!i.extendedProps)return A(`Can't determine event with id ${t}`),null;return i.extendedProps.eventSourceId},getCurrentPeriod:function(e){const t=e.widget.calendar.fullCalendar.view;return{start:t.currentStart,end:t.currentEnd}},initialize:function(n,a,u,p){A("Initializing full calendar configuration.");const I=Object.assign({},v);n.widget.calendar.initialized=!1,g.extend(I,{headerToolbar:{right:b(u.baseConfiguration.headerToolbarRight),left:b(u.baseConfiguration.headerToolbarLeft)},initialView:f.LIST_VIEW,viewDidMount:()=>{n.widget.calendar.initialized||(C(n).changeView(f[u.baseConfiguration.initialView]),n.widget.calendar.initialized=!0)},locale:o.getCurrentLocale().iso}),function(e,t){t.eventClassNames=(t=>{const i=["cc-event"];return t.event.extendedProps.blocker&&i.push("cc-event-blocker"),t.event.extendedProps.minimalistic&&i.push("cc-event-minimalistic"),t.event.id===e.widget.calendar.focusedEvent&&(i.push("cc-event-highlight"),d(()=>{document.getElementsByClassName("cc-event-highlight")[0].scrollIntoView({behavior:"smooth"})},0)),i})}(n,I),function(e,t){const i=l("amDateFormat");t.eventContent=(t=>{if(t.event.extendedProps.minimalistic)return{html:"<span>&nbsp;</span>"};let n=t.event.extendedProps.primaryIcon,a=t.event.extendedProps.primaryIconTitle;t.event.extendedProps.hasConflict&&(n=m.ICON,a=m.TITLE);let r="inherit",s="";"dayGridMonth"===C(e).view.type&&(t.event.allDay||(n=g.isNil(n)?"fa-circle":n,r=t.event.extendedProps.color,s=i(t.event.start,"HH:mm")));const c=g.isNil(n)?"":`<i class="fa prefix-icon ${n}" style="color:${r}" title="${o.getTranslation(a)}"></i>`;return{html:`<span class="text-ellipsis" title="${t.event.title}">${c}${t.event.title}</span>`+`<span class="flex-spacer" style="flex-grow: 1"></span><span>${s}</span>`}})}(n,I),function(e){e.eventOverlap=((e,t)=>!(!e.extendedProps.blocker||!t.extendedProps.blocker)||!e.extendedProps.blocker&&!t.extendedProps.blocker&&(e.extendedProps.overlap&&t.extendedProps.overlap))}(I),function(e,t,i){t.eventClick=(t=>{e.widget.api.showEventDetail(e,t.jsEvent,function(e){return{id:e.id,title:e.title,i18nTitle:e.extendedProps.i18nTitle,icon:e.extendedProps.hasConflict?m.ICON:e.extendedProps.primaryIcon,primaryIconTitle:e.extendedProps.hasConflict?m.TITLE:e.extendedProps.primaryIconTitle,status:e.extendedProps.status,start:e.start,end:e.end,allDay:e.allDay,entity:e.extendedProps.entity,editable:e.extendedProps.editable,resourceIds:S(e.getResources()),showDetail
1s:e.extendedProps.hasDetails,eventSourceId:e.extendedProps.eventSourceId,customData:e.extendedProps.customData}}(t.event),i),t.jsEvent.stopPropagation()})}(n,I,p),function(e,t,i,n){n.baseConfiguration.hasResources&&(e.widget.calendar.hasResources=!0,Object.assign(i,h),i.resources=((i,n,a)=>{e.widget.api.retrieveResources(e,t,i.start,i.end).then(e=>{const t=o.getCurrentLocale().iso;e.forEach(e=>{o.addTranslationField(e.i18nTitle),e.title=e.i18nTitle[t],e.extendedProps={},e.i18nTitleBuilding&&(o.addTranslationField(e.i18nTitleBuilding),e.buildingTitle=e.i18nTitleBuilding[t],e.extendedProps.i18nTitleBuilding=e.i18nTitleBuilding)}),n(e)}).catch(a)}),i.resourceAreaColumns=n.baseConfiguration.resourceColumns.map(e=>({field:e.field,headerContent:t=>o.getTranslation(e.i18nHeader),cellContent:e=>o.getTranslation(e.fieldValue.id)})))}(n,a,I,u),function(e,t,i,n){const a=e.widget.calendar.eventSources.filter(e=>e.active);i.eventSources=a.map(i=>w(e,i,t))}(n,a,I),function(e,n,a){n.viewClassNames=(n=>{e.widget.calendar.initialized&&a.baseConfiguration.rememberView&&i.isAnonymous().then(e=>{e||t.setLastUsedCalendarView(c.getKeyForValue(f,n.view.type))})})}(n,I,u),function(t,i,n){null!==t.widget.api.getCreateObjectAction(t)&&(i.selectable=!0,i.selectMirror=!0,i.selectOverlap=n.selectOverlapAllowed,t.creationLockAquired=!1,i.select=(i=>{if(t.creationLockAquired)return;let n=i.resource?i.resource.id:null;n===e.calendar.NO_ROOM_ID&&(n=null),A(`SELECTED period from ${i.startStr} until ${i.endStr}. (AllDay: ${i.allDay})`),t.creationLockAquired=!0,t.widget.api.createEvent(t,i.start,i.end,i.allDay,n).then(()=>{t.creationLockAquired=!1}).catch(()=>(t.creationLockAquired=!1,x(t)))}))}(n,I,u),function(e,t){t.allDayMaintainDuration=!0,t.eventDrop=(t=>{const i=t.event,n=t.oldEvent;A(`Event with id ${i.id} updated to start at ${i.start} and end at ${i.end}`),E(e,n,i)})}(n,I),function(e,t){t.eventResize=(t=>{const i=t.event,n=t.oldEvent;A(`Event with id ${i.id} resized to start at ${i.start} and end at ${i.end}`),E(e,n,i)})}(n,I),function(e,t){if(t&&t.baseConfiguration){if(g.isNil(t.baseConfiguration.viewRangeStart)&&g.isNil(t.baseConfiguration.viewRangeEnd)||(e.validRange={}),t.baseConfiguration.viewRangeStart){const i=s(c.transformDate(t.baseConfiguration.viewRangeStart));e.validRange.start=i.format("YYYY-MM-DD")}if(t.baseConfiguration.viewRangeEnd){const i=s(c.transformDate(t.baseConfiguration.viewRangeEnd));e.validRange.end=i.format("YYYY-MM-DD")}}}(I,u),function(e){e.buttonText=y(o.getCurrentLocale().iso)}(I),n.widget.calendar.fullCalendar=new r.Calendar(p.calendarElement,I),n.widget.calendar.focusDate=(e=>{const t=f[n.widget.calendar.currentView];n.widget.calendar.fullCalendar.changeView(t,s(e).format("YYYY-MM-DD"))});const D=n.widget.calendar.fullCalendar.changeView;return n.widget.calendar.fullCalendar.changeView=((e,t,i)=>(n.widget.calendar.currentView=c.getKeyForValue(f,e),n.widget.calendar.focusedEvent=i,D.apply(n.widget.calendar.fullCalendar,[e,t]))),d(()=>{C(n).render(),["fc-prev-button","fc-next-button"].forEach(e=>{document.getElementsByClassName(e)[0].addEventListener("click",()=>n.widget.calendar.focusedEvent=void 0)})},0),I},refetchEventSource:function(e,t){A(`Refetch event source ${t}`);const i=C(e).getEventSourceById(t);if(g.isNil(i))return A(`Retrieved invalid eventSourceId for refetching: ${t}`),u.when();return i.refetch(),u.when()},refetchResourcesAndEvents:function(e){A("Refetch resources");const t=C(e);e.widget.calendar.hasResources&&t.refetchResources();t.refetchEvents()},removeEvent:function(e,t){A(`Remove event with id ${t}`);const i=C(e).getEventById(t);i&&i.remove();return u.when()},switchI18n:function(e){const t=C(e),i=o.getCurrentLocale().iso;return t.setOption("locale",i),t.getEvents().forEach(e=>e.setProp("title",e.extendedProps.i18nTitle[i])),function(e,t){C(e).setOption("buttonText",y(t))}(e,i),t.getResources().filter(e=>!!e._resource.extendedProps&&!!e._resource.extendedProps.i18nTitleBuilding).forEach(e=>e.setExtendedProp("buildingTitle",e._resource.extendedProps.i18nTitleBuilding[i])),u.when()},unselect:x};function b(e){return e.map(e=>e.map(e=>{if(!p[e])throw new Error(`Header element ${e} does not exist.`);return p[e]}).join(",")).join(" ")}
1function w(t,i,n){return g.extend(i,{display:i.displayBackground?"background":"auto",events:(a,r,s)=>{t.widget.api.retrieveEventsForEventSource(t,n,i.id,a.start,a.end).then(n=>{const a=t.widget.calendar?t.widget.calendar.currentView:void 0,s=n.map(t=>(function(t,i,n){if(t.blocker&&n&&f[n]===f.RESOURCE_MONTH_VIEW)return null;const a=o.getCurrentLocale().iso,r=t.title||{},s=t.color||i.color,l={allDay:t.allDay,backgroundColor:s,borderColor:s,editable:t.editable,extendedProps:{overlap:t.overlap,editable:t.editable,i18nTitle:r,entity:t.entity,eventSourceId:i.id,color:s,hasConflict:t.hasConflict,minimalistic:t.minimalistic,blocker:t.blocker,hasDetails:t.hasDetails,customData:t.customData},end:c.transformDate(t.end),id:t.id,resourceEditable:t.resourceEditable,resourceIds:t.resourceIds,start:c.transformDate(t.start),title:r[a]||""};r&&o.addTranslationField(r);l.resourceIds&&0!==l.resourceIds.length||(l.resourceIds=[e.calendar.NO_ROOM_ID]);t.groupId&&(l.groupId=t.groupId);t.primaryIcon&&(l.extendedProps.primaryIcon=t.primaryIcon,t.primaryIconTitle&&(l.extendedProps.primaryIconTitle=t.primaryIconTitle));t.status&&(l.extendedProps.status=t.status,t.status.forEach(e=>o.addTranslationField(e.value)));return l})(t,i,a)).filter(e=>null!==e);r(s)}).catch(s)}})}function y(e){return Object.entries(p).reduce((e,[t,i])=>(e[i]=o.getTranslation(`calendar.HEADER_ELEMENTS.${t}`),e),{})}function x(e){return C(e).unselect(),u.when()}function C(e){if(e)return g.get(e,"widget.calendar.fullCalendar");A("API not initialized.")}function S(t){return g.isNil(t)||g.isEmpty(t)?[]:t.filter(e=>!!e).map(e=>e.id).filter(t=>t!==e.calendar.NO_ROOM_ID)}function E(e,t,i){e.widget.api.updateEvent(e,{id:i.id,title:i.title,start:i.start,end:i.end,allDay:i.allDay,resourceIds:S(i.getResources())}).then(e=>{if(e&&e.error)throw new Error}).catch(()=>{i.setDates(t.start,t.end,{allDay:t.allDay}),i.setResources(t.getResources())})}function A(e){a.debug(`[ccCalendar] ${e}`)}}e.$inject=["CMS_DATA","ActionService","AuthService","NavigationService","LogService","I18nService","FullCalendar","moment","CCUtils","$filter","$timeout","$q","_"],angular.module("ccFrontend").factory("FullCalendarService",e)}(),function(){"use strict";function e(e,t,i,n,a){return{getEndDateWithCalendarWeek:function(t){var n=e.isDateTimePeriod(t)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY",a=i(t).week();return o(t,n)+r(a)},getStartDateWithCalendarWeek:function(t){var n=e.isDateTimePeriod(t)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY",a=i(t).week();return o(t,n)+r(a)},getPeriodWithCalendarWeeks:function(t,n){var a=e.isDateTimePeriod(t)?"DD.MM.YYYY, HH:mm":"DD.MM.YYYY",s=o(t,a),c=o(n,a),l=i(t).week(),d=i(n).week(),u=i(t).year(),g=i(n).year();if(l===d)return s+" - "+c+r(l);return s+" - "+c+r(l,d,u,g)},getCalendarWeekDisplay:r};function o(e,t){return n("amDateFormat")(i(e),t)}function r(e,i,n,o){var r=t.getTranslation("common.calendarWeek")+" ";return a.isNil(i)?" ("+r+e+") ":a.isNil(n)||a.isNil(o)||n===o?" ("+r+e+" - "+r+i+") ":" ("+r+e+" "+n+" - "+r+i+" "+o+")"}}e.$inject=["DatePeriodService","I18nService","moment","$filter","_"],angular.module("ccFrontend").factory("CalendarWeekService",e)}(),function(){"use strict";function e(e,t,i,n,a){var o="full";return{canCopyToClipboard:function(e){return e.classList.contains("cc-copy-to-clipboard")},copyToClipboard:function(e,t){if(!document.execCommand)return;if(void 0===e||null===e||""===e)return;const i=document.createElement("div");i.id="tempCopyToClipboard",e.split("\n").forEach(e=>{const t=document.createElement("div");t.appendChild(document.createTextNode(e)),i.appendChild(t)}),document.body.append(i);const n=document.createRange();n.selectNode(i),window.getSelection().removeAllRanges(),window.getSelection().addRange(n),document.execCommand("copy"),window.getSelection().removeAllRanges(),i.remove(),t.classList.add.apply(t.classList,["cc-copy-to-clipboard-success"]),setTimeout(function(){t.classList.remove.apply(t.classList,["cc-copy-to-clipboard-success"])},1e3)},doLayout:function(){var e=i.defer();return n(function(){if(-1!==navigator.userAgent.indexOf("MSIE")||navigator.appVersion.indexOf("Trident/")>0){var t=document.createEvent("UIEvents");t.initUIEvent("resize",!0,!1,window,0),window.dispatchEvent(t)}else window.dispatchEvent(new Event("resize"));e.resolve()},0),e.promise}
1,getInnerHeight:function(){return t.innerHeight},getUserMenuState:function(){return o},hasSize:function(e){return a.is(e)},onResize:function(e){angular.element(t).bind("load resize",function(){e()})},setup:function(){var e=i.defer();a.rules={ccSmall:"(max-width: 319px)",ccMedium:"(min-width: 320px) and (max-width: 1023px)",ccLarge:"(min-width: 1024px)"},(a.is("ccSmall")||a.is("ccMedium"))&&$("body").addClass("body-small").addClass("mini-navbar");return e.resolve(!0),e.promise},setUserMenuState:function(t){switch(o=t,t){case"collapsed":$("body").addClass("body-small").addClass("mini-navbar").removeClass("hidden-navbar");break;case"hidden":$("body").addClass("body-small").addClass("mini-navbar").addClass("hidden-navbar");break;case"full":$("body").removeClass("body-small").removeClass("mini-navbar").removeClass("hidden-navbar");break;default:a.is("ccSmall")||a.is("ccMedium")?$("body").addClass("body-small").addClass("mini-navbar").removeClass("hidden-navbar"):$("body").removeClass("body-small").removeClass("mini-navbar").removeClass("hidden-navbar")}e.broadcast("layout.refresh")}}}e.$inject=["ApplicationService","$window","$q","$timeout","screenSize"],angular.module("ccFrontend").factory("ClientService",e)}(),function(){"use strict";function e(e){return{getCollectionItemRendererForViewDefinition:function(t,i){if(e.isNil(i))return null;var n=e.find(t.itemConfig.collectionWidgetPathViewDefinitionMapping,function(e){return e.mutableViewDefinition===i||e.viewDefinition===i});if(!e.isNil(n))return n.collectionItemRenderer;if(i===t.itemConfig.viewDefinition&&!e.isNil(t.itemConfig.noPathItemRenderer))return t.itemConfig.noPathItemRenderer;return"label"}}}e.$inject=["_"],angular.module("ccFrontend").factory("CollectionService",e)}(),function(){"use strict";angular.module("ccFrontend").factory("ConsentService",function(){let e=!1;return{hasGivenConsents:function(){return e},setHasGivenConsents:function(){e=!0}}})}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){return{getLandingPageWidgetProducer:function(i){return l=>e.getCurrentUser().then(e=>t.readReducedObjectsNeo({viewDefinitionId:i,pathId:l.receivedContext,pageSize:l.widgetConfig.numberOfMemosToShow}).then(t=>{if(l.noResult=!t.data||!t.data.length,l.noResult)return void(l.loading=!1);const i=t.data.map(t=>{n.addTranslationField(t.status.name);const i=t.responsiblePerson.id===e.id,o=a.isInPast(t.timeStamp)&&t.status.id!==s.contact.contactMemoStatus.DONE,l=t.status.id===s.contact.contactMemoStatus.DONE;return t.procedures.value.map(e=>e.name).forEach(n.addTranslationField),{id:t.id,statusI18n:t.status.name.id,statusIcon:t.status.icon,typeI18n:`entity.ContactMemoType.${t.type}`,typeIcon:r.getEnumIcon("ContactMemoType",t.type),timeStamp:c.transformDate(t.timeStamp),responsiblePerson:t.responsiblePerson.$displayName,procedures:t.procedures.value,isOverdue:o,isMine:i,isDone:l}});i.sort((e,t)=>o.getDateTimeSortComparator(e.timeStamp,t.timeStamp)).reverse(),l.memosToShow=i}))},updateMemo:function(e,t){i.invokeInstance("UpdateContactMemoAction",{memoId:e},t,c.noTransformationFn,c.noTransformationFn,c.noTransformationFn).then(t.init).catch(c.noopFn)}}}e.$inject=["AuthService","ActionService","ActionInvocationService","I18nService","DateService","SortService","EnumService","CMS_DATA","CCUtils"],angular.module("ccFrontend").factory("ContactService",e)}(),function(){"use strict";function e(e,t,i,n){return{determineStepToGoBackTo:o,getActionUserInputControls:function(e){const i=[];if(n.has(e,"$actionInstance")){const o=e.$actionInstance,s=o.$action.userInput[o.$gatherStep];i.push(a(o)),e.preventContinue||i.push(function(e,i){return{icon:"fa-long-arrow-alt-right",style:"success",title:i.successLabel,visible:function(a,o){if(n.has(e,"$widget.action.canContinue")&&!1===e.$widget.action.canContinue)return!1;if(!n.isUndefined(i)){var r=i.type,s=e.$widget;return!n.isUndefined(s)&&("modalForm"===r||"modalSummaryForm"===r||"modalTable"===r&&(s.api.hasApi(t.selection.id,s._scope)&&s.api.selection.hasSelectedAny(s._scope)||i.noUserInteractionRequired))}return!1},fn:function(t,i){e.$goForward(t)}}}
1(o,s)),e.preventCancel||i.push(r("cancel",function(e){o.$cancel(e)}))}return i},getAlertControls:function(){return[r("ok")]},getCancelControl:l,getGoBackControl:a,getConfirmationControls:function(){return[r("yes"),r("no")]},getControl:r,getLookupControls:function(){return[r("selectAny"),r("cancel")]},getSelectionControls:function(e){return n.union(n.map(e.customData.choices,function(e){return{icon:e.icon,style:e.style,title:e.name,visible:function(e,t){return!0},fn:function(t,i){t.api._modal.close(e.name)}}}),[r("cancel")])},getSuccessControl:s};function a(e){return{icon:"fa-long-arrow-alt-left",style:"success",title:"common.modalControl.goBack",visible:function(t,i){var a=o(e);return e.$gatherStep>0&&!n.isNil(a)},fn:function(t,i){e.$goBack(t)}}}function o(e){for(var t=e.$gatherStep-1;t>=0;t--){var i=e.$action.userInput[t];if(!n.startsWith(i.type,"origin")&&!n.startsWith(i.type,"context")&&"serverInput"!==i.type&&!n.startsWith(i.type,"custom"))return t}}function r(e,t,i,a){switch(e){case"ok":return s("fa-check","success","common.ok",t,i,a);case"yes":return s("fa-check","success","common.yes",t,i,a);case"no":return{icon:"fa-times",style:"danger",title:"common.no",visible:i||function(e,t){return!0},fn:t||function(e,t){e.api._modal.dismiss("no")},onEscFn:t||function(e,t){e.api._modal.dismiss("no")}};case"cancel":return l("fa-ban","danger","common.modalControl.cancel",t,i,a);case"close":return{icon:"fa-times",style:"danger",title:"common.modalControl.close",visible:i||function(e,t){return!0},fn:t||function(e,t){e.api._modal.close("close")},onEscFn:t||function(e,t){e.api._modal.close("close")}};case"check":if(n.isUndefined(t))throw new Error("custom check function required");return{icon:"fa-search",style:"primary",title:"common.modalControl.check",visible:i||function(e,t){return!0},fn:t};case"selectAtLeastOne":return{icon:"fa-check",style:"success",title:"common.select",visible:i||function(e,t){return e.api.selection.hasSelectedAny(e._scope)},fn:t||function(e,t){e.api._modal.close(e.api.selection.get(e._scope))},onContinueFn:t||function(e,t){e.api.selection.hasSelectedAny(e._scope)&&e.api._modal.close(e.api.selection.get(e._scope))}};case"selectAny":return{icon:"fa-check",style:"success",title:"common.select",visible:i||function(e,t){return!0},fn:t||function(e,t){e.api._modal.close(e.api.selection.get(e._scope))},onContinueFn:t||function(e,t){e.api._modal.close(e.api.selection.get(e._scope))}};case"selectOne":return{icon:"fa-check",style:"success",title:"common.select",visible:i||function(e,t){return e.api.selection.hasSelectedOne(e._scope)},fn:t||function(e,t){e.api._modal.close(e.api.selection.get(e._scope))},onContinueFn:t||function(e,t){e.api.selection.hasSelectedOne(e._scope)&&e.api._modal.close(e.api.selection.get(e._scope))}};default:throw new Error("unknown controlId requested")}}function s(e,t,i,n,a,o){return{icon:e,style:t,title:i,visible:a||function(e,t){return c(e.data)},fn:n||function(e,t){c(e.data)&&e.api._modal.close()},onContinueFn:n||function(e,t){c(e.data)&&e.api._modal.close()}}}function c(t){if(n.isNil(t)||n.isNil(t.confirmWithAdditionalInput))return!0;if(n.isArray(t.confirmWithAdditionalInput))return n.some(t.confirmWithAdditionalInput,e=>e===t.additionalConfirmation);if(e.isTranslationField(t.confirmWithAdditionalInput)){const e=n.filter(t.confirmWithAdditionalInput,(e,t)=>"id"!==t&&"version"!==t);return n.some(e,e=>e===t.additionalConfirmation)}return t.confirmWithAdditionalInput===t.additionalConfirmation}function l(e,t,i,n,a,o){return{icon:e,style:t,title:i,visible:a||function(e,t){return!0},fn:n||function(e,t){e.api._modal.dismiss("cancel")},onEscFn:n||function(e,t){e.api._modal.dismiss("cancel")}}}}e.$inject=["ModelService","WIDGET_API","$rootScope","_"],angular.module("ccFrontend").factory("ControlService",e)}(),function(){"use strict";function e(e){return{isInPast:function(t){const i=e(t);return i.isValid()&&i.diff(e())>0}}}e.$inject=["moment"],angular.module("ccFrontend").factory("DateService",e)}(),function(){"use strict";function e(e,t,i){return{dateComparator:function(e,t,i){if(!e&&!t)return 0;if(!e)return 1;if(!t)return-1;const n=new Date(e[0],e[1],e[2],e[3]||0,e[4]||0,e[5]||0,e[6]||0),a=new Date(t[0],t[1],t[2],t[3]||0,t[4]||0,t[5]||0,t[6]||0),o=n-a;return o>0?1:o<0?-1:0}
1,getDateDisplayName:function(e,n,a){const o=i.clone(e[n]),r=t(o);if(r.isValid()){const e=a?"DD.MM.YYYY":"DD.MM.YYYY, HH:mm";return!a||"endTime"!==n&&"endDate"!==n||0===r.hours()&&0===r.minutes()&&r.subtract(1,"days"),r.format(e)}return""},hasEnd:function(e){return n(e)},hasEndForValue:n,hasStart:function(e){return a(e)},hasStartForValue:a,isActive:function(t){let i=e.getLatestRequestMoment();(a(t)&&!o(t.startDate)||n(t)&&!o(t.endDate))&&(i=i.startOf("day"));if(a(t)&&n(t))return i.isSameOrAfter(t.startDate)&&i.isSameOrBefore(t.endDate);if(a(t))return i.isSameOrAfter(t.startDate);if(n(t))return i.isSameOrBefore(t.endDate);return!1},isDateTimePeriod:o};function n(e){return!!e&&!!e.endDate}function a(e){return!!e&&!!e.startDate}function o(e){return!!e&&e.length>3}}e.$inject=["NavigationService","moment","_"],angular.module("ccFrontend").factory("DatePeriodService",e)}(),function(){"use strict";angular.module("ccFrontend").factory("DatePickerService",function(){return{getDatePickerTemplate:function(){return'<div class="datetimepicker table-responsive" data-ng-init="$parent.childScope = this"><table class="table table-condensed {{ data.currentView }}-view"><thead><tr><th class="left" data-ng-click="$parent.manualChangeView ? $parent.manualChangeView(data.currentView, data.leftDate, $event) : changeView(data.currentView, data.leftDate, $event)" data-ng-show="data.leftDate.selectable && !$parent.disableControls"><i class="fa fa-arrow-left"><span class="sr-only">{{ screenReader.previous }}</span></i></th><th data-ng-show="$parent.disableControls">&nbsp;</th><th class="switch" colspan="{{$parent.numberOfColumns}}" data-ng-show="data.previousViewDate.selectable" data-ng-click="!$parent.disableControls && changeView(data.previousView, data.previousViewDate, $event)">{{ data.previousViewDate.display }}</th><th class="right" data-ng-click="$parent.manualChangeView ? $parent.manualChangeView(data.currentView, data.rightDate, $event) : changeView(data.currentView, data.rightDate, $event)" data-ng-show="data.rightDate.selectable && !$parent.disableControls"><i class="fa fa-arrow-right"><span class="sr-only">{{ screenReader.next }}</span></i></th><th data-ng-show="$parent.disableControls">&nbsp;</th></tr><tr><th class="week" data-ng-if="$parent.activeDayOfWeekNumber !== undefined"><cc-i18n data-key="common.calendarWeek"></cc-i18n></th><th class="dow" data-ng-repeat="day in data.dayNames">{{ day }}</th></tr></thead><tbody><tr data-ng-if="data.currentView !== \'day\'"><td colspan="7"><span class="{{ data.currentView }}" data-ng-repeat="dateObject in data.dates" data-ng-class="{current: dateObject.current, active: dateObject.active, past: dateObject.past, future: dateObject.future, disabled: !dateObject.selectable}" data-ng-click="$parent.$parent.$parent.manualChangeView ? $parent.$parent.$parent.manualChangeView(data.nextView, dateObject, $event) : changeView(data.nextView, dateObject, $event)">{{ dateObject.display }}</span></td></tr><tr data-ng-if="data.currentView === \'day\'" data-ng-repeat="week in data.weeks"><td class="day week" data-ng-if="$parent.$parent.$parent.activeDayOfWeekNumber !== undefined" data-ng-click="changeView(data.nextView, week.dates[$parent.$parent.$parent.$parent.selectableArrayItem], $event)" data-ng-class="{current: week.dates[$parent.$parent.$parent.$parent.selectableArrayItem].current, active: week.dates[$parent.$parent.$parent.$parent.selectableArrayItem].active, past: week.dates[$parent.$parent.$parent.$parent.selectableArrayItem].past, future: week.dates[$parent.$parent.$parent.$parent.selectableArrayItem].future}">{{week.dates[$parent.$parent.$parent.$parent.selectableArrayItem].week}}</td><td data-ng-repeat="dateObject in week.dates" data-ng-click="(!$parent.$parent.$parent.$parent.manualChangeView || (!dateObject.past && !dateObject.future)) && changeView(data.nextView, dateObject, $event)" class="day" data-ng-class="{current: dateObject.current, active: dateObject.active, past: dateObject.past, future: dateObject.future, disabled: !dateObject.selectable}"><p data-ng-hide="$parent.$parent.$parent.$parent.manualChangeView && (dateObject.past || dateObject.future)">{{ dateObject.display }}</p></td></tr></tbody></table></div>'}}})}(),function(){"use strict";function e(e,t){return{durationToNumberAndUnit:function(e,i,a){if(t.isNil(e))return;if(0===e)return{number:0,unit:i};const o=[...a];o.sort((t,i)=>{const a=n(e,t)-n(e,i);return 0===a?i.milliseconds-t.milliseconds:a});const r=o[0];return{number:e/r.milliseconds,unit:r}},getDurationUnitsInRange:i,getDefaultDurationUnit:function(e,t,n,a){const o=function(e,t,i){if(e<t)return t;if(e>i)return i;return e}(t,n,a),r=i(e,o,o);if(1===r.length)return r[0];return r[r.length-1]}};function i(i,n,a){const o=t.sortBy(i.data,"milliseconds"),r=t.isNil(n)?0:n,s=t.isNil(a)?o[o.length-1].milliseconds:a,c=o.filter(e=>e.milliseconds>=r&&e.milliseconds<=s);return t.each(c,t=>e.addTranslationField(t.name)),c}function n(e,t){const i=(e/t.milliseconds).toString(10);return-1===i.indexOf(".")?0:i.substring(i.indexOf(".")+1).length}}e.$inject=["I18nService","_"],angular.module("ccFrontend").factory("DurationService",e)}(),function(){"use strict";function e(e,t){return{encodeMD5:function(i){if(t.isUndefined(i)||t.isEmpty(i))return i;return e.createHash(i)}}}e.$inject=["md5","_"],angular.module("ccFrontend").factory("EncryptionService",e)}(),function(){"use strict";function e(e,t,i,n){return{getEnumType:a,getEnumTypeFromWithinObjectCollection:function(e){return e.fields.find(e=>e.enum).type},getEnumValues:function(i,n){const o=n||a(i),r=e.getEnum(o);if(!r)return[];return Object.values(r).sort((e,t)=>
1e.ordinal-t.ordinal).map(e=>({id:e.name,name:`entity.${o}.${e.name}`,$displayName:t.getTranslation(`entity.${o}.${e.name}`)}))},getEnumValuesFromWithinObjectCollection:function(e,t){const i=e.fields.find(e=>e.enum),a=i.name,o=i.type,r=t.map(e=>e[a]);return n.sortBy(r,e=>l(o,e))},getEnumIcon:o,getIcon:c,getLabel:l,renderEnumValuesAndCountsAsHtml:function(e,t){return r(e,t,s)},renderEnumValuesAndCountsAsText:function(e,t){return r(e,t,l)},renderOne:s};function a(e){const t=e.field.type;if("String"!==t)return t;let i=e.valuePath;void 0!==i&&i.endsWith("._item")&&(i=i.substring(0,i.length-6));const a=`${i=i.substring(0,i.lastIndexOf("."))}.${e.field.enumTypeOverridePathToFieldContainingEnumType}`;return n.get(e,a)}function o(t,i){const n=e.getEnumToValueToIconMap(),a=n[t][i].icon,o=n[t][i].additionalIconClasses;return a||o?`${a} ${o.join(" ")}`:null}function r(e,t,i){if(!Array.isArray(e))return i(t,e);const n=e.reduce((e,t)=>(e[t]=(e[t]||0)+1,e),{});return Object.entries(n).map(([n,a])=>{const o=1===e.length?"":` (${a})`;return i(t,n)+o}).join(", ")}function s(e,t){if(null===t||void 0===t)return"";const n=l(e,t);return`<span title="${i(n)}">${c(e,t)}${i(n)}</span>`}function c(e,t){const i=o(e,t);return i?`<i class="fa ${i} prefix-icon"></i>`:""}function l(e,i){return t.getTranslation(`entity.${e}.${i}`)}}e.$inject=["ModelService","I18nService","$sanitize","_"],angular.module("ccFrontend").factory("EnumService",e)}(),function(){"use strict";function e(e,t,i,n){return{fetchViewDefinitionIfNecessaryAndReturnVisibility:function(a,o,r,s,c){var l=function(a){var s=n.isNil(a)?null:a;return t.setContext(o,s,!1,r),e.broadcast("visible.update"),i.when(!n.isNil(a))},d=function(){return a().then(l,function(){return l(null)})},u=t.getContext(o);if(n.isUndefined(u))return s.$on(c,d),d();if(n.isNull(u))return i.when(!1);return i.when(!0)}}}e.$inject=["ApplicationService","NavigationService","$q","_"],angular.module("ccFrontend").factory("WidgetDynamicViewDefinitionService",e)}(),function(){"use strict";function e(e){return{getActiveFeatures:t,isFeatureActive:function(i){return e.contains(t(),i)}};function t(){return FeatureHelper.getActiveFeatures()}}e.$inject=["_"],angular.module("ccFrontend").factory("FeatureService",e)}(),function(){"use strict";function e(e,t,i,n){var a=i.defer(),o=[];return{getDefaultConfiguration:function(e){var t=n.find(o,function(t){return t.isApplicable(e)}
1);return n.isUndefined(t)?{}:t.config},init:function(){0!==a.promise.$$state.status&&(a=i.defer());return e.isLoading().then(r).then(a.resolve)},loading:function(){return a.promise}};function r(){var e=function(e,t,i,n){o.push({isApplicable:e,config:{viewDisplayType:t,editDisplayType:i,immutableEmbeddedObjectViewId:n||null}})},a=function(t,i,a,o){e(function(e){return n.contains(t,e.type)},i,a,o)},r=function(t,i,n,a){e(function(e){return t(e)},i,n,a)};return r(t.isColor,"COLOR","COLORPICKER"),a(["Integer","int","Float","float","Double","double","Long","long"],"LABEL","NUMBER"),a(["Boolean","boolean"],"BOOLEAN","CHECKBOX"),a(["Duration"],"DURATION","DURATIONPICKER"),a(["LocalDate","LocalDateTime"],"DATE","DATEPICKER"),a(["MonthDay"],"MONTHDAY","MONTHDAYPICKER"),a(["Money"],"MONEY","MONEYPICKER"),a(["CalendarRecurrenceRule"],"RRULE"),a(["Relationship"],"RELATIONSHIP"),a(["String"],"LABEL","TEXT"),a(["TranslationField"],"TRANSLATIONFIELD","OBJECT","b83ee4b7-2097-4f16-9af3-301cec7bb90b"),a(["VirtualMessageRecipient"],"MESSAGE_RECIPIENT"),a(["MessageContent"],"MESSAGE_SUBJECT"),r(t.isEnumField,"ENUMVALUE","SELECT"),r(t.isComposition,"OBJECT","OBJECT"),r(t.isCompositionBackReference,"OBJECT","OBJECT"),r(t.isRelation,"DISPLAYNAME","TYPEAHEAD"),i.when()}}e.$inject=["ApplicationService","ModelService","$q","_"],angular.module("ccFrontend").factory("FieldService",e)}(),function(){"use strict";function e(e,t,i,n,a){return{fetchAndSetFileContainerIds:function(i,n,a,o){return t.getContextAsPromise(n,i._scope).then(n=>e.readObjects({viewDefinitionId:a,objectId:n},i).then(e=>{e.data.length>0?(t.setContext("fileContainerContentId",e.data[0][o].contents.id,!1,i._scope.itemConfig.widgetState),t.setContext("fileContainerId",e.data[0][o].id,!1,i._scope.itemConfig.widgetState)):(t.setContext("fileContainerContentId",null,!1,i._scope.itemConfig.widgetState),t.setContext("fileContainerId",null,!1,i._scope.itemConfig.widgetState))}))},selectFirstItemAndExtendWidgetApi:function(e){e.data.length>0&&(e.api.selection.select(e.data[0],e._scope),i.walk(e.data,function(e){e.isSharedOrExportedFilesFolder=o(e)}));e.api.isNoSystemFolder=(()=>!!r(e)&&!e.selection.selected[0].systemFolder),e.api.isNoSharedFilesFolder=(()=>!!r(e)&&!e.selection.selected[0].isSharedFilesFolder),e._scope.$on("sharedFileCount.update",function(t){if(!a.isNil(e.selection.selected[0])){const t=e.api.model.getBaseModel(e._scope);n.objectUpdated([{entity:t[Object.keys(t)[0]].entity,objectId:e.selection.selected[0].id}],e.api.model.getAffectedEntities(e._scope),e.id)}})},isSelectedElementSharedOrExportedFilesFolder:function(e){if(r(e)){const t=e.selection.selected[0];return o(t)}return"otherFolder"},canDeleteNodeFn:function(e){return!!r(e)&&!function(e){return e.selection.selected[0].systemFolder}(e)}};function o(e){return e.isSharedFilesFolder?"sharedFolder":e.isExportedFilesFolder?"exportedFilesFolder":"otherFolder"}function r(e){return!!e.selection&&!!e.selection.selected&&!!e.selection.selected[0]}}e.$inject=["ActionService","NavigationService","TreeService","WidgetService","_"],angular.module("ccFrontend").factory("FileTreeService",e)}(),function(){"use strict";function e(e,t,i,n,a){var o=[],r=n.defer();return function(){0!==r.promise.$$state.status&&(r=n.defer());e.readObjects(i.view.gradingSystem).then(function(e){o=e.data,a.each(o,function(e){t.addTranslationField(e.name),a.each(e.gradeSpecifications,function(e){t.addTranslationField(e.name)})}),r.resolve()})}(),{calculateGradeByUserInput:function(e,t,i){if(x(e,t,i))return e;var n=e>9?e/10:e;return x(n,t,i)?n:e},findGradeSpecification:s,getFreeInputMinimum:c,getFreeInputMaximum:l,getGradeSpecifications:d,getGradingSystem:u,getGradingSystems:function(){return o},getNewEmptyGrade:g,getNewGrade:f,getNumericScale:p,hasFixedNumericScale:function(e){var t=u(e);return a.isNull(t)?[]:t.numericGrades&&p(e).length>0},isAlphanumeric:function(e){var t=u(e);return a.isNull(t)?[]:!t.numericGrades},isGradeFilled:m,isGradeSelected:v,isGradingSystemSelected:h,isNumeric:function(e){var t=u(e);return a.isNull(t)?[]:t.numericGrades},isNumericGradeInScale:function(e){return a.contains(p(e.gradingSystem),e.numericGrade)},isWithDistinction:b,isWithDistinctionPossible:w,isWithoutEvaluation:y,isValidNumericGrade:x,linkGradingApi:function(e){a.extend(e,{getFreeInputMinimum:c,getFreeInputMaximum:l,isGradeFilled:m,isGradeSelected:v,isGradingSystemSelected:h,isWithDistinction:b,isWithDistinctionPossible:w,isWithoutEvaluation:y,selectGrade:S,selectGradingSystem:E,setWithDistinction:A})},loading:function(){return r.promise},selectGrade:S,selectGradingSystem:E,setWithDistinction:A};function s(e,t){return function(e,t){return a.isNull(t)?void 0:a.find(d(e),function(e){return e.fixedAlphanumericGrade===t})}(e,t.alphanumericGrade)||function(e,t){return a.isNull(t)?void 0:a.find(d(e),function(e){return e.fixedNumericGrade===t||e.numericGradeMinimum<=t&&e.numericGradeMaximum>=t})}(e,t.numericGrade)}function c(e){var t=u(e);return a.isNull(t)?null:t.freeInputMinimumValue}function l(e){var t=u(e);return a.isNull(t)?null:t.freeInputMaximumValue}function d(e){if(a.isNil(e))return[];var t=u(e);return a.isNull(t)?[]:a.sortBy(t.gradeSpecifications,"position")}function u(e){return a.find(o,function(t){return t.id===e})||null}function g(){return{gradingSystem:null,numericGrade:null,alphanumericGrade:null,withDistinction:!1,noEvaluation:!1,onlyPredefinedGradesAllowed:!1}}function f(e,t,i,n,o){var r=u(n).numericGrades?function(e,t,i,n,o){var r;a.isUndefined(n)?r=o:a.isNull(n.fixedNumericGrade)?a.isNull(n.numericRangeMinimum)||(r=n.numericRangeMinimum,e.freeInput.value=r):(r=n.fixedNumericGrade,e.freeInput.value=null);return C(t,{gradingSystem:i,numericGrade:r,alphanumericGrade:null})}(e,t,n,i,o):function(e,t,i,n){return e.freeInput.value=null,C(t,{gradingSystem:i,numericGrade:null,alphanumericGrade:a.isNil(n)?null:n.fixedAlphanumericGrade})}(e,t,n,i);return a.extend(r,{withDistinction:!!w(n,i,t)&&t.withDistinction,noEvaluation:t.noEvaluation,onlyPredefinedGradesAllowed:t.onlyPredefinedGradesAllowed})}function p(e){var t=u(e);return a.without(a.uniq(a.pluck(t.gradeSpecifications,"fixedNumericGrade")),null)}function m(e){return!a.isUndefined(e)&&(!a.isNull(e.numericGrade)||!a.isNull(e.alphanumericGrade))}function v(e,t){return!(a.isUndefined(e)||a.isNull(e.numericGrade)&&a.isNull(e.alphanumericGrade))&&(u(e.gradingSystem).numericGrades?t.fixedNumericGrade===e.numericGrade||t.numericRangeMinimum<=e.numericGrade&&t.numericRangeMaximum>=e.numericGrade:t.fixedAlphanumericGrade===e.alphanumericGrade)}function h(e,t){return!a.isNil(e)&&!a.isNull(e.gradingSystem)&&t.id===e.gradingSystem}function b(e){return!a.isNull(e)&&!a.isUndefined(e)&&!0===e.withDistinction}function w(e,t,i){return a.isUndefined(t)&&(t=s(e,i)),!a.isUndefined(t)&&!a.isNull(t)&&t.withDistinction}function y(e){return!a.isNull(e)&&!a.isUndefined(e)&&!0===e.noEvaluation}function x(e,t,i){if(a.isNil(t.gradeSpecifications))return!1;var n=!i.onlyPredefinedGradesAllowed&&e>=t.freeInputMinimumValue&&e<=t.freeInputMaximumValue,o=a.find(t.gradeSpecifications,function(t){return t.fixedNumericGrade===e});return n||!a.isNil(o)}function C(e,t){return!a.isNull(e)&&a.has(e,"id")?a.extend(t,{id:e.id,version:e.version}):t}function S(e,t,i,n,o){e.setValue(f(e,t,n,i,o),!0),e.widget._scope.$broadcast("grade.select",{gradeSpecification:n,isFreeInput:a.isUndefined(n),valuePath:e.valuePath}),e.dirty=!0}function E(e,t,i){e.setValue(C(t,a.extend(g(),{gradingSystem:a.isNil(i)?null:i})),!0)}function A(e,t,i){!function(e,t,i,n){t[i]=n,e.setValue(t,!0)}(e,t,"withDistinction",i)}}e.$inject=["ActionService","I18nService","CMS_DATA","$q","_"],angular.module("ccFrontend").factory("GradingService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){return{canEditStaticHelpField:function(){return t.getContext("isSelectedStaticHelpFieldEditable")},canEditSystemHelpField:function(){return e.isDeveloper()},findSqlHelpFieldAction:u,hideAllHelpTexts:function(e,t){(function e(t,i){c.forEac
1h(i,function(i){if(i.showHelp=!1,i.model&&((i=i.model).showHelp=!1),"OBJECT"===i.editDisplayType&&!c.isNull(i.embeddedObjectView)){var n=t.model.referenceModels[i.embeddedObjectView];e(t,n.fields)}})})(e,t),e.showHelpMode=!1,e.helpEnabled=!1},isHelpDisplayed:function(e){return e.helpEnabled},loadFieldHelpTexts:g,loadWidgetHelpTexts:f,resetHelp:function(e){return e.widget.showHelpMode=!1,r.when()},showAllHelpTexts:function(e,t){f(e),e.helpReady=!1,e.data&&e.data.$viewDefinition?(!function e(t,i){var n={};c.forEach(i,function(i){i.showHelp=!0,i.model&&((i=i.model).showHelp=!0),i.helpReady=!1,i.collection||"OBJECT"!==i.editDisplayType||c.isNull(i.embeddedObjectView)||(n=t.model.referenceModels[i.embeddedObjectView],e(t,n.fields))})}(e,t),n.getEntry("helpFieldCache",e.data.$viewDefinition)?(m(e,t,n.getEntry("helpFieldCache",e.data.$viewDefinition)),e.helpReady=!0,e.helpEnabled=!0):i.getViewDefinitionFieldsHelpAction({},e).then(function(i){n.putEntry("helpFieldCache",e.data.$viewDefinition,i),m(e,t,i),e.helpReady=!0,e.helpEnabled=!0})):(e.helpReady=!0,e.helpEnabled=!0)},showHelpModeWidget:function(e){return e.widget.showHelpMode&&!e.itemConfig.isModal},toggleShowHelpField:function(e){e.showHelp?(e.model.showHelp=!1,e.showHelp=!1):(e.model.showHelp=!0,e.showHelp=!0,g(e))},toggleShowHelpWidget:function(e){e.widget.showHelpMode?e.widget.showHelpMode=!1:(e.widget.showHelpMode=!0,f(e.widget))},widgetHelpIsReady:function(e){return e.widget.helpReady}};function l(e){return function(e){var t={},a=[];return c.each(e,function(e){if(n.knowsEntry("helpFieldCache",e)){var i=n.getEntry("helpFieldCache",e);c.isEmpty(i)||(t[e]=i)}else a.push(e)}),0===a.length?r.when(t):function(e){var t=c.map(e,function(e){return{viewDefinitionId:s.view.staticHelpField,requestContext:{key:e},activeFilters:[],findId:null,pathId:null,includeModel:!1}});return i.readObjects(t,null,{reduced:!0})}(a).then(function(e){return c.isArray(e)?c.each(a,function(i,a){if(c.isArray(e[a].data)&&e[a].data.length>0){var o=e[a].data[0];t[i]=o,n.putEntry("helpFieldCache",i,o)}else n.putEntry("helpFieldCache",i,{})}):c.each(a,function(e){n.putEntry("helpFieldCache",e,{})}),t})}(e).then(function(e){var t=[];return c.each(e,function(e){t.push(e.id)}),u(t).then(function(i){var n={},a=c.map(e,function(e,a){var o=[];if(!c.isNil(e)){c.isNil(e.defaultHelpField)||o.push(d(e.defaultHelpField));var s=i[c.indexOf(t,e.id)];c.isNil(s)||o.push(d(s))}r.all(o).then(function(e){n[a]=c.flatten(e)})});return r.all(a).then(function(){return n})})})}function d(t){var i=[];return c.isNull(t)||c.isUndefined(t)?r.when(i):(t.data&&t.data.length>0&&(t=t.data[0]),c.isNil(t.defaultHelpText)||c.isNil(t.defaultHelpText.id)||(i.push(t.defaultHelpText.id),a.addTranslationField(t.defaultHelpText)),c.isNil(t.roleSpecificHelp)?r.when(i):function(){return e.getCurrentUser().then(function(e){return c.map(e.roles,"id")})}().then(function(e){return c.each(t.roleSpecificHelp,function(t){e.includes(t.role)&&(i.push(t.translationField.id),a.addTranslationField(t.translationField))}),i}))}function u(e){var t=c.map(e,function(e){return{viewDefinitionId:s.view.sqlHelpField,requestContext:{id:e},activeFilters:[],findId:null,pathId:null,includeModel:!1}});return i.readObjects(t,null,{reduced:!0})}function g(e){var t=e;if(t.model&&(t=t.model),c.isUndefined(t.helpTranslationFields)){var i="displayType."+t.editDisplayType+".help",n=[t.overwriteHelpKey,t.helpKey,t.dataTypeHelpKey,i];t.collection&&"MULTISELECT"!==t.editDisplayType&&n.push("displayType.COLLECTION.help"),l(n).then(function(e){e=c.omit(e,function(e){return c.isNil(e)||!c.isArray(e)||0===e.length}),c.isEmpty(e)?t.helpTranslationFields=["$defaults.help.noFieldHelpAvailable"]:(c.has(e,t.overwriteHelpKey)?t.helpTranslationFields=e[t.overwriteHelpKey]:c.has(e,t.helpKey)&&(t.helpTranslationFields=e[t.helpKey]),c.has(e,t.dataTypeHelpKey)&&(t.dataTypeHelpTranslationFields=e[t.dataTypeHelpKey]),c.has(e,i)&&(t.editDisplayTypeHelpTranslationFields=e[i]),t.collection&&"MULTISELECT"!==t.editDisplayType&&c.has(e,"displayType.COLLECTION.help")&&(t.collectionHelpTranslationFields=e["displayType.COLLECTION.help"])),t.helpReady=!0})}else t.helpReady=!0}function f(e){if(c.isUndefined(e.helpTranslationFields)){e.helpReady=!1,e.helpTranslationFields=[];var t=o.findOriginatingUiItem(e._scope);if(c.isNil(t))return e.helpTranslationFields.push("$defaults.help.noWidgetHelpAvailable"),void p(e);i.getWidgetHelpAction({widgetType:e.type,widgetId:t}
1,e).then(function(i){c.forEach(i[t],function(t){t&&(e.helpTranslationFields.push(t.id),a.addTranslationField(t))}),p(e)})}else p(e)}function p(e){e.api.help.filterWidgetActions(e._scope).then(function(){c.forEach(e.action.visibleActions,function(e){e.config.help&&!n.getEntry("helpFieldCache",e.config.help.id)&&(a.addTranslationField(e.config.help),n.putEntry("helpFieldCache",e.config.help.id,e.config.help))}),e.helpReady=!0,e.showHelpMode=!0,c.isUndefined(e.helpEnabled)&&(e.helpEnabled=!1)})}function m(e,t,i){var n={};c.forEach(t,function(t){t.showHelp=!0,t.model&&(t.model.showHelp=!0,"FormWidget"===e.type&&(!t.model.visible||t.model.hideViewLabel&&e.api.isViewMode(e._scope)||t.model.hideEditLabel&&e.api.isEditMode(e._scope))&&(t.model.showHelp=!1,t.showHelp=!1),t=t.model),t.helpTranslationFields=[],c.forEach(i[t.overwriteHelpKey],function(e){t.helpTranslationFields.push(e.id),a.addTranslationField(e)}),0===t.helpTranslationFields.length&&c.forEach(i[t.helpKey],function(e){t.helpTranslationFields.push(e.id),a.addTranslationField(e)}),t.dataTypeHelpTranslationFields=[],c.forEach(i[t.dataTypeHelpKey],function(e){t.dataTypeHelpTranslationFields.push(e.id),a.addTranslationField(e)}),t.editDisplayTypeHelpTranslationFields=[],c.forEach(i["displayType."+t.editDisplayType+".help"],function(e){t.editDisplayTypeHelpTranslationFields.push(e.id),a.addTranslationField(e)}),t.helpReady=!0,t.collection&&(t.collectionHelpTranslationFields=[],c.forEach(i["displayType.COLLECTION.help"],function(e){t.collectionHelpTranslationFields.push(e.id),a.addTranslationField(e)})),t.collection||"OBJECT"!==t.editDisplayType||c.isNull(t.embeddedObjectView)||(n=e.model.referenceModels[t.embeddedObjectView],m(e,n.fields,i)),"FormWidget"===e.type&&(!t.visible||t.hideViewLabel&&e.api.isViewMode(e._scope)||t.hideEditLabel&&e.api.isEditMode(e._scope))&&(t.showHelp=!1)})}}e.$inject=["AuthService","NavigationService","ActionService","CacheService","I18nService","CCUtils","$q","CMS_DATA","_"],angular.module("ccFrontend").factory("HelpService",e)}(),function(){"use strict";function e(e){function t(t,i,n,a,o,r,s){var c=o.defer();return{load:function(){0!==c.promise.$$state.status&&(c=o.defer());var l=[function(){return n.readReducedObjects(a.view.locales).then(function(i){e.each(i,function(e){t.addTranslationField(e.name)}),t.getAvailableLocales().resolve(i)},function(e){t.getAvailableLocales().reject(e)}),t.getAvailableLocalesAsPromise()}(),s.get("Base","defaultLanguage"),s.get("I18n","decimalSeparatorSymbol"),s.get("I18n","thousandsSeparatorSymbol")];return o.all(l).then(function(o){t.setDefaultLocale({iso:e.isNil(o[1])?o[0][0].iso:o[1].iso}),r.changeLocale(t.getCurrentLocale().iso);var s={decimalSeparatorSymbol:o[2],thousandsSeparatorSymbol:o[3]};return t.setI18NSettings(s),n.readReducedObjects([a.view.translations,a.view.translationOverrides]).then(function(e){t.convertTranslationData(e[0],e[1],o[0]),c.resolve(!0),i.broadcast("i18n.ready")})})},loading:function(){return c.promise}}}t.$inject=["I18nService","ApplicationService","ActionService","CMS_DATA","$q","amMoment","SystemSettingsService"],this.$get=t}e.$inject=["_"],angular.module("ccFrontend").provider("I18nInitService",e)}(),function(){"use strict";angular.module("ccFrontend").provider("I18nLocaleService",function(){function e(e,t,i){let n={iso:"de"},a=n,o=t.defer();return{getAvailableLocalesAsPromise:function(){return o.promise},getAvailableLocales:function(){return o},getCurrentLanguageTag:function(){return"de"===a.iso?"de-DE":"en-GB"},getCurrentLocale:r,getDefaultLocale:c,setCurrentLocale:s,setDefaultLocale:l,switchLocale:function(t){if(t.iso===r().iso)return;return s(t||c()),i.changeLocale(r().iso),e.broadcast("i18n.switch",r().iso),l(r()),r()}};function r(){return a}function s(e){a=e}function c(){return n}function l(e){n=e}}e.$inject=["ApplicationService","$q","amMoment"],this.$get=e})}(),function(){"use strict";function e(e){return{cropImage:function(t,i,n){var a;a=n.split(",")[0].indexOf("base64")>=0?atob(n.split(",")[1]):decodeURI(n.split(",")[1]);for(var o=n.split(",")[0].split(":")[1].split(";
1")[0],r=new Uint8Array(a.length),s=0;s<a.length;s++)r[s]=a.charCodeAt(s);var c=new Blob([r],{type:o});return e.extend(c,e.omit(t,"size","type")),{file:c,fileElement:i}}}}e.$inject=["_"],angular.module("ccFrontend").factory("ImageService",e)}(),function(){"use strict";angular.module("ccFrontend").provider("ReferenceItem",function(){t.$inject=["$q","$document","$window"];var e="CC-APPLICATION-REF";function t(t,i,n){return{request:function(t){var n="campuscore_"+/[^/]*$/.exec(i.find("base").attr("href"))[0]+"_ref",a=localStorage.getItem(n);a&&(t.headers[e]=a);return t},response:function(t){var a="campuscore_"+/[^/]*$/.exec(i.find("base").attr("href"))[0]+"_ref",o=t.headers(e),r=localStorage.getItem(a);o&&o!==r&&(localStorage.setItem(a,o),r&&n.location.reload(!0));return t},responseError:function(a){var o="campuscore_"+/[^/]*$/.exec(i.find("base").attr("href"))[0]+"_ref";if(412===a.status){var r=a.headers(e);localStorage.setItem(o,r),n.location.reload(!0)}return t.reject(a)}}}this.$get=t})}(),function(){"use strict";angular.module("ccFrontend").provider("RequestTimestamp",function(){t.$inject=["$rootScope","_"];var e="CC-REQUEST-TIMESTAMP";function t(t,i){return{response:function(n){var a=JSON.parse(n.headers(e));i.isArray(a)&&(a.splice(5,2),t.requestDateTime=a,t.requestDate=i.take(a,3));return n}}}this.$get=t})}(),function(){"use strict";function e(e,t,i){return{getAutoSelectChapter:function(n,a){var o=t();if(i.isNil(n)||0===n.length)return null;var r=i.find(n,function(i){var n=t(e.transformDate(i.term.termPeriod.startDate)),a=t(e.transformDate(i.term.termPeriod.endDate));return o.isAfter(n)&&o.isBefore(a)});if(r)return r;var s=i.find(n,function(e){return e.id===i.get(e,a)});if(s)return s;return null}}}e.$inject=["CCUtils","moment","_"],angular.module("ccFrontend").factory("JournalService",e)}(),function(){"use strict";function e(e,t,i){return{applyConfiguration:function n(a,o,r,s,c){a.loading=!0;a.configurationError=!1;a.noResult=!1;a.initializer={loading:!0};a.itemConfig={id:a.widget.id,widgetId:a.widget.id,type:"landing-page-widget"};try{a.widgetConfig=JSON.parse(a.widget.configuration);var l={validateConfiguration:function(){return t.when()}};i.extend(l,c),e.create(l,r,a,[]);var d=i.isNil(o)?t.when():o(a);d.then(function(){a.loading=!1,a.configurationError=!1})}catch(e){a.configurationError=!0}var u=a.$on("landingPageWidget.configurationChanged",function(e,t){t.landingPageWidgetId===a.widget.id&&(a.loading=!0,a.widget.configuration=t.newConfiguration,n(a,o),i.isNil(s)||s(),a.loading=!1,u())})}}}e.$inject=["BaseWidgetApiService","$q","_"],angular.module("ccFrontend").factory("LandingPageService",e)}(),function(){"use strict";function e(e){function t(t,i,n){if(e.isFunction(t)){var a=[i];e.isUndefined(n)||a.push(n);try{t.apply(this,a)}catch(e){}}}function i(e,t){return{log(i,n){e.isDevMode()&&t.log(i,n)},info(i,n){e.isDevMode()&&t.info(i,n)},warn(i,n){e.isDevMode()&&t.warn(i,n)},error(i,n){e.isDevMode()&&t.error(i,n)},debug(i,n){e.isDevMode()&&e.getDevConfig("isDebugLogEnabled")&&t.debug(i,n)}}}i.$inject=["ApplicationService","$log"],this.log=function(i,n){e.isUndefined(console)||t(console.log,i,n)},this.info=function(i,n){e.isUndefined(console)||t(console.info,i,n)},this.warn=function(i,n){e.isUndefined(console)||t(console.warn,i,n)},this.error=function(i,n){e.isUndefined(console)||t(console.error,i,n)},this.debug=function(i,n){e.isUndefined(console)||t(console.debug,i,n)},this.$get=i}e.$inject=["_"],angular.module("ccFrontend").provider("LogService",e)}(),function(){"use strict";function e(e,t,i,n,a,o){const r={any:{actions:[],icon:null,showFooter:!0,showHeader:!0,title:null,pathContext:!1,receivesContext:null,preventDesignMode:!0,preventEditingMode:!0,isModal:!0},custom:{type:"CustomWidget"},form:{type:"FormWidget",initialMode:"create"},table:{type:"TableWidget",height:500,filterable:!0,singleSelection:!1,noUserInteractionRequired:!1,successLabel:"common.modalControl.goForward",skipIfPossible:!0}};return{getAlert:function(t,i,n){return c(o.defaults({title:i||t+".title",module:"common.confirm.alert",customData:{i18nKey:t,translatedTexts:n},preventDesignMode:!0,preventEditingMode:!0},o.merge(o.cloneDeep(r.any),o.cloneDeep(r.custom))),[],e.getAlertControls(),{})},getConfirmation:function(t,i,n,a){return c(o.defaults({title:i||t+".title",module:"common.confirm.confirm",customData:{i18nKey:t,i18nData:a,confirmWithAdditionalInput:n},preventDesignMode:!0,preventEditingMode:!0},o.merge(o.cloneDeep(r.any),o.cloneDeep(r.custom))),[],e.getConfirmationControls(),{})},getCustom:s,getForm:function(t,i,n,a){const s=o.defaults(t,o.merge
1(o.cloneDeep(r.any),o.cloneDeep(r.form)));return c(s,i,n||e.getActionUserInputControls(s),a)},getSummaryForm:function(t,n,a,s){const l=o.defaults(t,o.merge(o.cloneDeep(r.any),o.cloneDeep(r.form)));return l.info=i.getTranslation(t.infoText,{successLabel:i.getTranslation(t.successLabel)}),c(l,n,a||e.getActionUserInputControls(l),s)},getImageCropper:function(i,n){return s({title:"widget.form.field.imageupload.crop",module:"common.cropimage.cropimage",customData:{file:i},preventDesignMode:!0,preventEditingMode:!0},[],[{icon:"fa-check",style:"success",title:"common.ok",visible:function(e){return!0},fn:function(e){e.api._modal.close(t.cropImage(i,n,e.custom.croppedDataUri))}},e.getControl("cancel")],{backdrop:"static"})},getSelection:function(t,i){const n=o.defaults({title:t+".title",module:"common.confirm.select",customData:{i18nKey:t,choices:i},preventDesignMode:!0,preventEditingMode:!0},o.merge(o.cloneDeep(r.any),o.cloneDeep(r.custom)));return c(n,[],e.getSelectionControls(n),{})},getTable:function(t,i,n,a){const s=o.defaults(t,o.merge
1(o.cloneDeep(r.any),o.cloneDeep(r.table)));return c(s,i,n||e.getActionUserInputControls(s),a)}};function s(e,t,i,n){return c(o.defaults(e,o.merge(o.cloneDeep(r.any),o.cloneDeep(r.custom))),t,i,n)}function c(e,t,i,r){function s(n,a){n.itemConfig=o.defaults(e,{actions:t||[],controls:i||[],modal:a})}return s.$inject=["$scope","$uibModalInstance"],function(e,t){const i={template:'<cc-widget data-item-config="itemConfig"></cc-widget>',controller:e,backdrop:"static",keyboard:!1};o.isUndefined(t)||o.extend(i,t);const r=n.open(i);return r.closed.then(()=>a.$broadcast("modal.closed")),r}(s,r)}}e.$inject=["ControlService","ImageService","I18nService","$uibModal","$rootScope","_"],angular.module("ccFrontend").factory("ModalService",e)}(),function(){"use strict";function e(e,t){const i={},n={},a={};var o=[],r=e.defer();return{getAttribute:s,getAttributeSize:function(e,t){var i=s(e,t);return i?i.size:void 0},getCreationMapping:function(e){return l(e).creationMapping},getEntities:c,getEntity:l,getEntityNames:d,getEntityTypes:function(){return t.map(t.keys(t.groupBy(i,function(e){return e.type})),function(e){return{id:e,name:"entity."+e+".$entity"}})},getEnum:u,getEnumAsPromise:function(t){var i=e.defer();return i.resolve(n[t]),i.promise},getEnumOrdinals:function(e){const t={};for(let[i,a]of Object.entries(n[e]))t[i]=a.ordinal;return t},getEnumToValueToIconMap:function(){return n},getEnumNames:g,getNameOfTypeAtEndOfStringPath:function(e){if(t.isNil(e))throw new Error("Path is null");const i=e.split("."),n=i[0].trim(),a=i.slice(1);return v(n,a)},getNewActions:function(){return o},getTranslationFields:function(e){return t.filter(e.fields,function(e){return"TranslationField"===e.type})},getViewFieldDisplayTypeNames:function(e){var i=a;if(t.isUndefined(e))return t.keys(i);return t.keys(t.zipObject(t.filter(t.pairs(i),function(t){return t[1].mode===e||"BOTH"===t[1].mode})))},isBasicType:f,isColor:function(e){return"color"===e.name},isComposition:function(e){return"COMPOSITION"===e.relationType},isCompositionBackReference:function(e){return"COMPOSITION_BACK_REFERENCE"===e.relationType},isEntity:p,isEnum:m,isEnumField:function(e){return m(e.type)},isManagedType:function(e){return!f(e)},isRelation:function(e){return"RELATION"===e.relationType},isSelectableViewFieldDisplayType:function(e){var i=function(e){return a[e]}(e);return!t.isUndefined(i)&&i.selectable},isSearchableViewFieldDisplayType:function(e){return!t.isUndefined(e)&&"TYPEAHEAD"===e},isTranslationField:function(e){var i=["id","de","en","version"];return t.intersection(t.keys(e),i).length===i.length},load:function(o){0!==r.promise.$$state.status&&(r=e.defer());return o.then(e=>{t.each(e[0],e=>{t.isEmpty(e.creationViewDefinitionId)||(e=t.extend(e,{creationMapping:e.creationViewDefinitionId})),delete e.creationViewDefinitionId,i[e.name]=e}),(e[1]||[]).forEach(e=>{const t={};e.values.forEach((e,i)=>{t[e.name]=e,e.ordinal=i}),n[e.name]=t}),t.each(e[2],e=>{a[e.name]=e}),r.resolve(!0)}),r.promise},loading:function(){return r.promise},resolvePath:function(e){if(t.isUndefined(e))return null;const i=e.split("."),n=i[0].trim();if(1===i.length)return l(n);const a=s(v(n,i.slice(1,-1)),h(t.last(i)));if(t.isNil(a))throw new Error("Path is invalid: "+e);const o=a.type,r=l(o);
1if(t.isNil(r))throw new Error("Entity is invalid: "+o);return r.attributes=t.filter(r.attributes,function(e){return e.name!==a.mappedBy}),r},resolveValuePath:function(e,i){if(t.isNil(e))return;var n,a=t.startsWith(e,"widget.data.")?e.replace(/^widget\.data\./,""):e,o=(a=a.replace(/_item\./g,"")).split("."),r=i.baseModel;for(;o.length;){var s=o.shift();if(n=t.find(r.fields,function(e){return e.name===s}),t.isNil(n))return;n.embeddedObjectView&&(r=i.fullModel[n.embeddedObjectView])}return n},setNewActionNames:function(e){o=e},translatePath:function(e){var i=t.isString(e)?e.split("."):e,n=i[0],a=[];if(1===i.length)a.push("entity."+n+".$entity");else{var o=[];t.each(i,function(e,n){var a=t.take(i,n+1);if(a.length>2){const e=v(a[0],a.slice(1,a.length-2));o.push(e+"."+a[a.length-1])}else o.push(a.join("."))}),a.push("entity."+t.take(o,1)+".$entity"),o=t.drop(o,1),t.each(o,function(e){a.push("entity."+e)})}return a}};function s(e,i){const n=l(e);return t.isNil(n)?null:t.find(n.attributes,function(e){return e.name===i})}function c(){return i}function l(e){if(f(e))return t.cloneDeep(function(e){return{name:e,type:"BASIC",icon:function(e){switch(e){case"String":return"fa-font";case"LocalDate":return"fa-calendar-alt";case"LocalDateTime":return"fa-clock";case"Integer":case"Double":case"Long":return"fa-calculator";case"Money":return"fa-money-bill-alt";case"Boolean":return"fa-check";default:return"fa-circle"}}(e)}}(e));if(m(e))return t.cloneDeep(u(e));const n=t.find(i,function(t){return t.name===e});return t.isNil(n)?null:t.extend(t.cloneDeep(n),{icon:"TranslationField"===e?"fa-language":"fa-object-group"})}function d(){return t.keys(c())}function u(e){return n[e]}function g(){return Object.keys(n)}function f(e){return!p(e)&&!m(e)}function p(e){return t.contains(d(),e)}function m(e){return t.contains(g(),e)}function v(e,i){if(0===i.length)return e;const n=s(e,h(i[0]));if(t.isNil(n))throw new Error("Path is invalid: "+e+" - "+i);const a=i.slice(1);return v(n.type,a)}function h(e){if(t.isNil(e))return null;const i=e.trim(),n=i.indexOf("[");return n<0?i:i.substring(0,n)}}e.$inject=["$q","_"],angular.module("ccFrontend").factory("ModelService",e)}(),function(){"use strict";function e(e,t,i,n){return{getCurrencies:function(){return e.readObjects(i.view.currencies).then(function(e){return n.each(e.data,function(e){t.addTranslationField(e.name)}),e.data})},getDisplayName:function(e){if(o(e)){var i=parseFloat(a(e)).toFixed(2).toString(),r=n.get(e,".currency","");return function(e){var i=t.getI18nSettings().decimalSeparatorSymbol||",",a=t.getI18nSettings().thousandsSeparatorSymbol||"",o=e.substring(e.length-2,e.length),r=e.substring(0,e.length-3),s="";r.startsWith("-")&&(s="- ",r=r.substr(1));var c=n.chunk(r.split("").reverse(),3);return c=n.map(c,function(e,t,o){return n.flatten([0===t?i:a,e]).reverse().join("")}),s+c.reverse().join("")+o}(i)+" "+r}return""},getMonetaryValue:a,isMoney:o};function a(e){return o(e)?n.get(e,".amount",""):""}function o(e){return n.isObject(e)&&!n.isEmpty(e)&&n.has(e,"amount")&&n.has(e,"currency")}}e.$inject=["ActionService","I18nService","CMS_DATA","_"],angular.module("ccFrontend").factory("MoneyService",e)}(),function(){"use strict";function e(e,t,i,n,a){var o="navigation.changed",r="campuscore_navigation_reload_denied",s=!1;return{init:function(){return function(t){i.isNil(t)?c("Should register event listener without body element."):t.addEventListener(o,function(){(function(){return null!=localStorage.getItem(r)})()||s||(s=!0,function(){return e.getConfirmation("common.navigationChanged.reload.description","common.navigationChanged.reload.title")}().result.then(function(){c("Client confirmed reload."),a.location.reload(!0),s=!1},function(){c("Client rejected reload."),function(){localStorage.setItem(r,!0)}(),s=!1}))})}(function(){var e=document.getElementsByTagName("body");if(1!==e.length)throw c("Found "+e.length+" body elements."),new Error("Found "+e.length+" body elements.");return e[0]}()),n.when()}};function c(e){t.debug("[NavigationChangedService] "+e)}}e.$inject=["ModalService","LogService","_","$q","$window"],angular.module("ccFrontend").factory("NavigationChangedService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){return{addUiItem:function(t){var o;t=i.resolveLayoutContainerForUiItem(t),o=l.isUndefined(t)||l.isNull(t)?s.when("ApplicationModule"):n.getCustom({t
1itle:"common.navigation.addUiItem.entitySelection",module:"common.navigation.entitySelection",preventDesignMode:!0,preventEditingMode:!0},[],[a.getControl("cancel")],[]).result;o.then(function(i){e.getInstance("CreateForestNodeAction",void 0,void 0,{nameOverride:"entity."+i+".$entity",originEntityOverride:i}).then(function(n){return n.$originEntity=i,n.$preparedOriginForest=d(null,t),e.processInstance(n)}).then(function(e){var t=e.getOneResult(1);return 200===t.status?(n.getAlert("dev.navigationeditor.widgetCreated","common.success"),!0):(n.getAlert(t.error["*"][0].i18nKey,"common.error"),!1)})})},editViewDefinition:function(e,o,r){t.isDesignMode()||t.setDevConfig("isDesignModeEnabled",!0);return n.getCustom({title:"common.editViewDefinition",module:"common.viewdefinitioneditor.viewdefinitioneditor",customData:{widgetEntity:i.getUiItemType(e).entity,itemConfigId:e,viewDefinitionId:o,widget:r},preventDesignMode:!0,preventEditingMode:!0},[],[a.getControl("cancel")],{size:"lg"}).result.then(function(e){l.isUndefined(r)?c.location.reload():r.api.reload(r._scope)})},editWidget:function(e){t.isDesignMode()||t.setDevConfig("isDesignModeEnabled",!0);var a=i.getUiItemType(e);l.isNull(a)?n.getAlert("dev.navigationeditor.cannotEvaluateUiItemType"):o.createOrUpdateCustomObject([{objectId:e}],void 0,{nameOverride:"dev.navigationeditor.editWidget"})},removeUiItem:function(a,o){t.isDesignMode()||t.setDevConfig("isDesignModeEnabled",!0);n.getConfirmation("dev.navigationeditor.confirmRemoveUiItem","dev.navigationeditor.confirmRemoveUiItem.title").result.then(function(){a=i.resolveLayoutContainerForUiItem(a),o=i.resolveLayoutContainerForUiItem(o),e.getInstance("DeleteForestNodeAction").then(function(t){return t.$originEntity="IGNORED_BY_THE_ACTION",t.$preparedOriginForest=d(a,o),e.processInstance(t)}).then(function(e){c.location.reload()})},s.reject)},determineIcon:function(e){t.isDesignMode()||t.setDevConfig("isDesignModeEnabled",!0);o.determineIcon(e,function(e){var t=e.getOneResult(1);return 200===t.status?(n.getAlert("dev.navigationeditor.iconDetermined","common.success"),!0):(n.getAlert(t.error["*"][0].i18nKey,"common.error"),!1)})}};function d(e,t){var n=[];return function e(t,i){if(l.isNil(t.data))return;l.isNil(t.parent)||e(t.parent,i);void 0===t.data.generated&&i.push(t.data.uiItemId)}(i.getCurrentState(),n),{forestId:r.forest.navigation.forestId,forestViewId:r.forest.navigation.forestViewId,forestSelectedObjectIdPath:n}}}e.$inject=["ActionInvocationService","ApplicationService","NavigationService","ModalService","ControlService","ActionService","CMS_DATA","$q","$window","_"],angular.module("ccFrontend").factory("NavigationEditorService",e)}(),function(){"use strict";function e(e,t,i,n){return{getVisibility:function(a,o,r,s){return e.checkTraits(a.object.receivesPersonTraits,a.object.requiredPersonTraits,a.object.prohibitedPersonTraits).then(function(e){if(!e)return!1;if(a.object.hideIfInactive&&!s){var c=n.has(i.getCurrentState().includes,a.object.widgetState);if(!c)return!1}var l=a.object.extension;return!!n.isNil(l)||t.getExtension(l).then(function(e){return!n.has(e,"visibleFn")||e.visibleFn(a.object.id,r,a,o).then(function(e){return e})})})}}}e.$inject=["PersonTraitsService","WidgetService","NavigationService","_"],angular.module("ccFrontend").factory("NavigationVisibilityService",e)}(),function(){"use strict";function e(e,t,i){return{createNote:function(i,n){return e.createNote(n,i.widget).then(()=>t.broadcast("notes.reload",i))},editNote:function(i,n){return e.editNote(n).then(()=>t.broadcast("notes.reload",i))},markNoteAsDeleted:function(i,n){return e.markNoteAsDeleted(n).then(()=>t.broadcast("notes.reload",i))},deleteNote:function(i,n){return e.deleteNote(n).then(()=>{t.broadcast("notes.reload",i)})},loadNotes:n,loadLandingPageWidgetNotes:a,reloadNotes:function(e){const t=e.notes.objectId,i=e.notes.loadDeletedNotes;return n(e,t,i)},reloadLandingPageWidgetNotes:function(e){const t=e.notes.objectId,i=e.notes.loadPersonRecordNotes,n=e.notes.loadApplicationRecordNotes,o=e.notes.loadInactiveApplicationRecordNotes,r=e.notes.loadDeletedNotes;return a(e,t,i,n,o,r)},setNotesVisibility:function(e,t){e.notes&&(e.notes.visible=t)}};function n(t,i,n){let a=!1;return t.notes&&(a=t.notes.visible),e.readNotes(i,n).then(e=>
1(e.data.forEach(e=>o(e)),t.notes=e,t.notes.visible=a,t.notes.objectId=i,t.notes.loadDeletedNotes=n,e))}function a(t,i,n,a,r,s){let c=!1;return t.notes&&(c=t.notes.visible),e.readLandingPageWidgetNotes(i,n,a,r,s).then(e=>(e.personRecordNotes.forEach(e=>o(e)),e.applicationRecordNotes.forEach(e=>e.notes.forEach(e=>o(e))),t.notes=e,t.notes.visible=c,t.notes.objectId=i,t.notes.loadPersonRecordNotes=n,t.notes.loadApplicationRecordNotes=a,t.notes.loadInactiveApplicationRecordNotes=r,t.notes.loadDeletedNotes=s,e))}function o(e){e.isMarkedAsDeleted=!i.isNil(e.deletedAt),e.isModified=!i.isEqual(e.createdAt,e.modifiedAt),e.canDeleteNote=i.contains(e.$actions,"DeleteNoteAction"),e.canEditNote=i.contains(e.$actions,"EditNoteAction"),e.canMarkNoteAsDeleted=i.contains(e.$actions,"MarkNoteAsDeletedAction")}}e.$inject=["ActionService","ApplicationService","_"],angular.module("ccFrontend").factory("NoteService",e)}(),function(){"use strict";function e(e,t,i,n){let a=null;return{request:o,responseError:function(e){if(401!==e.status)return n.reject(e);if(!a){const e=n.defer();a=e.promise,AuthenticationHelper.initiateLoginProcedure(!0).then(()=>{a=null,e.resolve()},()=>{a=null,e.resolve()})}return a.then(()=>(function(e){if(!AuthenticationHelper.hasAuthentication())return n.reject();return o(e.config).then(t=>{const i=t.params?t.url+$.param(t.params,!0):t.url,a=t.headers;a.Authorization=AuthenticationHelper.getAuthorizationHeader().Authorization;const o=n.defer();return $.ajax(i,{type:t.method,data:angular.toJson(t.data),headers:a}).done(function(t,i,n){e.data=t,e.status=n.status,o.resolve(e)}).fail(function(t){e.data=JSON.parse(t.responseText),e.status=t.status,o.resolve(e)}),o.promise})})(e))}};function o(e){if(!i.startsWith(e.url,t.api("")))return n.when(e);const r=AuthenticationHelper.getAuthorizationHeader();return r?(e.headers.Authorization=r.Authorization,n.when(e)):a?a.then(()=>o(e)):n.when(e)}}e.$inject=["URLS","UrlService","_","$q"],angular.module("ccFrontend").factory("Oauth2Service",e)}(),function(){"use strict";function e(e){const t=localStorage;return{clear:function(i,n,a){e.clear(i,n,a,t)},get:e.get,getConfig:function(i){return e.getConfig(i,t)},remove:function(i,n,a,o){e.remove(i,n,a,o,t)},replace:function(i,n,a,o){e.replace(i,n,a,o,t)},set:function(i,n,a,o,r){e.set(i,n,a,o,r,t)}}}e.$inject=["StorageService"],angular.module("ccFrontend").factory("PersistedStorageService",e)}(),function(){"use strict";function e(e,t,i,n,a){return function(){t.getCurrentUser().then(function(t){n.isNil(t)||e.setContext("personalTraits",t.traits,!0)})}(),{checkTraits:r,hasLecturerTrait:function(e){return r(e,[{trait:"IS_LECTURER"}])},hasApplicantTrait:function(e){return r(e,[{trait:"IS_APPLICANT"}])},hasStudentTrait:function(e){return r(e,[{trait:"IS_STUDENT"}])},hasGuestAuditorTrait:function(e){return r(e,[{trait:"IS_GUEST_AUDITOR"}])},hasAlumniTrait:function(e){return r(e,[{trait:"IS_ALUMNI"}])},setTraits:function(t,n,a,o,r){return i.getPersonTraits(n,a,o).then(function(i){e.setContext(t,i,!1,r)})},getTraits:o};function o(t){return e.getContextAsPromise(t)}function r(e,t,i){if(n.isNil(e))return a.when(!0);var r=[];if(n.isArray(t)){var s=n.map(t,function(e){return e.trait});r.push(o(e).then(function(e){return n.intersection(s,e).length>0}))}if(n.isArray(i)){var c=n.map(i,function(e){return e.trait});r.push(o(e).then(function(e){return 0===n.intersection(c,e).length}))}return a.all(r).then(function(e){for(var t=0;t<e.length;t++)if(!e[t])return!1;return!0})}}e.$inject=["NavigationService","AuthService","ActionService","_","$q"],angular.module("ccFrontend").factory("PersonTraitsService",e)}(),function(){"use strict";function e(e,t){return{getDisplayName:function(i){if(t.isNil(i))return"";var n,a="";t.isNil(i.numByDay)?(n=i.intervalLength<=1?"common.rrule.displayname.intervalLength1":"common.rrule.displayname.intervalLength",a+=e.getTranslation(n,i)):(n=t.isNil(i.intervalLength)?"common.rrule.displayname.byDay":i.intervalLength<=1?"common.rrule.displayname.byDay":"common.rrule.displayname.byDayIntervalLength",a+=e.getTranslation(n,i));t.isNil(i.count)?(n="common.rrule.displayname.until",a=a+" "+e.getTranslation(n,i)):(n="common.rrule.displayname.count",a=a+" "+e.getTranslation(n,i));return a}}}e.$inject=["I18nService","_"],angular.module("ccFrontend").factory("RRuleService",e)}(),function(){"use strict";function e(e){const t=sessionStorage;return{clear:function(i,n,a){e.clear(i,n,a,t)},get:e.get,getConfig:function(i){return e.getConfig(i,t)},remove:function(i,n,a,o){e.remove(i,n,a,o,t)},replace:function(i,n,a,o){e.replace(i,n,a,o,t)}
1,set:function(i,n,a,o,r){e.set(i,n,a,o,r,t)}}}e.$inject=["StorageService"],angular.module("ccFrontend").factory("SessionStorageService",e)}(),function(){"use strict";function e(e,t,i,n,a){return{handleChange:function(a,o){const r=n.defer();return t.loading().then(()=>{e.getCurrentLocale()&&o?e.getCurrentLocale().iso!==o.iso&&i.switchLocale(o):o&&i.switchLocale(o)}),r.resolve(),r.promise}}}function t(e,t,i){e.subscribe(i.locale,t.handleChange)}e.$inject=["I18nService","I18nInitService","I18nLocaleService","$q","_"],t.$inject=["PersonPreferencesService","LocaleSettingsService","PREFERENCES"],angular.module("ccFrontend").factory("LocaleSettingsService",e).run(t)}(),function(){"use strict";function e(e,t,i,n){return{handleChange:function(a,o){if("none"===t.search().m)return;var r=i.defer();n.isNull(o)||(a&&a.stateKey)!==(o&&o.stateKey)&&e.setUserMenuState(o.stateKey);return r.resolve(),r.promise}}}function t(e,t,i){e.subscribe(i.menuState,t.handleChange)}e.$inject=["ClientService","$location","$q","_"],t.$inject=["PersonPreferencesService","MenuStateSettingsService","PREFERENCES"],angular.module("ccFrontend").factory("MenuStateSettingsService",e).run(t)}(),function(){"use strict";function e(e,t,i){var n={},a={},o=t.defer();return{init:function(e){n=e||{},i.forEach(i.keys(n),function(e){s(e,void 0,n[e])}),o.resolve()},get:r,set:function(a,o,c){var l=r(a);if(!i.isEqual(l,o))return n[a]=o,n.id&&!c?e.setLocale(o.id).then(function(){return s(a,l,o)}):s(a,l,o);return t.when()},subscribe:function(e,t){i.has(a,e)?a[e].push(t):a[e]=[t]},unsubscribe:function(e,t){var n=a[e];n&&i.remove(n,function(e){return t===e})},waitForInit:function(){return o.promise}};function r(e){return n[e]}function s(e,n,o){var r=t.defer();return a[e]?t.all(i.map(a[e],function(e){e(n,o)})).then(r.resolve,r.reject):r.resolve(),r.promise}}e.$inject=["ActionService","$q","_"],angular.module("ccFrontend").factory("PersonPreferencesService",e)}(),function(){"use strict";function e(e,t,i,n){var a=i.defer(),o={},r={};return{clear:function(e){delete r[e]},get:function(e,t,i){return s(e,i).then(function(e){return n.has(e,t)?e[t]:null})},getGroup:s,init:function(){return e.readObjects(t.view.systemSettings).then(function(e){o=n.indexBy(n.map(e.data,function(e){return{id:e.objectId,name:e.name,detailView:e.detailViewDefinitionId}}),function(e){return e.name.replace(/Settings/,"")}),a.resolve(!0)})},loading:c};function s(t,a){return c().then(function(){if(n.has(r,t)){var s=i.defer();return s.resolve(r[t]),s.promise}var c=o[t].detailView,l=n.isUndefined(a)||n.isNull(a)?void 0:a.widget;return e.readObjects(c,l).then(function(e){return r[t]=e.data[0],r[t]})})}function c(){return a.promise}}e.$inject=["ActionService","CMS_DATA","$q","_"],angular.module("ccFrontend").factory("SystemSettingsService",e)}(),function(){"use strict";function e(e,t,i){return{handleCollapseCollectionsIfLengthExceedsChange:function(n,a){var o=i.defer();return e.setWidgetSetting(t.collapseCollectionsIfLengthExceeds,a),o.resolve(),o.promise}}}function t(e,t,i,n){e.subscribe(i.collapseCollectionsIfLengthExceeds,t.handleCollapseCollectionsIfLengthExceedsChange)}e.$inject=["WidgetService","PREFERENCES","$q"],t.$inject=["PersonPreferencesService","WidgetSettingsService","PREFERENCES","_"],angular.module("ccFrontend").factory("WidgetSettingsService",e).run(t)}(),function(){"use strict";function e(e,t,i,n){var a=new Intl.Collator("de-DE-u-co-phonebk-kn-true"),o=new Intl.Collator("en-GB-u-kn-true");return{getDefaultSortComparator:r,getNumericalSortComparator:function(e,t){if(n.isNil(e)&&n.isNil(t))return 0;if(n.isNil(e))return 1;if(n.isNil(t))return-1;var i=Number(e),a=Number(t);if(i===a)return 0;return i<a?-1:1},getStringSortComparator:r,getDateTimeSortComparator:function(e,t){if(n.isNil(e)&&n.isNil(t))return 0;if(n.isNil(e))return 1;if(n.isNil(t))return-1;const a=i(e),o=i(t);return a.diff(o)},comparingEnum:function(t){const i=e.getEnumOrdinals(t);return s(e=>i[e])},comparing:s,thenComparing:function(...e){if(n.isNil(e)||e.length<2)throw new Error("comparators must have at least two entries");if(!e.every(n.isFunction))throw new Error("all comparators must be functions");return(t,i)=>{let n;for(const a of e)if(0!==(n=a(t,i)))return n;return n}},reversed:function(e){if(!n.isFunction(e))throw new Error("comparator must be a function");return(t,i)=>e(i,t)}};function r(e,i){return n.isNil(e)&&n.isNil(i)?0:n.isNil(e)?1:n.isNil(i)?-1:n.isString(e)&&n.isString(i)?0===e.length?0===i.length?0:1:0===i.length?-1:("de"===t.getCurrentLocale().iso?a.compare:o.compare)(e,i):(r=e)===(s=i)?0:0===n.indexOf(n.sortBy([r,s]),r)?-1:1;var r,s}function s(e,t){if(!n.isFunction(e))throw new Error("keyExtractor must be a function");return n.isFunction(t)||(t=c),(i,n)=>t(e(i),e(n))}function c(e,t){return e<t?-1:e>t?1:0}}e.$inject=["ModelService","I18nLocaleService","moment","_"],angular.module("ccFrontend").factory("SortService",e)}(),function(){"use strict";function e(e){return{clear:function(t,i,n,a){e.set(t,i,void 0),e.isNil(n)||a.removeItem(n)},get:function(t,i){if(e.has(t,i))return e.get(t,i);return{}},getConfig:function(e,t){if(!e)return{};const i=t.getItem(e);return i?JSON.parse(i):{}}
1,remove:function(n,a,o,r,s){if(e.has(n,o)){e.set(n,o,void 0);const c=e.dropRight(o.split(".")).join("."),l=o.split(".").pop(),d=e.get(n,c);e.set(n,c,e.omit(d,l)),e.set(n,a,e.omit(e.omit(e.get(n,a),t),t)),i(n,a,r,s)}},replace:function(t,n,a,o,r){e.set(t,n,a),i(t,n,o,r)},set:function(t,n,a,o,r,s){e.set(t,a,o),i(t,n,r,s)}};function t(t){return e.isNil(t)||e.isObject(t)&&e.isEmpty(t)}function i(t,i,n,a){if(e.isNil(n))return;const o=e.get(t,i);if(!o)return;if(e.isEmpty(o))return void a.removeItem(n);const r=JSON.stringify(o);a.setItem(n,r)}}e.$inject=["_"],angular.module("ccFrontend").factory("StorageService",e)}(),function(){"use strict";function e(e){return{normalize:function(t,i){if(e.isNil(t))return"";return(i?t:t.toLowerCase()).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\u00df/g,"ss").replace(/\u0063?\u006B/g,"c").replace(/\u0061\u0069|\u0061\u0079|\u0065\u0079/g,"ei")}}}e.$inject=["_"],angular.module("ccFrontend").factory("StringEncodingService",e)}(),function(){"use strict";function e(e,t,i,n,a,o){return{getHeaderName:r,registerColumnNameUpdateOnLanguageSwitch:function(t){return t.$on("i18n.switch",function(){if(!o.isNil(t.widget.table.grid.api)){var i=o.map(t.widget.table.grid.api.getColumnDefs(),function(t){return"$selection"===t.field?t.headerName=e.getTranslation("common.ui.table.selectionColumn.headerName"):t.headerComponentParams&&(t.headerName=r(t.headerComponentParams.cc.field,t.headerComponentParams.cc.entity,t.headerComponentParams.cc.currentCollectionMemberNumber,t.headerComponentParams.cc.parentCollectionMemberPrefix)),t});t.widget.table.grid.api.setColumnDefs(i)}}),a.when()},registerColumnPinningChangedListener:function(e){if(o.isNil(e.widget.table.grid.api)||!e.widget.table.features.columnPinning||o.isNil(e.widget.table.config))return a.when();return e.widget.table.grid.api.addEventListener("columnPinned",function(){t.set(e,t.KEYS.columns,i.getColumnConfiguration(e))}),a.when()},registerColumnPositionChangeListener:function(e){if(o.isNil(e.widget.table.grid.api))return a.when();var n=function(){var n=i.getColumnConfiguration(e),a=i.getSortConfiguration(e);t.set(e,t.KEYS.columns,n),a.length?t.set(e,t.KEYS.orderColumns,a):t.remove(e,t.KEYS.orderColumns)};return e.widget.table.grid.api.addEventListener("columnMoved",n),e.widget.table.grid.api.addEventListener("columnVisible",n),a.when()},registerColumnSizeChangeListener:function(e){if(o.isNil(e.widget.table.grid.api))return a.when();var n=function(){t.set(e,t.KEYS.columns,i.getColumnConfiguration(e))},r=function(){e.widget.table.grid.api.removeEventListener("columnResized",r),e.widget.table.grid.api.addEventListener("columnResized",n)};return e.widget.table.grid.api.addEventListener("columnResized",r),a.when()},registerFloatingFilterChangedListener:function(e){return e.widget.table.grid.api.addEventListener("filterChanged",function(){t.set(e,t.KEYS.columns,i.getColumnConfiguration(e))}),a.when()},registerSortChangedListener:function(e){return e.widget.table.grid.api.addEventListener("sortChanged",function(){var n=i.getSortConfiguration(e);n.length?t.set(e,t.KEYS.orderColumns,n):t.remove(e,t.KEYS.orderColumns)}),a.when()},restoreStoredColumnSizes:function(e,i){if(o.isNil(i.widget.table.grid.api)||o.isNil(i.widget.table.config))return a.when();var r=t.get(i,t.KEYS.columns);if(o.isEmpty(r))n(function(){o.isNil(i.widget.table.grid.api)||i.widget.table.grid.api.sizeColumnsToFit()},100);else{var s=e-22-i.widget.table.grid.api.gridOptionsWrapper.getScrollbarWidth(),c=i.widget.table.grid.columnApi.getAllDisplayedColumns(),l=o.filter(c,function(e){return e.colDef.resizable}),d=o.reduce(o.filter(c,function(e){return!e.colDef.resizable}),function(e,t){return e+t.actualWidth},0);s-=d;for(var u=l=o.map(l,function(e){var t=o.find(r,function(t){return e.colId===t.colId});return{key:e.colId,newWidth:o.isNil(t)||o.isNil(t.size)?e.actualWidth:t.size,minWidth:e.minWidth}});u.length>0;){var g,f=o.reduce(l,function(e,t){return e+t.newWidth},0),p=f-s;if(!(p>0)){var m=Math.abs(p);if(m<=l.length)for(var v=0;v<Math.abs(p);v++)l[v].newWidth+=1;break}g=p/o.size(u),o.forEach(u,function(e){e.newWidth=Math.max(e.minWidth,Math.floor(e.newWidth-g))}),u=o.filter(u,function(e){return e.newWidth!==e.minWidth})}i.widget.table.grid.columnApi.setColumnWidths(l)}return a.when()},restoreStoredColumns:function(e,i){const n=t.get(e,t.KEYS.columns);if(o.isNil(n)||o.isEmpty(n))return i;e.widget.table.hasCustomColumnPositions=!0,"$selection"!==n[0].colId&&n.unshift({colId:"$selection"});return o.forEach(i,function(e){const t=o.find(n,function(t){return t.colId===e.field});t&&(t.pinning&&(e.pinned=t.pinning.toLowerCase()),o.isNil(t.visible)||t.visible||(e.hide=!0))}),o.sortBy(i,function(e){return o.findIndex(n,function(t){return t.colId===e.field})})},registerGroupingChangedListener:function(e){return e.widget.table.grid.api.addEventListener("columnRowGroupChanged",function(){var n=i.getGroupingConfiguration(e);n.length?t.set(e,t.KEYS.groupedColumns,n):t.remove(e,t.KEYS.groupedColumns)}),a.when()}};function r(t,i,n,a){var r;o.isNil(t.nameOverride)?r=e.getTranslationKeyWithDefault("entity."+(t.entity||i)+"."+t.name,"$defaults.attribute."+t.name):(e.addTranslationField(t.nameOverride),r=t.nameOverride.id);var s=o.isNil(a)?"":a,c=o.isNil(n)?"":n;return s+e.getTranslation(r)+" "+c}}e.$inject=["I18nService","TableStorageService","TableConfigurationService","$timeout","$q","_"],angular.module("ccFrontend").factory("TableColumnService",e)}(),function(){"use strict";function e(e){return{getSortConfiguration:function(t){if(e.isNil(t.widget.table.grid.columnApi))return[];var i=t.widget.table.grid.columnApi.columnController.sortController.getColumnsWithSortingOrdered();return e.map(e.filter(i,function(e){return e.visible}),function(e){return{colId:e.colId,direction:e.sort||"asc"}})},getFloatingFilterVisibilityConfiguration:function(e){return e.widget.table.floatingFilterVisible},getFloatingFilterConfiguration:function(e){return e.widget.table.grid.api.getFilterModel()},getColumnConfiguration:function(t){if(e.isNil(t.widget.table.grid.columnApi))return{};var i=t.widget.table.grid.columnApi.getAllGridColumns(),n=t.widget.table.grid.api.getFilterModel(),a=[],o=["$selection","$bulkResults","ag-Grid-AutoColumn"];return e.forEach(i,function(t){if(!e.includes(o,t.colId)&&!t.hide){var i={colId:t.colId,size:t.actualWidth};e.isNil(t.pinned)||(i.pinning=t.pinned.toUpperCase()),e.isNil(n[t.colId])||(i.floatingFilter=n[t.colId],e.has(i.floatingFilter,"caseSensitive")&&(i.floatingFilter.caseSensitive=!1)),e.isNil(t.visible)||t.visible||(i.visible=!1),a.push(i)}}),a},getActiveFiltersConfiguration:function(t){if(e.isNil(t.widget.filter))return[];return e.union(t.widget.filter.activeMode,t.widget.filter.activeSystem,t.widget.filter.activeCustom)},getCustomFiltersConfiguration:function(t){if(e.isNil(t.widget.filter))return[];return e.pluck(t.widget.filter.custom,"id")},getGroupingConfiguration:function(t){if(e.isNil(t.widget.table.grid.columnApi))return[];return e.map(t.widget.table.grid.columnApi.getRowGroupColumns(),function(e){return e.colId})},initialModeFilterDisabled:function(t){if(e.isNil(t.widget.filter)||e.isNil(t.widget.filter.initialModeFilter))return!1;if(e.isNil(t.widget.table)||e.isNil(t.widget.table.config)||e.isNil(t.widget.table.config.disableInitialModeFilter))return!1;return t.widget.table.config.disableInitialModeFilter}}}e.$inject=["_"],angular.module("ccFrontend").factory("TableConfigurationService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){function s(){this.eWrapperDiv=document.createElement("div"),this.$scope=null,this.viewModel=null,this.setModelCallbackFn=null}function c(){this.eWrapperDiv=document.createElement("div"),this.$scope=null,this.setModelCallbackFn=null,this.viewModel=null}return s.prototype.init=function(e){const t=this;this.params=e,this.$scope=e.cc.widgetScope.$new(!0),this.$scope.onFilterChanged=function(i){t.viewM
1odel=i,e.filterModifiedCallback(),e.filterChangedCallback()},this.$scope.registerOnModelChangeCallback=function(e){t.setModelCallbackFn=e},this.$scope.getModel=function(){return r.isNil(t.viewModel)?t.getDefaultModel():t.viewModel};const n=i.directiveTemplate("uiitem/widget/table/filter/text/text");a(n).then(function(e){const i=o(e)(t.$scope);angular.element(t.eWrapperDiv).replaceWith(i),t.eWrapperDiv=angular.element(i).get()[0]})},s.prototype.getGui=function(){return this.eWrapperDiv},s.prototype.isFilterActive=function(){return!r.isNil(this.viewModel)&&r.some(this.viewModel.filterValues,function(e){return!r.isEmpty(e.value)})},s.prototype.doesFilterPass=function(e){const i=this.params.valueGetter(e.node),a={colDef:this.params.colDef,field:this.params.cc.field,value:function(e){return r.isArray(e)?n.reduceRecords(e):n.reduceRecord(e)}(i),data:e.data},o=this.params.cc.plainValueFn(a,this.params.cc.sharedContext);let s;const c=this;return(s="&"===this.viewModel.groupMatcher?r.every:r.some)(this.viewModel.filterValues,function(e){return function(e,i,n,a){if(r.isNil(n))return"notContains"===e||"notEquals"===e||"notStartsWith"===e||"notEndsWith"===e;switch(i=t.normalize(i,a),n=t.normalize(n,a),e){case"contains":return n.indexOf(i)>=0;case"notContains":return n.indexOf(i)<0;case"equals":return n===i;case"notEquals":return n!==i;case"startsWith":return 0===n.indexOf(i);case"notStartsWith":return 0!==n.indexOf(i);case"endsWith":const o=n.lastIndexOf(i);return o>=0&&o===n.length-i.length;case"notEndsWith":const r=n.lastIndexOf(i);return r<0||r!==n.length-i.length;default:return console.warn('AG Grid: Unexpected type of filter "'+e+'", it looks like the filter was configured with incorrect Filter Options'),!1}}(e.operator,e.value,o,c.viewModel.caseSensitive)})},s.prototype.getModel=function(){if(r.isNil(this.viewModel))return null;const e=this.viewModel.filterValues.filter(e=>""!==e.value);return 0===e.length?null:{groupMatcher:this.viewModel.groupMatcher,caseSensitive:this.viewModel.caseSensitive,filterValues:e}},s.prototype.setModel=function(e){r.isNil(e)?this.viewModel=this.getDefaultModel():this.viewModel=e,this.setModelCallbackFn&&this.setModelCallbackFn(this.viewModel),this.params.filterModifiedCallback(),this.params.rowModel.getParams()&&this.params.filterChangedCallback()},s.prototype.getDefaultModel=function(e){return{groupMatcher:"&",caseSensitive:!1,filterValues:[{operator:"contains",value:""}]}},s.prototype.isDefaultModel=function(e){return!!r.isPlainObject(e)&&("&"===e.groupMatcher&&(!e.caseSensitive&&(1===e.filterValues.length&&("contains"===e.filterValues[0].operator&&""===e.filterValues[0].value))))},s.prototype.destroy=function(){this.$scope.$destroy(),delete this.$scope,angular.element(this.eWrapperDiv).remove(),delete this.eWrapperDiv},c.prototype.init=function(t){const n=this;this.params=t,this.$scope=t.cc.widgetScope.$new(!0),this.$scope.hideCaseSensitiveButton=t.suppressFilterButton,this.$scope.field=t.cc.fieldPath,this.$scope.getParentModelValue=function(){return n.viewModel},this.$scope.onFilterChanged=function(e){t.parentFilterInstance(function(t){t&&t.setModel(e)})},this.$scope.registerOnModelChangeCallback=function(e){n.setModelCallbackFn=e};const c=function(t,i){const n=e.get(t,e.KEYS.columns);if(!r.isEmpty(n)){const e=r.find(n,e=>e.colId===i&&!!e.floatingFilter);if(!r.isNil(e))return e.floatingFilter}return null}(t.cc.widgetScope,t.cc.fieldPath);r.isNil(c)?this.viewModel=s.prototype.getDefaultModel():(this.viewModel=c,this.$scope.onFilterChanged(this.viewModel));const l=i.directiveTemplate("uiitem/widget/table/filter/text/floatingtext");a(l).then(function(e){if(r.isNil(n.$scope))return;const t=o(e)(n.$scope);angular.element(n.eWrapperDiv).replaceWith(t),n.eWrapperDiv=angular.element(t).get()[0]})},c.prototype.onParentModelChanged=function(e,t){this.viewModel=e,this.setModelCallbackFn&&this.setModelCallbackFn(e)},c.prototype.getGui=function(){return this.eWrapperDiv},c.prototype.destroy=function(){this.$scope.$destroy(),delete this.$scope,angular.element(this.eWrapperDiv).remove(),delete this.eWrapperDiv},{getTextFilter:()=>s,getTextFloatingFilter:()=>c}}e.$inject=["TableStorageService","StringEncodingService","UrlService","CCUtils","$templateRequest","$compile","_"],angular.module("ccFrontend").factory("TableFilterService",e)}(),function(){"use strict";function e(e,t,i,n){return{addToTableGroup:a,restoreTableGroups:function(e){var r=t.get(e,t.KEYS.groupedColumns),s=e.widget.table.grid.columnApi.getAllColumns();
1return o("restore "+r.length+" table groups"),i.forEach(r,function(t){var n=i.find(s,function(e){return e.colId===t});i.isNil(n)?o("tried to restore "+t+" but couldn't find matching colDef"):a(e,n)}),n.when()},removeAllTableGroups:function(e){o("remove all groups"),e.widget.table.grid.columnApi.columnController.setRowGroupColumns([],"contextMenu")},removeSingleTableGroup:function(e,t){o("remove single column from table grouping: "+t.colId),e.widget.table.grid.columnApi.columnController.removeRowGroupColumn(t,"contextMenu")}};function a(e,t){var n=0===e.widget.table.grid.columnApi.getRowGroupColumns().length;e.widget.table.grid.columnApi.columnController.addRowGroupColumn(t,"contextMenu"),e.widget.table.grid.columnApi.columnController.setColumnVisible(t,!1,"contextMenu"),e.widget.table.grid.columnApi.moveColumn("$selection",0,"contextMenu");var a,o=i.find(e.widget.table.grid.columnApi.getAllGridColumns(),function(e){return!0===e.colDef.showRowGroup});a=n?t.actualWidth:o.actualWidth+t.actualWidth,e.widget.table.grid.columnApi.setColumnWidth(o.colId,a,!0,"contextMenu")}function o(t){e.debug("[ccTableGroup] "+t)}}e.$inject=["LogService","TableStorageService","_","$q"],angular.module("ccFrontend").factory("TableGroupService",e)}(),function(){"use strict";function e(e,t,i,n,a,o){function r(){this.eWrapperDiv=document.createElement("div"),this.eLabel=null,this.$scope=null,this.params=null,this.sortController=null,this.lastMovingChanged=0,this.listeners={}}function s(){this.listeners={},this.params=null,this.eWrapperDiv=document.createElement("div"),this.checkbox=null}return r.prototype.init=function(e){var t,i;this.$scope=e.cc.scope.$new(!0),this.params=e,this.sortController=this.params.column.columnApi.columnController.sortController,e.cc.groupColumn?(t="",i="",o.forEach(e.column.columnApi.getRowGroupColumns(),function(e){var n,a,r=e.colDef.headerComponentParams;o.isNil(r.cc.field)?(n=l("entity."+r.cc.entity+".$entity",r.cc.entity,null,null,!1),a=l("entity."+r.cc.entity+".$entity",r.cc.entity,null,null,!0)):(n=c(r.cc.field,r.cc.entity,r.cc.currentCollectionMemberNumber,r.cc.parentCollectionMemberPrefix,!1),a=c(r.cc.field,r.cc.entity,r.cc.currentCollectionMemberNumber,r.cc.parentCollectionMemberPrefix,!0)),""===t?(t=n,i=a):(t=t+' <i class="fa fa-arrow-right"></i> '+n,i=i+" -> "+a)})):o.isNil(e.cc.field)?(t=l("entity."+e.cc.entity+".$entity",e.cc.entity,null,null,!1),i=l("entity."+e.cc.entity+".$entity",e.cc.entity,null,null,!0)):(t=c(e.cc.field,e.cc.entity,e.cc.currentCollectionMemberNumber,e.cc.parentCollectionMemberPrefix,!1),i=c(e.cc.field,e.cc.entity,e.cc.currentCollectionMemberNumber,e.cc.parentCollectionMemberPrefix,!0));var a=n('<div class="ag-cell-label-container" role="presentation" title="'+i+'">  <span ref="eMenu" class="ag-header-icon" style="margin-right: 3px"><i class="fa fa-bars prefix-icon"></i></span>  <div ref="eLabel" class="ag-header-cell-label" role="presentation">    <span ref="eFilter" class="ag-header-icon ag-filter-icon" data-ng-show="filterActive"><i class="fa fa-filter prefix-icon"></i></span>    <span class="ag-header-cell-text" role="columnheader">'+t+'    </span>    <span ref="eSortAsc" class="ag-header-icon ag-sort-ascending-icon" data-ng-show="sortOrder === \'asc\'"><i class="fa fa-sort-alpha-down suffix-icon"></i></span>    <span ref="eSortDesc" class="ag-header-icon ag-sort-descending-icon" data-ng-show="sortOrder === \'desc\'"><i class="fa fa-sort-alpha-up suffix-icon"></i></span>    <span ref="eSortOrder" class="ag-header-icon ag-sort-order" data-ng-show="!!sortIndex"> {{sortIndex}} </span>    <span ref="eSortNone" class="ag-header-icon ag-sort-none-icon" data-ng-show="sortOrder === \'none\'"></span>  </div></div>')(this.$scope);angular.element(this.eWrapperDiv).replaceWith(a),this.eWrapperDiv=angular.element(a).get()[0],this.eLabel=a.find("[ref=eLabel]")[0],this.eMenu=a.find("[ref=eMenu]")[0],this.listeners.onFilterChanged=this.onFilterChanged.bind(this),this.params.column.addEventListener("filterChanged",this.listeners.onFilterChanged),this.onFilterChanged(null),this.params.enableSorting&&(this.listeners.onMovingColumn=this.onMovingColumn.bind(this),this.listeners.onHeaderClick=this.onHeaderClick.bind(this),this.listeners.onMenuClick=this.onMenuClick.bind(this),this.listeners.onSortChanged=this.onSortChanged.bind(this),this.listeners.onGlobalSortChanged=this.onGlobalSortChanged.bind(this),this.listeners.onGlobalGroupingChanged=this.onGlobalGroupingChanged.bind(this),this.params.column.addEventListener("movingChanged",this.listeners.onMovingColumn),this.eLabel.addEventListener("click",this.listeners.onHeaderClick),this.eMenu.addEventListener("click",this.listeners.onMenuClick),this.params.column.addEventListener("sortChanged",this.listeners.onSortChanged),this.params.column.gridApi.eventService.addEventListener("sortChanged",this.listeners.onGlobalSortChanged),this.params.column.gridApi.eventService.addEventListener("columnRowGroupChanged",this.listeners.onGlobalGroupingChanged),this.onSortChanged(null),this.onGlobalSortChanged(null))},r.prototype.getGui=function(){return this.eWrapperDiv},r.prototype.refresh=function(e){return e.cc.scope.$id===this.params.cc.scope.$id&&(o.isNil(e.cc.field)&&o.isNil(this.params.cc.field)||e.cc.field.name===this.params.cc.field.name)&&e.cc.entity===this.params.cc.entity&&e.cc.currentCollectionMemberNumber===this.params.cc.currentCollectionMemberNumber&&e.cc.parentCollectionMemberPrefix===this.params.cc.parentCollectionMemberPrefix},r.prototype.destroy=function(){o.isNil(this.$scope)||this.$scope.$destroy(),this.params.column.removeEventListener("filterChanged",this.listeners.onFilterChanged),this.params.enableSorting&&(this.params.column.removeEventListener("movingChanged",this.listeners.onMovingColumn),this.eLabel.removeEventListener("click",this.listeners.onHeaderClick),this.eMenu.removeEventListener("click",this.listeners.onMenuClick),this.params.column.removeEventListener("sortChanged",this.listeners.onSortChanged),this.params.column.eventService.removeEventListener("sortChanged",this.listeners.onGlobalSortChanged),this.params.column.eventService.removeEventListener("columnRowGroupChanged",this.listeners.onGlobalGroupingChanged))},r.prototype.onFilterChanged=function(){var e=this;a(function(){e.$scope.filterActive=e.params.column.isFilterActive()})},r.prototype.onHeaderClick=function(t){if(!e.isEditingMode()){var i=this.params.column.isMoving(),n=(new Date).getTime()-this.lastMovingChanged<50;if(!(i||n)){var a=this.params.api.gridOptionsWrapper.isMultiSortKeyCtrl()?t.ctrlKey||t.metaKey:t.shiftKey;this.params.progressSort(a)}}},r.prototype.onMenuClick=function(t){e.isEditingMode()||this.params.showColumnMenu(this.eMenu)},r.prototype.onSortChanged=function(){var e;e=this.params.column.isSortAscending()?"asc":this.params.column.isSortDescending()?"desc":"none";var t=this;a(function(){t.$scope.sortOrder=e})},r.prototype.onGlobalSortChanged=function(){var e=this.sortController.getColumnsWithSortingOrdered(),t=e.indexOf(this.params.column),i=e.length>1,n=this.params.column.isSorting()&&i,o=this;a(function(){o.$scope.sortIndex=n&&t>=0?t+1:null})},r.prototype.onMovingColumn=function(){this.lastMovingChanged=(new Date).getTime()},r.prototype.onGlobalGroupingChanged=function(e){this.params.cc.groupColumn&&"contextMenu"===e.source&&!e.ccProcessed&&(this.params.column.gridApi.refreshHeader(),e.ccProcessed=!0)},s.prototype.init=function(e){this.params=e,this.eWrapperDiv.setAttribute("class","ag-wrapper ag-input-wrapper ag-checkbox-input-wrapper"),this.eWrapperDiv.setAttribute("role","presentation"),this.eWrapperDiv.setAttribute("ref","eWrapper"),e.cc.scope.itemConfig.singleSelection||(this.checkbox=document.createElement("input"),this.checkbox.setAttribute("class","ag-input-field-input ag-checkbox-input"),this.checkbox.setAttribute("type","checkbox"),this.checkbox.setAttribute("ref","eInput"),this.checkbox.setAttribute("tabIndex","-1"),this.checkbox.setAttribute("aria-label","Press Space to toggle all rows selection"),this.eWrapperDiv.appendChild(this.checkbox),this.listeners.onCheckboxClick=this.onCheckboxClick.bind(this),this.checkbox.addEventListener("click",this.listeners.onCheckboxClick)),this.listeners.onGlobalFilterChanged=this.onGlobalFilterChanged.bind(this),this.params.column.gridApi.eventService.addEventListener("filterChanged",this.listeners.onGlobalFilterChanged),this.listeners.onGlobalCellClicked=this.onGlobalCellClicked.bind(this),this.params.column.gridApi.eventService.addEventListener("cellClicked",this.listeners.onGlobalCellClicked)},s.prototype.getGui=function(){return this.eWrapperDiv},s.prototype.destroy=function(){this.checkbox.removeEventListener("click",this.listeners.onCheckboxClick),this.params.column.eventService.removeEventListener("filterChanged",this.listeners.onGlobalFilterChanged)},s.prototype.onCheckboxClick=function(t){e.isEditingMode()||this.params.cc.toggleSelectAll()},s.prototype.onGlobalFilterChanged=function(){this.checkbox.checked=!1}
1,s.prototype.onGlobalCellClicked=function(e){!o.isNil(e.colDef.cellRendererParams)&&e.colDef.cellRendererParams.cc.canBeCopied&&i.canCopyToClipboard(e.event.target)||e.node.isExpandable()||"$selection"===e.colDef.field||this.params.cc.scope.widget.api.isEditMode(this.params.cc.scope)||this.params.cc.scope.itemConfig.isModal||(this.checkbox.checked=!1)},{getHeaderComponent:function(){return r},getEmptyHeaderComponent:function(){return s}};function c(e,i,n,a,r){return o.isUndefined(e.nameOverride)?l(t.getTranslationKeyWithDefault("entity."+(e.entity||i)+"."+e.name,"$defaults.attribute."+e.name),e.entity||i,n,a,r):(t.addTranslationField(e.nameOverride),l(e.nameOverride.id,null,n,a,r))}function l(e,i,n,a,r){var s=o.isNil(a)?"":a,c=o.isNil(n)?"":n;return r?s+t.getTranslation(e)+" "+c:'<span class="translatable-by-customer" data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventEditingMode}">'+s+t.getTranslation(e)+" "+c+"</span>"+function(e,t){if(!t)return"<cc-editing-mode data-i18n=\"'"+e+"'\" ></cc-editing-mode>";return"<cc-editing-mode data-i18n=\"'"+e+"'\" data-entity=\"'"+t+"'\"></cc-editing-mode>"}(e,i)}}e.$inject=["ApplicationService","I18nService","ClientService","$compile","$timeout","_"],angular.module("ccFrontend").factory("TableHeaderService",e)}(),function(){"use strict";function e(e){function t(){this.eGui=null}return t.prototype.init=function(e){this.eGui=document.createElement("div"),this.eGui.setAttribute("class","ag-custom-loading-cell"),this.eGui.setAttribute("style","padding-left: 10px; line-height: 25px;");var t=document.createElement("i");t.setAttribute("class","fa fa-circle-notch fa-spin"),this.eGui.appendChild(t)},t.prototype.getGui=function(){return this.eGui},{getLoadingCellRenderer:function(){return t}}}e.$inject=["_"],angular.module("ccFrontend").factory("TableLoadingService",e)}(),function(){"use strict";function e(e,t,i,n){const a="cc_table_",o="cc_table_process_",r="widget.table.config";Object.keys(localStorage).filter(e=>e.startsWith("campuscore_table_")).forEach(e=>localStorage.removeItem(e));return{KEYS:{activeFilters:"activeFilters",columns:"columns",customFilters:"customFilters",disableInitialModeFilter:"disableInitialModeFilter",floatingFilterVisible:"floatingFilterVisible",groupedColumns:"groupedColumns",orderColumns:"orderColumns",pinnedColumns:"pinnedColumns"},clear:function(e){const i=s(e);l("CLEAR local storage key "+i),t.clear(e,r,i)},get:function(e,i){return l("GET local storage key "+i),t.get(e,c(i))},initTableConfigurationInScope:function(e){return l("init table config"),e.widget.table.config=function(e){if(i.isNil(e))return{};const n=s(e);return i.isNil(n)?{}:(l("GET local storage key "+n),t.getConfig(n))}(e),n.when()},remove:function(e,i){const n=s(e);l("REMOVE "+i+" from local storage key "+n),t.remove(e,r,c(i),n)},replace:function(e,i){const n=s(e);l("REPLACE local storage key "+n),t.replace(e,r,i,n)},set:function(e,i,n){const a=s(e);l("SET "+i+" to local storage key "+a),t.set(e,r,c(i),n,a)}};function s(e){if(i.isNil(e)||i.isNil(e.itemConfig))throw new Error("No widget scope defined.");return"{processGroupViewDefinitionId}"===e.itemConfig.dynamicViewDefinition?o+e.itemConfig.viewDefinition:i.isNil(e.itemConfig.id)?null:a+e.itemConfig.id}function c(e){return r+"."+e}function l(t){let n="[ccTableStorage] ";i.isNil(t)||(n+=t),e.debug(n)}}e.$inject=["LogService","PersistedStorageService","_","$q"],angular.module("ccFrontend").factory("TableStorageService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s){var c=!1;return{applyTableView:l,getTableViewMenuItems:function(e){var n=s.map(e.widget.tableViews||[],function(n){var a={name:i.getTranslation(n.name.id),cssClasse
1s:["text-ellipsis"]};return c?a.subMenu=[{name:i.getTranslation("common.ui.table.tableView.apply"),icon:'<i class="fa fa-fw fa-check"></i>',action:function(){l(e,n.id)}},{name:i.getTranslation("common.delete"),icon:'<i class="fa fa-fw fa-trash"></i>',action:function(){!function(e,i){t.deleteTableView(i,e.widget).then(function(){d(e)})}(e,n.id)}}]:a.action=function(){l(e,n.id)},a});c&&(n.length&&n.push("separator"),n.push({name:i.getTranslation("common.ui.table.tableView.create"),icon:'<i class="fa fa-fw fa-plus"></i>',action:function(){!function(e){var i=function(e){if(s.isNil(e)||s.isNil(e.widget)||s.isNil(e.widget.table)||s.isNil(e.widget.table.config))return{};return{activeFilters:u(a.getActiveFiltersConfiguration(e)),disableInitialModeFilter:a.initialModeFilterDisabled(e),customFilters:u(a.getCustomFiltersConfiguration(e)),floatingFilterVisible:a.getFloatingFilterVisibilityConfiguration(e),groupedColumns:function(e){return s.map(e,function(e){return{colId:e}})}(a.getGroupingConfiguration(e)),orderColumns:function(e){var t=a.getSortConfiguration(e);return s.map(t,function(e){return{colId:e.colId,direction:e.direction.toUpperCase()}})}(e),tableColumns:function(e){return s.map(a.getColumnConfiguration(e),function(e){return function(e){if(!e.colId)throw new Error("Received column for transformation without colId");return{colId:e.colId,pinning:e.pinning?e.pinning:null,floatingFilter:e.floatingFilter?e.floatingFilter:null,visible:!!s.isNil(e.visible)||e.visible}}(e)})}(e)}}(e);t.createTableView(i,e.widget).then(function(){d(e)})}(e)}}));return n.push("separator"),n},getProminentTableViews:function(e){return s.filter(e.widget.tableViews||[],function(e){return e.prominent})},loadTableViews:d,showTableViews:function(e){return!e.itemConfig.isModal&&!s.isNil(e.widget.table)&&!s.isNil(e.widget.table.features)&&e.widget.table.features.tableViews&&(c||e.widget.tableViews&&e.widget.tableViews.length)}};function l(e,i){return t.readTableViewConfiguration(i).then(function(t){var i={};return t.activeFilters.length&&(i[n.KEYS.activeFilters]=g(t.activeFilters)),t.customFilters.length&&(i[n.KEYS.customFilters]=g(t.customFilters)),t.orderColumns.length&&(i[n.KEYS.orderColumns]=function(e){return s.map(e,function(e){if(!e.colId||!e.direction)throw new Error("Received invalid order column for detransformation.");return{colId:e.colId,direction:e.direction.toLowerCase()}})}(t.orderColumns)),t.tableColumns.length&&(i[n.KEYS.columns]=function(e){return s.map(e,function(e){var t=e;return e.visible&&delete e.visible,s.omit(t,s.isNil)})}(t.tableColumns)),t.groupedColumns.length&&(i[n.KEYS.groupedColumns]=function(e){return s.map(e,function(e){return e.colId})}(t.groupedColumns)),t.floatingFilterVisible&&(i[n.KEYS.floatingFilterVisible]=!0),t.disableInitialModeFilter&&(i[n.KEYS.disableInitialModeFilter]=!0),n.replace(e,i),e.widget.api.reInitialize(e)})}function d(n){if(n.itemConfig.isModal)return r.when();if(!n.widget.table.features.tableViews)return r.when();var a=n.itemConfig.viewDefinition;return e.hasUserStories([o.userStory.manageTableViews]).then(function(e){return c=e[0],t.getTableViews(a,n).then(function(e){s.forEach(e,function(e){i.addTranslationField(e.name)}),n.widget.tableViews=s.sortBy(e,function(e){return i.getTranslation(e.name.id)})})})}function u(e){return s.map(e,function(e){return{filter:e}})}function g(e){return s.map(e,function(e){return e.filter})}}e.$inject=["AuthService","ActionService","I18nService","TableStorageService","TableConfigurationService","CMS_DATA","$q","_"],angular.module("ccFrontend").factory("TableViewService",e)}(),function(){"use strict";angular.module("ccFrontend").provider("ThemeService",function(){function e(e,t,i){let n=!1;return{init:function(){e.readObjects({viewDefinitionId:i.view.activeTheme,objectId:i.view.baseSettingsObject}).then(t=>{if(t.data[0]){const a=t.data[0].theme;e.readObjects({viewDefinitionId:i.view.themeCrudButtonsView,objectId:a}).then(e=>{e.data[0]&&(n=e.data[0].showCrudButtonLabels)})}})},showCrudButtonLabels:function(){return n}}}e.$inject=["ActionService","NavigationService","CMS_DATA"],this.$get=e})}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{executeGroupTransition:function(n,a,r){const s=function(){return e.executeProcessGroupTransition(n.id,a,r.widget)},c=function(){return i.getAlert("common.confirm.activeWidgetChangeFailed","common.confirm.activeWidgetChangeFailed.title"),o.reject()};return t.confirmActiveWidgetChange(r.widget).then(function(e){return t.handleActiveWidgetSwitch(e).then(s,c)})},executeTransition:function(a,s,c){const l=function(){const t=o.defer();return e.executeProcessTransition(a.id,s,c.widget,{suppressActionResult:!0}).then(function(e){if(r.isArray(e)&&r.has(e[0],"status")&&200!==e[0].status){const a=e[0].error;if(r.isNil(a[0]))c.widget.api.status.showErrorModalAlert(c);
1else{const e={title:"common.userGuide",module:"process.validation.processablevalidation",receivesContext:c.itemConfig.receivesContext,preventDesignMode:!0,preventEditingMode:!0,customData:{transitionErrors:a,transitionErrorsTitle:"process.transitionValidationFailed"}};i.getCustom(e,[],[n.getControl("close")],[])}t.reject()}else t.resolve()}),t.promise},d=function(){return i.getAlert("common.confirm.activeWidgetChangeFailed","common.confirm.activeWidgetChangeFailed.title"),o.reject()};return t.confirmActiveWidgetChange(c.widget).then(function(e){return t.handleActiveWidgetSwitch(e).then(l,d)})}}}e.$inject=["ActionService","WidgetService","ModalService","ControlService","I18nService","$q","_"],angular.module("ccFrontend").factory("TransitionService",e)}(),function(){"use strict";function e(e){return{walk:i,reverseWalk:function(i,n,a){function o(i,r){var s=t(i,a),c=[];return e.each(s,function(e){var t=o(e,r+1);void 0!==t&&c.push(t)}),n(i,r,c.length?c:void 0)}if(i instanceof Array){var r=[];return e.each(i,function(e){r.push(o(e,0))}),r}return o(i,0)},map:function(e,t,i){return function e(i,n){if(i instanceof Array)return i.map(function(t){return e(t,n)});var a=i.children,o=t(i,n);return a&&(o.children=e(a,n+1)),o}(e,0)},flatten:function(e,t){var n=[];return i(e,function(e){n.push(e)},t),n},paths:function(e,t){var n=[];return i(e,function(e,t,i){n.push(i)},t),n},levels:function(e,t){var n=[];return i(e,function(e,t,i){n[t]||(n[t]=[]),n[t].push(e)},t),n},filter:function i(a,o,r){a=n(a);r=r||"$children";function s(n,a){var r=t(n,a),s=i(r,o,a);return r.splice.apply(r,[].concat(0,Number.MAX_VALUE,s)),function(i,n){var a=t(i,n);a.length||e.each(e.keys(i),function(e){i[e]===a&&delete i[e]})}(n,a),n}if(!(a instanceof Array))return s(a,r);return a.filter(function(e){s(e,r);var i=t(e,r);return o(e)||i.length})},copy:n};function t(e,t){return("string"==typeof t||void 0===t?function(e){return e?e[t||"$children"]:[]}:t)(e)||[]}function i(i,n,a){!function i(o,r,s){o instanceof Array||(s.push(o),n(o,r,s),r+=1,o=t(o,a)),e.each(o,function(e){i(e,r,s.slice())})}(i,0,[])}function n(t){var i;if(t instanceof Array){i=[];for(var a=0;a<t.length;a++)i.push(n(t[a]))}else{if(null===t||"object"!=typeof t)return t;i={},e.each(e.keys(t),function(e){i[e]=n(t[e])})}return i}}e.$inject=["_"],angular.module("ccFrontend").factory("TreeService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c){return{lookupValue:function(i,r,d,u){var g=s.defer();if(c.isNil(u))if(c.isEmpty(i.field.embeddedObjectView))if(i.field.referencedField)var f=c.dropRight(i.valuePath.split(".")).join(".")+"."+i.field.referencedField,p=i.$watch(f,function(t,i){var n;n=c.isPlainObject(t)&&c.has(t,"id")?t.id:t,g.resolve(e.getEntity(n).selectionViewDefinitionId),p()});else e.isBasicType(i.field.type)?g.resolve(null):g.resolve(e.getEntity(i.field.type).selectionViewDefinitionId);else g.resolve(i.field.embeddedObjectView);else g.resolve(u);var m=null;c.isEmpty(i.field.filterAllowedValuesByContextParameter)?i.field.filterAllowedValuesByField&&(m=i.getReferencedFieldValue(i.field.filterAllowedValuesByField),c.startsWith(m,'"')&&c.endsWith(m,'"')&&(m=JSON.parse(m))):m=t.getContext(i.field.filterAllowedValuesByContextParameter);i.field.filterAllowedValuesByFieldAsFilterVariable&&(t.setContext("fieldAsFilterVariableAttributeName",i.field.filterAllowedValuesByFieldAsFilterVariable),t.setContext("fieldAsFilterVariableReferencedId",i.getReferencedFieldValue(i.field.filterAllowedValuesByFieldAsFilterVariable)));return g.promise.then(function(e){var t={viewDefinition:e,title:"common.lookupValue",preventDesignMode:!0,preventEditingMode:!0,singleSelection:!0,pathContext:!c.isNull(m),contextId:m,receivesContext:i.field.filterAllowedValuesByContextParameter};c.isNil(d)?!c.isNil(i.widget.lookupValueFunctions)&&c.isFunction(i.widget.lookupValueFunctions[i.widget.model.baseModel.viewDefinitionId][i.field.name])?c.extend(t,{prefetchedData:i.widget.lookupValueFunctions[i.widget.model.baseModel.viewDefinitionId][i.field.name]()}):i.widget.api.model&&i.widget.api.model.getBaseModel(i.widget._scope).useNewPermissions&&c.extend(t,{readObjectsAction:o.createLoadAllowedValuesNewPermissionsFunction(i)}):c.extend(t,{prefetchedData:d});var r,s=i.getValue();c.isEmpty(s)||(r=c.isArray(s)?c.map(s,function(e){return l(e)}):[l(s)],c.extend(t,{preselectedIds:r}));
1return n.getTable(t,[],a.getLookupControls(),{size:"lg"}).result})}};function l(e){var t=null;return c.isString(e)&&r.isUuid(e)&&(t=e),c.isString(e)||c.isNil(e.id)||!r.isUuid(e.id)||(t=e.id),t}}e.$inject=["ModelService","NavigationService","ActionService","ModalService","ControlService","AllowedValuesService","CCUtils","$q","_"],angular.module("ccFrontend").factory("TypeaheadService",e)}(),function(){"use strict";function e(e,t,i){return{action:function(e){if(i.isUndefined(e))throw new Error("no action id specified");return t.backend.action+"/"+e},actionServerInput:function(e,n){if(i.isUndefined(e))throw new Error("no action id specified");if(i.isUndefined(n))throw new Error("no input name specified");return t.backend.actionServerInput+"/"+e+"/"+n},actionStatus:function(e){return t.backend.actionStatus+"/"+e},api:n,customModule:function(e){var n=e.split("."),a=i.dropRight(n).join("/"),o=i.last(n)+t.extension.html;return t.frontend.modules+a+"/"+o},directiveTemplate:function(e){if(i.isUndefined(e))throw new Error("no directive specified");return t.frontend.directives+e.toLowerCase()+t.extension.html},forestView:function(e,n){if(i.isUndefined(e))throw new Error("no forest view specified");if(i.isUndefined(n))throw new Error("no forest specified");return t.backend.forestView+"/"+e+"/"+n},future:function(e){return t.backend.future+"/"+e},getBaseUrl:function(){return e.location.href.substring(0,e.location.href.indexOf("/",e.location.href.indexOf(e.location.hostname)))},isApp:function(){return e.location.href.indexOf(t.frontend.app)>-1},itemTemplate:function(e){if(i.endsWith(e,"Layout"))return a(e);if(i.endsWith(e,"Widget"))return o(e);throw new Error("no item specified")},landingPageWidget:function(e,n){if(n){const a=n.split("."),o=e.replace(/_/g,"").toLowerCase(),r=i.dropRight(a).join("/"),s=i.last(a)+t.extension.html;return`${t.frontend.landingPages}${o}/${r}${s}`}return null},layoutTemplate:a,multiPartAction:function(e){if(i.isUndefined(e))throw new Error("no action id specified");return t.backend.multiPartAction+"/"+e},pageLayout:function(e){if(i.isUndefined(e))throw new Error("no page layout type specified");return t.frontend.directives+t.frontend.pageLayoutType+e+t.extension.html},processEvent:function(e,n,a){if(i.isUndefined(e))throw new Error("no process specified");if(i.isUndefined(n))throw new Error("no event specified");return t.backend.process+"/"+e+"/"+n+"?bulk="+a},report:function(e){if(i.isUndefined(e))throw new Error("no report specified");return t.backend.report+"/"+e},search:function(e){return n("search/"+e)},view:function(e){if(i.isUndefined(e))throw new Error("no view specified");return t.backend.view+"/"+e},widgetTemplate:o};function n(e){if(i.isUndefined(e))throw new Error("no api path specified");return t.backend.api+"/"+e}function a(e){if(i.isUndefined(e))throw new Error("no layout specified");var n=i.words(e)[0].toLowerCase();return t.frontend.layouts+n+t.extension.html}function o(e){if(i.isUndefined(e))throw new Error("no widget specified");var n=i.words(e)[0].toLowerCase();return t.frontend.widgets+n+t.extension.html}}e.$inject=["$window","URLS","_"],angular.module("ccFrontend").factory("UrlService",e)}(),function(){"use strict";function e(e,t,i){return{resolve:n};function n(i,o,r){var s;if(!t.isNil(o)){var c=e.getTranslation("validation."+o.name);if(!t.isNil(c)&&!t.startsWith(c,"???"))return c}return t.isArray(i)?(s=[],t.each(i,function(e){t.has(e,"i18nKey")?s.push(n(e.i18nKey,o,r)):s.push(a(e,o,r))}),s):s=a(i,o,r)}function a(a,o,r){if(t.isString(a))return e.getTranslation(a);var s=function(i,a,o){return t.mapValues(i,function(i){return function(e){return t.isObject(e)&&t.has(e,"i18n")}(i)?function(i,a,o){if("validation.variable"===i.i18n)return function(i,n,a){var o=i.parameters.path;if(!(t.isNil(o)||(t.isNil(a.widget)||t.isNil(a.widget.data))&&(t.isNil(a.instance)||t.isNil(a.instance.$origin)||t.isNil(a.instance.$origin.data)))){var r;r=t.isNil(a.widget)?"instance.$origin.data":"widget.data",Array.isArray(t.get(a,r))&&(r+="[0]"),o.lastIndexOf(".")>0&&(r+="."+o.substring(0,o.lastIndexOf(".")));var s=t.get(a,r);if(!t.isNil(s)){var c=t.get(a,r).$viewDefinition,l=e.getTranslation("nameOverride."+c+"."+i.parameters.name);if(!t.isNil(l)&&!t.startsWith(l,"???"))return l}}var d=e.getTranslation("nameOverride."+i.parameters.entity+"."+i.parameters.name);if(!t.isNil(d)&&!t.startsWith(d,"???"))return d;return e.getTranslation("entity."+i.parameters.entity+"."+i.parameters.name)}(i,0,o);if("validation.systemVariable"===i.i18n)return function(t){return e.getTranslation("system."+t.parameters.name)}(i);return n(i,a,o)}(i,a,o):function(e){return t.isPlainObject(e)&&t.has(e,"de")&&t.has(e,"en")}(i)?i[e.getCurrentLocale().iso]:function(e){return t.startsWith(e,"[")&&t.endsWith(e,"]")}(i)?function(i,n){var a=i.substr(1,i.length-2).split(", ");return t.map(a,function(i){return t.isUndefined(n)||"File"!==n.type?i:e.getTranslationWithDefault("
1common.contentType."+i,"common.contentType.application/octet-stream")})}(i,a):i})}(a.parameters,o,r),c=function(i,n){var a,o=function(e){return t.filter(Object.keys(e),function(e){return!isNaN(parseInt(e))}).length}(n),r=e.getTranslation(i),s=/\[(.*\{\*}.*)]/g;for(;null!==(a=s.exec(r));){for(var c="",l=1;l<=o;l++)c+=a[1].replace("{*}","{"+l+"}");r=r.substring(0,a.index)+c+r.substring(a.index+a[0].length)}return r}(a.i18n,s);return Object.keys(s).length>0&&(c=i("displayPattern")(s,c)),c}}e.$inject=["I18nService","_","$filter"],angular.module("ccFrontend").factory("ValidationService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){const s="viewDefinitionModelCache",c="forestDefinitionModelCache";return function(){e.initCache(s),e.initCache(c)}(),{applyForestViewCaching:function(e,t){l(c,e,t)},applyForestViewModelHashes:function(e,t){r.extend(e,{modelHash:u(c,t)})},applyViewDefinitionCaching:function(e,t){l(s,e,t)},applyViewDefinitionModelHashes:function(e,t){r.extend(e,{modelHash:u(s,t)})},createModel:function(e,t){return{[a.getUuid()]:{allowedActions:[],defaultOrder:null,displayPattern:null,entity:e,entityPermissions:[],fields:t,hash:a.getUuid(),pathAllowedAttributeValues:{},pathPermissions:[],validators:[]}}},createObject:function(e,t,i,n){return d(e,t,i,{},n,!0)},createMissingEmbeddedObjects:function(e,t,i,n,a){return d(e,t,i,n,a,!1)},handlePathAllowedAttributeValues:function(e,t){Object.entries(e.pathAllowedAttributeValues||{}).filter(([e,t])=>1===t.values.length).forEach(([e,i])=>n.setContext(`${e}Id`,i.values[0],!1,t))},resolveDefaultValues:function(e,t,i){const s=[],c={};return Object.entries(e||{}).forEach(([e,o])=>{c[e]={},Object.values(o.fields).forEach(l=>{const d=null!==o.useNewPermissions&&void 0!==o.useNewPermissions,u=function(e,t,i,o){if(void 0!==e.defaultValue&&null!==e.defaultValue){let s;return a.isMacro(e.defaultValue)?void 0===(s="{currentDateTime}"===e.defaultValue?n.getContextAsPromise("requestDateTime",o):"{currentDate}"===e.defaultValue?n.getContextAsPromise("requestDate",o):n.getContextAsPromise(r.trim(e.defaultValue,"{}"),o))&&(s=Promise.resolve(null)):s=a.isUuid(e.defaultValue)?Promise.resolve(e.defaultValue):Promise.resolve(JSON.parse(e.defaultValue)),s.then(n=>a.isUuid(e.embeddedObjectView)&&!i?t({viewDefinitionId:e.embeddedObjectView,objectId:n},o?o.widget:null).then(e=>a.transformArrays(e.data)[0]):Promise.resolve(n))}return Promise.resolve(void 0)}(l,t,d,i).then(t=>{void 0!==t&&(c[e][l.name]=t)});s.push(u)})}),o.all(s).then(()=>c)}};function l(n,a,o){if(void 0!==a)if(r.isEmpty(a.model))a.model=e.getEntry(n,o);else if(function(e){const i=r.partialRight(r.assign,(e,t)=>r.isNil(e)?t:e);Object.values(e).flatMap(e=>e.fields).forEach(e=>i(e,t.getDefaultConfiguration(e)))}(a.model),e.knowsEntry(n,o)){const t=e.getEntry(n,o);a.model=r.extend(t,a.model)}else e.putEntry(n,o,a.model),function(e){if(null===e||void 0===e)return;Object.values(e).forEach(e=>(e.fields||[]).forEach(t=>{if(r.has(t,"nameOverride")){const n=`nameOverride.${e.viewDefinitionId}.${t.name}`;i.addTranslationFieldWithKey(n,t.nameOverride)}}))}(a.model)}function d(e,t,i,n,a,o){function s(e,t,i,n,a){!i&&r.isNil(n)&&(n={$create:!t.staticValue,$read:!0,$write:!t.staticValue,$arrange:!t.staticValue,$insert:!t.staticValue,$remove:!t.staticValue,value:null}),e[t.name]=i?a:{$create:n.$create,$read:n.$read,$write:n.$write,$arrange:n.$arrange,$insert:n.$insert,$remove:n.$remove,value:a}}const c=n||{};return null===e||void 0===e?c:((e[t].fields||[]).forEach(l=>{const u=n[l.name],g=function(e,t,i){return i?e[t]:r.get(e,`${t}.value`)}(n,l.name,i);null===g||void 0===g?o&&r.has(a,`${t}.${l.name}`)?s(c,l,i,u,r.get(a,`${t}.${l.name}`)):l.collection?s(c,l,i,u,[]):l.embeddedObjectView&&!l.selectable&&(i||r.isNil(u)||!0===u.$write)?s(c,l,i,u,d(e,l.embeddedObjectView,i,{},a,!0)):s(c,l,i,u,null):l.embeddedObjectView&&(l.collection?r.each(g,t=>{d(e,l.embeddedObjectView,i,t,a,!1)}):d(e,l.embeddedObjectView,i,g,a,!1))}),c)}function u(t,i){if(!e.knowsEntry(t,i))return null;const n=e.getEntry(t,i);return Object.keys(n).reduce((e,t)=>(e[t]=n[t].hash,e),{})}}e.$inject=["CacheService","FieldService","I18nService","NavigationService","CCUtils","$q","_"],angular.module("ccFrontend").factory("ViewDefinitionModelService",e)}(),function(){"use strict";angular.module("ccFrontend").provider("WidgetService",function(){a.$inject=["ApplicationService","ModalService","WIDGET_API","$q","_"];var e=[],t=[];function i(e){t.push(e)}function n(t){e.push(t)}function a(a,o,r,s,c){var l=null,d=[],u={},g={},f={},p=0,m={},v={},h={},b={},w={},y={};
1return function(){c.forEach(e,function(e){g[e]=s.defer()}),c.forEach(t,function(e){d[e]=s.defer()})}(),{activate:function(e){c.has(e.api,"_modal")||(l=e)},callExtensionFunction:function(e,t,i){var n=s.defer();if(c.has(t.widget,"extension")){var a=t.widget.extension[e];if(c.isFunction(a))return c.isUndefined(i)&&(i=[]),i.push(t.widget),s.when(a.apply(this,i))}return n.resolve(),n.promise},callSyncExtensionFunction:function(e,t,i){if(c.has(t.widget,"extension")){var n=t.widget.extension[e];if(c.isFunction(n))return c.isUndefined(i)&&(i=[]),i.push(t.widget),n.apply(this,i)}},confirmActiveWidgetChange:function(e){if(D()){if(l.api.isDirty(l._scope)){var t,i;if(!c.isUndefined(e))l.api.hasApi(r.model.id,l._scope)&&(t=l.api.model.getBaseModel(l._scope).entity),e.api.hasApi(r.model.id,e._scope)&&(i=e.api.model.getBaseModel(e._scope).entity),c.isUndefined(t)||c.isUndefined(i)||t!==i||e.api.addHandler(r.lifecycle.event.executeOnce,0,function(e){var t=s.defer();return e.widget.api.switchTo("edit",e),t.resolve(),t.promise},e._scope);return o.getCustom({title:"common.confirm.activeWidgetChange.title",module:"common.confirm.activewidgetchange",preventDesignMode:!0,preventEditingMode:!0},[],[],{size:"md"}).result}var n=s.defer();return n.resolve("discard"),n.promise}var a=s.defer();return a.resolve(),a.promise},deactivate:x,getActiveWidget:C,getApiMixin:function(e){if(c.isUndefined(d[e]))throw new Error("unknown widget api mixin: "+e);return d[e].promise},getDefaultReportRenderer:S,getExtension:function(e){if(!c.isNil(e)){if(c.isNil(g[e]))throw new Error("Extension can't be resolved: "+e);return g[e].promise}var t=s.defer();return t.resolve(null),t.promise},getGraphRenderer:function(e){return c.find(c.flatten(c.values(f)),function(t){return t.systemName===e})},getNextId:function(){return"cc-widget-"+ ++p},getReportRenderer:function(e){return c.find(c.flatten(c.values(m)),function(t){return t.systemName===e})},getReportRenderers:function(e){return m[e]||[]},getSubParentWidget:function(e){var t=e.split("."),i=["button","custom","form","list","report","table","tree"],n=c.contains(i,c.last(t));for(;!n;)t=c.dropRight(t),n=c.contains(i,c.last(t));if(n)return A(b[t.join(".")]);return null},getTableCellEditor:function(e){return v[e.toLowerCase()]||null},getTableCellRenderer:function(e){return h[e.toLowerCase()]||null},getWidget:A,getWidgetSetting:function(e){if(c.isUndefined(y))return null;return y[e]||null},handleActiveWidgetSwitch:function(e){var t=C();if(c.has(t,"api")){if("discard"===e)return t.api.cancelEdit(t._scope);if("save"===e)return t.api.save(t._scope)}var i=s.defer();return i.resolve(),i.promise},isActive:I,isAnyActive:D,linkSubParentWidget:k,load:function(e){e.then(function(e){c.each(e.data,function(e){var t=c.find(c.flatten(c.values(m)),function(t){return t.systemName===e.systemName});if(c.isNull(t)||c.isUndefined(t))throw new Error("no report renderer implementation found for: "+e.systemName);c.extend(t,e)})})},objectCreated:function(e,t,i){if(!c.isArray(e))throw new Error("invalid input");c.each(E(e,t),function(n){A(n).then(function(n){c.each(e,function(e){n.api.executeHandlers(r.lifecycle.event.objectCreated,n._scope,[e.objectId,e.entity,i,t,n._scope])})})}),c.each(E(e,t),function(n){A(n).then(function(n){n.api.executeHandlers(r.lifecycle.event.objectsCreated,n._scope,[e,
1i,t,n._scope])})})},objectDeleted:function(e,t,i){if(!c.isArray(e))throw new Error("invalid input");c.each(E(e,t),function(n){A(n).then(function(n){c.each(e,function(e){n.api.executeHandlers(r.lifecycle.event.objectDeleted,n._scope,[e.objectId,e.entity,i,t,n._scope])})})}),c.each(E(e,t),function(n){A(n).then(function(n){n.api.executeHandlers(r.lifecycle.event.objectsDeleted,n._scope,[e,i,t,n._scope])})})},objectUpdated:function(e,t,i){if(!c.isArray(e))throw new Error("invalid input");c.each(c.uniq(c.flatten(c.values(u))),function(n){A(n).then(function(n){c.each(e,function(e){n.api.executeHandlers(r.lifecycle.event.objectUpdated,n._scope,[e.objectId,e.entity,i,t,n._scope])})})}),c.each(c.uniq(c.flatten(c.values(u))),function(n){A(n).then(function(n){n.api.executeHandlers(r.lifecycle.event.objectsUpdated,n._scope,[e,i,t,n._scope])})}),a.broadcast("visible.update")},registerApiMixin:i,registerExtension:n,registerGraphRenderer:function(e){if(!c.has(e,"getLayout")||!c.isFunction(e.getLayout)&&!c.has(e,"getStyle")||!c.isFunction(e.getStyle)&&c.has(e,"getOptions")||!c.isFunction(e.getOptions))throw new Error("incomplete renderer",e);f[e.systemName]=e},registerReportRenderer:function(e,t){c.has(m,e)||(m[e]=[]);if(t.isDefault&&!c.isUndefined(S(e)))throw new Error("only one default renderer per type allowed");if(c.has(t,"isDefault")||c.extend(t,{isDefault:!1}),!c.has(t,"render")||!c.isFunction(t.render))throw new Error("incomplete renderer",t);m[e].push(t)},registerTableCellEditor:function(e,t){if(!c.has(t,"getCellEditor")||!c.isFunction(t.getCellEditor))throw new Error("incomplete table editor - missing getCellEditor function",t);v[e]=t},registerTableCellRenderer:function(e,t){if(t.isDefault&&!c.isUndefined(function(){return c.find(h,function(e){return e.isDefault})}()))throw new Error("only one default table cell renderer allowed");if(c.has(t,"isDefault")||c.extend(t,{isDefault:!1}),!c.has(t,"render")||!c.isFunction(t.render))throw new Error("incomplete table renderer",t);h[e]=t},registerWidget:function(e){var t=s.defer();c.extend(e.widget,{_scope:e}),w[e.widget.id]||(w[e.widget.id]=s.defer());w[e.widget.id].resolve(e.widget);var i=e.$on("$destroy",function(){w=c.omit(w,e.widget.id),T(e),I(e.widget)&&x(e.widget),i()});c.has(e.itemConfig,"linkToSubParentState")&&k(e.itemConfig.linkToSubParentState,e.widget.id);return t.resolve(),t.promise},resolveApiMixin:function(e,t){d[e].resolve(t)},resolveExtension:function(e,t){g[e].resolve(t)},setWidgetSetting:function(e,t){c.isUndefined(y)&&(y={});y[e]=t},subscribe:function(e){var t=s.defer();if(e.widget.api.hasApi(r.model.id,e)){var i=e.widget.api.model.getAffectedEntities(e.widget._scope);c.isArray(i)||(i=[i]),c.each(c.union(i,""),function(t){$(t,e.widget.id)})}return t.resolve(),t.promise},subscribeEntity:$,unsubscribe:T};function x(e){I(e)&&(l=null)}function C(){return l}function S(e){return c.find(m[e],function(e){return e.isDefault})}function E(e,t){var i=[];return c.each(e,function(e){i=c.union(i,u[e.entity])}),c.each(t,function(e){i=c.union(i,u[e])}),i}function A(e){return c.isUndefined(w[e])&&(w[e]=s.defer()),w[e].promise}function I(e){return!c.isNull(l)&&!c.isUndefined(e._scope)&&l.api.getId(l._scope)===e.api.getId(e._scope)}function D(){return!c.isNull(l)}function k(e,t){b[e]=t}function $(e,t){c.isUndefined(u[e])&&(u[e]=[]),u[e].push(t)}function T(e){var t=s.defer(),i=e.widget.id;return c.forEach(u,function(t,n){c.includes(t,e.widget.id)&&(u[n]=c.without(u[n],i))}),t.resolve(),t.promise}}this.registerApiMixin=i,this.registerExtension=n,this.$get=a})}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l){return{$handlers:[{event:s.lifecycle.event.load,fn:function(e){l.extend(e.widget,{action:{default:[],control:[],developer:[],document:[],export:[],transition:[]}}),r.reduceRecords(e.itemConfig.newActions).forEach(t=>{d(t,e)}),r.reduceRecords(e.itemConfig.exportActions).forEach(t=>{!function(e,t){l.contains(t.widget.action.export,e.name)||t.widget.action.export.push(e.name);c.when()}(t,e)}),r.reduceRecords(e.itemConfig.documentActions).forEach(t=>{!function(e,t){l.contains(t.widget.action.document,e.name)||t.widget.action.document.push(e.name);c.when()}(t,e)}
1),r.reduceRecords(e.itemConfig.developerActions).forEach(t=>{!function(e,t){l.contains(t.widget.action.developer,e.name)||t.widget.action.developer.push(e.name);c.when()}(t,e)}),(e.itemConfig.controls||[]).forEach(t=>{u(t,e)});const t=r.reduceRecords(l.uniq(e.itemConfig.actions));return l.each(t,function(e){e.parameters&&(e.parameters=l.reduce(e.parameters,function(e,t){return e[t.name]=t.value,e},{}))}),c.when()}},{event:s.lifecycle.event.loaded,fn:function(e){if("process.ProcessTable"===e.itemConfig.extension){const t=o.getContext("processGroupStatusId");if(!l.isNil(t))return f(t,e);l.isNil(t)&&l.isNil(e.unregisterOnContextSetListener)&&(e.unregisterOnContextSetListener=e.$on("navigation.contextSet",function(t,i){if("processGroupStatusId"===i.parameter)return f(i.value,e)}))}return c.when()}},{event:s.lifecycle.event.loaded,fn:p},{event:s.lifecycle.event.afterLoad,fn:function(e){l.has(e.itemConfig,"$actionInstance")&&!l.has(e.itemConfig.$actionInstance,"$widget")&&(e.itemConfig.$actionInstance.$widget=e.widget);return c.when()}},{event:s.lifecycle.event.afterLoad,fn:p},{event:s.lifecycle.event.dirty,fn:p},{event:s.lifecycle.event.pristine,fn:p},{event:s.lifecycle.event.destroy,fn:p},{event:s.selection.event.afterActivate,fn:p},{event:s.selection.event.afterDeactivate,fn:p},{event:s.selection.event.clear,fn:p},{event:s.action.event.finishAction,fn:p},{event:s.action.event.finishBulkAction,fn:p},{event:s.lifecycle.event.objectCreated,fn:p},{event:s.lifecycle.event.objectDeleted,fn:p},{event:s.lifecycle.event.objectUpdated,fn:p}],addAction:d,addControl:u,get:function(e,t){return l.find(l.union(t.widget.action.default,t.widget.action.document,t.widget.action.export,t.widget.action.developer),function(t){return t.id===e})},getAll:function(e){return l.union(e.widget.action.default,e.widget.action.document,e.widget.action.export,e.widget.action.developer)||[]},getInstances:function(e){return t.getInstances(e.itemConfig.id)},getAllActions:g,getCustomInput:function(){return},requiresToolbar:function(e){if(e.widget.action){const t=e.itemConfig.toolbar&&e.itemConfig.toolbar.entries.length>0,i=g(e).length>0,n=e.widget.api.canReload(e);return t||i||n}return!1}};function d(e,t){return l.contains(t.widget.action.default,e.name)||t.widget.action.default.push(e.name),c.when()}function u(e,t){return t.widget.action.control.push(e),c.when()}function g(e){const t=[];switch(e.widget.type){case"FormWidget":Array.prototype.push.apply(t,function(e){let t=[];e.widget.api.canEdit(e)&&(e.itemConfig.editObjectActionOverride&&e.widget.form.crudActions.editObjectActionOverride?t.push(e.widget.form.crudActions.editObjectActionOverride):t.push("EditObjectAction"));e.widget.api.canCancelEdit(e)&&(t.push("CancelEditObjectAction"),e.itemConfig.updateObjectActionOverride&&e.widget.form.crudActions.updateObjectActionOverride?t.push(e.widget.form.crudActions.updateObjectActionOverride):t.push("UpdateObjectAction"));e.widget.api.hasDeleteConfiguration(e)&&(e.itemConfig.deleteObjectActionOverride&&e.widget.form.crudActions.deleteObjectActionOverride?t.push(e.widget.form.crudActions.deleteObjectActionOverride):t.push("DeleteObjectAction"));return t=[...t,"ExportObjectAsCsvAction","ExportObjectAsCsvWithBomAction","ExportObjectAsXmlAction","ExportObjectAsPdfAction"]}(e));break;case"TableWidget":Array.prototype.push.apply(t,function(e,t){let i=[];e.widget.api.hasCreateConfiguration(e)&&(e.itemConfig.createObjectActionOverrides.length>0&&t.crudActions.createObjectActionOverrides?i=[i,...e.itemConfig.createObjectActionOverrides]:i.push("CreateObjectAction"));!e.widget.api.hasDeleteConfiguration(e)||!l.isUndefined(e.widget.api.selection)&&l.isEmpty(e.widget.api.selection.get(e))||(e.itemConfig.deleteObjectActionOverride&&t.crudActions.deleteObjectActionOverride?i.push(t.crudActions.deleteObjectActionOverride):i.push("DeleteObjectAction"));e.widget.table.floatingFilterVisible?i.push("HideFloatingTableFiltersAction"):i.push("ShowFloatingTableFiltersAction");return i.push("AddCustomFilterAction"),i=[...i=[...i,"ExportObjectAsCsvAction","ExportObjectAsCsvWithBomAction","ExportObjectAsXmlAction","ExportObjectAsPdfAction"],"ResetTableAction"]}(e,e.widget.table));break;case"CollectionWidget":Array.prototype.push.apply(t,function(e,t){const i=[];
1return t.actions.createActions.forEach(e=>i.push(e.id)),t.actions.deleteActions.forEach(e=>i.push(e.id)),i}(0,e.widget.collection));break;case"CalendarWidget":Array.prototype.push.apply(t,function(e){const t=[];e.widget.api.hasCreateConfiguration(e)&&e.widget.calendar.crudActions.createObjectActionOverride&&t.push(e.widget.calendar.crudActions.createObjectActionOverride);return t}(e));break;case"TreeWidget":Array.prototype.push.apply(t,function(e){let t=[];e.widget.api.canAddNode(e)&&t.push("CreateForestNodeAction");e.widget.api.canDeleteNode(e)&&t.push("DeleteForestNodeAction");e.widget.api.canCopyNode(e)&&t.push("StartCopySubForestAction");e.widget.api.canAddNode(e)&&(e.widget.api.canCopyExamRegTreeNode(e)?t.push("CopyExamRegContentTreeSubForestAction"):e.widget.api.canCopyAppRegTreeNode(e)?t.push("CopyAppRegContentTreeSubForestAction"):e.widget.api.canCopyModuleTemplateVersionTreeNode(e)?t.push("CopyModuleTemplateContentTreeSubForestAction"):e.widget.api.canCopyModulePartTemplateVersionTreeNode(e)?t.push("CopyModulePartTemplateContentTreeSubForestAction"):t.push("CopySubForestAction"));return t.push("ExpandAllForestNodesAction"),t.push("CollapseAllForestNodesAction"),t.push("DrillUpAction"),t=[...t,"ExportForestAsXmlAction"]}(e))}return Array.prototype.push.apply(t,e.widget.action.default),Array.prototype.push.apply(t,e.widget.action.document),Array.prototype.push.apply(t,e.widget.action.export),Array.prototype.push.apply(t,e.widget.action.developer),Array.prototype.push.apply(t,e.widget.action.transition),e.itemConfig.showHelpAction&&t.push("ShowWidgetHelpAction"),e.itemConfig.reloadWidgetAction&&t.push("ReloadWidgetAction"),t}function f(t,i){return e.getAvailableProcessGroupTransitions(t,i.widget).then(function(e){return function(e){e.widget.action.transition=[]}(i),l.forEach(e.transitions,function(e){!function(e,t){t.widget.action.transition.push(e)}(e,i)}),c.when()})}function p(e){var t=c.defer();return e.widget&&e.widget._scope.$broadcast("action.update"),t.resolve(),t.promise}}function t(e,t){e.registerApiMixin(t.action.id)}function i(e,t,i){e.resolveApiMixin(i.action.id,t)}e.$inject=["ActionService","ActionInvocationService","ApplicationService","AuthService","I18nService","NavigationService","CCUtils","WIDGET_API","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetActionApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetActionApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i){return{$handlers:[{event:e.lifecycle.event.load,fn:function(e){var n=t.defer();return i.extend(e.widget,{data:null,permissions:{entity:{},record:{}}}),n.resolve(),n.promise}}],count:function(e){if(i.isArray(e.widget.data))return e.widget.data.length;if(i.isObject(e.widget.data))return 1;return 0},getCurrentData:function(e){return e.widget.data},getItemById:function(e,t){if(i.isArray(t.widget.data))return i.find(t.widget.data,function(t){return t.id===e})||null;if(i.isObject(t.widget.data))return t.widget.data.id===e?t.widget.data:null;return null},getItemIds:function(e){if(i.isArray(e.widget.data))return i.pluck(e.widget.data||[],"id");if(i.isObject(e.widget.data))return[e.widget.data.id];return[]},getObjectCompositionIds:function(e){var t={};return i.each(e.widget.data,function(e){var a=[];n(e,a),t[e.id]=i.uniq(a)}),t},getObjectIdsRecursive:n,hasRecordPermissions:function(e,t,n){return i.intersection(n.widget.permissions.record[t],e).length===e.length},isEmpty:function(e){return i.isEmpty(e.widget.data)},registerEntityPermissions:function(e,i){var n=t.defer();return i.widget.permissions.entity[e.entity]=e.entityPermissions||[],n.resolve(),n.promise},registerRecordPermissions:function(e,n){var a=t.defer();return i.each(i.isArray(e)?e:[e],function(e){if(!i.isUndefined(e)){var t=i.isObject(e.id)?e.id.value:e.id;n.widget.permissions.record[t]=e.$permissions||[]}}),a.resolve(),a.promise},removeRecordPermissions:function(e,n){var a=t.defer();return i.each(i.isArray(e)?e:[e],function(e){i.isString(e)?delete n.widget.permissions.record[e]:i.isNull(e)||delete n.widget.permissions.record[e.id]}),a.resolve(),a.promise}};function n(e,t){i.isNil(e)||!i.isPlainObject(e)||i.isEmpty(e.id)||(t.push(e.id),i.each(e,function(e){i.isArray(e)?i.each(e,function(e){n(e,t)}):n(e,t)}))}}function t(e,t){e.registerApiMixin(t.data.id)}function i(e,t,i){e.resolveApiMixin(i.data.id,t)}e.$inject=["WIDGET_API","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetDataApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetDataApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o){return{calculateWritableAndVisibleProperties:function(e){const t=e.widget.originalData;let i=!1;o.isArray(t)?o.forEach(t,(t,n)=>{t.$write=D(`widget.data[${n}]`,e),i=i||t.$write}):o.isPlainObject(t)&&(t.$write=D("widget.data",e),i=i||t.$write);e.widget.$write=i},canCreate:r,canEdit:s,canRearrangeFile:c,canView:l,clearField:d,getDefaultFieldApi:function(){return{canCreate:r,canEdit:s,canRearrangeFile:c,canView:l,clearField:d,getErrors:u,getName:g,getOriginalValuePermissions:$,getReferencedFieldValue:f,getValue:p,hasError:m,hasPriority:v,isDirty:h,isEmpty:b,isImportant:y,isMandatory:x,isVisible:C,isVisibleInView:S,isVisibleInEdit:A,setValue:I}},getErrors:u,getName:g,getOriginalValuePermissions:$,getReferencedFieldValue:f,getValue:p,getFieldValue:p,hasError:m,hasPriority:v,hasWritableAndVisibleProperties:function(e){return e.widget.$write},isDirty:h,isEmpty:b,isImportant:y,isMandatory:x,isVisible:C,isVisibleInEdit:A,isVisibleInView:S,setValue:I};function r(e,t){return o.isEmpty(t.objectModel.entity)||o.contains(t.objectModel.entityPermissions,"CREATE")}function s(e,t){return!(void 0===t.objectModel||!o.isEmpty(t.objectModel.entity))||$(e,t).$write}function c(e,t){const i=e.substring(0,e.lastIndexOf("[")),n=o.get(t,i);return!o.isNull(n)&&o.without(n,null).length>1}function l(e,t,i){return"widget.data"===(e=`${e}.${t.name}`)||$(e,i).$read}function d(e,i,n,a){void 0===i&&(i=!0),I(e,function e(i,n,a){if(o.isPlainObject(i)&&n.embeddedObjectView){const t=a.widget.model.fullModel[n.embeddedObjectView];return o.mapValues(i,i=>e(i,t,a))}if(!n)return null;const r=n.entityDefaultValue;if(void 0===r||null===r)return n.collection?[]:null;if(o.isPlainObject(r))return o.cloneDeep(r);if(t.isDateOrDateTime(r))return t.transformDate(r);return JSON.parse(r)}(o.get(a,e),n,a),i,a)}function u(e,t,n){if(void 0===n.widget.status.messages)return[];const a=e.replace(/widget\.data\./,"").replace(/_item\./g,"");let r=i.resolve(n.widget.status.messages[a],t,n);return o.isArray(r)||(r=[r]),r}function g(e){return e.replace(/widget\.data\./,"")}function f(e,t){let i=p(e,t);return void 0===(i=o.isPlainObject(i)?i.id:JSON.stringify(i))&&(i="null"),i}function p(e,i){o.startsWith(e,"widget.data.")||(e=`widget.data.${e}`);const n=o.get(i,e);if(t.isDateOrDateTime(n))return t.detransformDate(n);if(o.isString(n)||o.isBoolean(n)||o.isNumber(n)||o.isNull(n)||o.isArray(n))return n;const a=t.normalizeDataFormat(n);return t.isEmpty(a)?null:a}function m(e,t){return void 0!==t.widget.status.messages&&o.has(t.widget.status.messages,e.replace(/widget\.data\./,"").replace(/_item\./g,""))}function v(e){return"DEFAULT"!==e.priority}function h(e,i){const n=e.replace(/widget\.data/,""),a=o.get(t.reduceRecord(i.widget.originalData),n);return!angular.equals(o.get(i,e),a)}function b(e,t){return w(o.get(t,e))}function w(e){return void 0===e||null===e||o.isArray(e)&&0===e.length||o.isPlainObject(e)&&o.every(e,w)}function y(e){return"IMPORTANT"===e.priority}function x(e,t,i){if("MANDATORY"!==i.priority)return!1;if(void 0===i.usePriorityOnlyIfReferencedFieldEquals||null===i.usePriorityOnlyIfReferencedFieldEquals)return!0;e.endsWith("._item")&&(e=e.substring(0,e.length-6)),e.endsWith("]")&&(e=e.substring(0,e.lastIndexOf("[")));const n=e.split("."),a=f(`${e=o.dropRight(n).join(".")}.${i.referencedField}`,t);
1return i.usePriorityOnlyIfReferencedFieldEquals===a}function C(e,t,i){switch(t.widget.form.mode){case"create":case"edit":return A(e,t,i);case"view":return S(e,t,i);default:return i.visible=!0,!0}}function S(e,t,i){if("HIDDEN"===i.viewDisplayType)return i.visible=!1,!1;if(!l(e,i,t))return i.visible=!1,!1;if(i.hideBecauseOfReferencedSystemSetting)return i.visible=!1,!1;let n=!0;const a=`${e}.${i.referencedField}`,r=JSON.stringify(p(`${e}.${i.name}`,t)),s=f(a,t);if(i.showInViewIfEquals){const e=i.showInViewIfEquals.split("||");n=n&&!!o.find(e,e=>E(e,i,r))}if(i.hideInViewIfEquals){const e=i.hideInViewIfEquals.split("||");n=n&&!o.find(e,e=>E(e,i,r))}if(i.showIfReferencedFieldEquals){const e=i.showIfReferencedFieldEquals.split("||");n=n&&!!o.find(e,e=>e.trim()===s)}if(i.hideIfReferencedFieldEquals){const e=i.hideIfReferencedFieldEquals.split("||");n=n&&!o.find(e,e=>e.trim()===s)}if(void 0!==t.widget.form.filterAttributeType&&i.name.endsWith("Value")){const e=i.filterFieldAttributeTypes?i.filterFieldAttributeTypes:[i.type];n=n&&o.contains(e,t.widget.form.filterAttributeType)}return i.visible=n,n}function E(e,t,i){return e=e.trim(),t.collection&&"null"===e&&(e="[]"),e===i}function A(e,t,i){return"HIDDEN"===i.editDisplayType?(i.visible=!1,!1):i.hideBecauseOfReferencedSystemSetting?(i.visible=!1,!1):function(e,t,i){if(!i.embeddedObjectView||"OBJECT"!==i.editDisplayType||!S(e,t,i))return!1;const n=`${e}.${i.name}`,a=p(n,t);if(o.isNil(a))return!1;let r=!1;return o.each(t.widget.model.fullModel[i.embeddedObjectView].fields,e=>{if(A(n,t,e))return r=!0,!1}),r}(e,t,i)?(i.visible=!0,!0):s(`${e}.${i.name}`,t)||"FIELDHINT"===i.editDisplayType||"FIELDHEADER"===i.editDisplayType?function(e,t,i){const n=k(e,t,i);return i.visible=n,n}(e,t,i):(i.visible=!1,!1)}function I(t,i,n,r){t.startsWith("widget.data.")||(t=`widget.data.${t}`),o.get(r,t)!==i&&o.set(r,t,i),(void 0===n||n)&&function(t){((function(e){return e.$formCtrl})(t)).$dirty=!0,t.widget.api.executeHandlers(a.lifecycle.event.dirty,t).then(()=>{e.broadcast("widget.dirty")})}(r)}function D(e,t){const i=e.match(/^widget\.data(?:\[(\d+)])?/);let n;if(n=i[0]===e?o.isNil(i[1])?t.widget.originalData:t.widget.originalData[i[1]]:function(e,t){const i=T(e,!1);return o.get(t,i)}(e,t),!o.has(n,"$viewDefinition"))return!1;
1if(void 0!==t.widget.model.fullModel){const i=t.widget.model.fullModel[n.$viewDefinition];return o.contains(o.map(n,(n,a)=>{if("$"===a[0]||"id"===a||"version"===a)return!1;const r=o.find(i.fields,"name",a);if(["HIDDEN","FIELDHINT","FIELDHEADER"].includes(r.editDisplayType))return r.$write=!1,!1;if(t.widget.table&&"OBJECT"!==r.editDisplayType&&(o.isNil(r.editableInTable)||!1===r.editableInTable))return r.$write=!1,!1;let s=!1;return n.value&&(o.isArray(n.value)?s=o.reduce(n.value,function(i,n,o){return i||D(`${e}.${a}[${o}]._item`,t)},!1):o.isPlainObject(n.value)&&(s=D(`${e}.${a}`,t))),k(e,t,r)?(r.$write=n.$write||s,r.$write):(r.$write=!1,!1)}),!0)}return!1}function k(e,t,i){let n=!0;const a=`${e}.${i.referencedField}`,r=JSON.stringify(p(`${e}.${i.name}`,t)),s=f(a,t);if(i.showInEditIfEquals){const e=i.showInEditIfEquals.split("||");n=n&&!!o.find(e,e=>E(e,i,r))}if(i.hideInEditIfEquals){const e=i.hideInEditIfEquals.split("||");n=n&&!o.find(e,e=>E(e,i,r))}if(i.showIfReferencedFieldEquals){const e=i.showIfReferencedFieldEquals.split("||");n=n&&!!o.find(e,e=>e.trim()===s)}if(i.hideIfReferencedFieldEquals){const e=i.hideIfReferencedFieldEquals.split("||");n=n&&!o.find(e,e=>e.trim()===s)}const c=function(e){if(e.widget.form)return e.widget.form;if(e.widget.table)return e.widget.table;if(e.widget.list)return e.widget.list;if(e.widget.collection)return e.widget.collection;throw new Error("no widget type found in  "+e.widget)}(t);if(void 0!==c.filterAttributeType&&i.name.endsWith("Value")){const e=i.filterFieldAttributeTypes?i.filterFieldAttributeTypes:[i.type];n=n&&o.contains(e,c.filterAttributeType)}return n}function $(e,t){let i=T(e,!0),n=o.get(t,i);for(;o.isNil(n);)i=i.substring(0,i.lastIndexOf(".")),n=o.get(t,i);const a=o.pick(n,"$read","$write","$arrange","$insert","$remove");return a.$anyCollectionPermission=a.$arrange||a.$insert||a.$remove,a}function T(e,t){const i=e.replace(/\._item/g,"").split(".");if(i.length<3||"widget"!==i[0]||!o.startsWith(i[1],"data"))throw new Error("Malformed value path: "+e);if(i[1]=i[1].replace(/^data/,"originalData"),t){const e=i[i.length-1];o.endsWith(e,"]")&&(i[i.length-1]=e.substring(0,e.lastIndexOf("[")))}const n=t?i.length-1:i.length;for(let e=2;e<n;e++){const t=/^([a-zA-Z1-9]+)(?:\[(\d+)])?$/,n=i[e].match(t);o.isNil(n[2])?i[e]=`${n[1]}.value`:i[e]=`${n[1]}.value[${n[2]}]`}return i.join(".")}}e.$inject=["ApplicationService","CCUtils","ValidationService","DateService","WIDGET_API","_"],angular.module("ccFrontend").factory("FieldApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){const g="custom",f="mode",p="system";return{$handlers:[{event:c.lifecycle.event.load,fn:x},{event:c.lifecycle.event.load,fn:C},{event:c.lifecycle.event.load,fn:S},{event:c.lifecycle.event.reInit,fn:x},{event:c.lifecycle.event.reInit,fn:C},{event:c.lifecycle.event.reInit,fn:S}],activate:m,addCustom:function(e){i.setContext("filterBaseEntity",e.widget.api.model.getBaseModel(e.widget._scope).entity,!1,i.getCurrentState().name);const t={viewDefinition:l.view.filtersForEntity,title:"widget.addCustomFilter",pathContext:!0,contextId:i.getContext("currentUser"),preventDesignMode:!0,preventEditingMode:!0,singleSelection:!0,filterable:!1};o.getTable(t,[],r.getLookupControls(),{size:"lg"}).result.then(t=>{v(g,t[0],e),A(t[0],e)})},clearMode:function(e){1===e.widget.filter.activeMode.length&&A(e.widget.filter.activeMode[0],e)},deactivate:h,deactivateAllCustom:function(e){e.widget.filter.custom.forEach(t=>h(t,e))},getActive:b,hasCustom:function(e){return y(g,e)},hasMode:function(e){return y(f,e)},hasSystem:function(e){return y(p,e)},isActive:E,removeCustom:function(e,t){E(e,t)&&h(e,t);t.widget.filter.custom=u.without(t.widget.filter.custom,e),0===t.widget.filter.custom.length?n.remove(t,n.KEYS.customFilters):n.set(t,n.KEYS.customFilters,u.pluck(t.widget.filter.custom,"id"))},toggle:A};function m(e,t,i){const a=w(e,t);if(a.isMode?t.widget.filter.activeMode=[a.id]:a.isSystem?t.widget.filter.activeSystem.push(a.id):a.isCustom&&t.widget.filter.activeCustom.push(a.id),!i){let e=b(t);return u.isNil(t.widget.filter.initialModeFilter)||(e=u.without(e,t.widget.filter.initialModeFilter),n.remove(t,n.KEYS.disableInitialModeFilter)),e.length>0?n.set(t,n.KEYS.activeFilters,e):n.remove(t,n.KEYS.activeFilters),t.widget.api.executeHandlers(c.filter.event.filter,t.widget._scope)}return d.when()}function v(e,i,a){if(i){if(a.widget.filter[e].find(e=>e.id===i.id))return;t.addTranslationField(i.name),t.addTranslationField(i.description),a.widget.filter[e].push(i),e===g&&n.set(a,n.KEYS.customFilters,u.pluck(a.widget.filter.custom,"id"))}}function h(e,t){const i=w(e,t);i.isMode?t.widget.filter.activeMode=u.without(t.widget.filter.activeMode,i.id):i.isSystem?t.widget.filter.activeSystem=u.without(t.widget.filter.activeSystem,i.id):i.isCustom&&(t.widget.filter.activeCustom=u.without(t.widget.filter.activeCustom,i.id));let a=b(t);const o=!u.isNil(t.widget.filter.initialModeFilter);o&&(a=u.without(a,t.widget.filter.initialModeFilter)),a.length>0?(o&&n.remove(t,n.KEYS.disableInitialModeFilter),n.set(t,n.KEYS.activeFilters,a)):(o&&n.set(t,n.KEYS.disableInitialModeFilter,!0),n.remove(t,n.KEYS.activeFilters)),t.widget.api.executeHandlers(c.filter.event.filter,t.widget._scope)}function b(e){return u.isNil(e.widget.filter)?null:u.union(e.widget.filter.activeMode,e.widget.filter.activeSystem,e.widget.filter.activeCustom)}function w(e,t){const i=e.id||e,n=u.contains(u.pluck(t.widget.filter.mode,"id"),i),a=u.contains(u.pluck(t.widget.filter.system,"id"),i),o=u.contains(u.pluck(t.widget.filter.custom,"id"),i);if(u.isString(e)){let o;o=n?f:a?p:g,e=t.widget.filter[o].find(t=>{if(t.id===i)return e})}return{id:i,filter:e,isMode:n,isSystem:a,isCustom:o}}function y(e,t){return u.has(t.widget,"filter")&&t.widget.filter[e].length>0}function x(e){return u.extend(e.widget,{filter:{custom:[],system:[],mode:[],activeCustom:[],activeSystem:[],activeMode:[],initialModeFilter:void 0}}),e.itemConfig.initialModeFilter&&(e.widget.filter.initialModeFilter=e.itemConfig.initialModeFilter.id),e.itemConfig.modeFilters&&e.itemConfig.modeFilters.forEac
1h(t=>{!function(e,t){v(f,e,t)}(s.reduceRecord(t),e)}),e.itemConfig.availableSystemFilters&&e.itemConfig.availableSystemFilters.forEach(t=>{!function(e,t){v(p,e,t)}(s.reduceRecord(t),e)}),d.when()}function C(t){const i=n.get(t,n.KEYS.customFilters);return u.isEmpty(i)?d.when():e.readObjects({viewDefinitionId:l.view.allFilters,configIds:i}).then(e=>{i.forEach(i=>{v(g,u.find(e.data,function(e){return e.id===i}),t)})})}function S(e){let t=n.get(e,n.KEYS.activeFilters);if(u.isEmpty(t)&&e.widget.filter.initialModeFilter){const i=n.get(e,n.KEYS.disableInitialModeFilter);!u.isObject(i)&&i||(t=[e.widget.filter.initialModeFilter])}return d.all(u.map(t,t=>m(t,e,!0))).then(()=>t?d.when():a.callExtensionFunction("onRegisterFilterFn",e,[e.widget]))}function E(e,t){const i=u.isPlainObject(e)?e.id:e;return u.contains(b(t),i)}function A(e,t){E(e,t)?h(e,t):m(e,t)}}function t(e,t){e.registerApiMixin(t.filter.id)}function i(e,t,i){e.resolveApiMixin(i.filter.id,t)}e.$inject=["ActionService","I18nService","NavigationService","TableStorageService","WidgetService","ModalService","ControlService","CCUtils","WIDGET_API","CMS_DATA","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetFilterApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetFilterApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{$handlers:[{event:i.lifecycle.event.reload,fn:e.resetHelp}],canDeleteHelpField:function(t){return e.canEditStaticHelpField()},hasShowHelpConfiguration:function(e){return e.itemConfig.showHelpAction},filterWidgetActions:function(e){var i=n.defer(),o=[];return a.forEach(e.widget.api.action.getAllActions(e),function(e){a.isString(e)?o.push(t.getDefinition(e)):o.push(e)}),n.all(o).then(function(n){e.widget.action.visibleActions=[],a.forEach(n,function(i){i&&i.config&&i.steps&&t.isVisible(e.widget,i)?e.widget.action.visibleActions.push(i):i&&i.enabled&&(a.isFunction(i.visible)&&i.visible(i,e.widget)||!a.isFunction(i.visible)&&i.visible||a.isUndefined(i.visible))&&e.widget.action.visibleActions.push(i)}),i.resolve()}),i.promise},helpReady:e.widgetHelpIsReady,loadWidgetHelp:e.loadWidgetHelpTexts,toggleShowHelp:e.toggleShowHelpWidget,showHelp:e.showHelpModeWidget}}function t(e,t){e.registerApiMixin(t.help.id)}function i(e,t,i){e.resolveApiMixin(i.help.id,t)}e.$inject=["HelpService","ActionInvocationService","WIDGET_API","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetHelpApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetHelpApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o,r){return{$handlers:[{event:a.lifecycle.event.beforeLoad,fn:function(e){var t=o.defer();return r.extend(e.widget,{model:{}}),t.resolve(),t.promise}},{event:a.lifecycle.event.beforeLoad,fn:e.resolveDynamicViewDefinition},{event:a.lifecycle.event.loaded,fn:function(e){var t=function(e,i,n,a){var o={};return r.isNil(e)?o:(r.each(e.fields,function(e){var s=[n,e.name].join(".");r.isEmpty(e.alias)||(o[e.alias]=s),r.isEmpty(e.embeddedObjectView)||r.extend(o,t(i[e.embeddedObjectView],i,s,a))}),o)};return e.widget.model.fieldAliases=t(s(e),l(e),"widget.data",e),o.when()}}],editViewDefinition:n.editViewDefinition,getAffectedEntities:function(e){return e.widget.model.affectedByEntities||[]},getAllBaseModels:function(e){const t=s(e);if(null===t)return[];if(r.has(t,"entity"))return[t];return Object.values(t)},getBaseModel:s,getFieldAliases:c,getFullModel:function(e){return e.widget.model.fullModel||null},getReferenceModels:l,inferRelevantBaseModels:function(e,t){const i=s(e);if(null===i)return[];if(r.has(i,"entity"))return[i];if(!r.isNil(t))return[i[t]];if(e.widget.api.hasApi(a.selection.id,e)){const t=e.widget.api.selection.get(e);if(t&&1===t.length)return[i[t[0].$viewDefinition]]}if(e.widget.tree)return Object.values(i);if(e.widget.collection)return Object.values(i);return[]},resolveFieldAliases:function(e){var t=c(e),i={};return r.each(r.keys(t),function(n){var a=r.get(e,t[n]);r.isUndefined(a)||(r.isString(a)||(a=a.id),i[n]=a)}),i},showOldPermissionsIndicator:function(e){var t=e.widget;if(!t.api.isDevMode())return!1;return!function(e){if(e.model&&e.model.baseModel){if("TreeWidget"===e.type||"CollectionWidget"===e.type){var t=r.find(e.model.baseModel,function(e){return r.isNil(e)||!e.useNewPermissions});return r.isNil(t)}return e.model.baseModel.useNewPermissions}return!1}(t)}};function s(e){return e.widget.model.baseModel||null}function c(e){return e.widget.model.fieldAliases||{}}function l(e){return e.widget.model.referenceModels||null}}function t(e,t){e.registerApiMixin(t.model.id)}function i(e,t,i){e.resolveApiMixin(i.model.id,t)}e.$inject=["NavigationService","ActionInvocationService","AuthService","NavigationEditorService","WIDGET_API","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetModelApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetModelApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t){return{hasWritableAndVisibleProperties:function e(n,a,o){if(!t.isPlainObject(n)||!t.isPlainObject(a)||!t.has(n,"$viewDefinition"))return!1;var r=a[n.$viewDefinition];return t.reduce(n,function(s,c,l){if(s)return s;if("$"===l[0]||"id"===l||"version"===l)return!1;var d=t.find(r.fields,"name",l);if("HIDDEN"===d.editDisplayType||"FIELDHINT"===d.editDisplayType||"FIELDHEADER"===d.editDisplayType)return!1;if(o&&"OBJECT"!==d.editDisplayType&&(t.isNil(d.editableInTable)||!1===d.editableInTable))return!1;if(c.$write)return function(e,n,a){var o=!0,r=function(e,i,n){if(e){var o=e.split("||"),r=!!t.find(o,function(e){return function(t){return t=t.trim(),a.collection&&"null"===t&&(t="[]"),t===e}}(i));return n?!r:r}return!0},s=i(e,a.name+".value");if(o=(o=o&&r(a.showInEditIfEquals,s,!1))&&r(a.hideInEditIfEquals,s,!0),a.referencedField){var c=a.referencedField.split(".").join(".value."),l=i(e,c);o=(o=o&&r(a.showIfReferencedFieldEquals,l,!1))&&r(a.hideIfReferencedFieldEquals,l,!0)}return o}(n,0,d);if(c.value){if(t.isArray(c.value))return t.reduce(c.value,function(t,i){return t||e(i._item,a,o)},!1);if(t.isPlainObject(c.value))return e(c.value,a,o)}return!1},!1)}};function i(i,n){var a=t.get(i,n);if(e.isDateOrDateTime(a))return e.detransformDate(a);if(t.isString(a)||t.isBoolean(a)||t.isNumber(a)||t.isNull(a)||t.isArray(a))return a;
1var o=e.normalizeDataFormat(a);return e.isEmpty(o)?null:t.isPlainObject(o)?o.id:JSON.stringify(o)}}e.$inject=["CCUtils","_"],angular.module("ccFrontend").factory("ObjectDataApiService",e)}(),function(){"use strict";function e(e,t,i,n){return{$handlers:[{event:t.selection.event.activate,fn:function(t,a){if(!n.isNil(a.itemConfig.setsPersonTraits)&&"Person"===a.widget.model.baseModel.entity&&a.widget._scope.itemConfig.childState){var o=a.itemConfig.pathContext?a.widget.context.contextId:null;e.setTraits(a.itemConfig.setsPersonTraits,a.widget.model.baseModel.viewDefinitionId,t.id,o,a.widget._scope.itemConfig.childState)}return i.when()}}]}}function t(e,t){e.registerApiMixin(t.personTraits.id)}function i(e,t,i){e.resolveApiMixin(i.personTraits.id,t)}e.$inject=["PersonTraitsService","WIDGET_API","$q","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetPersonTraitsApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetPersonTraitsApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{$handlers:[{event:i.lifecycle.event.load,fn:function(e){return n.extend(e.widget,{selection:{canSelect:!0,multi:!0,selected:[]}}),Promise.resolve()}},{event:i.lifecycle.event.reload,fn:r},{event:i.lifecycle.event.reload,fn:e.navigateToParentState},{event:i.lifecycle.event.reInit,fn:r},{event:i.lifecycle.event.loaded,fn:a},{event:i.lifecycle.event.loaded,fn:l},{event:i.selection.event.beforeSelect,fn:function(e,i){return t.callExtensionFunction("onBeforeSelectFn",i,[e])}},{event:i.selection.event.select,fn:function(i,a){return delete a.widget.selection.overrideChildState,t.callExtensionFunction("onSelectFn",a,[i]).then(function(){if(n.isNil(a.widget.selection.overrideChildState)){const t=a.widget.model.fullModel[i.$viewDefinition].entity;if(!n.isNil(a.itemConfig.overrideChildState)&&!a.widget.selection.returnToParentState){let o=a.itemConfig.overrideChildState.replace(new RegExp("{itemEntity}","g"),t);const r=o.match(new RegExp("{(.[^}]*)}"));n.isNil(r)||(o=o.replace(r[0],e.getContext(r[1])||i[r[1]]));const s=a.itemConfig.widgetState;e.getAllSubStates(s).forEach(e=>{e.keyForTreeSubNavigation===o&&(a.widget.selection.overrideChildState=e.state)})}}return Promise.resolve()})}},{event:i.selection.event.deselect,fn:function(e){return t.callExtensionFunction("onDeselectFn",e,[e])}},{event:i.selection.event.afterDeselect,fn:function(e){return t.callExtensionFunction("onAfterDeselectFn",e,[e])}},{event:i.selection.event.beforeActivate,fn:function(e,i){return t.callExtensionFunction("onBeforeActivateFn",i,[e])}},{event:i.selection.event.activate,fn:function(i,n){return t.callExtensionFunction("onActivateFn",n,[i,n.widget]).then(function(){return n.widget.selection.returnToParentState?(delete n.widget.selection.returnToParentState,e.navigateToParentState(n)):e.navigateToChildState(i,n)})}},{event:i.selection.event.afterSelect,fn:function(e,i){return t.callExtensionFunction("onAfterSelectFn",i,[e])}},{event:i.selection.event.afterActivate,fn:function(e,i){return t.callExtensionFunction("onAfterActivateFn",i,[e])}},{event:i.selection.event.deactivate,fn:e.navigateToParentState},{event:i.selection.event.clear,fn:r}],autoselect:a,canSelect:o,clear:r,count:function(e){const t=s(e);if(n.isArray(t))return t.length;if(n.isObject(t))return 1;return 0},deselect:function(t,a){if(!t)return Promise.resolve();const o=a.widget.api.selection.get(a),r=n.isString(t)?t:t.id,s=n.find(o,e=>e.id===r);if(!n.isNil(s))return a.widget.api.executeHandlers(i.selection.event.deselect,a,[a]).then(()=>(a.widget.selection.selected=n.without(a.widget.selection.selected,s),a.widget.api.executeHandlers(i.selection.event.afterDeselect,a,[a]).then(()=>0===a.widget.selection.selected.length?e.navigateToParentState(a):Promise.resolve())))},deselectAll:function(e){n.isNil(e.widget.selection)||(e.widget.selection.selected=[]);return e.widget.api.executeHandlers(i.selection.event.deselect,e).then(()=>e.widget.api.executeHandlers(i.selection.event.afterDeselect,e))},get:s,hasSelectedAny:function(e){return e.widget.api.selection.count(e)>0},hasSelectedNone:function(e){return 0===e.widget.api.selection.count(e)},hasSelectedOne:function(e){return 1===e.widget.api.selection.count(e)},isSelected:c,preselect:l,select:d,selectWithoutActivate:function(e,t){if(!1===t.initializer.loading){if(n.isString(e)&&(e=t.widget.api.data.getItemById(e,t)),!n.isNil(e))return t.widget.api.executeHandlers(i.selection.event.beforeSelect,t,[e]).then(()=>
1{if(o(t))return t.widget.selection.multi?t.widget.selection.selected.push(e):t.widget.selection.selected=[e],t.widget.api.executeHandlers(i.selection.event.select,t,[e]).then(()=>t.widget.api.executeHandlers(i.selection.event.afterSelect,t,[e]))})}else t.widget.api.addFunctionToAfterLoadQueue(t,d,[e]);return Promise.resolve()},toggle:function(e,t){return t.widget.api.selection.isSelected(e,t)?r(t):t.widget.api.selection.select(e,t)}};function a(t){if(!n.isNil(t.itemConfig.setsContext)){const i=n.trim(t.itemConfig.setsContext,"{}"),a=e.getContext(i);if(t.widget.api.data&&t.widget.api.data.getItemById&&!n.isNil(a)){const e=t.widget.api.data.getItemById(a,t);n.isNil(e)||t.widget.api.selection.select(e,t)}}return Promise.resolve()}function o(e){return e.widget.selection.canSelect}function r(a){return n.isNil(a.widget.selection)||(a.widget.selection.selected=[]),e.navigateToParentState(a).then(()=>a.widget.api.executeHandlers(i.selection.event.afterDeselect,a).then(()=>t.callExtensionFunction("onClearSelectionFn",a,[a.widget])))}function s(e){return void 0===e.widget.selection?[]:n.isEmpty(e.widget.selection.selected)?e.widget.selection.multi?[]:null:e.widget.selection.selected}function c(e,t){if(!e)return!1;const i=t.widget.api.selection.get(t),a=n.isString(e)?e:e.id;return void 0!==n.find(i,e=>e.id===a)}function l(e){return e.widget.api.data&&e.widget.api.data.getItemById?(e.widget.selection.multi&&n.isArray(e.itemConfig.preselectedIds)&&n.each(e.itemConfig.preselectedIds,t=>{const i=e.widget.api.data.getItemById(t,e);c(t,e)||n.isNil(i)||e.widget.api.selection.toggle(i,e)}),Promise.resolve()):Promise.resolve()}function d(e,t){return!1===t.initializer.loading?(n.isString(e)&&(e=t.widget.api.data.getItemById(e,t)),n.isNil(e)?Promise.resolve():t.widget.api.executeHandlers(i.selection.event.beforeSelect,t,[e]).then(()=>o(t)?(t.widget.selection.selected=[e],t.widget.api.executeHandlers(i.selection.event.select,t,[e])):Promise.resolve()).then(()=>t.widget.api.executeHandlers(i.selection.event.activate,t,[e])).then(()=>t.widget.api.executeHandlers(i.selection.event.afterSelect,t,[e]))):(t.widget.api.addFunctionToAfterLoadQueue(t,d,[e]),Promise.resolve())}}function t(e,t){e.registerApiMixin(t.selection.id)}function i(e,t,i){e.resolveApiMixin(i.selection.id,t)}e.$inject=["NavigationService","WidgetService","WIDGET_API","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetSelectionApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetSelectionApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a){return{$handlers:[{event:n.lifecycle.event.load,fn:o},{event:n.action.event.finishAction,fn:function(e){return e.widget.api.executeHandlers(n.action.event.finishAction,e)}}],addMessage:function(e,t,i){return i.widget.status.messages[e]=t,Promise.resolve()},clearMessages:function(e,t){delete t.widget.status.messages[e]},clearStatus:o,hasError:function(e){return e.widget.status&&e.widget.status.error},hasStatus:function(e){return e.widget.status!=={}},hasSuccess:function(e){return e.widget.status&&e.widget.status.success},resolveGlobalErrors:function(t,i){let n=Object.values(t||{}).map(t=>e.resolve(t,void 0,i));return a.flatten(n)},setError:function(e,t,i){t.widget.api.status.setStatus(a.extend(e,{error:!0}),t),!a.isNil(t.$parent.itemConfig)&&t.$parent.itemConfig.showHeader||i.suppressActionResult||r(t)},setStatus:function(e,t){t.widget.api.status.clearStatus(t),t.widget.status=Object.assign(t.widget.status,e)},setSuccess:function(e,t){t.widget.api.status.setStatus(a.extend(e,{success:!0}),t)},showErrorModalAlert:r};function o(e,t){const i=a.pick(e.widget.status,["messages","resolvedMessages"]);return e.widget.status={error:!1,success:!1,messages:{},resolvedMessages:{}},t&&(e.widget.status=a.extend(e.widget.status,i)),Promise.resolve()}function r(e){const n={title:"common.error",module:"common.widget.erroralert",preventDesignMode:!0,preventEditingMode:!0,customData:{errors:e.widget.status}};t.getCustom(n,[],[i.getControl("close")],[])}}function t(e,t){e.registerApiMixin(t.status.id)}function i(e,t,i){e.resolveApiMixin(i.status.id,t)}e.$inject=["ValidationService","ModalService","ControlService","WIDGET_API","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetStatusApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetStatusApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n){return{$handlers:[{event:i.lifecycle.event.load,fn:function(a){if
1(n.isObject(a.itemConfig.title)){const i=t.reduceRecord(a.itemConfig.title);return e.addTranslationField(i),a.widget.title=i.id,Promise.resolve()}if(n.isString(a.itemConfig.title))return a.widget.title=a.itemConfig.title,Promise.resolve();a.widget.title="",a.widget.api.hasApi(i.model.id,a)&&n.has(a,"widget.model.baseModel.displayPattern")&&(e.getAvailableLocalesAsPromise().then(t=>{const i={id:a.widget.model.baseModel.hash};n.forEach(t,e=>{i[e.iso]=a.widget.model.baseModel.displayPattern}),e.addTranslationField(i)}),a.widget.title=a.widget.model.baseModel.hash);return Promise.resolve()}},{event:i.lifecycle.event.afterLoad,fn:a}],hasFooter:function(e){return e.itemConfig.showFooter},hasHeader:function(e){return e.itemConfig.showHeader},isTransparent:function(e){return e.itemConfig.transparentBackground},setTitle:function(t,i){n.isObject(t)?(e.addTranslationField(t),n.extend(i.widget,{title:t.id})):n.isString(t)&&n.extend(i.widget,{title:t});return Promise.resolve()},show:a};function a(e){return $("#"+e.widget.api.getId(e)).css("opacity",1),Promise.resolve()}}function t(e,t){e.registerApiMixin(t.ui.id)}function i(e,t,i){e.resolveApiMixin(i.ui.id,t)}e.$inject=["I18nService","CCUtils","WIDGET_API","_"],t.$inject=["WidgetServiceProvider","WIDGET_API"],i.$inject=["WidgetService","WidgetUiApiService","WIDGET_API"],angular.module("ccFrontend").factory("WidgetUiApiService",e).config(t).run(i)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f){var p={};let m={addHandler:b,addFunctionToAfterLoadQueue:function(e,t,i){Array.isArray(e.afterLoadEventQueue)||(e.afterLoadEventQueue=[]);e.afterLoadEventQueue.push({fn:t,parameters:i})},addUiItem:o.addUiItem,backup:w,canReload:function(e){return e.itemConfig.reloadWidgetAction},configurationInvalid:function(e,t){e.initializer.failed=!0,f.isUndefined(t)||(e.initializer.errors=f.map(t,e=>f.isString(e)?{key:e,params:{}}:e));return g.reject()},configurationValid:function(e){return e.initializer.failed=!1,g.resolve()},editWidget:o.editWidget,getEnumIcon:u.getEnumIcon,executeHandlers:C,getContextId:function(e){return e.widget.context.contextId},getId:function(e){return"cc"+e.widget.type+"_"+e.widget.id},hasApi:function(e,t){return f.has(t.widget,"api")&&f.contains(t.widget.mixins,e)},hasContext:function(e){return!f.isUndefined(e.widget.context.contextId)},hasControls:function(e){if(e&&e.widget&&e.widget.action)return!!e.widget.action.control&&e.widget.action.control.length>0;return!1},isDesignMode:e.isDesignMode,isDevMode:e.isDevMode,isEditingMode:e.isEditingMode,isDirty:function(e){return!1},isVisible:R,log:function(e,t){t.widget.lifecycle.log.push(e),a.debug(e)},reload:function(t){return t.widget.api.setPristine(t),t.initializer.loading=!0,t.widget.api.executeHandlers(d.lifecycle.event.reload,t).then(function(){return j(t).then(function(){return M(t).then(function(){return t.initializer.loading=!1,x(t).then(function(){e.broadcast("widget.reload")})})})})},reinit:function(e){if(e.widget.reinitializing)return g.when();return e.widget.reinitializing=!0,e.widget.api.executeHandlers(d.lifecycle.event.reInit,e).then(function(){e.widget.reinitializing=!1})},removeUiItem:o.removeUiItem,determineIcon:o.determineIcon,restore:j,setDirty:function(e){return e.widget.api.executeHandlers(d.lifecycle.event.dirty,e).then(function(){e.$broadcast("widget.dirty")})},setPristine:function(e){return e.widget.api.executeHandlers(d.lifecycle.event.pristine,e)},showCrudButtonLabels:function(e){return c.showCrudButtonLabels()},validateConfiguration:function(e){throw new Error("validate configuration not implemented by widget type "+e.itemConfig.type)}};var v=[{event:d.lifecycle.event.beforeLoad,fn:function(e){return n.callExtensionFunction("onBeforeLoadFn",e)}},{event:d.lifecycle.event.beforeLoad,fn:function(e){if(f.has(e.itemConfig,"contextId"))return e.widget.context.contextId=e.itemConfig.contextId,g.when();if(!f.isEmpty(e.itemConfig.receivesContext))return i.resolveContext(e).then(t=>{e.widget.context.contextId=t}).catch(()=>{e.widget.context.contextId=null});return g.when()}},{event:d.lifecycle.event.loaded,fn:function(e){return n.callExtensionFunction("onLoadFn",e)}},{event:d.lifecycle.event.objectCreated,fn:function(e,t,i,a,o){return n.callExtensionFunction("onObjectCreatedFn",o,[e,t,i,a,o])}},{event:d.lifecycle.event.objectDeleted,fn:function(e,t,a,o,r){if(!f.isNull(e)&&!f.isNil(r.widget.data)){var s=!1;if(r.widget.contextId===e)s=!0;else{var c=r.widget.data;f.isArray(c)||c.id!==e||(s=!0)}if(s&&i.getCurrentState().toString()===r.itemConfig.widgetState)return i.goUp()}return n.callExtensionFunction("onObjectDeletedFn",r,[e,t,a,o,r])}},{event:d.lifecycle.event.objectUpdated,fn:function(e,t,i,a,o){return n.callExtensionFunction("onObjectUpdatedFn",o,[e,t,i,a,o])}},{event:d.lifecycle.event.reload,fn:function(e){return n.callExtensionFunction("onReloadFn",e)}}
1,{event:d.lifecycle.event.reInit,fn:function(e){return n.callExtensionFunction("onReInitFn",e)}},{event:d.lifecycle.event.destroy,fn:function(e){return n.callExtensionFunction("onDestroyFn",e)}}],h=[d.ui.id];return{create:function(e,t,i,a,o){return i.widgetStorageId=l.getUuid(),p[i.widgetStorageId]=f.isNil(o)?{}:o,i.$on("$destroy",()=>{delete p[i.widgetStorageId]}),f.extend(i.widget,{api:f.cloneDeep(m),config:{widgetTypeMixins:t,widgetTypeApi:e,widgetTypeHandlers:a||[]},context:{},id:i.itemConfig.widgetId,lifecycle:{handlers:{},log:[]},mixins:[],type:i.itemConfig.type}),delete i.itemConfig.widgetId,Object.keys(d).filter(e=>!!d[e].event).flatMap(e=>Object.keys(d[e].event)).forEach(e=>i.widget.lifecycle.handlers[e]={}),i.widget.api.log(`[ccBase] Initialized widget lifecycle for ${i.widget.type} ${i.widget.id}.`,i),b(d.lifecycle.event.create,100,w,i),b(d.lifecycle.event.create,100,k,i),b(d.lifecycle.event.create,100,D,i),b(d.lifecycle.event.create,100,P,i),b(d.lifecycle.event.create,100,$,i),b(d.lifecycle.event.create,100,A,i),b(d.lifecycle.event.create,100,E,i),b(d.lifecycle.event.create,100,I,i),b(d.lifecycle.event.create,100,S,i),b(d.lifecycle.event.create,100,N,i),b(d.lifecycle.event.create,99,y,i),b(d.lifecycle.event.create,98,F,i),b(d.lifecycle.event.beforeLoad,100,n.registerWidget,i),b(d.lifecycle.event.load,100,e=>e.widget.api.validateConfiguration(e),i),b(d.lifecycle.event.loaded,100,T,i),b(d.lifecycle.event.loaded,100,n.subscribe,i),C(d.lifecycle.event.create,i).then(()=>M(i).then(()=>(i.initializer.loading=!1,x(i))))}};function b(e,t,i,n){const a=g.defer();if(!f.has(n.widget.lifecycle.handlers,e))throw new Error("Unknown widget lifecycle event: "+e);return f.has(n.widget.lifecycle.handlers[e],t)||(n.widget.lifecycle.handlers[e][t]=[]),n.widget.lifecycle.handlers[e][t].push(i),a.resolve(),a.promise}function w(e){const t=g.defer(),i=e.itemConfig.callerWidget;delete e.itemConfig.callerWidget;const n=e.itemConfig.$actionInstance;delete e.itemConfig.$actionInstance;const a=e.itemConfig.customData;return delete e.itemConfig.customData,e.itemConfig=e.widget.lifecycle.backup=f.cloneDeep(e.itemConfig),void 0!==i&&(e.itemConfig.callerWidget=i),void 0!==n&&(e.itemConfig.$actionInstance=n),void 0!==a&&(e.itemConfig.customData=a),t.resolve(),t.promise}function y(e){const t=g.defer();return delete e.widget.config,t.resolve(),t.promise}function x(e){const t=[];return Array.isArray(e.afterLoadEventQueue)&&(f.each(e.afterLoadEventQueue,i=>{const n=i.parameters||[];n.push(e),t.push(()=>i.fn.apply(this,n))}),e.afterLoadEventQueue=[]),t.length>0?g.chain(t):g.when()}function C(e,t,i){t.widget.api.log(`[ccBase] Prepare handlers for << ${e} >> for ${t.widget.type} ${t.widget.id}`,t);const n=t.widget.lifecycle.handlers[e]||[],a=[];return Object.keys(n).sort((e,t)=>
1parseInt(t)-parseInt(e)).forEach(e=>{n[e].forEach(n=>{const o=i||[];o.push(t),o.push(p[t.widgetStorageId]),a.push(()=>(t.widget.api.log(`[ccBase] ${n.name} (priority: ${e}) for ${t.widget.type} ${t.widget.id}`,t),n.apply(this,o)))})}),g.chain(a)}function S(e){const i=g.defer();return e.$on("layout.refresh",()=>{e.widget.api.executeHandlers(d.ui.event.layout,e)}),t.onResize(()=>{e.widget.api.executeHandlers(d.ui.event.layout,e)}),i.resolve(),i.promise}function E(e){const t=g.defer();return e.$on("$destroy",()=>{e.widget.api.executeHandlers(d.lifecycle.event.destroy,e)}),t.resolve(),t.promise}function A(e){return n.getExtension(e.itemConfig.extension).then(t=>{null!==t&&(e.widget.extension=t)})}function I(e){const t=g.defer();return e.$on("i18n.switch",()=>{e.widget.api.executeHandlers(d.lifecycle.event.i18n,e)}),t.resolve(),t.promise}function D(e){var t=g.defer();return g.all(f.map(e.widget.config.resolvedMixins,function(t,i){return e.widget.api[e.widget.config.widgetTypeMixins[i]]=f.cloneDeep(t),g.all(f.map(t.$handlers||[],function(t){b(t.event,80,t.fn,e)})).then(function(){if(e.widget.mixins.push(e.widget.config.widgetTypeMixins[i]),f.has(t,"$init"))return t.$init(e);var n=g.defer();return n.resolve(),n.promise})})).then(function(){delete e.widget.config.resolvedMixins,delete e.widget.config.widgetTypeMixins,t.resolve()}),t.promise}function k(e){return e.widget.config.widgetTypeMixins=f.uniq(f.union(h||[],e.widget.config.widgetTypeMixins||[])),g.all(e.widget.config.widgetTypeMixins.map(n.getApiMixin)).then(t=>{f.extend(e.widget.config,{resolvedMixins:t})})}function $(e){const t=g.defer();return e.itemConfig.modal&&(f.extend(e.widget.api,{_modal:e.itemConfig.modal}),delete e.itemConfig.modal),t.resolve(),t.promise}function T(e){const t=g.defer();return R(e).then(i=>{f.extend(e,{visible:i}),t.resolve()}),t.promise}function P(e){const t=g.defer();return f.merge(e.widget.api,f.cloneDeep(e.widget.config.widgetTypeApi)),delete e.widget.config.widgetTypeApi,t.resolve(),t.promise}function N(e){const t=g.defer();return f.union(v,e.widget.config.widgetTypeHandlers).forEach(t=>b(t.event,50,t.fn,e)),t.resolve(),t.promise}function R(e){return r.checkTraits(e.itemConfig.receivesPersonTraits,e.itemConfig.requiredPersonTraits,e.itemConfig.prohibitedPersonTraits).then(t=>!!t&&n.callExtensionFunction("visibleFn",e,[e.itemConfig.id,e]).then(e=>!f.isBoolean(e)||e))}function M(e){return C(d.lifecycle.event.beforeLoad,e).then(()=>C(d.lifecycle.event.load,e)).then(()=>C(d.lifecycle.event.loaded,e)).then(()=>C(d.lifecycle.event.afterLoad,e)).then(()=>C(d.lifecycle.event.executeOnce,e)).then(()=>(function(e,t){const i=g.defer();if(!f.has(t.widget.lifecycle.handlers,e))throw new Error(`Unknown widget lifecycle event: ${e}`);return t.widget.lifecycle.handlers[e]={},i.resolve(),i.promise})(d.lifecycle.event.executeOnce,e))}function F(e){return n.callExtensionFunction("onCreateFn",e,[e])}function j(e){var t=g.defer();return e.itemConfig=f.cloneDeep(e.widget.lifecycle.backup),t.resolve(),t.promise}}e.$inject=["ApplicationService","ClientService","NavigationService","WidgetService","LogService","NavigationEditorService","PersonTraitsService","AuthService","ThemeService","CCUtils","WIDGET_API","EnumService","$q","_"],angular.module("ccFrontend").factory("BaseWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m,v,h){const b={bindPopoverValuePath:function(e,t){if(void 0===t){if(v.isNil(e.widget.calendar.eventDetail)||v.isNil(e.widget.calendar.eventDetail.event))return{};const t=e.widget.calendar.eventDetail.event;return{allDay:t.allDay,startTime:t.start,endTime:t.end,title:t.title}}void 0!==t.startTime&&(e.widget.calendar.eventDetail.event.start=t.startTime),void 0!==t.endTime&&(e.widget.calendar.eventDetail.event.end=t.endTime),void 0!==t.title&&(e.widget.calendar.eventDetail.event.title=t.title),void 0!==t.allDay&&(e.widget.calendar.eventDetail.event.allDay=t.allDay),e.widget.calendar.eventDetail.dirty=!0},createEvent:function(e,t,i,a,o){e.widget.calendar.focusedEvent=void 0;const r=e.widget.api.getCreateObjectAction(e);return A(`Create event with ${r} from ${t} until ${i}`),S(e),n.createCalendarEventAction(r,t,i,a,o,e.widget)},deleteDetailEvent:function(t){if(v.isNil(t.widget.calendar.eventDetail))return e.when();t.widget.calendar.eventDetail.loading=!0;
1const i=t.widget.api.getDeleteObjectAction(t);return A(`Delete event with ${i}`),n.deleteCalendarEventAction(i,t.widget.calendar.eventDetail.event,t.widget).then(e=>(S(t),l.refetchEventSource(t,e))).catch(e=>{if(e["*"]){const i=e["*"];if(i){const e={text:"common.action.failed",globalMessages:[g.resolve(i[0].i18nKey)]};t.widget.api.status.setError(e,t)}}t.widget.calendar.eventDetail.loading=!1})},field:{hasError:c.hasError,getErrors:c.getErrors},filter:{anyFilterSelected:function(e){return!v.isEmpty(r.get(e,r.KEYS.FILTER))},available:function(e,t){const i=v.get(e,"widget.calendar.baseConfiguration.userSpecificCalendarFilters");if(v.isNil(i)||v.isEmpty(i))return!1;return i.includes(t)},resetFilters:function(e){const t=r.get(e,r.KEYS.FILTER);Object.keys(t).forEach(t=>{e.$emit("calendarFilter.valueUpdated",{filter:t,value:null})})}},findPreviousEvent:function(e,t,i){i.stopPropagation(),E(e,t,"PAST")},findNextEvent:function(e,t,i){i.stopPropagation(),E(e,t,"FUTURE")},getControls:function(e){if(x(e))return e.widget.calendar.crudActions.controls;return null},getCreateObjectAction:function(e){if(e.widget.calendar.crudActionsInitialized&&e.widget.calendar.crudActions.createObjectActionOverride)return e.widget.calendar.crudActions.createObjectActionOverride;return null},getDeleteObjectAction:function(e){if(e.widget.calendar.crudActionsInitialized&&e.widget.calendar.crudActions.deleteObjectActionOverride)return e.widget.calendar.crudActions.deleteObjectActionOverride;return null},hasControls:x,hasCreateConfiguration:function(e){return e.widget.calendar.crudActionsInitialized&&!!e.widget.calendar.crudActions.createObjectActionOverride},hidePopover:S,retrieveEventsForEventSource:function(e,t,i,a,s){const c=o.detransformDate([a.getFullYear(),a.getMonth(),a.getDate()]),l=o.detransformDate([s.getFullYear(),s.getMonth(),s.getDate()]),d=r.get(e,r.KEYS.FILTER),u=e.widget.calendar.currentView;return n.fetchCalendarEvents(t,i,u,c,l,d).catch(e=>[])},retrieveResources:function(e,t,i,a){const c=o.detransformDate([i.getFullYear(),i.getMonth(),i.getDate()]),l=o.detransformDate([a.getFullYear(),a.getMonth(),a.getDate()]),d=r.get(e,r.KEYS.FILTER);return n.fetchCalendarResources(t,c,l,d).then(t=>{const i=m.getTranslationForKeyAllLanguages("common.ui.calendar.noRoomTitle");return i.id="4451a6f5-3542-4313-bfba-f3129f6f5d1c",e.widget.calendar.baseConfiguration.showEventsWithoutResource&&t.unshift({id:s.calendar.NO_ROOM_ID,i18nTitle:i,i18nTitleBuilding:{id:"4762f17a-0958-4b0d-9936-45c2f43eadd3",de:"",en:""}}),t}).catch(e=>[])},selection:{activate:function(i,n){if(i.entity){S(n);let e=n.itemConfig.overrideChildState.replace(new RegExp("{eventEntity}","g"),i.entity);const a=e.match(new RegExp("{(.[^}]*)}"));v.isNil(a)||(e=e.replace(a[0],u.getContext(a[1])));const o=n.itemConfig.widgetState,r=u.getAllSubStates(o).filter(t=>t.keyForTreeSubNavigation===e);return delete n.widget.selection.overrideChildState,r.length&&(n.widget.selection.overrideChildState=r[0].state),n.widget.api.executeHandlers(f.selection.event.activate,n,[i]).then(()=>(n.$emit("widget.select",{selectedContext:t("amDateFormat")(i.start,"DD.MM.YYYY HH:mm")+" – "+t("amDateFormat")(i.end,"DD.MM.YYYY HH:mm")}),n.widget.api.executeHandlers(f.selection.event.afterActivate,n,[i])))}return e.when()}},showEventDetail:function(t,i,a,o){if(t.widget.calendar.focusedEvent=void 0,v.isNil(o.accessGrantedElement))return;const r=[];t.fieldActionVisibility={},v.isNil(t.widget.calendar.editableEventSourceViewDefinitionId)||r.push(n.readObjects({viewDefinitionId:t.widget.calendar.editableEventSourceViewDefinitionId,objectId:a.id},t.widget,{reduced:!1}).then(function(e){v.isUndefined(e.data[0])||e.data[0].$actions.forEach(e=>t.fieldActionVisibility[e]=!0)}));return r.push(t.widget.api.executeHandlers(f.selection.event.beforeSelect,t,[a]).then(()=>{t.widget.selection.selected=[a];const e=o.accessGrantedElement.getBoundingClientRect();let n="bottom",r=i.x-e.x;r-=t.eventPopoverWidth/2;let s=i.y-e.y;if((s+=10)+250>e.height){const t=s+250-e.height;s-=t+10,n=t>125?"top":void 0}r+t.eventPopoverWidth>e.width&&(r-=r+t.eventPopoverWidth-e.width+20);const c="CalendarEvent"===a.entity?"String":"TranslationField";t.widget.calendar.eventDetail={x:r,y:s,direction:n,event:a,titleType:v.isNil(a.title)?"none":c,loading:!1}})),e.chain(r)},toggleEventSource:function(e,t){t.widget.calendar.focusedEvent=void 0,e.active?(l.deactivateEventSource(t,e),e.active=!1):(l.activateEventSource(t,e),e.active=!0);const i=function(e){return e.widget.calendar.eventSources.filter(e=>!e.active).map(e=>e.id)}(t);0===i.length?r.remove(t,r.KEYS.INACTIVE_EVENT_SOURCES):r.set(t,r.KEYS.INACTIVE_EVENT_SOURCES,i)},updateEvent:function(e,t){return A(`Update event with  from ${t.start} until ${t.end}`),e.widget.calendar.focusedEvent=void 0,n.updateCalendarEventAction(function(e){return e.widget.calendar.crudActionsInitialized&&e.widget.calendar.crudActions.updateObjectActionOverride?e.widget.calendar.crudActions.updateObjectActionOverride:null}(e),t,e.widget)},validateConfiguration:function(e){const t=e.itemConfig,i=[];v.isNil(t.calendarUseCase)&&i.push("widget.configurationValidator.useCaseIsEmpty");if(!v.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},w=[{event:f.lifecycle.event.beforeLoad,fn:r.initCalendarConfigurationInScope},{event:f.lifecycle.event.beforeLoad,fn:function(t){return t.widget.calendar.useCase=t.itemConfig.calendarUseCase,u.
1setContext("calendarUseCase",t.itemConfig.calendarUseCase,!1,t.itemConfig.linkToSubParentState),e.when()}},{event:f.lifecycle.event.beforeLoad,fn:function(t,i){return n.getCalendarWidgetConfiguration(t.widget.calendar.useCase).then(n=>(t.calendarReadOnlyEventSourcesOverrides&&(n.readOnlyEventSources=n.readOnlyEventSources.filter(e=>t.calendarReadOnlyEventSourcesOverrides.includes(e.id))),n.hasReadAccess?(function(e,t){e.widget.calendar.baseConfiguration=t.baseConfiguration,e.widget.calendar.currentView=t.baseConfiguration.initialView,e.widget.calendar.filterEnum=s.calendar.filter,e.widget.calendar.iconLegend=t.iconLegend,Object.values(t.iconLegend).forEach(e=>{m.addTranslationField(e.title),m.addTranslationField(e.helpText)})}(t,n),function(t,i){if(i.hasManageAccess){const e=i.baseConfiguration.createObjectAction;e&&(t.widget.calendar.crudActions.createObjectActionOverride=e);const n=i.baseConfiguration.deleteObjectAction;n&&(t.widget.calendar.crudActions.deleteObjectActionOverride=n);const a=i.baseConfiguration.updateObjectAction;a&&(t.widget.calendar.crudActions.updateObjectActionOverride=a);const o=i.editableEventSource.controls;o&&(t.widget.calendar.crudActions.controls=o)}return t.widget.calendar.crudActionsInitialized=!0,e.when()}(t,n).then(()=>((function(e,t){let i=r.get(e,r.KEYS.INACTIVE_EVENT_SOURCES);v.isEmpty(i)&&(i=[]);const n=t.readOnlyEventSources;e.widget.calendar.eventSources=[],t.editableEventSource&&(n.push(t.editableEventSource),e.widget.calendar.editableEventSource=t.editableEventSource.id,e.widget.calendar.editableEventSourceViewDefinitionId=t.baseConfiguration.editableEventSourceViewDefinitionId);n.forEach(t=>{t.entity&&p.subscribeEntity(t.entity,e.widget.id),e.widget.calendar.eventSources.push({id:t.id,name:t.i18nName||`entity.CalendarEventSource.${t.id}`,active:!i.includes(t.id),color:t.color,backgroundColor:t.color,borderColor:t.color,textColor:t.textColor,displayBackground:t.displayBackground,editable:t.id===e.widget.calendar.editableEventSource,entity:t.entity,controls:t.controls})})})(t,n),l.initialize(t,t.widget.calendar.useCase,n,i),t.initializer.loading=!1,e.when()))):(t.widget.calendar.accessDenied=!0,e.when())))}},{event:f.lifecycle.event.beforeLoad,fn:function(t){const i=v.debounce(()=>l.refetchResourcesAndEvents(t),200);t&&v.get(t,"widget.calendar.baseConfiguration.userSpecificCalendarFilters")&&(t.unregisterFilterChangedListener=t.$on("calendarFilter.valueUpdated",(e,n)=>{A(`Filter ${n.filter} changed to ${n.value}`),v.isNil(n.value)||(v.isArray(n.value)||v.isObject(n.value))&&v.isEmpty(n.value)?r.remove(t,r.KEYS.FILTER+"."+n.filter):r.set(t,r.KEYS.FILTER+"."+n.filter,n.value),i()}));return e.when()}},{event:f.lifecycle.event.beforeLoad,fn:function(t){return t.unregisterStateChangedListener=t.$on("$stateChangeSuccess",(e,i)=>{i.name===t.itemConfig.widgetState&&l.refetchResourcesAndEvents(t)}),e.when()}},{event:f.lifecycle.event.destroy,fn:function(t){t.unregisterFilterChangedListener&&t.unregisterFilterChangedListener();t.unregisterStateChangedListener&&t.unregisterStateChangedListener();return l.destroy(t),t.$destroy(),e.when()}},{event:f.lifecycle.event.i18n,fn:function(e){return l.switchI18n(e)}},{event:f.selection.event.afterDeselect,fn:function(t){return t.widget.calendar.eventDetail=void 0,e.when()}},{event:f.lifecycle.event.objectsCreated,fn:function(e,t,i,n){return C(n)}},{event:f.lifecycle.event.objectsUpdated,fn:function(e,t,i,n){return A("Retrieved object update."),S(n),C(n)}},{event:f.lifecycle.event.objectsDeleted,fn:function(t,i,n,a){a.widget.calendar.focusedEvent=void 0;const o=a.widget.calendar.eventSources.map(e=>e.entity);return S(a),e.all(t.map(e=>{if(o.includes(e.entity))return A(`Retrieved object delete for object id ${e.objectId} of entity ${e.entity}`),l.removeEvent(a,e.objectId)}))}}],y=[f.action.id,f.data.id,f.help.id,f.status.id,f.selection.id,f.ui.id];return{create:(e,t,i)=>{v.isPlainObject(e.widget)||(e.widget={}),v.defaults(e.widget,{calendar:{accessDenied:!1,actionInput:{startTime:null,endTime:null,allDay:!1,resourceId:null},baseConfiguration:{},crudActions:{},crudActionsInitialized:!1,eventSources:[],filterEnum:void 0,fullCalendar:void 0,currentView:void 0,useCase:void 0}});const n={calendarElement:t,accessGrantedElement:i};return a.create(b,y,e,w,n)}};function x(e){if(!e.widget.calendar.crudActionsInitialized)return!1;if(v.isNil(e.widget.calendar.eventDetail))return!1;return e.widget.calendar.eventDetail.event.eventSourceId===e.widget.calendar.editableEventSource&&!!e.widget.calendar.crudActions.controls}function C(t){return t.widget.calendar.editableEventSource?l.refetchEventSource(t,t.widget.calendar.editableEventSource):e.when()}
1function S(e,t){t&&t.stopPropagation(),e.widget.api.status.clearStatus(e),e.widget.api.selection.deselectAll(e)}function E(e,t,a){const s=r.get(e,r.KEYS.FILTER),{start:c,end:d}=l.getCurrentPeriod(e),u=o.detransformDate([c.getFullYear(),c.getMonth(),c.getDate()]),g=o.detransformDate([d.getFullYear(),d.getMonth(),d.getDate()]);n.fetchNearestEvent(e.widget.calendar.useCase,t,s,u,g,a).then(t=>{t?"FUTURE"===a?l.focusEventStart(e,t):l.focusEventEnd(e,t):(e.widget.calendar.nearestEventNotFound=!0,i(()=>{e.widget.calendar.nearestEventNotFound=!1},3e3))})}function A(e){d.debug(`[ccCalendarApi] ${e}`)}}e.$inject=["$q","$filter","$timeout","ActionService","BaseWidgetApiService","CCUtils","CalendarStorageService","CMS_DATA","FieldApiService","FullCalendarService","LogService","NavigationService","ValidationService","WIDGET_API","WidgetService","I18nService","_","moment"],angular.module("ccFrontend").factory("CalendarWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u){var g={getAlignment:function(e){return e.itemConfig.alignment||"vertical"},getCollectionRenderer:function(e){return e&&e.itemConfig&&e.itemConfig.collectionRenderer||"default"},getCollectionItemRenderer:function(e,t){return o.getCollectionItemRendererForViewDefinition(e,t)},hasAnyVisibleCreateAction:function(e){return u.contains(e.widget.collection.actions.createActionVisibility,!0)},hasCreateConfiguration:function(e){return e.widget.collection.actions.createActions.length>0},hasDeleteConfiguration:function(e){return e.widget.collection.actions.deleteActions.length>0},validateConfiguration:function(e){var t=e.itemConfig,i=[];u.isNil(t.collectionRenderer)?i.push("widget.configurationValidator.collectionRendererIsEmpty"):u.isEmpty(t.collectionWidgetPathViewDefinitionMapping)?i.push("widget.configurationValidator.itemRendererMappingIsEmpty"):!t.pathContext||u.isEmpty(t.collectionWidgetPathViewDefinitionMapping)||u.isNil(e.widget.data)||u.forEach(e.widget.data,function(e){var n=u.find(t.collectionWidgetPathViewDefinitionMapping,function(t){return t.viewDefinition===e.$viewDefinition||t.mutableViewDefinition===e.$viewDefinition});(u.isNil(n)||u.isNil(n.collectionItemRenderer))&&i.push({key:"widget.configurationValidator.missingOrIncompleteMappingForViewDefinition",params:{viewDefinitionId:e.$viewDefinition}})});if(!u.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)},selection:{toggle:function(e,t,i){if(i.stopPropagation(),!t.itemConfig.canSelect)return d.when();return t.widget.api.selection.isSelected(e,t)?t.widget.api.selection.deselect(e,t):t.itemConfig.multiSelect||t.itemConfig.isModal?t.widget.api.selection.selectWithoutActivate(e,t):t.widget.api.selection.clear(t).then(function(){return t.widget.api.selection.select(e,t)})},activate:function(e,t){if(!t.widget.selection.canSelect)return d.when();if(t.itemConfig.isModal)return t.widget.api.selection.selectWithoutActivate(e,t);return t.widget.api.selection.select(e,t)}}},f=[{event:l.lifecycle.event.beforeLoad,fn:i.resolveViewDefinition},{event:l.lifecycle.event.beforeLoad,fn:i.resolveContext},{event:l.lifecycle.event.load,fn:m},{event:l.lifecycle.event.load,fn:function(e){var t=d.defer(),i={};u.forEach(e.widget.collection.response,function(e){u.merge(i,e.model)}),e.widget.collection.response.model=i,e.widget.model.fullModel=i;var n={};return u.forEach(e.itemConfig.collectionWidgetPathViewDefinitionMapping,function(e){var t=u.isNil(e.mutableViewDefinition)?e.viewDefinition:e.mutableViewDefinition;n[t]=i[t],u.each(n[t].fields,function(e){u.extend(e,{entity:n[t].entity})})}),e.widget.model.baseModel=n,e.widget.model.referenceModels=u.omit(i,Object.keys(e.widget.model.baseModel)),e.widget.model.affectedByEntities=u.pluck(u.valuesIn(i),"entity"),t.resolve(),t.promise}},{event:l.lifecycle.event.load,fn:function(e){var i=d.defer(),n=[];return u.forEach(e.widget.collection.response,function(t){e.widget.api.data.registerEntityPermissions(t.model,e),e.widget.api.data.registerRecordPermissions(t.data,e),n.push(t.data)}),n=u.flatten(n),t.calculateWritableAndVisibleProperties(e),e.widget.data=n,i.resolve(),i.promise}},{event:l.lifecycle.event.load,fn:function(e){var t=[],i=[];return function(e,t,i){u.forEach(e.itemConfig.collectionWidgetPathViewDefinitionMapping,function(n){var a=u.isNil(n.mutableViewDefinition)?n.viewDefinition:n.mutableViewDefinition;n.createObjectAction&&t.push(v(e,n.createObjectActionOverride,"CreateObjectAction",a,n.icon)),n.deleteObjectAction&&i.push(v(e,n.deleteObjectActionOverride,"DeleteObjectAction",a,n.icon))})}(e,t,i),e.widget.collection.actions.createActions=t,e.widget.collection.actions.deleteActions=i,e.widget.collection.actions.initialized=!0,d.when()}},{event:l.lifecycle.event.load,fn:function(e){e.itemConfig.pathContext?u.forEach(e.itemConfig.collectionWidgetPathViewDefinitionMapping,function(t){var i=u.isNil(t.mutableViewDefinition)?t.viewDefinition:t.mutableViewDefinition;e.widget.collection.icons[i]=u.isNil(t.icon)?"fa-question":t.icon}):e.widget.collection.icons[e.itemConfig.viewDefinition]=u.isNil(e.itemConfig.icon)?"fa-question":e.itemConfig.icon;return d.when()}},{event:l.lifecycle.event.load,fn:h},{event:l.lifecycle.event.loaded,fn:function(e){var t=d.defer();return u.extend(e.widget.selection,{canSelect:!!e.itemConfig.canSelect,multi:!!e.itemConfig.multiSelect}),t.resolve(),t.promise}},{event:l.selection.event.beforeSelect,fn:function(e,t){return t.widget.collection.actions.selectedEntity=t.widget.model.baseModel[e.$viewDefinition].entity,t.widget.model.fullModel[e.$viewDefinition].entity!==t.widget.collection.actions.selectedEntity?t.widget.api.selection.clear(t):d.when()}},{event:l.selection.event.afterSelect,fn:function(e,t){return t.widget._scope.$broadcast("action.update"),d.when()}},{event:l.selection.event.afterDeselect,fn:function(e){return e.widget._scope.$broadcast("action.update"),d.when()}},{event:l.lifecycle.event.i18n,fn:h},{event:l.lifecycle.event.objectCreated,fn:function(e,t,i,n,a){var o=u.map(a.widget.model.fullModel,function(e){return e.entity});if(!u.contains(o,t))return d.when();return m(a).then(function(t){var i=u.pluck(a.widget.data,"id"),n=u.union(u.flatten(u.pluck(t,"data")));u.each(n,function(e){u.contains(i,e.id)||(u.isNil(a.widget.data)&&(a.widget.data=[]),a.widget.data.push(e))});var o=a.widget.api.data.getObjectCompositionIds(a);if(u.has(o,e))return a.widget.api.selection.select(e,a);var r=u.find(u.mapValues(o,function(t,i){return u.contains(t,e)?i:null}),function(e){return null!==e});return r?a.widget.api.selection.select(r,a):void 0})}},{event:l.lifecycle.event.objectCreated,fn:b},{event:l.lifecycle.event.objectDeleted,fn:function(e,t,n,a,o){if(u.isNil(e))return o.widget.api.reload(o);var r=d.defer(),s=u.map(o.widget.model.fullModel,function(e){return e.entity}),c=o.widget.api.data.getObjectCompositionIds(o);if(u.has(c,e)){!u.isNil(o.widget.selection.selected)&&o.widget.selection.selected.length&&o.widget.selection.selected[0].id===e&&o.widget.api.selection.clear(o);var l=o.widget.data;o.widget.data=u.without(l,u.find(l,function(t){return t.id===e&&(o.widget.api.data.removeRecordPermissions(t,o),!0)}
1)),i.navigateToParentState(o)}else if(u.contains(s,t))return m(o).then(function(t){u.each(u.keys(c),function(i){if(u.contains(c[i],e)){var n=u.find(u.union(u.flatten(u.pluck(t,"data"))),{id:i}),a=u.findIndex(o.widget.data,{id:i});o.widget.data[a]=n}})});return r.resolve(),r.promise}},{event:l.lifecycle.event.objectUpdated,fn:function(e,t,i,n,a){var o=u.map(a.widget.model.fullModel,function(e){return e.entity});if(u.contains(o,t)){var r=a.widget.api.data.getObjectCompositionIds(a);return m(a).then(function(t){if(u.has(r,e)){var i=u.union(u.flatten(u.pluck(t,"data")));a.widget.data=u.map(a.widget.data,function(e){return u.find(i,{id:e.id})})}else u.each(u.keys(r),function(i){if(u.contains(r[i],e)){var n=u.find(u.union(u.flatten(u.pluck(t,"data"))),{id:i}),o=u.findIndex(a.widget.data,{id:i});a.widget.data[o]=n}})})}return d.when()}},{event:l.lifecycle.event.objectUpdated,fn:b}],p=[l.action.id,l.data.id,l.help.id,l.model.id,l.selection.id,l.status.id,l.ui.id];return{create:function(t){return e.create(g,p,t,f)}};function m(e){return n.fetchCollectionWidgetData({contextId:e.widget.context.contextId},e.widget,{reduced:!1}).then(function(t){e.widget.collection.response=t;const i=[];return u.forEach(t,function(e){i.push(e.data);const t=[];u.forEach(e.data,function(e){t.push(a.transformArrays(a.reduceRecord(u.cloneDeep(e))))}),e.data=t}),e.widget.originalData=u.flatten(i),t})}function v(e,t,i,n,a){return{id:u.isEmpty(t)?i:t,viewDefinitionId:n,entity:e.widget.model.baseModel[n].entity,icon:a}}function h(e){if(!u.has(e,"widget.data")||u.isNil(e.widget.data))return d.when();var t={};u.forEach(e.itemConfig.collectionWidgetPathViewDefinitionMapping,function(i,n){var o=u.isNil(i.mutableViewDefinition)?i.viewDefinition:i.mutableViewDefinition;t[o]={orderIndex:n,sortFunctions:function(e){const t=e.defaultOrder;let i;return(i=u.isEmpty(t)?[]:t.split(",")).push("id:asc"),u.map(i,function(t){const i=t.split(":"),n=i.length>1&&"desc"===i[1],o=r.getNameOfTypeAtEndOfStringPath(e.entity+"."+i[0]);return function(e,t){let l=u.get(e,i[0]),d=u.get(t,i[0]);return!u.isNil(l)&&r.isTranslationField(l)&&(s.addTranslationField(l),l=s.getTranslation(l.id)),!u.isNil(d)&&r.isTranslationField(d)&&(s.addTranslationField(d),d=s.getTranslation(d.id)),!u.isNil(l)&&r.isEnum(o)&&(l=r.getEnum(o)[l].ordinal),!u.isNil(d)&&r.isEnum(o)&&(d=r.getEnum(o)[d].ordinal),u.isNil(l)?u.isNil(d)?0:n?-1:1:u.isNil(d)?n?1:-1:(a.isDateOrDateTime(l)&&(l=c(l)),a.isDateOrDateTime(d)&&(d=c(d)),l===d?0:n?l>d?-1:1:l>d?1:-1)}})}(e.widget.model.baseModel[o])}});return e.widget.data.sort(function(e,i){if(e.$viewDefinition===i.$viewDefinition){for(var n=t[e.$viewDefinition].sortFunctions,a=0;a<n.length;a++){var o=n[a](e,i);if(0!==o)return o}return 0}return t[e.$viewDefinition].orderIndex>t[i.$viewDefinition].orderIndex?1:-1}),d.when()}function b(e,t,i,n,a){return h(a)}}e.$inject=["BaseWidgetApiService","FieldApiService","NavigationService","ActionService","CCUtils","CollectionService","ModelService","I18nService","moment","WIDGET_API","$q","_"],angular.module("ccFrontend").factory("CollectionWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o){var r={getTemplate:function(t){if(!o.isNull(t.itemConfig.module)&&!o.isUndefined(t.itemConfig.module))return e.customModule(t.itemConfig.module.toLowerCase());return null},validateConfiguration:function(e){var t=e.itemConfig,i=[];(o.isUndefined(t.module)||o.isNull(t.module))&&i.push("widget.configurationValidator.moduleIsEmpty");if(!o.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},s=[{event:n.lifecycle.event.load,fn:function(e){var t=a.defer();o.isUndefined(e.itemConfig.customData)||(e.widget.data=e.itemConfig.customData);return t.resolve(),t.promise}},{event:n.lifecycle.event.objectUpdated,fn:function(e,t,i,n,o){return o.$broadcast("customWidget.update"),a.when()}}],c=[n.action.id,n.help.id,n.status.id,n.ui.id];return{create:function(e){return e.subscribeToEntityChanges=function(t){i.subscribeEntity(t,e.widget.id)},t.create(r,c,e,s)}}}e.$inject=["UrlService","BaseWidgetApiService","WidgetService","WIDGET_API","$q","_"],angular.module("ccFrontend").factory("CustomWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m,v,h){const b={canCancelEdit:function(e){return e.itemConfig.updateObjectAction&&I(e)},canEdit:x,canEditStaticHelpField:function(e){return x(e)&&l.getContext("isSelectedStaticHelpFieldEditable")},canEditSystemHelpField:function(e){return x(e)&&s.canEditSystemHelpField()}
1,canUpdate:function(e){return e.itemConfig.updateObjectAction&&I(e)&&A(e)},cancelEdit:function(t){return e.runInstance("CancelEditObjectAction",t.widget)},field:r.getDefaultFieldApi(),getCancelEditObjectAction:function(e){if(e.widget.form.crudActionsInitialized)return e.widget.form.crudActions.cancelEditObjectActionOverride||"CancelEditObjectAction";return null},getChanges:C,getDeleteObjectAction:function(e){if(e.widget.form.crudActionsInitialized)return e.widget.form.crudActions.deleteObjectActionOverride||"DeleteObjectAction";return null},getEditObjectAction:function(e){if(e.widget.form.crudActionsInitialized)return e.widget.form.crudActions.editObjectActionOverride||"EditObjectAction";return null},getForm:S,getUpdateObjectAction:function(e){if(e.widget.form.crudActionsInitialized)return e.widget.form.crudActions.updateObjectActionOverride||"UpdateObjectAction";return null},hasDeleteConfiguration:function(e){return e.itemConfig.deleteObjectAction},hasDirtyChangesInEdit:function(e){const t=A(e),i=!h.isEmpty(h.without(h.keys(C(e)),"version")),n=I(e),a=E(e);return t&&i&&n&&!a},hasSqlHelpFieldCreateConfiguration:function(e){return!l.getContext("isVisibleSqlHF")},hasUpdateConfiguration:function(e){return e.itemConfig.updateObjectAction&&I(e)&&A(e)},hasWritableAndVisibleProperties:r.hasWritableAndVisibleProperties,isCreateMode:E,isDirty:A,isEditMode:I,isMandatoryFieldsFilled:function(e){let t=!0;
1if(!h.isUndefined(e.widget.model.baseModel)){const i=o.getMandatoryFields(e.widget.model.baseModel,"widget.data",e.widget);t=function e(t,i,n){let a=!0;const o=[];i.forEach(i=>{const a=h.get(t.widget._scope,`${n}.${i.name}`);let r=!0;i.mandatory&&(r=!h.isEmpty(a)||h.isBoolean(a)||h.isNumber(a)),null!==i.object&&(h.isArray(i.object)?h.each(i.object,function(a,o){r=r&&e(t,a,`${n}.${i.name}[${o}]._item`)}):r=r&&e(t,i.object,`${n}.${i.name}`)),o.push(r)});o.length>0&&(a=!h.without(o,o[0]).length);return a}(e,i,"widget.data")}return t},isViewMode:D,onAfterUpdate:function(e){A(e)&&R(e);D(e)||M("view",e)},onSqlHelpFieldCreationResultSuccessFunction:function(e){l.setContext("isVisibleSqlHF",!0,!0),i.broadcast("visible.update")},readNotes:T,reset:function(e){$(e),e.widget.isDirty=!1,R(e)},save:function(i){const n={viewDefinitionId:i.widget.model.baseModel.viewDefinitionId,object:i.widget.api.data.getCurrentData(i)};return h.isNil(i.widget.form.crudActions.updateObjectActionOverride)?function(e,i){const n=v.defer();return t.updateObjects(i,e.widget).then(n.resolve,n.reject),n.promise}(i,n):function(t,i){return e.getInstance(t.widget.form.crudActions.updateObjectActionOverride,t.widget,i,{}).then(t=>e.processInstance(t),v.reject)}(i,n)},setDirty:function(e){return S(e).$dirty=!0,e.widget.api.executeHandlers(p.lifecycle.event.dirty,e).then(()=>i.broadcast("widget.dirty"))},setPristine:R,setVisibility:N,switchTo:M,toggleNotes:function(e){e.notes.visible=!e.notes.visible},validateConfiguration:function(e){const t=e.itemConfig,i=[];h.isNil(t.viewDefinition)?i.push("widget.configurationValidator.viewDefinitionIsEmpty"):o.isUuid(t.viewDefinition)||i.push({key:"widget.configurationValidator.viewDefinitionIsUnresolved",params:{viewDefinition:t.viewDefinition}});if(!h.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},w=[{event:p.lifecycle.event.beforeLoad,fn:l.resolveViewDefinition},{event:p.lifecycle.event.beforeLoad,fn:l.resolveContext},{event:p.lifecycle.event.load,fn:function(e){let i=v.defer(),n=e.itemConfig.initialMode;switch(n){case"create":i=function(e){return function(e){if(e.itemConfig.prefetchedData)return v.when(e.itemConfig.prefetchedData);if(e.itemConfig.handlerData){const i={viewDefinitionId:e.itemConfig.viewDefinition},n={reduced:!1};return t.getModalFetchDataHandlerModel([i],e.widget,n,e.itemConfig.handlerData)}{const i=e.itemConfig.pathContext?e.widget.context.contextId:null;return t.readViewDefinitionModels({viewDefinitionId:e.itemConfig.viewDefinition,pathId:i},e.widget)}}(e).then(t=>P(t.model,t.viewDefinitionId,e).then(()=>(e.widget.defaultValues=t.defaultValues,e.widget.originalData=f.createObject(e.widget.model.fullModel,t.viewDefinitionId,!1,e.widget.defaultValues),r.calculateWritableAndVisibleProperties(e),$(e))))}(e);break;case"edit":case"view":i=k(e);break;default:i.resolve(),i=i.promise}return i.then(()=>M(n,e),t=>e.widget.api.configurationInvalid(e,[t]))}},{event:p.lifecycle.event.load,fn:function(e){const t=e.itemConfig.updateObjectActionOverride;h.isUndefined(t)||h.isNull(t)||(e.widget.form.crudActions.updateObjectActionOverride=t);const i=e.itemConfig.editObjectActionOverride;h.isUndefined(i)||h.isNull(i)||(e.widget.form.crudActions.editObjectActionOverride=i);const n=e.itemConfig.cancelEditObjectActionOverride;h.isUndefined(n)||h.isNull(n)||(e.widget.form.crudActions.cancelEditObjectActionOverride=n);const a=e.itemConfig.deleteObjectActionOverride;h.isUndefined(a)||h.isNull(a)||(e.widget.form.crudActions.deleteObjectActionOverride=a);return e.widget.form.crudActionsInitialized=!0,v.when()}},{event:p.lifecycle.event.load,fn:function(e){const t=v.defer();S(e).$name=e.widget.api.getId(e),e.$broadcast("form.load"),h.has(e.itemConfig,"initialData")&&null!==e.itemConfig.initialData&&(e.widget.data=h.cloneDeep(e.itemConfig.initialData));return t.resolve(),t.promise}},{event:p.lifecycle.event.load,fn:N},{event:p.lifecycle.event.objectUpdated,fn:function(e,t,i,a,s){const c="Preferences"===s.widget.model.baseModel.entity,l=h.endsWith(s.widget.model.baseModel.entity,"Settings"),d=o.getCoveredObjects({},s.widget.api.data.getCurrentData(s),s.widget.api.model.getFullModel(s));h.has(d,t)&&h.contains(d[t],e)&&(s.widget.api.reload(s),s.widget.api.status.clearStatus(s),n.checkNeedToUpdateUserDetails(s.widget.api.model.getBaseModel(s).entity,r.getValue("id",s)),c&&u.init(s.widget.data),l&&g.clear(s.widget.model.baseModel.entity.replace(/Settings/,"")));return N(s)}}],y=[p.action.id,p.data.id,p.help.id,p.model.id,p.status.id,p.ui.id];return{create:e=>{a.create(b,y,e,w)}};function x(e){return e.itemConfig.updateObjectAction&&D(e)&&r.hasWritableAndVisibleProperties(e)}function C(e){return o.normalizeDataFormat(e.widget.data)}function S(e){return e.$formCtrl}function E(e){return"create"===e.widget.form.mode}function A(e){return S(e)&&S(e).$dirty||!1}function I(e){return"edit"===e.widget.form.mode}function D(e){return"view"===e.widget.form.mode}function k(e){return function(e){if(e.itemConfig.prefetchedData)return v.when(e.itemConfig.prefetchedData);if(e.itemConfig.handlerData){const i={viewDefinitionId:e.itemConfig.viewDefinition},n={reduced:!1};return t.invokeFetchDataHandler(i,e.widget,n,e.itemConfig.handlerData)}{const i=e.itemConfig.pathContext?null:e.widget.context.contextId,n=e.itemConfig.pathContext?e.
1widget.context.contextId:null,a=e.itemConfig.readObjectActionOverride?e.itemConfig.readObjectActionOverride:null;return t.readObjects({viewDefinitionId:e.itemConfig.viewDefinition,objectId:i,pathId:n,readObjectActionOverride:a},e.widget,{reduced:!1})}}(e).then(t=>P(t.model,t.viewDefinitionId,e).then(()=>{const i=h.isNil(t.data)?0:t.data.length;if(0===i&&e.itemConfig.hideIfEmpty)return e.visible=!1,v.when();if(1!==t.data.length){const e={key:"widget.form.tooManyRecordsFound",params:{recordAmount:i}};return v.reject(e)}return e.widget.defaultValues=t.defaultValues,e.widget.originalData=t.data[0],$(e).then(t=>(T(e),t))}))}function $(e){const t=v.defer();return e.widget.api.data.registerEntityPermissions(e.widget.api.model.getBaseModel(e),e),e.widget.api.data.registerRecordPermissions(e.widget.originalData,e),e.widget.data=o.transformArrays(o.reduceRecord(h.cloneDeep(e.widget.originalData))),r.calculateWritableAndVisibleProperties(e),i.broadcast("widget.reload"),t.resolve(),t.promise}function T(e){if(e.widget&&e.widget.data){const t=e.widget.data.id;o.isUuid(t)&&d.loadNotes(e,t,!0)}}function P(e,t,i){const n=v.defer();return h.each(e,function(e,t){h.each(e.fields,function(n){h.extend(n,{entity:e.entity,collection:n.collection,helpKey:"entity."+(e.entity||i.objectModelViewDefinition)+"."+n.name+".help",overwriteHelpKey:t+"."+(e.entity||i.objectModelViewDefinition)+"."+n.name+".help",dataTypeHelpKey:"dataType."+n.type+".help",showHelp:!1,helpReady:!1})})}),i.widget.model={},i.widget.model.fullModel=e,i.widget.model.baseModel=e[t],i.widget.model.referenceModels=h.omit(e,t),i.widget.model.affectedByEntities=h.pluck(h.valuesIn(e),"entity"),n.resolve(),n.promise}function N(e){return m.callExtensionFunction("visibleFn",e).then(function(t){if(!h.isUndefined(t))return e.visible=t,t;if(!0===e.itemConfig.hideIfEmpty){let t=!1;return h.each(e.widget.api.model.getBaseModel(e).fields,function(i){r.isVisible("widget.data",e,i)&&"HEADING"!==function(e,t){switch(e.widget.form.mode){case"create":case"edit":return t.editDisplayType;case"view":return t.viewDisplayType}}(e,i)&&(t=!0)}),e.visible=t,t}return e.visible=!0,!0})}function R(e){return S(e).$setPristine(),e.widget.api.executeHandlers(p.lifecycle.event.pristine,e)}function M(e,t){const i=()=>(t.widget.form.mode=e,d.setNotesVisibility(t,!1),"edit"===e||"create"===e?m.activate(t.widget):m.deactivate(t.widget),t.$broadcast("form.updateFields"),t.$broadcast("action.update"),v.when()),n=()=>c.getAlert("common.confirm.activeWidgetChangeFailed","common.confirm.activeWidgetChangeFailed.title");return"edit"===e?m.confirmActiveWidgetChange(t.widget).then(e=>m.handleActiveWidgetSwitch(e).then(i,n),()=>(()=>h.isNil(t.widget.api._modal)?v.when():t.widget.api._modal.close())()):i()}}e.$inject=["ActionInvocationService","ActionService","ApplicationService","AuthService","BaseWidgetApiService","CCUtils","FieldApiService","HelpService","ModalService","NavigationService","NoteService","PersonPreferencesService","SystemSettingsService","ViewDefinitionModelService","WIDGET_API","WidgetService","$q","_"],angular.module("ccFrontend").factory("FormWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d){var u={getGraphRenderer:p,validateConfiguration:function(e){var t=e.itemConfig,i=[];d.isUndefined(t.nodesView)||d.isNull(t.nodesView)?i.push("widget.configurationValidator.nodesViewIsEmpty"):r.isUuid(t.nodesView)||i.push({key:"widget.configurationValidator.nodesViewIsUnresolved",params:{nodesView:t.nodesView}});d.isUndefined(t.edgesView)||d.isNull(t.edgesView)?i.push("widget.configurationValidator.edgesViewIsEmpty"):r.isUuid(t.edgesView)||i.push({key:"widget.configurationValidator.edgesViewIsUnresolved",params:{edgesView:t.edgesView}});(d.isUndefined(t.graphRenderer)||d.isNull(t.graphRenderer))&&i.push("widget.configurationValidator.graphRendererIsEmpty");if(!d.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},g=[{event:o.lifecycle.event.beforeLoad,fn:function(e){return s.all(t.resolveItemConfig(e,"nodesView"),t.resolveItemConfig(e,"edgesView"))}}
1,{event:o.lifecycle.event.beforeLoad,fn:t.resolveContext},{event:o.lifecycle.event.load,fn:function(e){var t=e.itemConfig.nodesView,n=e.itemConfig.edgesView,a=e.widget.context.contextId;return i.readObjects([{viewDefinitionId:t,pathId:a},{viewDefinitionId:n,pathId:a}]).then(function(t){e.widget.graph.nodesResponse=t[0],e.widget.graph.edgesResponse=t[1]})}},{event:o.lifecycle.event.load,fn:function(e){var t=e.widget.graph.nodesResponse.model,i=e.widget.graph.edgesResponse.model,n=d.merge(t,i);return e.widget.model.fullModel=n,e.widget.model.baseModel=d.union(t[e.itemConfig.nodesView],i[e.itemConfig.edgesView]),d.each(e.widget.model.baseModel.fields,function(t){d.extend(t,{entity:e.widget.model.baseModel.entity})}),e.widget.model.referenceModels=d.omit(t,e.itemConfig.nodesView,e.itemConfig.edgesView),e.widget.model.affectedByEntities=d.pluck(d.valuesIn(n),"entity"),s.when()}},{event:o.lifecycle.event.load,fn:function(e){return e.widget.api.data.registerEntityPermissions(e.widget.api.model.getBaseModel(e),e),e.widget.api.data.registerRecordPermissions(e.widget.graph.nodesResponse.data,e),e.widget.api.data.registerRecordPermissions(e.widget.graph.edgesResponse.data,e),v(e)}},{event:o.lifecycle.event.load,fn:function(e){return e.widget.graph.crudActionsInitialized=!0,s.when()}},{event:o.lifecycle.event.loaded,fn:function(e){d.extend(e.widget.selection,{multi:!1});var t=n.getGraphRenderer(p(e));d.isUndefined(t)||(e.widget.graph.options=t.getOptions(),e.widget.graph.layout=t.getLayout(),e.widget.graph.style=t.getStyle());return a.doLayout()}},{event:o.lifecycle.event.reload,fn:function(e){return l.getGraph().then(function(t){c(function(){t.elements().remove(),delete e.widget.data,d.extend(e.widget,{data:{}}),e.widget.graph.metadata={}},0)})}},{event:o.ui.event.layout,fn:m},{event:o.lifecycle.event.i18n,fn:v}],f=[o.action.id,o.data.id,o.help.id,o.model.id,o.selection.id,o.status.id,o.ui.id];return{create:function(t){return e.create(u,f,t,g)}};function p(e){return e.itemConfig&&e.itemConfig.graphRenderer||"ProcessStateGraphRenderer"}function m(e){return l.getGraph().then(function(t){c(function(){e.widget.graph.instance=t,t.fit()},0)})}function v(e){var t=function(t){return t=r.omitDeep(t,function(e,t){return d.contains(["$permissions","$actions","version"],t)}),d.extend(t,{$displayName:r.resolveDisplayName(t,e.widget.model.fullModel)})},i=d.forOwn(d.mapKeys(d.map(d.map(e.widget.graph.nodesResponse.data,t),function(t){return e.widget.graph.metadata[t.id]=t,{id:t.id,group:"nodes",data:{name:t.$displayName}}}),function(e){return e.id}),function(e){delete e.id}),n=d.forOwn(d.mapKeys(d.map(d.map(e.widget.graph.edgesResponse.data,t),function(t){return e.widget.graph.metadata[t.id]=t,{id:t.id,group:"edges",data:{name:t.$displayName,source:d.isNull(t.from)?"start":t.from.id,target:d.isNull(t.to)?null:t.to.id},classes:"autorotate "+t.style}}),function(e){return e.id}),function(e){delete e.id});return e.widget.data=d.merge(d.merge({start:{data:{name:""},classes:"start-node"}},i),n),m(e)}}e.$inject=["BaseWidgetApiService","NavigationService","ActionService","WidgetService","ClientService","WIDGET_API","CCUtils","$q","$timeout","cytoData","_"],angular.module("ccFrontend").factory("GraphWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r){const s={validateConfiguration:function(e){const t=e.itemConfig,i=[];r.isNil(t.url)&&i.push("widget.configurationValidator.urlIsEmpty");if(!r.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},c=[{event:a.lifecycle.event.beforeLoad,fn:t.resolveContext},{event:a.lifecycle.event.beforeLoad,fn:d},{event:a.lifecycle.event.loaded,fn:function(e){return e.initializer.loading=!1,e.$on("i18n.switch",function(){d(e)}),o.when()}}],l=[];return{create:t=>(r.isPlainObject(t.widget)||(t.widget={}),r.defaults(t.widget,{iframe:{url:null}}),e.create(s,l,t,c))};function d(e){const a=e.itemConfig.url;return i.loading().then(()=>{e.widget.iframe.url=function(e){const i=e.match(/\{[a-zA-Z]+}/g);if(r.isNil(i))return e;return i.forEach(i=>e=e.replace(i,function(e){return"{locale}"===e?"de"===n.getCurrentLocale().iso?"de-DE":"en-GB":t.getContext(e)}(i))),e}(a)})}}e.$inject=["BaseWidgetApiService","NavigationService","I18nInitService","I18nService","WIDGET_API","$q","_"],angular.module("ccFrontend").factory("IFrameWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g){var f={canSwitchRenderer:function(e){if(e.isLoading)return!1;g.isUndefined(e.itemConfig.fixedRenderer)&&(e.itemConfig.fixedRenderer=!1);if(!g.isUndefined(e.widget.report.availableRenderers)&&!e.itemConfig.fixedRenderer)return e.widget.report.availableRenderers.length>1;return!1},exportChart:function(e,t){var i=Highcharts.charts,n=i[i.length-1],o=a.getTranslation(e.title);n.exportChartLocal({type:t,filename:o.replace(/ /g,"_")},{title:{text:o}})},getAvailableRenderers:h,getCurrentRenderer:b,getDefaultChartConfig:w,getDefaultGridConfig:y,getReportGroupings:function(e,t){if(0===e.length)return{};t=void 0===t?"name":t;const n=i.getColors("tol-rainbow",e[0].data.length);return e[0].data.reduce((e,i,a)=>(e[i.id]={[t]:i.x,$color:n[a]},e),{})},getSeriesColors:function(e){return i.getColors("tol-rainbow",(e.widget.report.reportData||[]).length)},getSeriesLetters:function(e){return i.getLetters((e.widget.report.reportData||[]).length)},getSeriesTotal:function(e,t){if(-1===e.sum)return"";return e.sum},hasSeriesTotal:function(e){return-1!==e.sum&&!e.isRelative},hasAnyData:function(e){if(!x)return!1;if(!g.isUndefined(e.widget.report.reportData)){var t=g.reduce(g.map(g.flatten(g.map(g.pluck(e.widget.report.reportData,"data"),function(e){return e})),function(e){return e.y}),function(e,t){return e+t},0);return t>0}},hasAnySeries:x,currentlyDisplayingWithHighchartsRenderer:function(e){if(e.widget.report.renderer)return"highcharts"===e.widget.report.renderer.framework;return!1}
1,isRendererActive:function(e,t){if(!g.isUndefined(t.widget.report.renderer))return t.widget.report.renderer.systemName===e.systemName;return!1},render:C,renderWith:function(e,t){t.widget.report.renderer=e,C(t).then(function(){t.widget._scope.$broadcast("action.update")})},validateConfiguration:function(e){var t=e.itemConfig.takeReportIdFromContext?e.widget.context.contextId:e.itemConfig.report,n=[];g.isUndefined(t)||g.isNull(t)?n.push("widget.configurationValidator.reportIsEmpty"):i.isUuid(t)||n.push({key:"widget.configurationValidator.reportIsUnresolved",params:{report:t}});if(!g.isEmpty(n))return e.widget.api.configurationInvalid(e,n);return e.widget.api.configurationValid(e)},exportAsCsv:S,exportAsXml:E},p=[{event:c.lifecycle.event.load,fn:v},{event:c.lifecycle.event.i18n,fn:function(e){return v(e)}},{event:c.ui.event.layout,fn:function(e){var t=u.defer(),i=b(e);g.isUndefined(i)||"agGrid"!==i.framework?t.resolve():d(function(){var i=$("#"+e.widget.api.getId(e));if(i.width()>0){var n=e.widget.report.grid;n.api.redrawRows(),n.api.refreshHeader(),n.api.sizeColumnsToFit()}t.resolve()},0);return t.promise}}],m=[c.action.id,c.data.id,c.help.id,c.status.id,c.ui.id];return{create:function(e){return e.isLoading=!0,g.extend(e.widget.report.grid,y(e)),t.create(f,m,e,p)},getDefaultChartConfig:w,getDefaultGridConfig:y,exportAsCsv:S,exportAsXml:E};function v(t){return t.isLoading=!0,function(t){var i=t.itemConfig.takeReportIdFromContext?t.widget.context.contextId:t.itemConfig.report,n=I(t.itemConfig.variables);return u.all(n).then(function(n){var a=g.reduce(n,function(e,t){return e[t.reportVariable]=t.reportValue,e},{});return e.readReport(i,a,t.widget).then(function(e){t.widget.report.response=e.report})})}(t).then(()=>(function(e){if(e.widget.data=e.widget.report.response,!g.isNil(e.widget.data))if(e.widget.api.ui.setTitle(e.widget.data.name,e),e.widget.report.reportData=e.widget.data.series,e.widget.report.seriesTitles=[],g.each(e.widget.data.series,function(e){a.addTranslationField(e.name),e.name=e.name.id}),g.each(e.widget.data.series,function(e){g.each(e.data,function(e){g.each(g.keys(e.x),function(t){var n=e.x[t];g.isString(n)||(g.has(n,"$value")?e.x[t]={id:"entity."+n.$entity+"."+n.$value}:g.isNull(n)||(g.isPlainObject(n)&&g.has(n,"$displayPattern")?e.x[t]=i.resolveDisplayName(n):(a.addTranslationField(n),e.x[t]={id:n.id})))})})}),e.widget.report.availableRenderers=o.getReportRenderers(e.widget.data.type),g.each(e.widget.report.availableRenderers,function(e){a.addTranslationField(e.name),a.addTranslationField(e.description)}),e.itemConfig.fixedRenderer){var t=g.find(e.widget.report.availableRenderers,function(t){return t.id===e.itemConfig.renderer});e.widget.report.renderer=o.getReportRenderer(t.systemName)}else if(function(e){return!g.isEmpty(e.widget.report.response.defaultRenderer)}(e))e.widget.report.renderer=o.getReportRenderer(e.widget.report.response.defaultRenderer.systemName);else{var n=o.getDefaultReportRenderer(e.widget.data.type),r=h(e);g.contains(g.pluck(r,"systemName"),n.systemName)?e.widget.report.renderer=n:e.widget.report.renderer=r.x}return u.when()})(t)).then(()=>C(t)).then(()=>t.isLoading=!1)}function h(e){return e.widget.report.availableRenderers||[]}function b(e){return e.widget.report.renderer}function w(e){return{credits:{enabled:!1},func:function(t){e.$evalAsync(function(){try{t.reflow()}catch(e){}})},loading:!0,options:{chart:{animation:!0,events:{load:function(){e.widget.report.chart.loading=!1,e.$emit("chart.rendered")},redraw:function(){const t=this;e.$evalAsync(()=>{try{t.reflow()}catch(e){}}),e.widget.report.chart.loading=!1}}},lang:{loading:i.buildHTML({tag:"i",attr:{class:"fa fa-circle-notch fa-spin"}})},legend:{itemStyle:{fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif',fontSize:"9pt"},symbolHeight:12,symbolWidth:12,symbolRadius:6},plotOptions:{series:{animation:!0}},tooltip:{style:{padding:10,fontWeight:"bold",fontFamily:'"open sans", "Helvetica Neue", Helvetica, Arial, sans-serif'}},exporting:{enabled:!1}},title:{text:""}}}function y(e){return{animateRows:!1,defaultColDef:{sortable:!1,resizable:!0,floatingFilter:!1,suppressMovable:!0},headerHeight:32,rowHeight:32,columnDefs:[],rowData:null,overlayNoRowsTemplate:"<span></span>",suppressCellSelection:!0,suppressRowClickSelection:!0,suppressContextMenu:!0}}function x(e){return!g.isUndefined(e.widget.report.reportData)&&e.widget.report.reportData.length>0}function C(e){var t,i=u.defer();return t=g.isNil(e.itemConfig.renderer)?e.widget.report.renderer:g.find(h(e),function(t){return t.id===e.itemConfig.renderer}),g.isNil(t)?i.resolve():function(e){const t=u.defer();if(g.isNil(e.widget.report.reportData))t.resolve();else{var i=g.cloneDeep(e.widget.report.reportData);e.widget.report.response.noValueOverride?(a.addTranslationField(e.widget.report.response.noValueOverride),a.getTranslation(e.widget.report.response.noValueOverride.id)):a.getTranslation("c
1ommon.noValue");const n=a.getCurrentLocale().iso;i.forEach(e=>{e.name=a.getTranslation(e.name),e.data.forEach(e=>{e.x=e.x[n]})}),t.resolve(i)}return t.promise}(e).then(function(a){var o=t.render(a,e);switch(t.framework){case"highcharts":!function(e,t){t.widget.report.chart=g.merge(t.widget.api.getDefaultChartConfig(t),e)}(o,e);break;case"agGrid":!function(e,t){var i=t.widget.report.grid;g.isNil(i.api)||(i.api.setColumnDefs(e.columnDefs),i.api.setRowData(e.rowData),i.api.redrawRows(),i.api.refreshHeader(),i.api.sizeColumnsToFit())}(o,e);break;default:throw new Error("unknown report renderer framework: "+t.systemName)}e.widget.report.lastUpdate=new Date,n.doLayout().then(function(){i.resolve()})}),i.promise}function S(t,i,n){return A(e.exportReportAsCsv,t,i,n)}function E(t,i,n){return A(e.exportReportAsXml,t,i,n)}function A(e,t,i,n){var a=I(i);return u.all(a).then(function(i){var a=g.reduce(i,function(e,t){return e[t.reportVariable]=t.reportValue,e},{});return e(t,a,n).then(function(e){return e})})}function I(e){return g.map(e,function(e){return e.reportValue.match(/^{(.*)}$/)?r.getContextAsPromise(e.reportValue.replace(/^{(.*)}$/,"$1")).then(function(t){return{reportVariable:e.reportVariable,reportValue:t}}):u.when(e)})}}e.$inject=["ActionService","BaseWidgetApiService","CCUtils","ClientService","I18nService","WidgetService","NavigationService","StringEncodingService","WIDGET_API","$filter","$timeout","$q","_"],angular.module("ccFrontend").factory("ReportWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m,v,h,b,w,y,x,C,S,E,A,I,D,k,$,T,P){const N={canCancelEdit:function(e){return e.itemConfig.updateObjectAction&&Y(e)},cancelEdit:function(t){return e.runInstance("CancelEditObjectAction",t.widget)},canEdit:j,canUpdate:function(e){return e.itemConfig.updateObjectAction&&Y(e)&&K(e)},data:{getItemById:function(e,t){var i=we(e,t);return P.isNil(i)?null:i.data}},getCancelEditObjectAction:function(e){if(e.widget.table.crudActionsInitialized)return"CancelEditObjectAction";return null},getChanges:q,getCreateObjectActions:function(e){if(e.widget.table.crudActionsInitialized&&e.itemConfig.createObjectAction)return e.widget.table.crudActions.createObjectActionOverrides.length>0?e.widget.table.crudActions.createObjectActionOverrides:["CreateObjectAction"];return[]},getDeleteObjectAction:function(e){if(e.widget.table.crudActionsInitialized)return e.widget.table.crudActions.deleteObjectActionOverride||"DeleteObjectAction";return null},getEditObjectAction:function(e){if(e.widget.table.crudActionsInitialized)return"EditObjectAction";return null},getUpdateObjectAction:function(e){if(e.widget.table.crudActionsInitialized)return e.widget.table.crudActions.updateObjectActionOverride||"UpdateObjectAction";return null},getNumberOfRows:ae,hasCreateConfiguration:function(e){return e.itemConfig.createObjectAction},hasCustomColumnPositions:function(e){return e.widget.table.hasCustomColumnPositions},hasDeleteConfiguration:function(e){return e.itemConfig.deleteObjectAction},hasUpdateConfiguration:function(e){return e.itemConfig.updateObjectAction&&Y(e)&&K(e)},hideFloatingFilters:function(e){le(e,!1),ce(e)},isDirty:K,isEditMode:Y,isInlineEditingEnabled:me,onAfterExecution:function(e){if(!1===e.widget.status.error)return void(e.widget.dirty=!1);if(!P.isNil(e.widget.status)&&!P.isNil(e.widget.status.globalMessages)&&0!==e.widget.status.globalMessages.length)return;const t=[];if(function(e){return!P.isNil(e.messages)&&(e.messages.length>0||P.isPlainObject(e.messages))}(e.widget.status)){const i=function(e){return P.isArray(e.messages)?e.messages:[e.messages]}(e.widget.status);i.forEach(i=>{P.isNil(i.error)||P.forEach(i.error,function(n,a){P.contains(t,i.objectId)||t.push(i.objectId);const o=we(i.objectId,e);if(P.isNil(o))return;const r=o.data;r.$updateFailed=!0;const s=function(e){const t=/^([a-zA-Z0-9_-]*)(\[[0-9]+])$/,i=e.split(".");let n="";for(var a=0;a<i.length;a++)if(a!==i.length-1){var o=i[a].match(t);n+=o?`${0===a?"":"."}${o[1]}.value${o[2]}`:`${0===a?"":"."}${i[a]}.value`}else n+=`${0===a?"":"."}${i[a]}`;return n}(a);P.has(r,s)&&(P.isNil(r.$updateFailedFields)&&(r.$updateFailedFields=[]),P.contains(r.$updateFailedFields,s)||(r.$updateFailedFields.push(s),e.widget.table.grid.columnApi.applyColumnState({state:[{colId:s,hide:!1}]})))})})}(function(e,t){e.widget.table.grid.api.forEachNode(function(e){P.isNil(e.data)||P.contains(t,e.data.id.value)||(e.data.$updateFailed=!1,e.data.$updateFailedFields=[],e.data.$updatedValuePaths=[],e.data.$dirty=!1)})})(e,t),t.length>0&&!P.isNil(e.widget.table.grid.api)?e.widget.table.grid.api.redrawRows():e.widget.dirty=!1},onAfterUpdate:function(e){B(e)||z("view",e)},refocusCell:function(e,t,i){if(P.isNil(e.widget.table.grid.api))return;const n=e.widget.table.grid.api.getFocusedCell();P.isNil(i)&&(i=P.isNil(n)?0:n.rowIndex);if(B(e))if(e.itemConfig.allowFocusInViewMode)if(P.isNil(n)){const t=e.widget.table.grid.columnApi.getAllDisplayedColumns(),n="$selection"===t[0].colId?t[1]:t[0];e.widget.table.grid.api.setFocusedCell(i,n)}else e.widget.table.grid.api.setFocusedCell(i,n.column);else e.widget.table.grid.api.clearFocusedCell(),t.focus();else if(P.isNil(n)){const n=P.find(e.widget.table.grid.columnApi.getAllDisplayedColumns(),function(e){return!0===e.colDef.editable||P.isFunction(e.colDef.editable)});P.isNil(n)?t.focus():e.widget.table.grid.api.setFocusedCell(i,n)}else e.widget.table.grid.api.setFocusedCell(i,n.column)},reInitialize:function(e){return e.widget.table.grid.api.destroy(),C.initTableConfigurationInScope(e).then(()=>e.widget.api.reinit(e))},reload:Q,reset:ee,resetFloatingFilters:ce,save:te,selection:{clear:V,count:function(e){if(!P.isNil(e.widget.table.grid.api))return e.widget.table.grid.api.getSelectedNodes().length},deselectNode:U,get:function(e){const t=e.widget.table.grid;if(!P.isNil(t)&&!P.isNil(t.api)){const e=P.sortBy(t.api.getSelectedNodes(),"rowIndex");return e.map(e=>E.reduceRecord(e.data))}return[]},isSelected:function(e,t){if(!P.isNil(t.widget.table.grid.api)){const i=t.
1widget.table.grid.api.getSelectedNodes(),n=i.find(t=>t.data.id.value===e);return!P.isNil(n)}},select:function(e,t){if(P.isNil(t.widget.table.grid.api))return D.when();if(Y(t))return D.when();var i;i=P.isString(e)?we(e,t):P.isString(e.id)?we(e.id,t):we(e.id.value,t);if(P.isNil(i))return D.when();return de(t,i)},selectRowAndNavigate:de,selectNodeWithoutNavigate:ue,toggle:function(e,t){if(P.isNil(t.widget.table.grid.api))return D.when();var i;i=P.isString(e)?we(e,t):P.isString(e.id)?we(e.id,t):we(e.id.value,t);if(P.isNil(i))return D.when();var n=t.widget.table.grid.api.getSelectedNodes();return P.contains(n,i)?U(t,i):ue(t,i).then(function(){k(function(){t.widget.focus(i.rowIndex)})})}},tableView:S,showFloatingFilters:function(e){le(e,!0)},switchTo:z,validateConfiguration:function(e){var t=e.itemConfig,i=[];P.isNil(t.readObjectsAction)&&(P.isNil(t.viewDefinition)?i.push("widget.configurationValidator.viewDefinitionIsEmpty"):E.isUuid(t.viewDefinition)||i.push({key:"widget.configurationValidator.viewDefinitionIsUnresolved",params:{viewDefinition:t.viewDefinition}}));if(!P.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},R=[{event:A.lifecycle.event.beforeLoad,fn:function(e){return g.getCurrentUser().then(function(t){e.widget.canFilter=t.allowedToFilter})}},{event:A.lifecycle.event.beforeLoad,fn:r.resolveViewDefinition},{event:A.lifecycle.event.beforeLoad,fn:r.resolveContext},{event:A.lifecycle.event.beforeLoad,fn:C.initTableConfigurationInScope},{event:A.lifecycle.event.beforeLoad,fn:d.loading},{event:A.lifecycle.event.load,fn:function(e){if(!P.isNil(e.itemConfig.setsContext)&&r.getContext("$filteredExternally")){r.removeContextFromState(e.itemConfig.widgetState.substring(0,e.itemConfig.widgetState.lastIndexOf(".")));const t=P.trim(e.itemConfig.setsContext,"{}"),i=r.getContext(t);i&&(e.widget.table.filteredExternally=i)}return D.when()}},{event:A.lifecycle.event.load,fn:function(e){const t=e.itemConfig.createObjectActionOverrides;t&&(e.widget.table.crudActions.createObjectActionOverrides=P.pluck(t,"name"));const i=e.itemConfig.deleteObjectActionOverride;i&&(e.widget.table.crudActions.deleteObjectActionOverride=i);const n=e.itemConfig.updateObjectActionOverride;n&&(e.widget.table.crudActions.updateObjectActionOverride=n);return e.widget.table.crudActionsInitialized=!0,D.when()}},{event:A.lifecycle.event.load,fn:function(e){return function(e,t){let i,n;if(e.itemConfig.prefetchedData)i=D.when(e.itemConfig.prefetchedData),e.itemConfig.prefetchedDataOnce&&delete e.itemConfig.prefetchedData;else if(P.isFunction(e.itemConfig.readObjectsAction))n=e.widget.api.filter.getActive(e),i=e.itemConfig.readObjectsAction(n);else{var a=e.itemConfig.pathContext?null:e.widget.context.contextId,o=e.itemConfig.pathContext?e.widget.context.contextId:null;n=e.widget.api.filter.getActive(e);var r=e.itemConfig.findIds||null,s={viewDefinitionId:e.itemConfig.viewDefinition,objectId:P.isNil(t)?a:null,objectIds:P.isNil(t)?null:t,pathId:o,activeFilters:n,findIds:r};const l={reduced:!1};i=e.itemConfig.handlerData?c.getModalFetchDataHandlerModel(s,e.widget,l,e.itemConfig.handlerData):c.readViewDefinitionModels(s,e.widget)}return i.then(t=>(P.isNil(e.itemConfig.viewDefinition)&&(e.itemConfig.viewDefinition=t.viewDefinitionId),t))}(e).then(t=>oe(t.model,e))}},{event:A.lifecycle.event.load,fn:function(e){const t=h.getActiveFeatures();return e.widget.table.features={advancedFiltering:P.contains(t,"6e0ab10f-e2db-41cc-a8a0-0456098fadbe"),columnPinning:P.contains(t,"ed26d3b5-6630-4909-9ee5-628969004569"),columnReordering:P.contains(t,"e360ee65-1849-42bf-8322-9730c6c78a22"),columnSelection:P.contains(t,"36212e2b-c95d-498e-aaa8-d0289f727ca4"),copyCellContents:P.contains(t,"a0a1a0d3-a7ba-42ef-b54a-b7ecba2fa899"),pagination:(P.contains(t,"1c14dcc3-6281-4f74-8350-78be8929d6a7")||e.itemConfig.usePaginationEvenIfFeatureIsNotActive)&&e.itemConfig.useBackendGroupFilterPaginationSort,rowAggregation:P.contains(t,"a14e4e00-10cb-4fbe-b9fa-77004c9555e9")&&e.itemConfig.useBackendGroupFilterPaginationSort&&!e.itemConfig.isModal,rowGrouping:(P.contains(t,"90d1464f-8c00-43c6-bea6-baaf0a3c3a88")||e.itemConfig.useRowGroupingEvenIfFeatureIsNotActive)&&e.itemConfig.useBackendGroupFilterPaginationSort&&!e.itemConfig.isModal,tableViews:P.contains(t,"566aa93d-ca2d-490d-be22-158ed12705b7")&&!e.itemConfig.isModal},D.when()}},{event:A.lifecycle.event.load,fn:S.loadTableViews},{event:A.lifecycle.event.load,fn:ie},{event:A.lifecycle.event.load,fn:y.restoreTableGroups},{event:A.lifecycle.event.executeOnce,fn:v.registerColumnNameUpdateOnLanguageSwitch},{event:A.lifecycle.event.executeOnce,fn:v.registerColumnPositionChangeListener},{event:A.lifecycle.event.executeOnce,fn:v.registerColumnSizeChangeListener},{event:A.lifecycle.event.executeOnce,fn:v.registerColumnPinningChangedListener},{event:A.lifecycle.event.executeOnce,fn:v.registerSortChangedListener},{event:A.lifecycle.event.executeOnce,fn:v.registerFloatingFilterChangedListener},{event:A.lifecycle.event.executeOnce,fn:v.registerGroupingChangedListener},{event:A.lifecycle.event.executeOnce,fn:he},{event:A.lifecycle.event.executeOnce,fn:ve},{event:A.lifecycle.event.executeOnce,fn:be}
1,{event:A.lifecycle.event.reInit,fn:function(e){return ie(e).then(()=>D.all(y.restoreTableGroups(e),v.registerColumnNameUpdateOnLanguageSwitch(e),v.registerColumnPositionChangeListener(e),v.registerColumnSizeChangeListener(e),v.registerColumnPinningChangedListener(e),v.registerSortChangedListener(e),v.registerFloatingFilterChangedListener(e),v.registerGroupingChangedListener(e),he(e),ve(e),be(e)))}},{event:A.lifecycle.event.i18n,fn:J},{event:A.lifecycle.event.objectsCreated,fn:function(e,t,i,n){if(P.isNil(n.widget.table.grid.api))return D.when();const a=e.filter(e=>e.entity===n.widget.model.baseModel.entity);if(a.length>0){if(n.widget.table.grid.createdObjects=a,n.widget.table.features.pagination&&1===a.length){n.widget.table.filteredExternally=a[0].objectId;var o=n.widget.table.grid.api.getColumnDefs();return P.forEach(o,e=>(e.floatingFilter=!1,e)),n.widget.table.grid.api.setColumnDefs(o),X(n,!0)}return J(n,!0)}return D.when()}},{event:A.lifecycle.event.objectsDeleted,fn:function(e,t,i,n){if(P.isNil(n.widget.table.grid.api))return D.when();if(Z(e.reduce((e,t)=>(e[t.objectId]=!0,e),{}),n).length>0)return n.widget.table.grid.api.deselectAll(),Q(n);return D.when()}},{event:A.lifecycle.event.objectsUpdated,fn:function(e,t,i,n){if(P.isNil(n.widget.table.grid.api))return D.when();if(Z(e.reduce((e,t)=>(e[t.objectId]=!0,e),{}),n).length>0)return n.widget.table.grid.api.deselectAll(),Q(n);return D.when()}},{event:A.action.event.finishBulkAction,fn:function(e){const t=D.defer();e.widget.table.grid.columnApi.setColumnVisible("$bulkResults",!0),P.isUndefined(e.widget.table.grid.api.redrawRows)||e.widget.table.grid.api.redrawRows();return t.resolve(),t.promise}},{event:A.filter.event.filter,fn:function(e){return e.widget.table.selectAllEnabled=!1,Q(e)}}],M=[A.action.id,A.filter.id,A.help.id,A.model.id,A.personTraits.id,A.selection.id,A.status.id,A.ui.id];return{create:e=>i.create(N,M,e,R),restoreGridLayout:(e,t)=>u.doLayout(t).then(()=>v.restoreStoredColumnSizes(e,t))};function F(e,t,i){const n=C.get(e,C.KEYS.orderColumns),a=P.isEmpty(n)?function(e,t){if(P.isEmpty(t))return function(e){var t=[];return P.forEach(e,function(e,i){"$bulkResults"!==e.field&&"$selection"!==e.field&&t.push({colId:e.field,direction:"asc"})}),t}(e);const i=[];return t.split(",").forEach(e=>{const t=e.trim().split(":"),n=t[0].split(".").join(".value.");i.push({colId:n,direction:t[1]})}),i}(t,i):n,o=P.reduce(a,(e,t,i)=>(e[t.colId]={direction:t.direction,index:i},e),{});P.forEach(t,function(e){P.has(o,e.field)?(e.sort=o[e.field].direction,e.sortIndex=o[e.field].index):e.sort=null})}function j(e){return e.itemConfig.updateObjectAction&&B(e)&&e.widget.$write}function V(e){return P.isNil(e.widget.table.grid.api)||e.widget.table.grid.api.deselectAll(),e.widget.table.selectAllEnabled=!1,e.widget.api.executeHandlers(A.selection.event.afterDeselect,e)}function O(e,t){if(!Y(t))return!1;const i=e.value||e.api.getValue(e.column,e.node);return!P.isNil(i)&&i.$write}function _(e,t,i,a,r,s,d){const u=P.isNil(a)?e.name:e.name+"["+a+"]",g=d?d+"."+u:u,p=P.isNil(a)?null:a+1,m="HIDDEN"===e.viewDisplayType?"label":e.viewDisplayType.toLocaleLowerCase(),h=["generalMenuTab"];return t.widget.table.features.columnSelection&&h.push("columnsMenuTab"),L(g,e.type,m,t,i).then(function(u){let m={hide:"HIDDEN"===e.viewDisplayType,cellRenderer:n=>(function(e,t,i,n,a){let o="";(!0===t.colDef.editable||P.isFunction(t.colDef.editable)&&t.colDef.editable(t,n))&&(o+=function(e){const t=l.getTranslation("actions.UpdateObjectAction.failed");if(!e.data.$updateFailed)return"";if(P.find(e.data.$updateFailedFields,t=>t.startsWith(e.colDef.field)))return`<i style='margin-left: 5px; margin-right:5px' class='fa fa-exclamation text-red' title="${t}"></i>`;return""}(t),o+=function(e){const t=l.getTranslation("actions.EditObjectAction");if(!P.isNil(e.data.$updatedValuePaths)&&P.contains(e.data.$updatedValuePaths,e.colDef.field))return`<i style='margin-left: 5px; margin-right: 5px' class='fa fa-pencil-alt text-yellow' title="${t}"></i>`;return`<i style='margin-left: 5px; margin-right: 5px' class='fa fa-pencil-alt' title="${t}"></i>`}(t));o+='<span style="flex-grow: 1; overflow: hidden; text-overflow: ellipsis; padding-right: 1px">';var r=e.render({colDef:t.colDef,field:i,value:se(t.value),data:t.data},a);t.colDef.showRowGroup&&P.isEmpty(r)&&(r=`<i>
1${l.getTranslation("common.noValue")}</i>`);o+=r,o+="</span>",function(e,t){return t.canBeCopied&&e.widget.table.features.copyCellContents}(n,i)&&(o+=function(){return`<i style="flex-grow: 0" class="fa cc-copy-to-clipboard" title="${l.getTranslation("action.CopyToClipboardAction")}"></i>`}());return o})(u,n,e,t,i),cellRendererParams:{cc:{canBeCopied:e.canBeCopied,plainValueFn:(t,n,a)=>u.plainValue({colDef:a,field:e,value:se(t),data:n},i)}},editable:!!e.editableInTable&&(e=>O(e,t)),lockVisible:e.editableInTable&&"DEFAULT"!==e.priority,suppressKeyboardEvent:function(){return e=>{if(!e.editing)return!1;const t=e.event,i=t.which,n=[37,38,39,40];return n.indexOf(i)>=0}}(),field:g,headerName:v.getHeaderName(e,s,p,r),headerComponent:w.getHeaderComponent(),headerComponentParams:{cc:{scope:t,field:e,entity:s,currentCollectionMemberNumber:p,parentCollectionMemberPrefix:r}},minWidth:100,cellClass:i=>O(i,t)?`cc-cell-${e.editDisplayType.toLowerCase()}`:`cc-cell-${e.viewDisplayType.toLowerCase()}`,enableValue:"Integer"===e.type||"Money"===e.type,enableRowGroup:!0,menuTabs:h,filter:n.getTextFilter(),filterParams:{cc:{fieldPath:g,field:e,sharedContext:i,plainValueFn:u.plainValue,widgetScope:t}},floatingFilterComponent:n.getTextFloatingFilter(),floatingFilterComponentParams:{suppressFilterButton:!t.widget.table.features.advancedFiltering,cc:{fieldPath:g,widgetScope:t}}};var b=P.isNil(e.editDisplayType)?null:e.editDisplayType.toLowerCase();return P.isNil(b)||(m=function(e,t,i,n){var a=function(){this.eWrapperDiv=document.createElement("div"),this.$scope=null};return a.prototype.init=function(a){if(P.isNil(a.value))throw new Error("editing a value is only possible if the value permission wrapper already exists.");var r=null,s=n.widget.api.model.getBaseModel(n.widget._scope).viewDefinitionId;P.isNil(n.itemConfig.pathContext)||!0!==n.itemConfig.pathContext||P.isNil(n.widget.context.contextId)||(r=n.widget.context.contextId);var l=a.node.data,d=o.getAttribute(n.widget.model.baseModel.entity,t.name);this.$scope=n.$new(!0),this.$scope.data={objectId:l.id.value,value:P.isNil(a.value.value)?null:P.cloneDeep(a.value.value),priority:t.priority,minDurationUnitMillis:P.isNil(d)||P.isNil(d.minDurationUnitMillis)?null:d.minDurationUnitMillis,maxDurationUnitMillis:P.isNil(d)||P.isNil(d.maxDurationUnitMillis)?null:d.maxDurationUnitMillis,defaultDurationUnitMillis:P.isNil(d)||P.isNil(d.defaultDurationUnitMillis)?null:d.defaultDurationUnitMillis,type:t.type,enum:t.enum,fetchAllowedValuesFn:function(t){return c.fetchAllowedValues(s,r,e.field,E.normalizeDataFormat(l),null,t)},finishEditFn:function(){a.node.gridApi.stopEditing()}},this.rowObject=l,this.currentValue=a.value;var u=this,g=function(e){return"select"===e&&(e="typeahead"),f.directiveTemplate("uiitem/widget/table/celleditor/"+e+"/"+e)}(i);$(g).then(function(e){var t=T(e)(u.$scope);angular.element(u.eWrapperDiv).replaceWith(t),u.eWrapperDiv=angular.element(t).get()[0]})},a.prototype.destroy=function(){this.$scope.$destroy(),delete this.$scope,delete this.rowObject,delete this.currentValue,angular.element(this.eWrapperDiv).remove()},a.prototype.getGui=function(){return this.eWrapperDiv},a.prototype.getValue=function(){var t=this.$scope.data.value,i=P.has(this.currentValue,"$oldValue")?this.currentValue.$oldValue:this.currentValue.value;return angular.equals(i,t)?(function(e,t){if(P.isNil(e.$updatedValuePaths))return;const i=P.indexOf(e.$updatedValuePaths,t);i>=0&&e.$updatedValuePaths.splice(i,1),0===e.$updatedValuePaths.length&&(e.$dirty=!1)}(this.rowObject,e.field),pe(n)):(function(e,t){P.isNil(e.$updatedValuePaths)&&(e.$updatedValuePaths=[]),e.$dirty=!0,P.contains(e.$updatedValuePaths,t)||e.$updatedValuePaths.push(t)}(this.rowObject,e.field),pe(n)),P.has(this.currentValue,"$oldValue")||(this.currentValue.$oldValue=this.currentValue.value),this.currentValue.value=t,this.currentValue},P.extend(e,{cellEditor:a})}(m,e,b,t)),P.isNil(d)&&P.isNil(a)||(m=function(e,t){return"TRANSLATIONFIELD"===t.viewDisplayType?P.extend(e,{valueGetter:function(t){var i=P.get(t.data,e.field);return l.addTranslationField(i),i}}):P.extend(e,{valueGetter:function(t){for(var i=e.field.split("."),n=t.data,a=0;a<i.length;a++)n=P.isArray(n)?P.map(n,function(e){return P.get(e,i[a])}):P.get(n,i[a]);return n}})}(m,e)),m=re(m,u,t,e,i)})}function L(e,t,i,n,a){const o=s.getTableCellRenderer(i);if(null===o)throw new Error(`no renderer found for table cell type ${i}`);
1return P.isFunction(o.init)?o.init(a,e,t,n).then(()=>o):D.when(o)}function U(e,t){return t.setSelected(!1),e.widget.api.executeHandlers(A.selection.event.afterDeselect,e)}function W(e,t,i,a,o){if(!P.isNil(e.viewDisplayType))return function(e,t,i,a){const o=a||"";return L(o,null,e.viewDisplayType.toLocaleLowerCase(),t,i).then(a=>{let r={headerComponent:w.getHeaderComponent(),headerComponentParams:{cc:{scope:t,entity:e.entity}},field:o,minWidth:100,suppressSizeToFit:!1,cellRenderer:e=>a.render({colDef:e.colDef,value:se(e.value),data:e.data},i),enableValue:!1,enableRowGroup:!0,menuTabs:["generalMenuTab"],filter:n.getTextFilter(),filterParams:{cc:{fieldPath:o,field:null,sharedContext:i,plainValueFn:a.plainValue,widgetScope:t}},floatingFilterComponent:n.getTextFloatingFilter(),floatingFilterComponentParams:{suppressFilterButton:!t.widget.table.features.advancedFiltering,cc:{fieldPath:o,widgetScope:t}}};return[r=re(r,a,t,null,i)]})}(e,t,i,a);return H(P.map(e.fields,n=>{const r=t.widget.model.referenceModels[n.embeddedObjectView];if(!P.isNil(n.numberOfDisplayedCollectionMembers))return function(e,t,i,n,a,o,r){const s=[];for(let c=0;c<e.numberOfDisplayedCollectionMembers;c++)if("OBJECT"!==e.viewDisplayType)o?s.push(_(e,n,a,c,r,t.entity,o)):s.push(_(e,n,a,c,r,null,null));else{let d;if(void 0!==e.nameOverride)l.addTranslationField(e.nameOverride),d=l.getTranslation(e.nameOverride.id);else{const i=l.getTranslationKeyWithDefault(`entity.${e.entity||t.entity}.${e.name}`,"$defaults.attribute."+e.name);d=l.getTranslation(i)}const u=`${e.name}.value[${c}]`,g=o?o+"."+u:u,f=`${d} ${c+1}: `;let p;p=!0===e.hideCollectionPrefix&&1===e.numberOfDisplayedCollectionMembers?r:P.isNil(r)?f:r+f,s.push(W(i,n,a,g,p))}return H(s)}(n,e,r,t,i,a,o);if("OBJECT"!==n.viewDisplayType)return a?_(n,t,i,null,o,e.entity,a):_(n,t,i,null,o,null,null);const s=a?a+"."+n.name+".value":n.name+".value";return W(r,t,i,s,o)}))}function H(e){return D.all(e).then(e=>{const t=[];return P.forEach(e,e=>{P.isArray(e)?t.push.apply(t,e):t.push(e)}),t})}function G(e){return{headerName:l.getTranslation("common.ui.table.selectionColumn.headerName"),headerComponent:w.getEmptyHeaderComponent(),headerComponentParams:{cc:{scope:e,toggleSelectAll:()=>(function(e){e.widget.table.selectAllEnabled=!e.widget.table.selectAllEnabled,e.widget.table.selectAllEnabled?(e.widget.table.selectAllInProgress=!0,ge(e)):V(e)})(e)}},field:"$selection",pinned:"left",width:32,sortable:!1,resizable:!1,filter:!1,lockVisible:!0,lockPosition:!0,suppressNavigable:!0,suppressSizeToFit:!0,checkboxSelection:e=>!e.node.isExpandable(),cellClass:"selectionCol",onCellClicked:e=>{e.node.selectable&&e.node.setSelected(!e.node.selected)}}}function q(e){const t=function(e){const t=[];return e.widget.table.grid.api.forEachNode(e=>{e.data.$dirty&&t.push(e.data)}),t}(e),i=E.normalizeDataFormat(t);return P.toArray(i)}function B(e){return"view"===e.widget.table.mode}function Y(e){return"edit"===e.widget.table.mode}function z(e,t){if(t.widget.table.mode===e)return D.when();const i=()=>(t.widget.table.mode=e,"edit"===e||"create"===e?(P.isNil(t.widget.table.grid.api)||(t.widget.table.grid.api.gridOptionsWrapper.isSuppressCellSelection=(()=>!1)),t.widget.table.inlineEditingActive=!0,V(t),t.widget.api.status.clearStatus(t),s.activate(t.widget)):(P.isNil(t.widget.table.grid.api)||(t.widget.table.grid.api.gridOptionsWrapper.isSuppressCellSelection=(()=>!t.itemConfig.allowFocusInViewMode)),s.deactivate(t.widget),t.widget.table.inlineEditingActive=!1,ee(t)),t.widget.focus(),t.$broadcast("action.update"),P.isNil(t.widget.table.grid.api)||t.widget.table.grid.api.redrawRows(),D.when()),n=()=>a.getAlert("common.confirm.activeWidgetChangeFailed","common.confirm.activeWidgetChangeFailed.title");return"edit"===e?s.confirmActiveWidgetChange(t.widget).then(e=>s.handleActiveWidgetSwitch(e).then(i,n),()=>(()=>P.isNil(t.widget.api._modal)?D.when():t.widget.api._modal.close())()):i()}function K(e){return e.widget.dirty||!1}function J(e,t){if(e.widget.table.filteredExternally){delete e.widget.table.filteredExternally;var i=e.widget.table.grid.api.getColumnDefs();ne(i,e),e.widget.table.grid.api.setColumnDefs(i)}return X(e,t)}function X(e,t){if(!P.isNil(e.widget.table.grid.api)){e.widget.table.grid.api.refreshHeader();const i=t||e.widget.table.features.pagination;e.widget.table.grid.api.refreshServerSideStore({purge:i})}return e.widget.table.selectAllEnabled=!1,D.when()}function Q(e){return J(e,!0)}function Z(e,t){const i=[];return t.widget.table.grid.api.forEachNode(t=>{P.isNil(t.data)||function e(t,i){if(!0===i[t.id.value])return!0;const n=P.find(t,t=>{if(P.isPlainObject(t)){if(P.isPlainObject(t.value)&&!P.isNil(t.value.id))return e(t.value,i);if(P.isArray(t.value)){const n=P.find(t.value,t=>!!P.isPlainObject(t)&&e(t,i));return!P.isNil(n)}}return!1});return!P.isNil(n)}(t.data,e)&&i.push(t)}),i}function ee(e){P.isNil(e.widget.table.grid.api)||e.widget.table.grid.api.forEachNode(e=>{e.data.$dirty=!1,e.data.$updateFailed=!1,e.data.$updateFailedFields=[],e.data.$updatedValuePaths=[],function e(t){if(!P.isPlainObject(t))return;P.forEach(t,t=>{P.isUndefined(t.$oldValue)?P.isArray(t.value)?P.forEach(t.value,t=>{e(t)}):e(t.value):t.value=t.$oldValue})}(e.data)}),e.widget.dirty=!1,e.widget.api.status.clearStatus(e)}function te(t){const i={viewDefinitionId:t.itemConfig.viewDefinition,object:q(t)};return P.isNil(t.widget.table.crudActions.updateObjectActionOverride)?function(e,t){return c.updateObjects(t,e.widget,{forceActionResult:!0})}(t,i):function(t,i){return e.getInstance(t.widget.table.crudActions.updateObjectActionOverride,t.widget,i,{forceActionResult:!0}).then(t=>e.processInstance(t))}(t,i)}function ie(e){return W(e.widget.model.baseModel,e,{},null,null).then(t=>(t.unshift(G(e)),e.widget.table.originalColumnOrder=P.pluck(t,"field"),t=v.restoreStoredColumns(e,t),F(e,t,e.widget.model.baseModel.defaultOrder),e.widget.table.filteredExternally||ne(t,e),function(e,t){const i=D.defer(),n={animateRows:!1,defaultColDef:{sortable:!0,resizable:!0,floatingFilter:!1,suppressMovable:!t.widget.table.features.columnReordering},autoGroupColumnDef:{lockVisible:!0,lockPosition:!0,pinned:"left",headerComponent:w.getHeaderComponent(),headerComponentParams:{cc:{scope:t,groupColumn:!0}},menuTabs:["generalMenuTab"]},columnDefs:e,headerHeight:32,icons:{filter:'<i class="fa fa-magnifying-glass" aria-hidden="true"></i>
1',menu:'<i class="fa fa-bars" aria-hidden="true"></i>',columns:'<i class="fa fa-columns" aria-hidden="true"></i>',check:'<i class="fa fa-check" aria-hidden="true"></i>',smallLeft:'<i class="fa fa-caret-left" aria-hidden="true"></i>',smallRight:'<i class="fa fa-caret-right" aria-hidden="true"></i>',groupContracted:'<i class="fa fa-caret-right prefix-icon" aria-hidden="true"></i>',groupExpanded:'<i class="fa fa-caret-down prefix-icon" aria-hidden="true"></i>'},postProcessPopup:e=>{if("$selection"===e.column.colId){const i=e.ePopup.getElementsByClassName("fa fa-bars")[0];P.isNil(i)||(t.widget.api.isEditMode(t)?i.parentElement.remove():(i.classList.remove("fa-bars"),i.classList.add("fa-table")))}},navigateToNextCell:e=>{if(!P.isNil(e.nextCellPosition))return e.nextCellPosition.rowIndex<0?null:e.nextCellPosition},onCellClicked:e=>{if(!P.isNil(e.colDef.cellRendererParams)&&e.colDef.cellRendererParams.cc.canBeCopied&&u.canCopyToClipboard(e.event.target)){const t=e.colDef.cellRendererParams.cc.plainValueFn,i=t(e.value,e.data,e.colDef);u.copyToClipboard(i,e.event.target)}else e.node.isExpandable()?e.node.setExpanded(!e.node.expanded):"$selection"===e.colDef.field||t.widget.api.isEditMode(t)||(t.itemConfig.isModal?t.widget.api.selection.selectNodeWithoutNavigate(t,e.node):t.widget.api.selection.selectRowAndNavigate(t,e.node),t.skipRowSelectedHandler=!0)},onRowSelected:e=>{t.widget.api.isEditMode(t)?e.node.setSelected(!1):t.skipRowSelectedHandler?delete t.skipRowSelectedHandler:t.widget.table.selectAllEnabled||(e.node.selected?t.widget.api.selection.selectNodeWithoutNavigate(t,e.node):t.widget.api.selection.deselectNode(t,e.node))},onSelectionChanged:()=>{fe(t)},onStoreUpdated:e=>{const i=t.widget.table.grid.api.getCacheBlockState(),n=t.widget.table.features.pagination?P.isNil(i[0])?"":i[0].pageStatus:i[""];if("loading"!==n)if(t.widget.table.selectAllInProgress)ge(t);else if(t.widget.api.selection.autoselect(t),t.widget.api.selection.preselect(t),t.widget.focus(),t.widget.table.grid.createdObjects){if(!P.isNil(t.widget.table.grid.api)){let e;1===t.widget.table.grid.createdObjects.length?(e=we(t.widget.table.grid.createdObjects[0].objectId,t),P.isNil(e)||t.widget.api.selection.selectRowAndNavigate(t,e)):P.forEach(t.widget.table.grid.createdObjects,function(i){e=we(i.objectId,t),P.isNil(e)||t.widget.api.selection.selectNodeWithoutNavigate(t,e)})}delete t.widget.table.grid.createdObjects}},onFilterChanged:e=>{t.widget.table.selectAllEnabled&&(t.widget.table.selectAllEnabled=!1)},onGridReady:e=>{var a=e.api.getModel().getRootStore();a.resetStore=function(){a.destroyAllBlocks(),a.lastRowIndexKnown=!1,a.rowCount=1},t.widget.table.grid.api=e.api,t.widget.table.grid.columnApi=n.columnApi,i.resolve(),k(function(){t.widget.focus()})},loadingCellRenderer:x.getLoadingCellRenderer(),overlayNoRowsTemplate:"<span></span>",rowData:null,rowHeight:32,rowSelection:"multiple",suppressRowClickSelection:!0,suppressCellSelection:!t.itemConfig.allowFocusInViewMode,suppressColumnVirtualisation:!0,suppressDragLeaveHidesColumns:!0,suppressContextMenu:!0,rowModelType:"serverSide",serverSideStoreType:t.widget.table.features.pagination?"partial":"full",serverSideDatasource:function(e){var t=function(e){function t(e){for(var t=e.split("."),i=2,n=1;i<t.length;i+=2,n++)t[n]=t[i];return t.length=Math.ceil(t.length/2),t.join(".")}function i(e){return P.reduce(e.filterModel,function(e,i,n){var a="$"+t(n),o="&"===i.groupMatcher?" and ":" or ",r=P.reduce(i.filterValues,function(e,t){if(P.isEmpty(t.value))return e;var i=function(e,t,i){switch(e){case"contains":return"like(plainValue("+t+'), "%'+i+'%")';case"notContains":return"!like(plainValue("+t+'), "%'+i+'%")';case"equals":return"like(plainValue("+t+'), "'+i+'")';case"notEquals":return"!like(plainValue("+t+'), "'+i+'")';case"startsWith":return"like(plainValue("+t+'), "'+i+'%")';case"notStartsWith":return"!like(plainValue("+t+'), "'+i+'%")';case"endsWith":return"like(plainValue("+t+'), "%'+i+'")';case"notEndsWith":return"!like(plainValue("+t+'), "%'+i+'")';default:return console.warn('AG Grid: Unexpected type of filter "'+e+'", it looks like the filter was configured with incorrect Filter Options'),"FALSE"}}(t.operator,a,t.value);return null===e?i:e+o+i},null);return null==r?e:(r="("+r+")",null===e?r:e+" and "+r)},null)}return{getData:function(n,a,o){var r,s=function(e){return P.reduce(e.sortModel,function(e,i){var n=t(i.colId),a=n+":"+i.sort;return null==e?a:e+","+a},null)}(n),d=e.widget.table.filteredExternally?'$id == "'+e.widget.table.filteredExternally+'"':i(n),u=e.widget.table.filteredExternally?{}:function(e){return P.reduce(e.rowGroupCols,function(i,n,a){return e.groupKeys.length===a&&(i[t(n.field)]=P.isNil(n.aggFunc)?"NONE":n.aggFunc),i},{})}(n);if(e.widget.table.filteredExternally||(d=function(i,n){var a=P.reduce(i.groupKeys,function(n,a,o){var r,s="$"+t(i.rowGroupCols[o].field),c=e.widget.table.grid.api.getColumnDef(i.rowGroupCols[o].id),l=c.cellRendererParams.cc.plainValueFn(a,{},c);if(E.isDate(a.value))r=s+' == date("'+a.value[0]+"-"+(a.value[1]+1)+"-"+a.value[2]+'")';else if(E.isDateTime(a.value))r=s+' == date("'+a.value[0]+"-"+(a.value[1]+1)+"-"+a.value[2]+" "+a.value[3]+":"+a.value[4]+":"+a.value[5]+'")';else if(P.isArray(a)){if(1!==a.length)throw new Error("Group key can't have multiple array values");var d;if(P.isNil(a[0].value.$displayName))return"exists("+s+", "+(d='isNull(displayName()) or displayName() == ""')+") or !exists("+s+")";d='like(displayName(), "'+a[0].value.$displayName+'")',r="exists("+s+", "+d+")"}else if(P.isArray(a.value)){if(1!==a.value.length)throw new Error("Group key can't have multiple array values");var u;if(P.isNil(a.value[0].$displayName))return"exists("+s+", "+(u='isNull(displayName()) or displayName() == ""')+") or !exists("+s+")";u='like(displayName(), "'+a.value[0].$displayName+'")',r="exists("+s+", "+u+")"}else r="like(plainValue("+s+'), "'+l+'")';return null===n?r:n+" and "+r},null);a&&(n=P.isNil(n)?a:"("+n+" and "+a+")");return n}(n,d)),e.itemConfig.prefetchedData){var g=D.when(e.itemConfig.prefetchedData);return e.itemConfig.prefetchedDataOnce&&delete e.itemConfig.prefetchedData,g}if(P.isFunction(e.itemConfig.readObjectsAction))return r=e.widget.api.filter.getActive(e),e.itemConfig.readObjectsAction(r);var f=e.itemConfig.pathContext?null:e.widget.context.contextId,p=e.itemConfig.pathContext?e.
1widget.context.contextId:null;r=e.widget.table.filteredExternally?[]:e.widget.api.filter.getActive(e);var m=e.itemConfig.findIds||null,v=e.itemConfig.readObjectActionOverride?e.itemConfig.readObjectActionOverride:null,h={viewDefinitionId:e.itemConfig.viewDefinition,objectId:f,findIds:m,activeFilters:r,order:s,pathId:p,filter:d,pageKey:a,pageSize:o,grouping:u,locale:l.getCurrentLanguageTag(),includeModel:!0,readObjectActionOverride:v},b={reduced:!1,neo:e.itemConfig.useBackendGroupFilterPaginationSort,skipViewDefinitionResultTransformation:!P.isEmpty(u)};return e.itemConfig.handlerData?c.invokeFetchDataHandler(h,e.widget,b,e.itemConfig.handlerData):c.readObjects(h,e.widget,b)}}}(e),i=0,n=null;return{getRows:function(a){p.debug(e.id," [Datasource] - rows requested by grid: ",a.request),(P.isNil(a.request.startRow)||0===a.request.startRow)&&(i=0,n=null);var o=e.widget.table.features.pagination?a.request.endRow-a.request.startRow:null;t.getData(a.request,n,o).then(function(t){var o;e.widget.table.features.pagination?(i+=t.data.length,o=P.isNil(t.nextPageKey)?i:null,n=t.nextPageKey,P.isNil(t.totalNumberOfObjects)||(e.widget.table.numberOfRows=t.totalNumberOfObjects)):i=t.data.length;var r=P.map(t.data,function(e){return E.transformAllDatesInObject(e)});P.each(r,function(e){!function e(t){P.isString(t.id)&&(t.id={$create:!1,$read:!0,$write:!1,$arrange:!1,$insert:!1,$remove:!1,value:t.id});P.forEach(t,function(t){P.isPlainObject(t)&&(P.isPlainObject(t.value)&&!P.isNil(t.value.id)?e(t.value):P.isArray(t.value)&&P.forEach(t.value,function(t){P.isPlainObject(t)&&!P.isNil(t.id)&&e(t)}))})}(e),P.isArray(a.request.groupKeys)&&a.request.groupKeys.length>0&&(e.$groupKey=P.reduce(a.request.groupKeys,function(e,t){var i;return i=P.isNil(t.$displayName)?P.isPlainObject(t.value)&&!P.isNil(t.value.$displayName)?t.value.$displayName:P.isPlainObject(t)&&t.hasOwnProperty("value")?t.value:t:t.$displayName,""===e?i:e+"-"+i},""))}),e.widget.$write=P.reduce(r,function(t,i){return t||b.hasWritableAndVisibleProperties(i,e.widget.model.fullModel,!0)},!1),oe(t.model,e),e.$broadcast("action.update"),a.success({rowData:r,rowCount:o})},function(e){a.fail()})}}}(t),serverSideSortingAlwaysResets:!0,serverSideFilteringAlwaysResets:!0,maxConcurrentDatasourceRequests:1,getRowNodeId:e=>P.isNil(e.$groupKey)?e.id.value:e.$groupKey+"#"+e.id.value,getMainMenuItems:e=>{const i=S.showTableViews(t)?S.getTableViewMenuItems(t):[],n=!e.column.getColDef().lockPinned,a=!0===e.column.getColDef().showRowGroup;if(t.widget.table.features.columnPinning&&n&&!a&&(i.push({name:l.getTranslation("common.ui.table.mainMenu.pinColumn"),icon:'<i class="fa fa-fw fa-thumbtack" aria-hidden="true"></i>',subMenu:[{name:l.getTranslation("common.ui.table.mainMenu.pinColumnLeft"),checked:!!e.column&&e.column.isPinnedLeft(),action:function(){return e.columnApi.setColumnPinned(e.column,"left","contextMenu")}},{name:l.getTranslation("common.ui.table.mainMenu.pinColumnRight"),checked:!!e.column&&e.column.isPinnedRight(),action:function(){return e.columnApi.setColumnPinned(e.column,"right","contextMenu")}},{name:l.getTranslation("common.ui.table.mainMenu.pinColumnNone"),checked:!!e.column&&!e.column.isPinned(),action:function(){return e.columnApi.setColumnPinned(e.column,null,"contextMenu")}}]}),i.push("separator")),e.column.getColDef().resizable&&i.push({name:l.getTranslation("common.ui.table.mainMenu.autoSizeColumn"),icon:'<i class="fa fa-fw fa-arrows-alt-h" aria-hidden="true"></i>',action:function(){e.columnApi.autoSizeColumn(e.column,!1)}}),i.push({name:l.getTranslation("common.ui.table.mainMenu.autoSizeAllColumns"),icon:'<i class="fa fa-fw fa-arrows-alt-h" aria-hidden="true"></i>',action:function(){var t=P.filter(e.columnApi.getAllDisplayedColumns(),function(e){return!0===e.colDef.resizable});e.columnApi.autoSizeColumns(t,!1)}}),i.push({name:l.getTranslation("common.ui.table.mainMenu.expandAllColumns"),icon:'<i class="fa fa-fw fa-arrows-alt" aria-hidden="true"></i>',action:function(){e.api.sizeColumnsToFit()}}),t.widget.table.features.rowGrouping){var o=e.columnApi.getRowGroupColumns().indexOf(e.column)>=0,r=t.widget.table.features.rowAggregation&&e.columnApi.getRowGroupColumns().length>0&&e.column.isAllowValue();if(i.push("separator"),a?(e.columnApi.getRowGroupColumns().length>
10&&(i.push({name:l.getTranslation("common.ui.table.mainMenu.expandAllGroups"),action:function(){e.api.expandAll()}}),i.push({name:l.getTranslation("common.ui.table.mainMenu.collapseAllGroups"),action:function(){e.api.collapseAll()}})),i.push("separator"),i.push({name:l.getTranslation("common.ui.table.mainMenu.unGroupBy"),action:function(){y.removeAllTableGroups(t)}})):o?i.push({name:l.getTranslation("common.ui.table.mainMenu.unGroupBy"),action:function(){y.removeSingleTableGroup(t,e.column)}}):i.push({name:l.getTranslation("common.ui.table.mainMenu.groupBy"),action:function(){y.addToTableGroup(t,e.column)}}),r){var s=P.isNil(e.column.getColDef().allowedAggFuncs)?["count","sum","min","max","avg","first","last"]:e.column.getColDef().allowedAggFuncs,c=[];P.forEach(s,function(t){c.push({name:l.getTranslation("common.ui.table.mainMenu.aggregation.function."+t),action:function(){e.columnApi.setColumnAggFunc(e.column,t,"contextMenu"),e.columnApi.addValueColumn(e.column,"contextMenu")},checked:e.column.isValueActive()&&e.column.getAggFunc()===t})}),c.push({name:l.getTranslation("common.ui.table.mainMenu.aggregation.function.none"),action:function(){e.columnApi.setColumnAggFunc(e.column,null,"contextMenu"),e.columnApi.removeValueColumn(e.column,"contextMenu")},checked:!e.column.isValueActive()}),i.push({name:l.getTranslation("common.ui.table.mainMenu.aggregation"),subMenu:c})}}return i.push("separator"),i.push({name:l.getTranslation("common.ui.table.mainMenu.resetColumns"),icon:'<i class="fa fa-fw fa-times" aria-hidden="true"></i>',action:function(){e.columnApi.resetColumnState(!1,"contextMenu")}}),i}};var a=t.widget.table.getAgGridDiv();return new agGrid.Grid(a,n),i.promise}(t,e)))}function ne(e,t){const i=C.get(t,C.KEYS.columns),n=!!P.find(i,e=>!!e.floatingFilter),a=!!C.get(t,C.KEYS.floatingFilterVisible);t.widget.table.floatingFilterVisible=a||n,P.forEach(e,e=>(e.floatingFilter=t.widget.table.floatingFilterVisible,e))}function ae(e){return P.isNil(e.widget.table.numberOfRows)?P.isNil(e.widget.table.grid.api)?void 0:e.widget.table.grid.api.getModel().getRowCount():e.widget.table.numberOfRows}function oe(e,t){return!e||P.isEmpty(e)?D.when():(t.widget.model.fullModel=e,t.widget.model.baseModel=e[t.itemConfig.viewDefinition],P.each(t.widget.model.baseModel.fields,function(e){P.extend(e,{entity:t.widget.model.baseModel.entity,helpKey:"entity."+(t.widget.model.baseModel.entity||t.objectModelViewDefinition)+"."+e.name+".help",overwriteHelpKey:t.itemConfig.viewDefinition+"."+(t.widget.model.baseModel.entity||t.objectModelViewDefinition)+"."+e.name+".help",dataTypeHelpKey:"dataType."+e.type+".help",showHelp:!1,helpReady:!1})}),t.widget.model.referenceModels=P.omit(e,t.itemConfig.viewDefinition),P.each(t.widget.model.referenceModels,function(e){P.each(e.fields,function(i){P.extend(i,{entity:e.entity,helpKey:"entity."+(e.entity||t.objectModelViewDefinition)+"."+i.name+".help",dataTypeHelpKey:"dataType."+i.type+".help",showHelp:!1,helpReady:!1})})}),t.widget.model.affectedByEntities=P.pluck(P.valuesIn(e),"entity"),D.when())}function re(e,t,i,n,a){P.has(t,"iconOverride")&&(e.icons=t.iconOverride);var o=null;P.has(i.widget.extension,"getSortingStrategyComparator")&&!P.isNil(n.name)&&(o=i.widget.extension.getSortingStrategyComparator(n.name));var r,s=P.isNil(o)&&!P.has(t,"sortOverride")&&P.has(t,"plainValue")?function(i,o){return t.plainValue({colDef:e,field:n,value:i,data:o.data},a)}:function(e){return e};return r=P.isNil(o)?P.has(t,"sortOverride")?t.sortOverride:m.getDefaultSortComparator:o,e.comparator=function(e,t,i,n){var o=se(e),c=se(t),l=s(o,i),d=s(c,n);return r(l,d,a)},e}function se(e){return P.isArray(e)?E.reduceRecords(e):E.reduceRecord(e)}function ce(e){const t=C.get(e,C.KEYS.columns);t&&P.isArray(t)&&(t.forEach(e=>delete e.floatingFilter),C.set(e,C.KEYS.columns,t),e.widget.table.grid.api.setFilterModel({}))}function le(e,t){if(!P.isNil(e.widget.table.grid.api)&&e.widget.table.floatingFilterVisible!==t){var i=P.map(e.widget.table.grid.api.getColumnDefs(),function(e){return e.floatingFilter=t,e});e.widget.table.grid.api.setColumnDefs(i),P.isNil(e.widget.table)||P.isNil(e.widget.table.config)||(t?
1C.set(e,C.KEYS.floatingFilterVisible,t):C.remove(e,C.KEYS.floatingFilterVisible)),e.widget.table.floatingFilterVisible=t}}function de(e,t){if(P.isNil(e.widget.table.grid.api))return D.when();if(Y(e))return D.when();e.widget.table.selectAllEnabled=!1;var i=E.reduceRecord(t.data);return e.widget.api.executeHandlers(A.selection.event.beforeSelect,e,[i]).then(function(){return e.widget.api.executeHandlers(A.selection.event.beforeActivate,e,[i]).then(function(){return t.setSelected(!0,!0),e.widget.table.grid.api.ensureColumnVisible(t),e.widget.api.executeHandlers(A.selection.event.select,e,[i]).then(function(){return e.widget.api.executeHandlers(A.selection.event.activate,e,[i]).then(function(){return e.widget.api.executeHandlers(A.selection.event.afterSelect,e,[i]).then(function(){return e.widget.api.executeHandlers(A.selection.event.afterActivate,e,[i]).then(function(){P.isNil(e.widget.table.grid.api)||e.widget.table.grid.api.redrawRows()})})})})})})}function ue(e,t){var i=E.reduceRecord(t.data);return e.widget.api.executeHandlers(A.selection.event.beforeSelect,e,[i]).then(function(){return e.itemConfig.singleSelection?t.setSelected(!0,!0):t.setSelected(!0),e.widget.table.grid.api.ensureColumnVisible(t),e.widget.api.executeHandlers(A.selection.event.select,e,[i]).then(function(){return e.widget.api.executeHandlers(A.selection.event.afterSelect,e,[i])})})}function ge(e){const t=e.widget.table.grid.api.getModel().getRowCount();t<ae(e)?e.widget.table.grid.api.getModel().getRow(t-1):(e.widget.table.grid.api.forEachNode(function(e){P.isNil(e.rowIndex)||e.setSelected(!0,!1,!0)}),e.widget.table.selectAllInProgress=!1,fe(e))}function fe(e){k(()=>e.widget.table.numberOfSelectedRows=e.widget.api.selection.count(e)),e.$broadcast("action.update")}function pe(e){var i=!1;if(e.widget.table.grid.api.forEachNode(function(e){i=i||e.data.$dirty}),i!==e.widget.dirty)return e.widget.dirty=i,e.widget.api.executeHandlers(A.lifecycle.event.dirty,e).then(function(){t.broadcast("widget.dirty")})}function me(e){return e.itemConfig.updateObjectAction}function ve(e){return e.$on("hotkey.pressed.editOnWidget",function(t,i){["INPUT","TEXTAREA"].includes(i.target.nodeName.toUpperCase())||me(e)&&j(e)&&(z("edit",e),i.preventDefault())}),e.$on("hotkey.pressed.abortOnWidget",function(t,i){if(!["INPUT","TEXTAREA"].includes(i.target.nodeName.toUpperCase())&&!e.widget.table.editing)return i.preventDefault(),(K(e)?a.getConfirmation("common.confirm.cancelEdit",null).result:D.when()).then(function(){z("view",e)})}),e.$on("hotkey.pressed.saveOnWidget",function(t,i){["INPUT","TEXTAREA"].includes(i.target.nodeName.toUpperCase())||(K(e)?te(e):z("view",e),i.preventDefault())}),D.when()}function he(e){return P.isNil(e.widget.table.grid.api)?D.when():(e.widget.table.grid.api.addEventListener("cellEditingStarted",function(){e.widget.table.editing=!0}),e.widget.table.grid.api.addEventListener("cellEditingStopped",function(){e.widget.table.editing=!1}),D.when())}function be(e){return e.$watch(function(){return t.isEditingMode()},function(t,i){P.isNil(e.widget.table.grid.api)||t===i||e.widget.table.grid.api.refreshHeader()}),D.when()}function we(e,t){var i=null;return t.widget.table.grid.api.forEachNode(function(t){P.isNil(t.data)||t.data.id.value!==e||(i=t),P.isNil(t.detailNode)||P.isNil(t.detailNode.data)||t.detailNode.data.id.value!==e||(i=t.detailNode)}),i}}e.$inject=["ActionInvocationService","ApplicationService","BaseWidgetApiService","TableFilterService","ModalService","ModelService","NavigationService","WidgetService","ActionService","I18nService","I18nInitService","ClientService","AuthService","UrlService","LogService","SortService","TableColumnService","FeatureService","ObjectDataApiService","TableHeaderService","TableGroupService","TableLoadingService","TableStorageService","TableViewService","CCUtils","WIDGET_API","$filter","$q","$timeout","$templateRequest","$compile","_"],window.agGrid.LicenseManager.setLicenseKey("CompanyName=CampusCore Software fuer Hochschulen GmbH & Co. KG,LicensedApplication=CampusCore,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=1,LicensedProductionInstancesCount=0,AssetReference=AG-029481,SupportServicesEnd=23_July_2023_[v2]_MTY5MDA2NjgwMDAwMA==0c414c52bd1eceb42b377130bc8d5f6d"),angular.module("ccFrontend").factory("TableWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n,a,o,r,s,c,l,d,u,g,f,p,m){const v={acceptNodeDrop:function(e,t,i,n){const a=n.widget.model.fullModel[e.$modelValue.$viewDefinition];if(m.isNull(t.$nodeScope)){const e=m.pluck(m.values(m.filter(n.widget.model.fullModel,function(e){return e.isAllowedRoot})),"viewDefinitionId");return m.contains(e,a)}{const e=n.widget.model.fullModel[t.$nodeScope.$modelValue.$viewDefinition],i=t.$nodeScope.$modelValue,o=e.allowedChildren,r=e.maxChildren;return m.contains(o,a.entity)&&(void 0===r||r>i.$children.length)}},addNode:function(e,t){const n=t.widget.api.selection.get(t),o=t.widget.tree.currentBranches[t.widget.tree.currentBranches.length-1],r=m.isEmpty(n)?o.length:[n[0].$position,n[0].$children.length].join("."),s=m.contains(r,".")?parseInt(m.last(r.split("."))):r,l=a.reduceRecord(m.defaults(e,{$position:r,$index:s,$children:[]})),d=j(t);if(m.isEmpty(n))D(t).push(l);else{let e=!1;i.walk({$children:D(t)},(i,n,a)=>{e||i.$position!==t.widget.api.selection.get(t)[0].$position||(i.$children.push(l),d.push(N(i,t)),e=!0)})}d.push(N(e,t)),c.set(t,c.KEYS.expandedNodes,d),y(t,D(t)),t.widget.api.selection.select(l,t)},canAddNode:function(e){if(!e.widget.tree.canEditObjectSpecificStructure)return!1;const t=l.callSyncExtensionFunction("canAddNodeFn",e);if(m.isBoolean(t))return t;const i=e.widget.tree.allowedChildrenModels;if(i)return m.filter(i,e=>e.createObjectAction).length>0&&e.widget.tree.crudActionsInitialized;return e.widget.tree.crudActionsInitialized},canCopyNode:function(e){if(!e.widget.tree.hasAnyPermissionToChangeForestStructure||!e.widget.tree.crudActionsInitialized)return!1;const t=l.callSyncExtensionFunction("canCopyElementFn",e);if(m.isBoolean(t))return t;return!0},canCopyExaminationRegulationTreeNode:function(e){return x(e)||C(e)||S(e)},canCopyExamRegTreeNode:x,canCopyAppRegTreeNode:function(e){if(!e.widget.tree.hasAnyPermissionToChangeForestStructure)return!1;if(!e.widget.tree.crudActionsInitialized)return!1;return e.widget.tree.forestStructureDefinition.id===p.forest.appRegTreeStructureDefinition},canCopyModuleTemplateVersionTreeNode:C,canCopyModulePartTemplateVersionTreeNode:S,canDeleteNode:function(e){if(!e.widget.tree.canEditObjectSpecificStructure)return!1;const t=l.callSyncExtensionFunction("canDeleteNodeFn",e);if(m.isBoolean(t))return t;if(e.widget.tree.crudActionsInitialized&&e.widget.api.selection.hasSelectedAny(e)){const t=e.widget.api.selection.get(e)[0],i=$(t,e);return i.deleteObjectAction}return!1},canMoveNode:function(e){if(!e.itemConfig.allowDragAndDrop||!e.widget.tree.crudActionsInitialized)return!1;return e.widget.tree.canEditObjectSpecificStructure},canPasteSubtree:function(e){if(!e.widget.tree.canEditObjectSpecificStructure)return!1;const t=localStorage.getItem("tree_copy_and_paste");if(t){const i=JSON.parse(t);return i.forestStructureDefinitionId===e.widget.tree.forestStructureDefinition.id}return!1},collapseAllNodes:function(e){c.set(e,c.KEYS.expandedNodes,[])},containsObject:A,data:{getItemById:function(e,t){let n=null;return i.walk(t.widget.data,function(t,i,a){t.id===e&&(n=t)}),n},isEmpty:function(e){return m.isEmpty(D(e))}},drillDown:function(e,t){const n=t.widget.tree.partials[e.id];i.walk({$children:n},function(t,i,n){m.each(t.$children,function(e,t){e.$index=t}),t.$position=e.$position+"."+m.pluck(m.rest(n),"$index").join(".")}),t.widget.tree.currentBranches.push(n),t.widget.tree.drills.push(e),V(e,t),t.$broadcast("action.update")},drillTo:function(e,t){t.widget.tree.currentBranches=t.widget.tree.currentBranches.slice(0,e+2),t.widget.tree.drills=t.widget.tree.drills.slice(0,e+1),V(null,t),t.$broadcast("action.update")},drillUp:function(e){e.widget.tree.currentBranches.pop(),e.widget.tree.drills.pop(),e.widget.api.selection.clear(e),V(null,e),e.$broadcast("action.update")},expandAllNodes:I,getCreateForestNodeAction:function(e,t){if(null!==e)return t.widget.tree.crudActions[e.entity].createObjectAction;return null},getCurrentBranch:D,getDeleteForestNodeAction:function(e){if(e.widget.tree.crudActions){const t=e.widget.api.selection.get(e),i=m.isNil(t)?null:t[0];if(i)return e.widget.tree.crudActions[$(i,e).entity].deleteObjectAction}return null},getNodeByPosition:k,getNodeGroup:function(e,t){if(void 0!==t.widget.model.fullModel)return t.widget.model.fullModel[e.$viewDefinition].group;return null},getNodeIcon:function(e,t){if(void 0!==t.widget.model.fullModel)return e.icon||m.get(t.widget.model.fullModel[e.$viewDefinition],"icon");return null},getNodeEntity:function(e,t){if(void 0!==t.widget.model.fullModel)return m.get(t.widget.model.fullModel[e.$viewDefinition],"entity");return null},getNodeTemplate:function(e){if(!m.isNil(e.itemConfig.treenodeTemplate))return n.directiveTemplate("uiitem/widget/tree/nodetemplate/"+e.itemConfig.treenodeTemplate);return n.directiveTemplate("uiitem/widget/tree/nodetemplate/default")},getNodeTypeDisplayName:function(e,t){if(void 0!==t.widget.model.fullModel&&void 0!==t.widget.model.fullModel[e])return t.widget.model.fullModel[e].$displayName;return null},getNodeTypeName:P,getNodeTypeNameAcronym:function(e,t){return a.acronymize(P(e,t))},getSelectedNode:R,handleDragStart:function(e,t){t.widget.tree.dragPosition=e.source.nodeScope.$modelValue.$position,t.widget.tree.sourceObjectIdPath=T(t.widget.tree.dragPosition,t);const i=k(t.widget.tree.dragPosition,t);t.widget.api.selection.select(i,t)}
1,handleDrop:function(e,t){m.isNull(e.dest.nodesScope.$nodeScope)?t.widget.tree.dropPosition=e.dest.index.toString():t.widget.tree.dropPosition=e.dest.nodesScope.$nodeScope.$modelValue.$position+"."+e.dest.index;const n=m.dropRight(t.widget.tree.dragPosition.split(".")).join("."),a=m.dropRight(t.widget.tree.dropPosition.split(".")).join("."),o=void 0===e.dest||0===e.dest.index?null:e.dest.index-1;let s,c;null===o?(s=m.isEmpty(a)?"":a,c=!0):(s=m.isEmpty(a)?""+o:a+"."+o,c=!1);const l=T(s,t);n!==a&&t.itemConfig.referenceNodes?d.getSelection("widget.tree.moveOrReference",[{name:"widget.tree.moveOrReference.move",icon:"fa-long-arrow-alt-right",style:"primary"},{name:"widget.tree.moveOrReference.reference",icon:"fa-clone",style:"secondary"}]).result.then(e=>{if("widget.tree.moveOrReference.move"===e)r.moveForestNode({targetObjectIdPath:l,sourceObjectIdPath:t.widget.tree.sourceObjectIdPath,insertAsFirstChild:c,keepOld:!1},t.widget).then(e=>{m.isPlainObject(e)&&m.has(e,"status")&&400===e.status?(d.getAlert(e.error["*"][0].i18nKey,"common.error"),t.widget.api.reload(t)):y(t)});else if("widget.tree.moveOrReference.reference"===e){const e=m.dropRight(t.widget.tree.dragPosition.split(".")).join("."),n=f.defer(),a=f.defer();i.walk(t.widget.data,(i,o,r)=>{i.$position===t.widget.tree.dragPosition&&n.resolve(m.cloneDeep(i)),i.$position===e&&a.resolve(i)}),f.all([n.promise,a.promise]).then(e=>{const i=e[0];delete i.$$hashKey;const n=e[1];r.moveForestNode({targetObjectIdPath:l,sourceObjectIdPath:t.widget.tree.sourceObjectIdPath,insertAsFirstChild:c,keepOld:!0},t.widget).then(e=>{if(m.isPlainObject(e)&&m.has(e,"status")&&400===e.status)d.getAlert(e.error["*"][0].i18nKey,"common.error"),t.widget.api.reload(t);else{const e=parseInt(m.last(i.$position.split(".")));n.$children.splice(e,0,i),y(t)}})})}},function(){t.widget.api.reload(t)}):r.moveForestNode({targetObjectIdPath:l,sourceObjectIdPath:t.widget.tree.sourceObjectIdPath,insertAsFirstChild:c,keepOld:!1},t.widget).then(e=>{m.isPlainObject(e)&&m.has(e,"status")&&400===e.status?(d.getAlert(e.error["*"][0].i18nKey,"common.error"),t.widget.api.reload(t)):y(t)})},hasCreateConfiguration:function(e){return!0},hasDeleteConfiguration:function(e){return!0},hasVirtualHelpFieldCreateConfiguration:function(e){return!s.getContext("isVisibleVirtualHF")&&e.widget.api.selection.hasSelectedAny(e)},hasNodes:function(e){return void 0!==e.widget.api.data&&!m.isEmpty(e.widget.api.data.getCurrentData(e))},isDrilledDown:function(e){if(void 0===e.widget.tree.currentBranches)return!1;return e.widget.tree.currentBranches.length>1},isNodeCollapsed:function(e,t){const i=j(t);if(0===i.length)return!0;const n=N(e,t);return-1===i.indexOf(n)},onAfterDeleteNode:function(e){const t=f.defer(),n=e.widget.api.selection.get(e);if(null!==n&&1===n.length){const a=n[0],o=a.id;e.widget.api.removeNode(a,e);let r=!1;i.walk({$children:D(e)},function(i,n,a){if(!r){const n=m.find(i.$children,function(e){return e.id===o});if(void 0!==n){r=!0,e.widget.api.data.removeRecordPermissions(n,e),i.$children=m.without(i.$children,n);const a=e.widget.api.selection.get(e);1===a.length&&a[0].id===o&&e.widget.api.selection.clear(e),t.resolve()}}})}else t.resolve();return t.promise.then(function(){y(e)})},removeNode:function(e,t){let n=!1;if(0===m.uniq(m.pluck(t.widget.tree.nodeReferences[e.id],"parentId")).length)!function(e,t){t.widget.data=m.without(t.widget.data,e),t.widget.tree.currentBranches[t.widget.tree.currentBranches.length-1]=m.without(t.widget.tree.currentBranches[t.widget.tree.currentBranches.length-1],e),E(e,t)}(e,t),y(t),t.widget.api.selection.clear(t);else{const a=j(t),o=[];i.walk({$children:D(t)},function(i,a,r){if(!n){const a=m.find(i.$children,function(t){return t.$position===e.$position});void 0!==a&&(i.$children=m.without(i.$children,a),o.add(a),0===i.$children.length&&w(N(i,t)),y(t),t.widget.api.selection.clear(t),n=!0)}}),c.set(t,c.KEYS.expandedNodes,a),o.forEach(e=>E(e,t))}V(null,t)},resetDrill:function(e){e.widget.tree.currentBranches=e.widget.tree.currentBranches.slice(0,1),e.widget.tree.drills=[],V(null,e),e.$broadcast("action.update")}
1,selection:{isSelected:function(e,t){const i=t.widget.api.selection.get(t),n=m.isString(e)?e:e.id;return void 0!==m.find(i,function(t){return t.id===n&&t.$position===e.$position})}},toggleNodeExpansion:function(e,t){const i=j(t);t.toggle(t);const n=null!==t.$nodeScope&&t.$nodeScope.collapsed,a=N(e,t);n?w(a,i):i.push(a);c.set(t,c.KEYS.expandedNodes,i)},validateConfiguration:function(e){const t=e.widget.tree,i=[];m.isNil(t.forest)&&m.isNil(t.pathObjectId)?i.push("widget.configurationValidator.forestIsEmpty"):m.isNil(t.forest)||a.isUuid(t.forest)?m.isNil(t.pathObjectId)||a.isUuid(t.pathObjectId)||i.push({key:"widget.configurationValidator.pathObjectIdIsUnresolved",params:{pathObjectId:t.pathObjectId}}):i.push({key:"widget.configurationValidator.forestIsUnresolved",params:{forest:t.forest}});void 0===t.forestView||null===t.forestView?i.push("widget.configurationValidator.forestViewIsEmpty"):a.isUuid(t.forestView)||i.push({key:"widget.configurationValidator.forestViewIsUnresolved",params:{forestView:t.forestView}});if(!m.isEmpty(i))return e.widget.api.configurationInvalid(e,i);return e.widget.api.configurationValid(e)}},h=[{event:u.lifecycle.event.beforeLoad,fn:function(e){return s.resolveForest(e).then(function(t){e.widget.tree.forest=t,e.widget.tree.forestView=e.itemConfig.forestView,e.widget.tree.pathObjectId=e.widget.context.contextId})}},{event:u.lifecycle.event.load,fn:function(e){return r.readForest({forestViewId:e.widget.tree.forestView,forestId:m.isNil(e.widget.tree.forest)?null:e.widget.tree.forest,pathObjectId:m.isNil(e.widget.tree.pathObjectId)?null:e.widget.tree.pathObjectId},e.widget,e.itemConfig.fetchForestViewActionOverride).then(function(t){e.widget.tree.response=t,e.widget.tree.forestStructureDefinition=t.forestStructureDefinition,e.widget.tree.canEditObjectSpecificStructure=t.canEditObjectSpecificStructure,e.widget.tree.hasAnyPermissionToChangeForestStructure=t.hasAnyPermissionToChangeForestStructure,e.widget.tree.initialPresentation=t.initialPresentation,e.widget.tree.numberOfLevelsToShowInitially=t.numberOfLevelsToShowInitially})}},{event:u.lifecycle.event.load,fn:function(e){const t=f.defer(),i=e.widget.tree.response.model;m.each(m.keys(i),function(t){const n=i[t];n.$displayName=g("i18n")("entity."+n.entity+".$entity",e),n.viewDefinitionId=t}),e.widget.model.fullModel=i,e.widget.model.baseModel=m.pick(i,function(e){return e.isForestNode}),e.widget.model.referenceModels=m.pick(i,function(e){return!e.isForestNode}),e.widget.model.affectedByEntities=m.pluck(m.valuesIn(e.widget.model.fullModel),"entity");const n=m.groupBy(e.widget.model.baseModel,function(e){return e.group});return e.widget.model.nodeGroups=m.map(m.keys(n),function(e){return{name:e,nodes:n[e]}}),t.resolve(),t.promise}},{event:u.lifecycle.event.load,fn:function(e){const t=f.defer();return m.each(e.widget.api.model.getBaseModel(e),function(t){e.widget.api.data.registerEntityPermissions(t,e)}),i.walk({$children:e.widget.tree.response.result},function(t,i,n){m.has(t,"id")&&e.widget.api.data.registerRecordPermissions(t,e)}),e.widget.data=y(e,a.reduceRecords(e.widget.tree.response.result)),e.widget.tree.currentBranches=[e.widget.data],i.walk({$children:e.widget.data},function(t,i,n){F(t,e)}),V(null,e),t.resolve(),t.promise}},{event:u.lifecycle.event.loaded,fn:function(e){m.extend(e.widget.selection,{multi:!1}),c.initTreeConfigurationInScope(e);const t=c.get(e,c.KEYS.expandedNodes);if(m.isArray(t))return f.when();const i=e.widget.tree.initialPresentation;let n;if("EXPAND_NONE"===i)return f.when();"EXPAND_SOME"===i?n=e.widget.tree.numberOfLevelsToShowInitially:"EXPAND_ALL"===i&&(n=void 0);return I(e,n),f.when()}},{event:u.lifecycle.event.loaded,fn:function(e){return m.each(e.widget.api.model.getBaseModel(e),function(t){!function(e,t){e.isForestNode&&(t.widget.tree.crudActions[e.entity]={createObjectAction:void 0===e.createObjectActionOverride||null===e.createObjectActionOverride?"CreateForestNodeAction":e.createObjectActionOverride,deleteObjectAction:void 0===e.deleteObjectActionOverride||null===e.deleteObjectActionOverride?"DeleteForestNodeAction":e.deleteObjectActionOverride},!1===e.createObjectAction&&(t.widget.tree.crudActions[e.entity].createObjectAction=null),!1===e.deleteObjectAction&&(t.widget.tree.crudActions[e.entity].deleteObjectAction=null))}(t,e)}),e.widget.tree.crudActionsInitialized=!0,f.when()}},{event:u.selection.event.afterSelect,fn:V},{event:u.selection.event.afterDeselect,fn:function(e){return V(null,e)}},{event:u.selection.event.clear,fn:function(e){return s.go(e.itemConfig.parentState,!1,{}),V(null,e)}}
1,{event:u.selection.event.select,fn:function(e,t){const i=t.widget.api.selection.get(t)[0];if(s.setContext(t.widget.tree.forest+"_position",i.$position,!1,t.itemConfig.linkToSubParentState),!m.isNil(t.itemConfig.overrideChildState)&&!t.widget.selection.returnToParentState){const n=$(i,t).entity;let a=t.itemConfig.overrideChildState.replace(new RegExp("{nodeEntity}","g"),n);const o=t.itemConfig.overrideChildState.match(/{node(\.\w+)+}/g);m.forEach(o,function(e){const t=e.replace(/{node\.(.*)}/g,"$1");a=a.replace(e,m.get(i,t))});const r=t.itemConfig.overrideChildState.match(/{item(\.\w+)+}/g);m.forEach(r,function(t){const i=t.replace(/{item\.(.*)}/g,"$1");a=a.replace(t,m.get(e,i))});const c=t.itemConfig.widgetState,l=s.getAllSubStates(c);m.forEach(l,function(e){e.keyForTreeSubNavigation===a&&(t.widget.selection.overrideChildState=e.state)})}return V(e,t)}},{event:u.lifecycle.event.i18n,fn:function(e){const t=f.defer();return m.each(e.widget.model.fullModel,function(t){t.$displayName=g("i18n")("entity."+t.entity+".$entity",e)}),e.widget.tree.allowedChildrenModels=m.sortBy(e.widget.tree.allowedChildrenModels,function(e){return e.$displayName}),i.walk({$children:e.widget.data},function(t,i,n){F(t,e),y(e)}),t.resolve(),t.promise}},{event:u.lifecycle.event.objectCreated,fn:function(e,t,i,n,a){const o=f.defer();return o.resolve(),o.promise}},{event:u.lifecycle.event.objectDeleted,fn:function(e,t,i,n,a){return M(e,a)}},{event:u.lifecycle.event.objectUpdated,fn:function(e,t,i,n,a){return M(e,a)}}],b=[u.action.id,u.data.id,u.help.id,u.model.id,u.selection.id,u.status.id,u.ui.id];return{create(e){t.create(v,b,e,h)}};function w(e,t){const i=t.indexOf(e);-1!==i&&t.splice(i,1)}function y(e,t){void 0===t&&(t=e.widget.data),e.widget.tree.nodeReferences={},i.walk({$children:t},(t,i,n)=>{let r;if(m.each(t.$children,(e,t)=>{e.$index=t}),t.title&&o.addTranslationField(t.title),t.$position=m.pluck(m.rest(n),"$index").join("."),n.length>2&&function(e,t,i){void 0===i.widget.tree.nodeReferences[e.id]&&(i.widget.tree.nodeReferences[e.id]=[]);i.widget.tree.nodeReferences[e.id].push({parentId:t.id,parentPosition:t.$position,position:e.$position})}(t,r=m.last(m.dropRight(n)),e),t.$parentId=r?r.id:null,F(t,e),!m.isNil(t.$viewDefinition)){const i=m.omit(t,function(e,t){return m.startsWith(t,"$")}),n=a.getTranslationFieldObjects(null,i,e.widget.api.model.getFullModel(e));m.each(n,e=>o.addTranslationField(e)),t.$nodeObjects=m.flatten(m.values(a.getCoveredObjects(null,i,e.widget.api.model.getFullModel(e))))}l.callExtensionFunction("onAnnotateRecordFn",e,[t,n,e.widget])}),i.walk({$children:t},(t,i,n)=>{const a=e.widget.tree.nodeReferences[t.id];if(a){const i=m.union(m.pluck(a,"parentId"));a.length>1&&i.length>1&&(t.$reference=!0,t.$children.length>0?e.widget.tree.partials[t.id]=t.$children:e.widget.tree.partialLeafs[t.id]=!0)}});const n=Object.keys(e.widget.tree.partials),r=Object.keys(e.widget.tree.partialLeafs),s=n.concat(r),c=a.getColors("tol-rainbow",s.length);return s.forEach((t,i)=>{e.widget.tree.partialColors[t]=c[i]}),t}function x(e){return!!e.widget.tree.hasAnyPermissionToChangeForestStructure&&(!!e.widget.tree.crudActionsInitialized&&e.widget.tree.forestStructureDefinition.id===p.forest.examRegTreeStructureDefinition)}function C(e){return!!e.widget.tree.hasAnyPermissionToChangeForestStructure&&(!!e.widget.tree.crudActionsInitialized&&e.widget.tree.forestStructureDefinition.id===p.forest.moduleTemplateVersionTreeStructureDefinition)}function S(e){return!!e.widget.tree.hasAnyPermissionToChangeForestStructure&&(!!e.widget.tree.crudActionsInitialized&&e.widget.tree.forestStructureDefinition.id===p.forest.modulePartTemplateVersionTreeStructureDefinition)}function E(e,t){const n=j(t);i.walk(e,e=>{w(N(e,t),n)}),c.set(t,c.KEYS.expandedNodes,n)}function A(e,t){let n=!1;return i.walk({$children:D(t)},(t,i,a)=>{n||t.id!==e&&!m.contains(t.$nodeObjects,e)||(n=!0)}),n}function I(e,t){const n=j(e);i.walk(e.widget.data,(i,a,o)=>{void 0===t&&n.push(N(i,e)),a<t&&n.push(N(i,e))}),c.set(e,c.KEYS.expandedNodes,n)}function D(e){return e.widget.tree.currentBranches[e.widget.tree.currentBranches.length-1]}function k(e,t){let n=null;return i.walk(t.widget.data,function(t,i,a){t.$position===e&&(n=t)}),n}
1function $(e,t){if(null!==e){const i=t.widget.model.fullModel[e.$viewDefinition];return m.extend(i,{viewDefinitionId:e.$viewDefinition}),i}return null}function T(e,t){const n=[];let a=!1;m.endsWith(e,"null")&&(e=e.substring(0,e.length-4),a=!0),i.walk(t.widget.data,function(t,i,a){const o=e.split(".",i+1).join(".");if(t&&t.$position===o)if(0===n.length)n.push(t);else{let e;for(e=n.length;e>0&&m.startsWith(n[e-1].$position,t.$position);e--)n[e]=n[e-1];n[e]=t}});const o=m.uniq(m.map(n,"id"));return a&&o.push(null),o}function P(e,t){return void 0!==t.widget.model.fullModel&&void 0!==e?t.widget.model.fullModel[e].entity:null}function N(e,t){return t.widget.tree.forest+"_"+e.$position}function R(e){const t=e.widget.api.selection.get(e);return T(m.isArray(t)&&t.length>0?t[0].$position:"",e)}function M(e,t){const n=f.defer();return A(e,t)&&i.walk(D(t),(i,n,a)=>{(i.id===e||m.contains(i.$nodeObjects,e))&&r.readObjects({viewDefinitionId:i.$viewDefinition,objectId:i===e?e:i.id},t.widget).then(n=>{t.widget.api.data.registerRecordPermissions(n.data[0],t),m.extend(i,n.data[0]),F(i,t),y(t),i.id===e&&0===m.difference(R(t),T(i.$position,t)).length&&l.callExtensionFunction("onSelectFn",t,[n.data[0]])})}),n.resolve(),n.promise}function F(e,t){a.resolveDisplayName(e,t.widget.model.fullModel)}function j(e){const t=c.get(e,c.KEYS.expandedNodes);return m.isEmpty(t)?[]:t}function V(e,t){if(m.isEmpty(e))!t.itemConfig.singleRoot||t.itemConfig.singleRoot&&0===t.widget.data.length?t.widget.tree.allowedChildrenModels=m.sortBy(m.values(m.filter(t.widget.model.fullModel,function(e){return e.isAllowedRoot})),"$displayName"):t.widget.tree.allowedChildrenModels=[];else{const i=$(e,t);if(i){const n=i.allowedChildren,a=i.maxChildren;void 0===a||a>e.$children.length?t.widget.tree.allowedChildrenModels=m.sortBy(m.values(m.pick(t.widget.model.fullModel,e=>e.isForestNode&&m.contains(n,e.entity))),"$displayName"):t.widget.tree.allowedChildrenModels=[]}}return t.widget.tree.allowedChildrenModels=m.sortBy(t.widget.tree.allowedChildrenModels,e=>e.$displayName),t.widget._scope.$broadcast("action.update"),f.when()}}e.$inject=["AuthService","BaseWidgetApiService","TreeService","UrlService","CCUtils","I18nService","ActionService","NavigationService","TreeStorageService","WidgetService","ModalService","WIDGET_API","$filter","$q","CMS_DATA","_"],angular.module("ccFrontend").factory("TreeWidgetApiService",e)}(),function(){"use strict";function e(e,t,i,n){const a="campuscore_tree_",o="widget.tree.config";return{KEYS:{expandedNodes:"expandedNodes"},clear:function(e){const i=r(e);t.clear(e,o,i)},get:function(e,i){return l(`GET ${i} from storage`,s(e)),t.get(e,c(i))},initTreeConfigurationInScope:function(e){return l("init table config",s(e)),e.widget.tree.config=function(e){if(!e)return{};const i=r(e);return t.getConfig(i)}(e),n.when()},remove:function(e,i){l("REMOVE "+i+" from local storage",s(e));const n=r(e);t.remove(e,o,c(i),n)},replace:function(e,i){l("REPLACE",s(e));const n=r(e);t.replace(e,o,i,n)},set:function(e,i,n){l("SET "+i+" to local storage",s(e));const a=r(e);t.set(e,o,c(i),n,a)}};function r(e){if(i.isNil(e))throw new Error("No widget scope defined.");return a+s(e)}function s(e){if(i.isNil(e)||i.isNil(e.itemConfig))throw new Error("Can't determine forest view id.");return e.itemConfig.forestView}function c(e){return`${o}.${e}`}function l(t,i){let n="[ccTreeStorage] ";t&&(n+=t),i&&(n+=` for forest view with id ${i}`),e.debug(n)}}e.$inject=["LogService","SessionStorageService","_","$q"],angular.module("ccFrontend").factory("TreeStorageService",e)}(),angular.module("ccFrontend").run(["$templateCache",function(e){"use strict";e.put("404.html","<!DOCTYPE html> <html lang=en> <head> <meta charset=utf-8> <title>Page Not Found :(</title> <style> ::-moz-selection {\n        background: #b3d4fc;\n        text-shadow: none;\n      }\n\n      ::selection {\n        background: #b3d4fc;\n        text-shadow: none;\n      }\n\n      html {\n        padding: 30px 10px;\n        font-size: 20px;\n        line-height: 1.4;\n        color: #737373;\n        background: #f0f0f0;\n        -webkit-text-size-adjust: 100%;\n        -ms-text-size-adjust: 100%;\n      }\n\n      html,\n      input {\n        font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n      }\n\n      body {\n        max-width: 500px;\n        _width: 500px;\n        padding: 30px 20px 50px;\n        border: 1px solid #b3b3b3;\n        border-radius: 4px;\n        margin: 0 auto;\n        box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;\n        background: #fcfcfc;\n      }\n\n      h1 {\n        margin: 0 10px;\n        font-size: 50px;\n        text-align: center;\n      }\n\n      h1 span {\n        color: #bbb;\n      }\n\n      h3 {\n        margin: 1.5em 0 0.5em;\n      }\n\n      p {\n        margin: 1em 0;\n      }\n\n      ul {\n        padding: 0 0 0 40px;\n        margin: 1em 0;\n      }\n\n      .container {\n        max-width: 380px;\n        _width: 380px;\n        margin: 0 auto;\n      }\n\n      /* google search */\n\n      #goog-fixurl ul {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n      }\n\n      #goog-fixurl form {\n        margin: 0;\n      }\n\n      #goog-wm-qt,\n      #goog-wm-sb {\n        border: 1px solid #bbb;\n        font-size: 16px;\n        line-height: normal;\n        vertical-align: top;\n        color: #444;\n        border-radius: 2px;\n      }\n\n      #goog-wm-qt {\n        width: 220px;\n        height: 20px;\n        padding: 5px;\n        margin: 5px 10px 0 0;\n        box-shadow: inset 0 1px 1px #ccc;\n      }\n\n      #goog-wm-sb {\n        display: inline-block;\n        height: 32px;\n        padding: 0 10px;\n        margin: 5px 0 0;\n        white-space: nowrap;\n        cursor: pointer;\n        background-color: #f5f5f5;\n        background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n        background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
1\n        background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n        background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        *overflow: visible;\n        *display: inline;\n        *zoom: 1;\n      }\n\n      #goog-wm-sb:hover,\n      #goog-wm-sb:focus {\n        border-color: #aaa;\n        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\n        background-color: #f8f8f8;\n      }\n\n      #goog-wm-qt:hover,\n      #goog-wm-qt:focus {\n        border-color: #105cb6;\n        outline: 0;\n        color: #222;\n      }\n\n      input::-moz-focus-inner {\n        padding: 0;\n        border: 0;\n      } </style> </head> <body> <div class=container> <h1>Not found <span>:(</span></h1> <p>Sorry, but the page you were trying to view does not exist.</p> <p>It looks like this was the result of either:</p> <ul> <li>a mistyped address</li> <li>an out-of-date link</li> </ul> <script> var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host; <\/script> <script src=//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js><\/script> </div> </body> </html> "),e.put("index.html",'<!doctype html> <html> <head> <meta charset=utf-8> <title></title> <base href=/app> <meta name=description content=""> <meta name=viewport content="width=device-width,initial-scale=1"> <meta http-equiv=x-ua-compatible content="IE=EDGE"> <link rel=stylesheet href=../api/theme/campuscore.css> </head> <body> <noscript> <strong>We\'re sorry but the Campus Management System doesn\'t work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id=ccFrontend style="display: none"> <cc-pagelayout> <div class="customer-logo init"></div> <div data-ui-view></div> </cc-pagelayout> </div> <div id=waitForLoginInOtherWindow style="text-align:center; margin: 100px auto; z-index: 99999; display: none;"> Login process open in another window / tab. Please finish that one and reload this page.<br> Der Login-Vorgang ist bereits in einem anderen Fenster / Reiter ge&ouml;ffnet. Bitte schließen Sie diesen Vorgang ab und laden Sie die Seite erneut. </div> <div id=ccLogin class="text-center animated fadeIn" style="display: none" data-ng-controller=LoginController data-ng-cloak> <div class="customer-logo login"></div> <div> <h2> <cc-i18n data-key=module.login.welcome></cc-i18n> </h2> </div> <div class="row alert" style="overflow-wrap: break-word;" data-ng-if=loginMessageId data-ng-class="{\n          \'alert-success\' : loginMessageType === \'SUCCESS_BOX\',\n          \'alert-info\': loginMessageType === \'INFO_BOX\',\n          \'alert-warning\': loginMessageType === \'WARNING_BOX\',\n          \'alert-danger\': loginMessageType === \'ERROR_BOX\'}"> <cc-i18n data-key={{loginMessageId}}></cc-i18n> </div> <br> <div id=login_container class=row> <div id=credential_column class="col-sm-6 col-xs-12" data-ng-class="{\'col-sm-offset-3\' : !allowAccessAsGuest && !canRegister}"> <div class=idprovider data-ng-repeat="idp in identityProviders track by idp.name"> <button data-cc-i18n-title=idp.tooltip.id class="btn btn-default full-width idprovider-button" data-ng-click=goToIdentityProvider(idp.name) style={{idp.styling}}> <img data-ng-src={{idp.iconPath}} alt={{idp.tooltip.id|i18n:this}}> <cc-i18n data-key={{idp.label.id}}></cc-i18n> </button> </div> <div style="display: flex; align-items: center; margin: 12px;" data-ng-if=identityProviders.length> <hr style="border: 1px solid #bbb; flex-grow: 1"> <span style="padding: 0 12px 0"> <cc-i18n data-key=common.or></cc-i18n> </span> <hr style="border: 1px solid #bbb; flex-grow: 1"> </div> <form data-ng-submit=submitLoginForm()> <div style="text-align: left"> <label for=username> <small> <cc-i18n data-key=module.login.form.username></cc-i18n> </small> </label> <div class="input-group m-b full-width"> <input id=username class=form-control name=username autocomplete=username data-ng-model=credentials.username required> <span title="{{\'module.login.form.username\'|i18n:this}}" class="input-group-addon function-marker"> <i class="fa fa-user"></i> </span> </div> <label for=password style="display: flex; justify-content: space-between"> <small> <cc-i18n data-key=module.login.form.password></cc-i18n> </small> <a data-ng-if=passwordResetPossible data-ng-click=resetPassword()> <small> <cc-i18n data-key=module.login.form.recovery></cc-i18n> </small> </a> </label> <div class="input-group m-b full-width"> <input id=password type=password class=form-control name=password autocomplete=current-password data-ng-model=credentials.password required> <span title="{{\'module.login.form.password\'|i18n:this}}" class="input-group-addon function-marker"> <i class="fa fa-key"></i> </span> </div> <div style="display: flex; align-items: center">
1 <input id=rememberme type=checkbox name=remember-me data-ng-model=credentials.rememberMe> <small><label for=rememberme style="margin: 0"> <cc-i18n data-key=login.stayLoggedIn></cc-i18n> </label></small> <a data-ng-click="showAlert = !showAlert"> <i class="fa fa-fw fa-info-circle suffix-icon"></i> </a> </div> <div class="alert alert-info m-t text-center" data-ng-show="credentials.rememberMe || showAlert"> <small> <cc-i18n data-key=login.stayLoggedIn.hint></cc-i18n> </small> </div> </div> <br> <div class=vertical-offset-10> <button type=submit class="btn btn-success full-width" data-ng-disabled=loggingIn> <cc-i18n data-key=module.login.form.login></cc-i18n> </button> </div> </form> </div> <div id=divider data-ng-if="allowAccessAsGuest || canRegister"></div> <div id=side_column class="col-sm-6 col-xs-12" data-ng-if="allowAccessAsGuest || canRegister"> <div data-ng-if=canRegister> <i class="fa fa-user-plus fa-3x"></i> <small> <cc-i18n data-key=module.login.register></cc-i18n> </small> <form> <cc-action data-action-id=RegisterPersonAction data-as-block=true data-button-style=primary data-show-icon=true data-show-text=true></cc-action> </form> </div> <br> <br> <div data-ng-if=allowAccessAsGuest> <i class="fa fa-user fa-3x"></i> <small> <cc-i18n data-key=module.login.guest></cc-i18n> </small> <div class=idprovider> <button class="btn btn-primary block m-b full-width" data-ng-click=accessAsGuest()> <i class="fa fa-fw fa-circle-notch fa-spin prefix-icon" data-ng-if=locked></i> <i class="fa fa-fw fa-user prefix-icon"></i> <cc-i18n data-key=module.login.form.accessAsGuest></cc-i18n> </button> </div> </div> <br> </div> </div> <br> <br> <p class=vertical-offset-10-bottom> <cc-localeswitcher></cc-localeswitcher> </p> <br> <div class=row> <div class=alert data-ng-if="error || success || info" data-ng-class="{\'alert-danger\': !!error, \'alert-success\': !!success, \'alert-info\': !!info }"> <span data-ng-if=!!error> <strong> <cc-i18n data-key=common.error></cc-i18n> </strong> <br> <cc-i18n data-key={{error}} data-params=errorparams data-ng-if=translateMessage></cc-i18n> <span data-ng-if=!translateMessage>{{error}}</span> <br> <span data-ng-if="!!messageActionTitle && !!messageActionFn"> <br> <a data-ng-click=messageActionFn()><cc-i18n data-key={{messageActionTitle}}></cc-i18n></a> </span> </span> <span data-ng-if=!!success> <strong> <cc-i18n data-key=common.success></cc-i18n> </strong> <br> <cc-i18n data-key={{success}} data-ng-if=translateMessage></cc-i18n> <span data-ng-if=!translateMessage>{{success}}</span> <br> <span data-ng-if="!!messageActionTitle && !!messageActionFn"> <br> <a data-ng-click=messageActionFn()><cc-i18n data-key={{messageActionTitle}}></cc-i18n></a> </span> </span> <span data-ng-if=!!info> <strong> <cc-i18n data-key=common.info></cc-i18n> </strong> <br> <cc-i18n data-key={{info}} data-ng-if=translateMessage></cc-i18n> <span data-ng-if=!translateMessage>{{info}}</span> <br> <span data-ng-if="!!messageActionTitle && !!messageActionFn"> <br> <a data-ng-click=messageActionFn()><cc-i18n data-key={{messageActionTitle}}></cc-i18n></a> </span> </span> </div> </div> <div class="row login-footer"> <small class=pull-left> <cc-i18n data-key=common.name></cc-i18n> – <a data-ng-click=showImprint()> <cc-i18n data-key=module.about.imprint></cc-i18n> </a> </small> <small class=pull-right>&copy; entado GmbH {{currentYear}}</small> </div> </div> <iframe id=ccAuth title="Authentication Window" style="position:fixed; top:0; left:0; bottom:0; right:0; width:0; height:0; border:none; margin:0; padding:0; overflow:hidden; z-index:999999; display: none;"></iframe> \x3c!--[if IE]>\n<script type="text/javascript">\n    window.location = "../browser.html";\n<\/script>\n<![endif]--\x3e <script src=../node_modules/moment/min/moment-with-locales.js><\/script> <script src=../libs/angular-ui-router.js><\/script> <script src=../libs/ct-ui-router-extras.js><\/script> <script src=../libs/ngCytoscape.js><\/script> <script> angular.element(document).ready(() => {\n\n        FeatureHelper.init()\n            .then(() => AuthenticationHelper.init())\n            .then(() => NavigationHelper.init())\n            .then(() =>
1 {\n                agGrid.initialiseAgGridWithAngular1(angular);\n                angular.bootstrap(document, [\'cc3.app\']);\n            });\n    }); <\/script> </body> </html> '),e.put("browser.html","<!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>Bitte aktualisieren Sie ihren Browser</title> <style> body {\n            width: 640px;\n            margin-left: auto;\n            margin-right: auto;\n            text-align: center;\n            font-family: 'open sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n        }\n\n        .browser-image {\n            padding: 10px;\n            text-align: center;\n            float: left;\n        }\n\n        .browser-image img {\n            display: block;\n            margin: 0 auto;\n            border: 0;\n            padding-bottom: 5px;\n        } </style> </head> <body> <div class=browser-container> <h3>Bitte aktualisieren Sie Ihren Browser auf die aktuellste Version</h3> <h3>Please upgrade your browser to the most recent version</h3> <div class=browser-image> <a href=https://www.google.de/chrome><img src=images/browser_chrome.gif>Google Chrome</a> </div> <div class=browser-image> <a href=http://www.mozilla.com/firefox/ ><img src=images/browser_firefox.gif>Mozilla Firefox</a> </div> <div class=browser-image> <a href=http://www.apple.com/safari/download/ ><img src=images/browser_safari.gif>Safari</a> </div> <div class=browser-image> <a href=http://www.opera.com/download/ ><img src=images/browser_opera.gif>Opera</a> </div> </div> </body> </html> "),e.put("scripts/directives/common/action/action.html",'<div style="justify-content: {{buttonJustification || \'center\'}}; min-height: 25px" data-ng-if=visible data-ng-style="{\'display\': visible ? \'flex\' : \'none\' }" data-ng-class="{\'btn-with-border\': showButtonBorder}"> <button class="btn btn-xs btn-uppercase btn-{{buttonStyle || actionDefinition.config.style}} btn-transparent" style="display: flex; justify-content: center; align-items: center; min-width: 24px; height: 22px" data-ng-style="{\'margin-left\': noMargin ? \'0\': \'3px\'}" data-ng-click="execute(); $event.stopPropagation()" data-ng-dblclick="execute(); $event.stopPropagation()" data-ng-disabled=!!disabled data-ng-if=asIcon data-cc-i18n-title=getActionName()> <i class="fa fa-fw {{::getActionIcon()}}" data-ng-if="actionDefinition && showIcon && !isUrlIcon() && !isTagIcon()" data-ng-class="{\'locked-action\': locked}"></i> <img data-ng-src={{::getActionIcon()}} alt={{::getActionName()|i18n:this}} data-ng-if=isUrlIcon()> <span class="label label-secondary" style="display: inline-block; width: 30px; padding: 4px" data-ng-if=isTagIcon()>{{::getActionIconAsTag()}}</span> <span class=horizontal-offset-5 data-ng-if=showText> <cc-i18n data-key={{getActionName()}} data-supports-customer-action-translation={{actionId}}></cc-i18n> </span> </button> <a class="menu-link menu-link-{{buttonStyle || actionDefinition.config.style}}" style="flex-grow: 1; display: flex; text-decoration: none;" data-ng-click="execute(); $event.stopPropagation()" data-ng-dblclick="execute(); $event.stopPropagation()" data-ng-if=asLink data-cc-i18n-title=getActionName()> <div style="display: flex; align-items: center; justify-content: space-around"> <i class="fa fa-fw {{::getActionIcon()}}" style="font-size: 9.5pt; margin-top: 2px" data-ng-if="!isUrlIcon() && !isTagIcon() && showIcon"></i> <img style="border: 0" data-ng-src={{::getActionIcon()}} alt={{::getActionName()|i18n:this}} data-ng-if=isUrlIcon()> <span class="label label-secondary" style="display: inline-block; width: 30px; padding: 4px" data-ng-if=isTagIcon()>{{::getActionIconAsTag()}}</span> </div> <div style="flex-grow: 1" data-ng-class="{\'horizontal-offset-10\': !isTagIcon(), \'horizontal-offset-5\': isTagIcon()}"> <cc-i18n data-key={{getActionName()}} data-supports-customer-action-translation={{actionId}}></cc-i18n> </div> <div> <i class="fa fa-circle-notch fa-spin" data-ng-if=locked></i> </div> </a> <button class="btn btn-xs btn-uppercase btn-{{buttonStyle || actionDefinition.config.style}}" data-ng-style="{\'margin-left\': noMargin ? \'0\': \'3px\'}" data-ng-click="execute(); $event.stopPropagation()" data-ng-if=asButton data-ng-disabled=!!disabled data-cc-i18n-title=getActionName() data-ng-dblclick="execute(); $event.stopPropagation()"> <i class="fa fa-fw fa-circle-notch fa-spin" data-ng-if=locked></i> <i class="fa fa-fw {{::getActionIcon()}}" data-ng-if=!locked></i> <cc-i18n data-key={{::getActionName()}} data-ng-if=showText data-supports-customer-action-translation={{actionId}}></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-quicknav btn-circle animated fadeIn" style="width: 30px; height: 30px" data-ng-click="execute(); $event.stopPropagation()" data-ng-if=asQuicknav data-ng-disabled=!!disabled data-ng-dblclick="execute(); $event.stopPropagation()" data-cc-i18n-title=getActionName()> <i class="fa fa-fw fa-circle-notch fa-spin" data-ng-if=locked></i> <i class="fa fa-fw {{::getActionIcon()}}" data-ng-if=!locked></i> </button> <button class="btn btn-{{buttonStyle || actionDefinition.config.style}} block m-b full-width" data-ng-click="execute(); $event.stopPropagation()" data-ng-if=asBlock data-ng-disabled=!!disabled data-ng-dblclick="execute(); $event.stopPropagation()" data-cc-i18n-title=getActionName()> <i class="fa fa-fw fa-circle-notch fa-spin prefix-icon" data-ng-if=locked></i> <i class="fa fa-fw prefix-icon {{::getActionIcon()}}" data-ng-if="!locked && showIcon"></i> <cc-i18n data-key={{::getActionName()}} data-ng-if=showText data-supports-customer-action-translation={{actionId}}></cc-i18n> </button> </div> '),e.put("scripts/directives/common/action/actionmenu.html",'<div style="display: flex; justify-content: center; min-height: 25px"> <button title="{{titleKey || \'widget.actions\'|i18n:this}}" class="btn btn-xs btn-uppercase btn-{{buttonStyle}} dropdown action-menu" style="background-color: inherit; display: flex; justify-content: center; align-items: center" data-ng-style="{\'margin-left\': noMargin ? \'0\': \'3px\'}
1" data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-ng-if=!asButton data-uib-dropdown-toggle data-ng-show=hasAnyVisibleAction()> <i id=btn-append-to-body class="fa fa-fw {{menuIcon || \'fa-bars\'}}" data-ng-if=showIcon></i> <i class="fa fa-caret-down" data-ng-if=!showText></i> <cc-i18n data-key={{titleKey}} data-ng-if=showText data-supports-customer-translation=true></cc-i18n> <i class="fa fa-caret-down" data-ng-if=showText></i> <ul class="dropdown-menu dropdown-menu-{{caretPosition}}" style="z-index: 1039; margin-top: 8px" data-uib-dropdown-menu> <li class=menu-heading data-ng-if="hasVisibleActions() && !hideHeadings"> <cc-i18n data-key="{{titleKey || \'widget.actions\'}}" data-supports-customer-translation=true></cc-i18n> </li> <li data-ng-repeat="actionId in actionIds track by $index"> <cc-action data-action-id={{::actionId}} data-widget=widget data-as-link=true data-visible=actionVisibility[actionId]></cc-action> </li> <li class=divider data-ng-if="hasVisibleActions() && hasVisibleExtraActions()"></li> <li class=menu-heading data-ng-if="hasVisibleExtraActions() && extrasTitleKey && !hideHeadings"> <cc-i18n data-key={{extrasTitleKey}} data-supports-customer-translation=true></cc-i18n> </li> <li data-ng-repeat="actionId in extraActionIds track by $index"> <cc-action data-action-id={{::actionId}} data-widget=widget data-as-link=true data-visible=actionVisibility[actionId]></cc-action> </li> </ul> </button> <button title="{{titleKey || \'widget.actions\'|i18n:this}}" class="btn btn-xs btn-uppercase btn-{{buttonStyle}}" data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-ng-if=asButton data-uib-dropdown-toggle data-ng-style="{\'margin-left\': noMargin ? \'0\': \'3px\'}" data-ng-show=hasAnyVisibleAction()> <i id=inner-btn-append-to-body class="fa fa-fw {{menuIcon || \'fa-bars\'}}" data-ng-if=showIcon></i> <i class="fa fa-caret-down" data-ng-if=!showText></i> <cc-i18n data-key={{titleKey}} data-ng-if=showText data-supports-customer-translation=true></cc-i18n> <i class="fa fa-caret-down" data-ng-if=showText></i> <ul class="dropdown-menu dropdown-menu-{{caretPosition}}" style="z-index: 1039; margin-top: 8px" data-uib-dropdown-menu> <li class=menu-heading data-ng-if="hasVisibleActions() && !hideHeadings"> <cc-i18n data-key="{{titleKey || \'widget.actions\'}}" data-supports-customer-translation=true></cc-i18n> </li> <li data-ng-repeat="actionId in actionIds track by $index"> <cc-action data-action-id={{::actionId}} data-widget=widget data-as-link=true data-visible=actionVisibility[actionId]></cc-action> </li> <li class=divider data-ng-if="hasVisibleActions() && hasVisibleExtraActions()"></li> <li class=menu-heading data-ng-if="hasVisibleExtraActions() && extrasTitleKey && !hideHeadings"> <cc-i18n data-key={{extrasTitleKey}} data-supports-customer-translation=true></cc-i18n> </li> <li data-ng-repeat="actionId in extraActionIds track by $index"> <cc-action data-action-id={{::actionId}} data-widget=widget data-as-link=true data-visible=actionVisibility[actionId]></cc-action> </li> </ul> </button> </div> '),e.put("scripts/directives/common/action/actionstatus.html",'<span class="btn-group dropdown action-menu" data-cc-i18n-title=getActionNameI18nKey() data-uib-dropdown data-auto-close=disabled data-is-open=status.isOpen data-dropdown-append-to-body> <i id=btn-append-to-body class="fa fa-fw {{::instance.$action.config.icon}} clickable-icon" data-type=button data-uib-dropdown-toggle> <span title="{{\'widget.actions\'|i18n:this}}" class=caret></span> </i> <ul class="dropdown-menu dropdown-menu-right action-status-menu" data-uib-dropdown-menu data-ng-click="status.shouldClose = false"> <li class=action-step-result data-ng-if=!!instance.$response.data.messages> <div class=result-content> <div class="alert alert-danger action-alert"> <span data-ng-repeat="message in getMessages(instance.$response.data) track by $index"> <p data-ng-if=$first> <span data-ng-bind-html=::message></span> </p> <p style="margin: 5px 0 0 0" data-ng-if=!$first> <span data-ng-bind-html=::message></span> </p> </span> </div> </div> </li> <li class=action-step-result data-ng-repeat="step in instance.$action.steps" data-ng-if="hasOutput() && $index + 1 <= instance.$response.data.step" data-ng-init="stepIndex = $index + 1"> <div class=title> <cc-i18n data-key={{step.name.id}}></cc-i18n> ({{getStepProgress(stepIndex)}}%) </div>
1 <uib-progressbar class=progress-mini value=getStepProgress(stepIndex)> <small> <cc-i18n data-key=common.step></cc-i18n> <cc-i18n class=pull-right data-key=common.finished data-ng-if=isStepFinished(stepIndex)></cc-i18n> <cc-i18n class=pull-right data-key=common.running data-ng-if=!isStepFinished(stepIndex)></cc-i18n> </small> </uib-progressbar> <div class=result-content data-ng-if=hasExactlyOneResult(stepIndex)> <div class="alert action-alert" data-ng-if=!hasNotOkResults() data-ng-class="{\'alert-success\': getOneResult(stepIndex).status !== 406, \'alert-info\': getOneResult(stepIndex).status === 406}"> <strong data-ng-if="!!getSingleResultDisplayName(instance, stepIndex)" data-ng-bind-html="getSingleResultDisplayName(instance, stepIndex) + \'<br/>\'"></strong> <div data-ng-bind-html="renderResult(getOneResult(stepIndex).result, step.output)" data-ng-click="onClick(getOneResult(stepIndex).result, step.output)" data-ng-init="handleResult(getOneResult(stepIndex).result, step.output)" data-ng-if=!isArray(getOneResult(stepIndex).result)></div> <div data-ng-if=isArray(getOneResult(stepIndex).result)> <div data-ng-repeat="resultItem in getOneResult(stepIndex).result"> <div style=margin-bottom:5px; data-ng-bind-html="::renderResult(resultItem, step.output)" data-ng-click="onClick(resultItem, step.output)" data-ng-init="handleResult(resultItem, step.output)"></div> </div> </div> <cc-i18n data-key=common.successful data-ng-if="getOneResult(stepIndex).status !== 406"></cc-i18n> <cc-i18n data-key=common.pending data-ng-if="getOneResult(stepIndex).status === 406"></cc-i18n> </div> <div class="alert alert-danger action-alert" data-ng-if=hasNotOkResults()> <strong data-ng-if="!!getSingleResultDisplayName(instance, stepIndex)" data-ng-bind-html="getSingleResultDisplayName(instance, stepIndex) + \'<br/>\'"></strong> <span data-ng-repeat="message in getMessages(getOneResult(stepIndex)) track by $index"> <p data-ng-if=$first> <span data-ng-bind-html=::message></span> </p><p> </p><p style="margin: 5px 0 0 0" data-ng-if=!$first> <span data-ng-bind-html=::message></span> </p><p> </p></span> </div> </div> <div data-ng-if=!hasExactlyOneResult(stepIndex)> <div class="bulk-summary row-fluid"> <div class="alert alert-success action-alert col-lg-3 text-center"> <span title="{{\'common.successful\'|i18n:this}}"> {{getResultCounts(stepIndex).successful}} <i class="fa fa-fw fa-check-circle text-green suffix-icon"></i> </span> </div> <div class="alert alert-info action-alert col-lg-3 text-center"> <span title="{{\'common.pending\'|i18n:this}}"> {{getResultCounts(stepIndex).pending}} <i class="fa fa-fw fa-question-circle text-blue suffix-icon"></i> </span> </div> <div class="alert alert-warning action-alert col-lg-3 text-center"> <span title="{{\'common.cancelled\'|i18n:this}}"> {{getResultCounts(stepIndex).cancelled}} <i class="fa fa-fw fa-ban text-yellow suffix-icon"></i> </span> </div> <div class="alert alert-danger action-alert col-lg-3 text-center"> <span title="{{\'common.failed\'|i18n:this}}"> {{getResultCounts(stepIndex).failed}} <i class="fa fa-fw fa-times-circle text-red suffix-icon"></i> </span> </div> </div> <div class="row text-center"> <button title="{{\'action.hideBulkDetails\'|i18n:this}}" class="btn btn-circle btn-default vertical-offset-5" data-ng-click=toggleBulkResultDetails(stepIndex) data-ng-if=visibleBulkDetails[stepIndex]> <i class="fa fa-fw fa-chevron-up"></i> </button> <button title="{{\'action.showBulkDetails\'|i18n:this}}" class="btn btn-circle btn-default vertical-offset-5" data-ng-click=toggleBulkResultDetails(stepIndex) data-ng-if=!visibleBulkDetails[stepIndex]> <i class="fa fa-fw fa-chevron-down"></i> </button> </div> <div class="result-content vertical-offset-5" data-ng-show=visibleBulkDetails[stepIndex]> <div class=result-content-block data-ng-repeat="singleResult in getResults(stepIndex)" data-ng-init="resultIndex = $index"> <div class="alert alert-success action-alert" data-ng-if=isOkResult(singleResult) data-ng-init="receivedResult = singleResult.result"> <strong data-ng-if=!!singleResult.$displayName data-ng-bind-html=singleResult.$displayName><br></strong> <div data-ng-bind-html="::renderResult(receivedResult, step.output)" data-ng-click="onClick(receivedResult, step.output)" data-ng-init="handleResult(receivedResult, step.output)" data-ng-if=!isArray(receivedResult)></div> <div data-ng-if=isArray(receivedResult)> <div data-ng-repeat="resultItem in receivedResult"> <div style=margin-bottom:5px; data-ng-bind-html="::renderResult(resultItem, step.output)" data-ng-click="onClick(resultItem, step.output)" data-ng-init="handleResult(resultItem, step.output)"></div> </div> </div> </div> <div class="alert alert-info action-alert" data-ng-if=isPendingResult(singleResult)> <strong data-ng-if=!!singleResult.$displayName data-ng-bind-html=singleResult.$displayName><br></strong>
1 <span data-ng-repeat="message in getMessages(singleResult) track by $index"> <p data-ng-if=$first> <span data-ng-bind-html=::message></span> </p> <p style="margin: 5px 0 0 0" data-ng-if=!$first> <span data-ng-bind-html=::message></span> </p> </span> </div> <div class="alert alert-danger action-alert" data-ng-if=isErrorResult(singleResult)> <strong data-ng-if=!!singleResult.$displayName data-ng-bind-html=singleResult.$displayName><br></strong> <span data-ng-repeat="message in getMessages(singleResult) track by $index"> <p data-ng-if=$first> <span data-ng-bind-html=::message></span> </p> <p style="margin: 5px 0 0 0" data-ng-if=!$first> <span data-ng-bind-html=::message></span> </p> </span> </div> </div> </div> </div> </li> <li class="action-step-result loading text-center" data-ng-if="!instance.$response.data.done && !instance.$response.data.messages"> <i class="fa fa-fw fa-circle-notch fa-spin"></i> </li> <li class="action-status-button text-center" data-ng-if="instance.$response.data.done || instance.$response.data.messages"> <button class="btn btn-xs btn-primary" data-ng-click="acknowledge(0, true)"> <i class="fa fa-fw fa-check prefix-icon"></i><cc-i18n data-key=common.confirm></cc-i18n> </button> </li> </ul> </span> '),e.put("scripts/directives/common/action/transition.html",' <a title={{transition.name.id|i18n:this}} class="menu-link menu-link-{{transition.style}}" data-ng-click=execute(transition) data-ng-dblclick=execute(transition) data-ng-if="visible && asLink"> <i class="fa fa-fw {{transition.icon}} prefix-icon"></i> <span class=horizontal-offset-5><cc-i18n data-key={{transition.name.id}} data-supports-customer-translation=true></cc-i18n></span> </a> '),e.put("scripts/directives/common/action/transitionmenu.html",'<button class="btn btn-xs btn-uppercase btn-primary" style="margin-left: 3px" data-cc-i18n-title=widget.transitions data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-uib-dropdown-toggle data-ng-show=isVisible()> <i id=inner-btn-append-to-body class="fa fa-fw fa-arrows-turn-to-dots"></i> <cc-i18n data-key=widget.transitions data-supports-customer-translation=true></cc-i18n> <i class="fa fa-caret-down"></i> <ul class="dropdown-menu dropdown-menu-left" style="z-index: 1039; margin-top: 8px" data-uib-dropdown-menu> <li class=menu-heading> <cc-i18n data-key=widget.transitions data-supports-customer-translation=true></cc-i18n> </li> <li data-ng-repeat="transition in transitions track by $index"> <cc-transition data-transition=transition data-widget=widget data-as-link=true></cc-transition> </li> </ul> </button> '),e.put("scripts/directives/common/control/control.html",'<button title={{::control.title|i18n:this}} class="btn btn-xs btn-uppercase btn-{{::control.style}}" data-ng-click="control.fn(widget, controlData)" data-ng-if=control.visible(widget)> <i class="fa {{::control.icon}} prefix-icon"></i> <cc-i18n data-key={{::control.title}}></cc-i18n> </button> '),e.put("scripts/directives/common/editingmode/editingmode.html",'<span title="{{\'editingMode.createTranslationOverride\'|i18n:this}}" class="nav-icon icon-align-to-text" data-ng-if=isEditingMode()> <i class="fa fa-fw fa-edit" data-ng-click="createTranslationOverride(); $event.stopPropagation()" data-ng-if=!actionId></i> <i class="fa fa-fw fa-edit" data-ng-click="createActionTranslationOverride(); $event.stopPropagation()" data-ng-if=!!actionId></i> </span> '),e.put("scripts/directives/common/i18n/i18n.html","<span class=i18n-value data-ng-class=\"{'translatable-by-customer': supportsCustomerTranslation || supportsCustomerActionTranslation, 'editing-mode' : isEditingMode()}\"> </span><cc-editing-mode data-i18n=key data-ng-if=\"isEditingMode() && (supportsCustomerTranslation || supportsCustomerActionTranslation)\" data-action-id={{supportsCustomerActionTranslation}}></cc-editing-mode>"),e.put("scripts/directives/common/navigationsearch/item.html",'<h5 class="cc-navigation-search-group-header text-secondary" data-ng-if=match.model.group> <cc-i18n data-key={{match.model.group}}></cc-i18n> </h5> <a title={{match.model.pathString}} class=cc-navigation-search-item data-ng-if=!match.model.noResult> <div class=cc-navigation-search-item-icon> <i class="fa fa-fw fa-1_5x prefix-icon {{match.model.icon}}"></i> </div> <div class=cc-navigation-search-item-content> <span data-ng-bind-html="match.label | highlight:query" data-ng-if=!match.model.disabled></span> <div class=cc-navigation-search-item-path-wrapper data-ng-if=match.model.path.length> <small class=cc-navigation-search-item-path data-ng-repeat="token in match.model.path" data-ng-style="{\n                \'flex-shrink\': token.shrink\n            }"> <i class="fa fa-fw fa-pen-field prefix-icon" data-ng-if=token.set
1sContext data-cc-i18n-title=common.ui.search.contextSelection></i> <cc-i18n class=cc-navigation-search-item-path-token data-ng-if=token.translation data-ng-class="{\n                                \'text-ellipsis\' : token.ellipsis\n                                }" data-key={{token.translation}}></cc-i18n> <i class="fa fa-fw" data-ng-class=token.icon data-ng-if="!token.translation && token.icon"></i> <i class="fa fa-fw fa-caret-right cc-navigation-search-item-path-caret" data-ng-if=!$last></i> </small> </div> </div> <div class=cc-navigation-search-item-locator data-ng-if=match.model.isCurrentState> <span class="label label-default"><cc-i18n data-key=common.ui.search.activePage></cc-i18n></span> </div> </a> <div class=cc-navigation-search-no-results data-ng-if=match.model.noResult> <div class=cc-navigation-search-item-icon> <i class="fa fa-fw fa-1_5x prefix-icon fa-empty-set"></i> </div> <div class=cc-navigation-search-item-content> <cc-i18n data-key=common.noDataFound data-params="{input: query}"></cc-i18n> </div> </div>'),e.put("scripts/directives/common/navigationsearch/navigationsearch.html",'<div id=cc-navigation-search data-ng-if=featureActive> <div class=flex-spacer></div> <input id={{elementId}} class="form-control search-input" data-ng-disabled="loading || isEditingMode()" cc-hotkeys=hotkeyConfig placeholder={{placeholder}} data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true, debounce: 200 }" data-typeahead-append-to-body=true data-typeahead-input-formatter=removeHtml($model) data-typeahead-min-length=1 data-typeahead-template-url=scripts/directives/common/navigationsearch/item.html data-uib-typeahead="item as item.$displayName for item in filterAllowedValuesSuggestions($viewValue)"> <i class="fa fa-fw fa-circle-notch fa-spin cc-navigation-search-icon" data-ng-if=loading></i> <i class="fa fa-fw fa-search cc-navigation-search-icon" data-ng-click=focusInput() data-ng-if="!loading && !searchString"></i> <i class="fa fa-fw fa-times cc-navigation-search-icon" data-ng-if="!loading && searchString && searchString.length" data-ng-click=clear()></i> </div> '),e.put("scripts/directives/pageelement/actioninspector/actioninspector.html","<span class=action-inspector> </span> "),e.put("scripts/directives/pageelement/appinfo/appinfo.html","<div data-ng-if=version> <h2> <span class=text-secondary>CampusCore</span><br> Campus-Management-System </h2> {{version}} </div> "),e.put("scripts/directives/pageelement/devconsole/devconsole.html",'<div class=cc-dev-console style="margin-right: 10px; height: 30px"> <button title="{{\'widget.actions\'|i18n:this}}" class="btn btn-circle btn-primary quicknav-button animated fadeIn dropdown action-menu" style="width: 40px; height: 30px" data-uib-dropdown data-uib-dropdown-toggle data-auto-close=always data-dropdown-append-to-body> <i id=btn-append-to-body class="fa fa-ellipsis-v clickable-icon" data-type=button> <span title="{{\'widget.actions\'|i18n:this}}" class=caret></span> </i> <ul class="dropdown-menu dropdown-menu-left" style="z-index: 1039; margin-top: 8px" data-uib-dropdown-menu> <li> <cc-action data-action-id=ClearJpaLevel2CacheAction data-as-link=true></cc-action> <cc-action data-action-id=RefreshNavigationCacheAction data-as-link=true data-do-on-success=refreshPage></cc-action> <cc-action data-action-id=ReloadDumpableObjectsAction data-as-link=true data-do-on-success=refreshPage></cc-action> <cc-action data-action-id=WriteAllDumpableObjectsAction data-as-link=true></cc-action> <cc-action data-action-id=WriteDumpablesForAllProjectsAction data-as-link=true></cc-action> </li> </ul> </button> <label title="{{\'dev.isDesignModeEnabled.\' + devConfig.isDesignModeEnabled|i18n:this}}" class=switch data-ng-class="{\'green\': devConfig.isDesignModeEnabled}" data-ng-if="getDevConfig(\'canSetDesignModeEnabled\')"> <input type=checkbox data-ng-model=devConfig.isDesignModeEnabled> <i class=fa data-ng-class="{\'fa-wand-sparkles\': devConfig.isDesignModeEnabled, \'fa-wand\': !devConfig.isDesignModeEnabled}"></i> </label> <label title="{{\'dev.isDebugActionsEnabled.\' + devConfig.isDebugActionsEnabled|i18n:this}}" class=switch data-ng-class="{\'green\': devConfig.isDebugActionsEnabled}" data-ng-if="getDevConfig(\'canSetDebugActionsEnabled\')"> <input type=checkbox data-ng-model=devConfig.isDebugActionsEnabled> <i class=fa data-ng-class="{\'fa-step-forward\': devConfig.isDebugActionsEnabled, \'fa-cog\': !devConfig.isDebugActionsEnabled}"></i> </label> <label title="{{\'dev.isDebugLogEnabled.\' + devConfig.isDebugLogEnabled|i18n:this}}" class=switch data-ng-class="{\'green\': devConfig.isDebugLogEnabled}" data-ng-if="getDevConfig(\'canSetDebugLogEnabled\')"> <input type=checkbox data-ng-model=devConfig.isDebugLogEnabled> <i class=fa data-ng-class="{\'fa-file-alt\': devConfig.isDebugLogEnabled, \'fa-file\': !devConfig.isDebugLogEnabled}"></i> </label> <label title="{{\'dev.isDevWriteEnabled.\' + devConfig.isDevWriteEnabled|i18n:this}}" class=switch data-ng-if="getDevConfig(\'canSetDevWriteEnabled\')" data-ng-class="{\'green\': devConfig.isDevWriteEnabled}"> <input type=checkbox data-ng-model=devConfig.isDevWriteEnabled> <i class=fa data-ng-class="{\'fa-hdd\': devConfig.isDevWriteEnabled, \'fa-database\': !devConfig.isDevWriteEnabled}"></i> </label> <select class=form-control style="width: 200px" data-ng-model=devConfig.activeSoftwareModule data-ng-if="devConfig.softwareModules.length > 0" data-ng-class="{\'text-danger\': devConfig.activeSoftwareModule != devConfig.initialSoftwareModule}" data-ng-options="softwareModule for softwareModule in devConfig.softwareModules | orderBy: softwareModule" data-ng-change=changeSoftw
1areModule() data-ng-disabled=!devConfig.isDevWriteEnabled> </select> </div> '),e.put("scripts/directives/pageelement/localeswitcher/localeswitcher.html","<div class=localeswitcher> <small> <span data-ng-repeat=\"locale in availableLocales\"> <a data-ng-click=switchLocale(locale) class=label data-locale={{locale.iso}} data-ng-class=\"{'label-primary': isCurrentLocale(locale), 'label-default': !isCurrentLocale(locale)}\">{{locale.name[locale.iso]}}</a> <span data-ng-show=!$last>&nbsp;</span> </span> </small> </div>"),e.put("scripts/directives/pageelement/quicknav/editingmodeswitch.html",'<span class=editingmode data-ng-show="editingModeFeatureActive && canComposeEditingMode && hasGivenConsents()"> <label title="{{\'editingModeEnabled.\' + editingModeEnabled|i18n:this}}" class=switch data-ng-class="{\'green\': editingModeEnabled}"> <input type=checkbox data-ng-model=editingModeEnabled> <i class="fa fa-pencil-alt"></i> </label> </span> '),e.put("scripts/directives/pageelement/quicknav/inbox.html",'<button class="btn quicknav-button btn-circle animated fadeIn" data-ng-if=!anonymous data-ng-click=goToInbox() title="{{\'entity.Message.inbox\'|i18n:this}}"> <i class="fa fa-inbox"></i> </button> <span class="label label-primary" style="position: relative; left:-12px; top:-10px;" data-ng-if="unreadMessageCount > 0">{{unreadMessageCount}}</span> '),e.put("scripts/directives/pageelement/quicknav/quicknav.html",'<div class=quicknav> <div data-ng-if="checklistFeatureActive && canManageChecklists && hasGivenConsents()"> <div title="{{\'checklists.title\'|i18n:this}}" class="btn btn-circle quicknav-button animated fadeIn dropdown checklist-menu" style="width: 40px; padding-right: 6px" data-uib-dropdown data-auto-close=outsideClick data-on-toggle=checklistMenuToggled(open) data-is-open=checklistMenuStatus.open data-uib-dropdown-toggle data-dropdown-append-to-body> <i id=btn-append-to-body class="fa fa-fw fa-list clickable-icon caret-icon" data-type=button> <span title="{{\'checklists.title\'|i18n:this}}" class=caret></span> </i> <ul class="dropdown-menu dropdown-menu-right" style="z-index: 1039" data-uib-dropdown-menu> <li style="margin: 10px" data-ng-if=!!checklistErrors> <div class="alert alert-danger" style="margin-bottom: 10px"> <cc-i18n class=hint-text data-key={{checklistErrors[0]}} data-ng-if="checklistErrors.length === 1"></cc-i18n> <ul data-ng-if="checklistErrors.length > 1"> <li data-ng-repeat="error in checklistErrors"> <cc-i18n class=hint-text data-key={{error}}></cc-i18n> </li> </ul> </div> </li> <li style="margin: 10px"> <cc-i18n data-key=checklists.availableChecklists></cc-i18n> </li> <li class=divider></li> <li class=text-center data-ng-if=checklistMenuStatus.loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </li> <li style="margin: 10px" data-ng-if="!checklistMenuStatus.loading && checklists.length === 0"> <div class="alert alert-info" style="margin-bottom: 10px"> <cc-i18n class=hint-text data-key=checklists.noChecklistsAvailable></cc-i18n> </div> </li> <li class=text-ellipsis data-ng-repeat="checklist in checklists"> <div title={{checklist.name.id|i18n:this}}> <div style="display: flex; margin: 4px 0"> <div class="horizontal-offset-10 text-ellipsis" style="flex-grow:1; margin-top: 3px"> <cc-i18n data-key={{checklist.name.id}}></cc-i18n> </div> <div title={{checklist.category.name.id|i18n:this}} class="label label-primary text-ellipsis" style="margin: 4px 10px 0; height: 16px; min-width: 75px; max-width: 125px; flex-shrink: 2"> <cc-i18n data-key={{checklist.category.name.id}}></cc-i18n> </div> <button class="btn btn-xs btn-seamless pull-right" style="margin-bottom: 5px; margin-right: 5px; background-color: transparent;" data-ng-click=editChecklist(checklist)> <i title="{{\'checklists.editChecklist\'|i18n:this}}" class="fa fa-pencil-alt"></i> </button> <button class="btn btn-xs btn-seamless pull-right" style="margin-bottom: 5px; margin-right: 5px; background-color: transparent;" data-ng-click=removeChecklist(checklist)> <i title="{{\'checklists.removeChecklist\'|i18n:this}}" class="fa fa-trash text-danger"></i> </button> </div> </div> </li> <li class=divider></li> <li> <button title="{{\'checklists.createChecklist\'|i18n:this}}" class="btn btn-xs btn-uppercase btn-primary pull-right" style="margin: 5px 10px 10px 0" data-ng-click=createChecklist()> <i class="fa fa-fw fa-file"></i> <cc-i18n data-key=checklists.createChecklist></cc-i18n> </button> </li> </ul> </div> </div> <cc-action data-action-id=SendIndividualMessageAction data-as-quicknav=true data-ng-if="canComposeMessage&& hasGivenConsents()"></cc-action> <cc-inbox></cc-inbox> <button title="{{\'00563e20-2787-4d87-bf6c-c912c4b79280\'|i18n:this}}" class="btn btn-circle quicknav-button animated fadeIn" data-ng-if=!anonymous data-ui-sref=user data-ui-sref-opts={location:false}> <i class="fa fa-user"></i> </button> <button title="{{\'23d86bea-3f88-4b6f-8881-eabeb42a3b35\'|i18n:this}}" class="btn btn-circle quicknav-button animated fadeIn" data-ui-sref=about data-ui-sref-opts={location:false}> <i class="fa fa-info"></i> </button> <cc-action data-action-id=RegisterPersonAction data-as-quicknav=true data-ng-if=!!anonymous></cc-action> <form style=display:inline method=post action=/api/auth/logout> <button type=submit title="{{\'common.auth.logout\'|i18n:this}}" class="btn btn-circle btn-danger-inverted animated fadeIn" data-ng-click=logoutCompletely($event) data-ng-if=!anonymous> <i class="fa fa-power-off"></i> </button> <input id=_csrf type=hidden name=_csrf value={{::getCsrfToken()}}> </form> <button title="{{\'common.auth.login\'|i18n:this}}" class="btn btn-circle btn-success-inverted animated fadeIn" data-ng-if=!!anonymous data-ng-click=login()> <i class="fa fa-power-off"></i> </button> </div> '),e.put("scripts/directives/pageelement/userimage/userimage.html",'<div class=userimage> <div class=logo-element> <div data-ng-if=anonymous class=img-placeholder title="{{\'common.auth.guest\'|i18n:this}}"> <span><i class="fa fa-users"></i></span> </div> <a data-ui-sref=user data-ng-if=!anonymous> <div data-ng-if=!photo class=img-placeholder title={{userDetails.name}}> <span>{{userDetails.initials}}</span> </div> <div data-ng-if=photo class=img-container title={{userDetails.name}}> <img class=img-circle data-ng-src="{{ photo }}"> </div> </a> </div> </div>'),e.put("scripts/directives/pageelement/userinfo/userinfo.html",'<div class="animated fadeIn"> <cc-userimage></cc-userimage> <span class="clear user-identification"> <span class="block m-t-xs"> <strong class=font-bold data-ng-if=!anonymous>{{userDetails.name}}</strong> <strong class=font-bold data-ng-if=anonymous> <cc-i18n data-key=common.auth.guest></cc-i18n> </strong> </span> <span class="text-xs block"> <small> {{roles}} </small> <br><br> </span> </span> </div> '),e.put("scripts/directives/pagelayout/pagelayout.html",'<div> <div data-ng-include=activePageLayout data-ng-show="activePageLayout && (hasGivenConsents() || isA
1nonymous)"></div> </div> '),e.put("scripts/directives/pagelayout/type/backoffice.html",'<cc-resize> <div id=wrapper class="animated fadeIn"> <nav class="navbar-default navbar-static-side" style="position: fixed; z-index: 5" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}" data-ng-if="menuMode !== \'none\'" role=navigation> <button title="{{\'common.ui.toggleMenuState\'|i18n:this}}" class="btn btn-secondary btn-circle animated fadeIn toggle-menu" data-ng-click=toggleMenu()><i class=fa data-ng-class="{\'fa-chevron-left\': !isMenuState(\'hidden\'), \'fa-chevron-right suffix-icon\': isMenuState(\'hidden\')}"></i> </button> <div class=sidebar-collapse style="height: 100%; overflow: auto;"> <ul id=side-menu class=nav> <li class="nav-header text-center"> <div class="dropdown profile-element"> <cc-userinfo></cc-userinfo> </div> </li> <li data-ng-show="!isMenuState(\'collapsed\')"> <cc-navigation-search></cc-navigation-search> </li> <li class="active animated fadeIn" data-ng-class="{\'design-mode\': isDesignMode(), \'editing-mode\': isEditingMode()}"> <cc-userimage data-ng-if="((screenSize.is(\'ccSmall\') || screenSize.is(\'ccMedium\')) && (!isMenuState(\'full\'))) || isMenuState(\'collapsed\') || (screenSize.is(\'ccSmall\'))"></cc-userimage> <a data-ng-repeat="item in menu.data" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false} data-ng-if="!isDesignMode() && !isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name]}" data-cc-i18n-title=item.data.title> <div class=nav-label style="height: 20px"> <span class=nav-text><cc-i18n data-key={{item.data.title}}></cc-i18n></span> <span class="nav-icon pull-right"> <i class="fa fa-fw {{item.data.icon}}"></i> </span> </div> </a> <a data-cc-i18n-title=item.data.title data-ng-repeat="item in menu.data" data-ng-if="isDesignMode() || isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name], \'editing-mode\': isEditingMode()}"> <div class=nav-label style="display: flex; height: 20px"> <span class="nav-text translatable-by-customer" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false}> <cc-i18n data-key={{item.data.title}}></cc-i18n> </span> <span class=flex-spacer></span> <i class="fa fa-plus-circle prefix-icon" data-ng-if=isDesignMode() data-ng-click=addUiItem(item.data.applicationModuleId)></i> <i class="fa fa-minus-circle suffix-icon" data-ng-if=isDesignMode() data-ng-click="removeUiItem(null, item.data.applicationModuleId)"></i> <cc-editing-mode class=pull-right data-i18n=item.data.title data-ng-if=isEditingMode()></cc-editing-mode> </div> </a> </li> <li class="text-center design-mode" data-ng-if=isDesignMode()> <a data-ng-click=addUiItem(null)> <i class="fa fa-plus-circle"></i> </a> </li> <li class=text-center style="margin-bottom: 20px" data-ng-if="isMenuState(\'full\') || (isMenuState(\'dynamic\') && screenSize.is(\'ccLarge\'))"> <div> <br> <cc-localeswitcher></cc-localeswitcher> </div> </li> </ul> </div> </nav> <div id=page-wrapper class="gray-bg animated fadeIn" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}"> <div class="row dashboard-header animated fadeInDown" data-ng-if="menuMode !== \'none\'"> <div class="customer-logo app"></div> <div class=flex-spacer></div> <div style="display: flex"> <cc-action-inspector data-ng-if=isDevMode></cc-action-inspector> <cc-devconsole data-ng-if=isDevMode></cc-devconsole> <cc-editing-mode-switch style="margin-right: 8px"></cc-editing-mode-switch> <cc-quicknav data-ng-if="screenSize.is(\'ccMedium\') || screenSize.is(\'ccLarge\')"></cc-quicknav> </div> </div> <div class=row> <div class="wrapper wrapper-content animated fadeIn"> <div data-ui-view></div> </div> </div> </div> </div> </cc-resize> <script> $(\'body\').removeClass(\'boxed-layout\'); <\/script> '),e.put("scripts/directives/pagelayout/type/default.html",'<cc-resize> <div id=wrapper class="animated fadeIn"> <nav class="navbar-default navbar-static-side" style="position: fixed" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}" data-ng-if="menuMode !== \'none\'" role=navigation> <button title="{{\'common.ui.toggleMenuState\'|i18n:this}}" class="btn btn-secondary btn-circle animated fadeIn toggle-menu" data-ng-click=toggleMenu()><i class=fa data-ng-class="{\'fa-chevron-left\': !isMenuState(\'hidden\'), \'fa-chevron-right suffix-icon\': isMenuState(\'hidden\')}"></i> </button> <div class=sidebar-collapse style="height: 100%; overflow: auto;"> <ul id=side-menu class=nav> <li class="nav-header text-center"> <div class="dropdown profile-element"> <cc-userinfo></cc-userinfo> </div> </li> <li class="active animated fadeIn" data-ng-class="{\'design-mode\': isDesignMode(), \'editing-mode\': isEditingMode()}"> <cc-userimage data-ng-if="((screenSize.is(\'ccSmall\') || screenSize.is(\'ccMedium\')) && (!isMenuState(\'full\'))) || isMenuState(\'collapsed\') || (screenSize.is(\'ccSmall\'))"></cc-userimage> <a class=text-center style="height: 20px" data-ng-repeat="item in menu.data" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false} data-ng-if="!isDesignMode() && !isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name]}" data-cc-i18n-title=item.data.title> <span class=nav-icon> <i class="fa fa-fw {{item.data.icon}}"></i> </span> </a> <a style="display: flex" data-ng-repeat="item in menu.data" data-ng-if="isDesignMode() || isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name], \'editing-mode\' : isEditingMode()}" data-cc-i18n-title=item.data.title> <div class=nav-label style="display: flex; height: 20px"> <span class="nav-text translatable-by-customer" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false}> <cc-i18n data-key={{item.data.title}}></cc-i18n> </span> <span class=flex-spacer></span> <i class="fa fa-plus-circle prefix-icon" data-ng-if=isDesignMode() data-ng-click=addUiItem(item.data.applicationModuleId)></i> <i class="fa fa-minus-circle suffix-icon" data-ng-if=isDesignMode() data-ng-click="removeUiItem(null, item.data.applicationModuleId)"></i> <cc-editing-mode class=pull-right data-i18n=item.data.title data-ng-if=isEditingMode()></cc-editing-mode> </div> </a> </li> <li class="text-center design-mode" data-ng-if=isDesignMode()> <a data-ng-click=addUiItem(null)> <i class="fa fa-plus-circle"></i> </a> </li> <li class=text-center style="margin-bottom: 20px" data-ng-if="isMenuState(\'full\') || (isMenuState(\'dynamic\') && screenSize.is(\'ccLarge\'))"> <div> <br> <cc-localeswitcher></cc-localeswitcher> </div> </li> </ul> </div> </nav> <div id=page-wrapper class="gray-bg animated fadeIn" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}"> <div class="row dashboard-header animated fadeInDown" data-ng-if="menuMode !== \'none\'"> <div class="customer-logo app"></div> <div class=flex-spacer></div> <div style="display: flex">
1 <cc-action-inspector data-ng-if=isDevMode></cc-action-inspector> <cc-devconsole data-ng-if=isDevMode></cc-devconsole> <cc-editing-mode-switch style="margin-right: 8px"></cc-editing-mode-switch> <cc-quicknav data-ng-if="screenSize.is(\'ccMedium\') || screenSize.is(\'ccLarge\')"></cc-quicknav> </div> </div> <div class=row> <div class="wrapper wrapper-content animated fadeIn"> <div data-ui-view></div> </div> </div> </div> </div> </cc-resize> <script> $("body").addClass(\'boxed-layout\');\n'+"    $('#fixednavbar').prop('checked', false);\n    $(\".navbar-fixed-top\").removeClass('navbar-fixed-top').addClass('navbar-static-top');\n    $(\"body\").removeClass('fixed-nav'); <\/script> "),e.put("scripts/directives/pagelayout/type/public.html",'<cc-resize> <div id=wrapper class="animated fadeIn"> <nav class="navbar-default navbar-static-side" style="position: fixed" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}" data-ng-if="menuMode !== \'none\'" role=navigation> <button title="{{\'common.ui.toggleMenuState\'|i18n:this}}" class="btn btn-secondary btn-circle animated fadeIn toggle-menu" data-ng-click=toggleMenu()><i class=fa data-ng-class="{\'fa-chevron-left\': !isMenuState(\'hidden\'), \'fa-chevron-right suffix-icon\': isMenuState(\'hidden\')}"></i> </button> <div class=sidebar-collapse style="height: 100%; overflow: auto;"> <ul id=side-menu class=nav> <li class="nav-header text-center"> <div class="dropdown profile-element"> <cc-userinfo></cc-userinfo> </div> </li> <li class="active animated fadeIn" data-ng-class="{\'design-mode\': isDesignMode(), \'editing-mode\': isEditingMode()}"> <cc-userimage data-ng-if="((screenSize.is(\'ccSmall\') || screenSize.is(\'ccMedium\')) && (!isMenuState(\'full\'))) || isMenuState(\'collapsed\') || (screenSize.is(\'ccSmall\'))"></cc-userimage> <a class=text-center data-ng-repeat="item in menu.data" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false} data-ng-if="!isDesignMode() && !isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name]}" data-cc-i18n-title=item.data.title> <span class=nav-icon> <i class="fa {{item.data.icon}}"></i> </span> <span class=nav-icon data-ng.if=isEditingMode()> <i class="fa {{item.data.icon}}"></i> </span> </a> <a data-ng-repeat="item in menu.data" data-ng-if="isDesignMode() || isEditingMode()" data-ng-class="{\'with-separator\': !!menu.separators[item.name]}, \'editing-mode\': isEditingMode()" data-cc-i18n-title=item.data.title> <div class=nav-label style="display: flex; height: 20px"> <span class="nav-text translatable-by-customer" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-ui-sref={{item.name}} data-ui-sref-active=active data-ui-sref-opts={location:false}> <cc-i18n data-key={{item.data.title}}></cc-i18n> </span> <span class=flex-spacer></span> <i class="fa fa-plus-circle prefix-icon" data-ng-if=isDesignMode() data-ng-click=addUiItem(item.data.applicationModuleId)></i> <i class="fa fa-minus-circle suffix-icon" data-ng-if=isDesignMode() data-ng-click="removeUiItem(null, item.data.applicationModuleId)"></i> <cc-editing-mode class=pull-right data-i18n=item.data.title data-ng-if=isEditingMode()></cc-editing-mode> </div> </a> </li> <li class="text-center design-mode" data-ng-if=isDesignMode()> <a data-ng-click=addUiItem(null)> <i class="fa fa-plus-circle"></i> </a> </li> <li class=text-center style="margin-bottom: 20px" data-ng-if="isMenuState(\'full\') || (isMenuState(\'dynamic\') && screenSize.is(\'ccLarge\'))"> <div> <br> <cc-localeswitcher></cc-localeswitcher> </div> </li> </ul> </div> </nav> <div id=page-wrapper class="gray-bg animated fadeIn" data-ng-class="{\'full-menu-state\': isMenuState(\'full\')}"> <div class="row dashboard-header animated fadeInDown" data-ng-if="menuMode !== \'none\'"> <div class="customer-logo app"></div> <div class=flex-spacer></div> <div style="display: flex"> <cc-action-inspector data-ng-if=isDevMode></cc-action-inspector> <cc-devconsole data-ng-if=isDevMode></cc-devconsole> <cc-editing-mode-switch style="margin-right: 8px"></cc-editing-mode-switch> <cc-quicknav data-ng-if="screenSize.is(\'ccMedium\') || screenSize.is(\'ccLarge\')"></cc-quicknav> </div> </div> <div class=row> <div class="wrapper wrapper-content animated fadeIn"> <div data-ui-view></div> </div> </div> </div> </div> </cc-resize> <script> $("body").addClass(\'boxed-layout\');\n'+"    $('#fixednavbar').prop('checked', false);\n    $(\".navbar-fixed-top\").removeClass('navbar-fixed-top').addClass('navbar-static-top');\n    $(\"body\").removeClass('fixed-nav'); <\/script> "),e.put("scripts/directives/uiitem/placeholder/landingpage/landingpage.html",'<div class=cc-landing-page data-ng-show="hasGivenConsents() || anonymous"> <div class="cc-option-toggle text-left" data-ng-if="!anonymous && (canCreateGlobalPrecision() || c
1anCreateIndividualPrecision() || canCreatePersonalPrecision() || landingPages.length > 1)"> <ul class=pagination style="margin-bottom: 0" data-ng-if="landingPages.length > 1"> <li class=dropdown data-uib-dropdown="" data-ng-if="numberOfGlobalLayouts > 1" data-auto-close=always data-dropdown-append-to-body="" data-ng-class="{\'active\': isGlobalLayoutActive()}"> <a style="padding-left: 0; padding-right: 0;"> <span class=ng-binding style="padding-left: 7px;"> <i class="fa prefix-icon fa-laptop"></i> <cc-i18n data-key={{lastActiveGlobalLandingPage.name.id}} data-ng-click=activate(lastActiveGlobalPosition) data-supports-customer-translation=true></cc-i18n> </span> <span class="clickable dropdown-toggle" style="padding-right: 7px;" data-uib-dropdown-toggle="" aria-haspopup=true aria-expanded=false> <i class="fa fa-ellipsis-v clickable-icon"></i> <span class=caret></span> </span> </a> <ul class="dropdown-menu dropdown-menu-left" data-uib-dropdown-menu=""> <li class="dropdown-menu-icon ng-scope" data-ng-repeat="landingPage in landingPages track by $index" data-ng-if="!!landingPage && landingPage.precision === \'GLOBAL\'" data-ng-class="{\'active\': isActive($index)}" data-ng-click=activate($index)> <a> <span> <i class="fa prefix-icon fa-laptop"></i> <cc-i18n data-key={{landingPage.name.id}} data-supports-customer-translation=true></cc-i18n> </span> </a> </li> </ul> </li> <li data-ng-repeat="landingPage in landingPages track by $index" data-ng-if="!!landingPage && (numberOfGlobalLayouts < 2 || landingPage.precision !== \'GLOBAL\')" data-ng-class="{\'active\': isActive($index)}" data-ng-click=activate($index)> <a> <span> <i class="fa prefix-icon" data-ng-class="{\'fa-laptop\': landingPage.precision === \'GLOBAL\', \'fa-user\': landingPage.precision === \'PERSONAL\', \'fa-user-circle\': landingPage.precision === \'INDIVIDUAL\'}"></i> <cc-i18n data-key={{landingPage.name.id}} data-supports-customer-translation=true></cc-i18n> </span> </a> </li> </ul> <button class="btn btn-xs btn-danger btn-uppercase horizontal-offset-5" data-ng-click=deleteLayout() data-ng-if="canDeleteLayout() && configMode"> <i class="fa fa-fw fa-trash"></i> <cc-i18n data-key=landingPage.delete.{{activeLandingPage.precision}} data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click=changeLayoutOrder() data-ng-if="canChangeOrderOfGlobalLayouts() && !configMode"> <i class="fa fa-fw fa-arrow-down-arrow-up"></i> <cc-i18n data-key=landingPage.changeLayoutOrder data-supports-customer-translation=true></cc-i18n> </button> <div style="flex-grow: 1"></div> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click="addLayout(\'GLOBAL\')" data-ng-if="canCreateGlobalPrecision() && !configMode"> <i class="fa fa-fw fa-laptop"></i> <cc-i18n data-key=landingPage.add.GLOBAL data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click="addLayout(\'PERSONAL\')" data-ng-if="canCreatePersonalPrecision() && !configMode"> <i class="fa fa-fw fa-user"></i> <cc-i18n data-key=landingPage.add.PERSONAL data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click="addLayout(\'INDIVIDUAL\')" data-ng-if="canCreateIndividualPrecision() && !configMode"> <i class="fa fa-fw fa-user-circle"></i> <cc-i18n data-key=landingPage.add.INDIVIDUAL data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click=editLayoutConfiguration() data-ng-if="canConfigureGlobalPrecision() && configMode"> <i class="fa fa-fw fa-cog"></i> <cc-i18n data-key=landingPage.configureLayout data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click=addColumn() data-ng-if="configMode && activeLandingPage.columns.length < 5"> <i class="fa fa-fw fa-plus"></i> <cc-i18n data-key=landingPage.addColumn data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click=enableConfigMode() data-ng-if="activeLandingPage.canConfigure && !configMode"> <i class="fa fa-fw fa-pencil-alt"></i> <cc-i18n data-key=landingPage.startConfigMode data-supports-customer-translation=true></cc-i18n> </button> <button class="btn btn-xs btn-primary btn-uppercase horizontal-offset-5" data-ng-click=disableConfigMode() data-ng-if="activeLandingPage.canConfigure && configMode"> <i class="fa fa-fw fa-pencil-alt"></i> <cc-i18n data-key=landingPage.endConfigMode data-supports-customer-translation=true></cc-i18n> </button> </div> <div class=landing-page-grid> <div id=column_{{column.id}} class=landing-page-column data-ng-repeat="column in activeLandingPage.columns"> <div class="column-controls full-width" style="display: flex" data-ng-if=configMode> <div style="flex-grow: 1"></div> <button title="{{\'landingPage.addWidget\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=addWidget(column)> <i class="fa fa-fw fa-plus"></i> </button> <button title="{{\'landingPage.removeColumn\'|i18n:this}}" class="btn btn-xs btn-danger" data-ng-click=removeColumn(column) data-ng-if="activeLandingPage.columns.length > 1">
1 <i class="fa fa-fw fa-trash"></i> </button> </div> <div id=column_{{column.id}}_widgets class="landing-page-grid-items vertical-offset-10" data-dnd-list data-dnd-drop="callback({targetColumn: column, targetIndex: index})"> <div class="dndPlaceholder text-center"></div> <div class=landing-page-grid-item data-ng-class="{\'no-drag\': !configMode || isEditingMode()}" data-ng-repeat="widget in column.widgets track by widget.id + \'-\' + $index" data-ng-if="(compliesToPersonTraitRequirements(widget) && softwareFeatureIsActive(widget)) || configMode" data-dnd-draggable=null data-dnd-disable-if="!configMode || isEditingMode()" data-dnd-callback="changeWidgetPosition(column, $index, targetColumn, targetIndex)"> <div class="ibox animated fadeIn flex-simple no-margin" style="flex-direction: column"> <div class="no-padding transparent text-center landing-page-widget-actions" data-ng-show="!anonymous && configMode"> <div style="flex-grow: 1"></div> <button class="btn btn-xs btn-primary" data-ng-click="editWidgetConfiguration(widget, $index)" data-ng-if=!!widget.viewDefinitionForConfiguration> <i class="fa fa-fw fa-cog"></i> </button> <button class="btn btn-xs btn-danger" data-ng-click="removeWidget(widget, column)" data-ng-if=configMode> <i class="fa fa-fw fa-trash"></i> </button> </div> <div class="transparent landing-page-widget-content flex-simple" data-ng-class="{\'no-actions\': anonymous || !configMode }"> <div class=landing-page-widget-content-wrapper data-ng-include=getWidgetUrl(widget)></div> </div> </div> </div> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/placeholder/landingpage/landingpagewidget.html",'<div class="landing-page-widget flex-simple" style="flex-direction: column"> <div class="landing-page-widget-heading text-uppercase text-bold" data-ng-if=!!title> <small> <cc-i18n data-key={{title}} data-params=titleParams data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=landing-page-widget-body></div> </div> '),e.put("scripts/directives/uiitem/widget/calendar/calendardatepicker.html","<datetimepicker data-ng-model=datePickerValue data-datetimepicker-config=datePickerOptions data-on-set-time=onSetTime(newDate)></datetimepicker> "),e.put("scripts/directives/uiitem/widget/calendar/calendarfilter.html",'<div class="cc-form form-horizontal cc-calendar-filter" data-ng-if=widget.calendar.baseConfiguration.userSpecificCalendarFilters.length> <div class=cc-calendar-sidebar-header data-ng-click="menuVisibility.filters = !menuVisibility.filters"> <i class="fa prefix-icon" data-ng-class="{\n                \'fa-caret-right\': !menuVisibility.filters,\n                \'fa-caret-down\': menuVisibility.filters\n            }"></i> <cc-i18n class=cc-calendar-sidebar-header data-key=widget.calendar.filter data-supports-customer-translation=true></cc-i18n> <div class=flex-spacer></div> <a data-ng-click="$event.stopPropagation(); widget.api.filter.resetFilters(this)" data-ng-if=widget.api.filter.anyFilterSelected(this)> <small> <i class="fa fa-times"></i> <cc-i18n data-key=widget.calendar.filterResetButton></cc-i18n> </small> </a> </div> <div class=cc-calendar-filter-list data-ng-show=menuVisibility.filters> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ROOM_TYPE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ROOM_TYPE)" data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ROOM_GROUP data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ROOM_GROUP)" data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ROOM_LOCATION data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ROOM_LOCATION)" data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ROOM_CAMPUS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ROOM_CAMPUS)" data-relevant-filters=[widget.calendar.filterEnum.ROOM_LOCATION] data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ROOM_BUILDING data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ROOM_BUILDING)" data-relevant-filters="[widget.calendar.filterEnum.ROOM_LOCATION, widget.calendar.filterEnum.ROOM_CAMPUS]" data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.PLACE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.PLACE)" data-relevant-filters="[\n                widget.calendar.filterEnum.ROOM_LOCATION,\n                widget.calendar.filterEnum.ROOM_CAMPUS,\n                widget.calendar.filterEnum.ROOM_BUILDING,\n                widget.calendar.filterEnum.ROOM_TYPE,\n                widget.calendar.filterEnum.ROOM_GROUP]" data-value=widget.calendar.filter.active data-widget=widget></cc-calendar-filter-allowed-values> <br> <cc-calendar-filter-number class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.PLACE_CAPACITY_MIN data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.PLACE_CAPACITY_MIN)" data-widget=widget></cc-calendar-filter-number> <cc-calendar-filter-number class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.PLACE_CAPACITY_MAX data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.PLACE_CAPACITY_MAX)" data-widget=widget></cc-calendar-filter-number> <cc-calendar-filter-enum class=cc-calendar-filter-component data-filter-enum="\'PlaceAccessibility\'" data-filter-key=widget.calendar.filterEnum.PLACE_ACCESSIBLE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.PLACE_ACCESSIBLE)" data-widget=widget></cc-calendar-filter-enum> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.PLACE_STATIONARY_RESOURCETYPE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.PLACE_STATIONARY_RESOURCETYPE)" data-widget=widget></cc-calendar-filter-allowed-values> <br> <cc-calendar-filter-boolean class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITYEVENT_PUBLIC data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITYEVENT_PUBLIC)" data-widget=widget> </cc-calendar-filter-boolean> <cc-calendar-filter-boolean class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_IS_PERFORMANCE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_IS_PERFORMANCE)" data-widget=widget> </cc-calendar-filter-boolean> <cc-calendar-filter-boolean class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_IS_LECTURE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_IS_LECTURE)" data-widget=widget> </cc-calendar-filter-boolean> <cc-calendar-filter-boolean class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_IS_PUBLIC data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_IS_PUBLIC)" data-widget=widget> </cc-calendar-filter-boolean> <cc-calendar-filter-enum class=cc-calendar-filter-component data-filter-enum="\'NewActivityStatus\'" data-filter-key=widget.calendar.filterEnum.ACTIVITY_STATUS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_STATUS)" data-widget=widget></cc-calendar-filter-enum> <cc-calendar-filter-enum class=cc-calendar-filter-component data-filter-enum="\'ActivityVisibilityStatus\'" data-filter-key=widget.calendar.filterEnum.ACTIVITY_VISIBILITY_STATUS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_VISIBILITY_STATUS)" data-widget=widget></cc-calendar-filter-enum> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_LECTURERS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_LECTURERS)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_ORGANIZERS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_ORGANIZERS)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_LABELS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_LABELS)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_TYPE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_TYPE)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-number class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_RECOMMENDED_
1STUDY_PROGRESS_IN_TERMS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_RECOMMENDED_STUDY_PROGRESS_IN_TERMS)" data-widget=widget></cc-calendar-filter-number> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_STUDY_PROGRAM data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_STUDY_PROGRAM)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_EXAMINATION_REGULATION data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_EXAMINATION_REGULATION)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.ACTIVITY_EXAMINATION_REGULATION_VERSION data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.ACTIVITY_EXAMINATION_REGULATION_VERSION)" data-widget=widget></cc-calendar-filter-allowed-values> <br> <cc-calendar-filter-enum class=cc-calendar-filter-component data-filter-enum="\'BookingEventStatus\'" data-filter-key=widget.calendar.filterEnum.BOOKINGEVENT_STATUS data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.BOOKINGEVENT_STATUS)" data-widget=widget></cc-calendar-filter-enum> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.BOOKINGEVENT_PARTICIPANT_ROLE data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.BOOKINGEVENT_PARTICIPANT_ROLE)" data-widget=widget></cc-calendar-filter-allowed-values> <cc-calendar-filter-allowed-values class=cc-calendar-filter-component data-filter-key=widget.calendar.filterEnum.BOOKINGEVENT_PARTICIPANT_PERSON data-ng-if="widget.api.filter.available(this, widget.calendar.filterEnum.BOOKINGEVENT_PARTICIPANT_PERSON)" data-relevant-filters=[widget.calendar.filterEnum.BOOKINGEVENT_PARTICIPANT_ROLE] data-widget=widget></cc-calendar-filter-allowed-values> </div> </div> '),e.put("scripts/directives/uiitem/widget/calendar/filter/calendarallowedvaluesfilter.html",'<div class={{elementClass}}> <cc-i18n class="translatable-by-customer text-ellipsis" data-key="{{\'entity.UserSpecificCalendarFilter.\' + filterKey}}"></cc-i18n> <cc-multi-typeahead></cc-multi-typeahead> </div>'),e.put("scripts/directives/uiitem/widget/calendar/filter/calendarbooleanfilter.html",'<div class={{elementClass}}> <cc-i18n class="translatable-by-customer text-ellipsis" data-key="{{\'entity.UserSpecificCalendarFilter.\' + filterKey}}"></cc-i18n> <cc-checkbox></cc-checkbox> </div>'),e.put("scripts/directives/uiitem/widget/calendar/filter/calendarenumfilter.html","<div class={{elementClass}}> <cc-i18n class=text-ellipsis data-key=\"{{'entity.' + filterEnum + '.$entity'}}\"></cc-i18n> <cc-typeahead></cc-typeahead> </div>"),e.put("scripts/directives/uiitem/widget/calendar/filter/calendarnumberfilter.html",'<div class={{elementClass}}> <cc-i18n class="translatable-by-customer text-ellipsis" data-key="{{\'entity.UserSpecificCalendarFilter.\' + filterKey}}"></cc-i18n> <div class=input-group> <input type=number class=form-control min=0 data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }"> </div> </div> '),e.put("scripts/directives/uiitem/widget/calendar/widget.html",'<div class="ibox animated fadeIn cc-calendar" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.data data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools data-ng-if=!widget.isEditingMode()> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex"> <cc-action data-action-id={{widget.api.getCreateObjectAction(this)}} data-widget=widget data-show-text=true data-as-button=true data-no-margin=true data-ng-if=widget.api.hasCreateConfiguration(this) data-custom-input=widget.calendar.actionInput></cc-action> </div> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-no-margin=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.CalendarWidget.$entity data-extras-title-key=entity.CalendarWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class="ibox-content full-height" data-ng-class="{\'transparent\': widget.api.ui.isTransparent
1(this), \'no-padding\': itemConfig.noPadding}" style="display: flex; flex-direction: column"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <div class="alert alert-warning action-alert cc-calendar__access-denied" data-ng-if=widget.calendar.accessDenied> <cc-i18n data-key=validation.accessDenied></cc-i18n> </div> <div class="alert alert-danger global-errors" data-ng-if=!!widget.status.globalMessages> <ul> <li data-ng-repeat="message in widget.status.globalMessages"> <span data-ng-bind-html=::message></span> </li> </ul> </div> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)> <div class=vertical-offset-10 data-ng-if=!!widget.calendar.iconLegend> <table class=cc-calendar-icon-legend-table> <caption> <strong> <cc-i18n data-key=widget.calendar.iconLegend></cc-i18n> </strong> </caption> <tr data-ng-repeat="(icon, legend) in widget.calendar.iconLegend"> <th> <i class="fa fa-fw prefix-icon" data-ng-class=icon></i> <cc-i18n data-key={{legend.title.id}}></cc-i18n> </th> <td> <cc-i18n data-key={{legend.helpText.id}}></cc-i18n> </td> </tr> </table> </div> </cc-widget-help> <div class="cc-calendar__access-granted full-height" data-ng-show=!widget.calendar.accessDenied style="flex-grow: 1; overflow: auto;"> <div class=cc-calendar-sidebar> <span class=cc-calendar-sidebar-header data-ng-click="menuVisibility.datePicker = !menuVisibility.datePicker"> <i class="fa prefix-icon" data-ng-class="{\n                        \'fa-caret-right\': !menuVisibility.datePicker,\n                        \'fa-caret-down\': menuVisibility.datePicker\n                    }"></i> <cc-i18n data-supports-customer-translation=true data-key=widget.calendar.datePicker></cc-i18n> </span> <div data-ng-show=menuVisibility.datePicker> <cc-calendar-date-picker data-change-calendar-view=firstCalendarChangeView data-unselect-date=firstCalendarUnselectDate data-on-change-view=onFirstCalendarViewChange data-on-set-date="onSetDate(newDate, 1)"></cc-calendar-date-picker> <cc-calendar-date-picker data-change-calendar-view=secondCalendarChangeView data-unselect-date=secondCalendarUnselectDate data-on-set-date="onSetDate(newDate, 2)" data-disable-controls=true data-skip-first-month=true></cc-calendar-date-picker> </div> <span class=cc-calendar-sidebar-header style="margin-top: 30px;" data-ng-click="menuVisibility.eventSources = !menuVisibility.eventSources"> <i class="fa prefix-icon" data-ng-class="{\n                        \'fa-caret-right\': !menuVisibility.eventSources,\n                        \'fa-caret-down\': menuVisibility.eventSources\n                    }"></i> <cc-i18n data-supports-customer-translation=true data-key=widget.calendar.eventSources></cc-i18n> <div class=flex-spacer></div> <i title={{eventSource.name|i18n:this}} class="fa fa-square prefix-icon cc-solid-icon suffix-icon" data-ng-repeat="eventSource in widget.calendar.eventSources" data-ng-if=!menuVisibility.eventSources data-ng-class="{\'text-grey\': !eventSource.active}" data-ng-click="$event.stopPropagation(); widget.api.toggleEventSource(eventSource, this)" data-ng-style="{color: eventSource.active ? eventSource.color : undefined}"></i> </span> <div class=cc-event-source-list data-ng-show=menuVisibility.eventSources> <div class=cc-calendar-event-source data-ng-repeat="eventSource in widget.calendar.eventSources"> <div class=cc-event-source__active data-ng-if=eventSource.active> <i title={{eventSource.name|i18n:this}} class="fa fa-square prefix-icon cc-solid-icon" data-ng-style="{color: eventSource.color}" data-ng-click="widget.api.toggleEventSource(eventSource, this)"></i> <span title={{eventSource.name|i18n:this}} class=text-ellipsis data-ng-click="widget.api.toggleEventSource(eventSource, this)"> <cc-i18n data-key={{eventSource.name}}></cc-i18n> </span> <div class=flex-spacer></div> <i title="{{\'common.ui.calendar.previousEvent\'|i18n:this}}" class="fa fa-fw fa-chevron-left prefix-icon" data-ng-click="widget.api.findPreviousEvent(this, eventSource.id, $event)"></i> <i title="{{\'common.ui.calendar.nextEvent\'|i18n:this}}" class="fa fa-fw fa-chevron-right prefix-icon" data-ng-click="widget.api.findNextEvent(this, eventSource.id, $event)"></i> </div> <div class=cc-event-source__inactive data-ng-if=!eventSource.active data-ng-click="widget.api.toggleEventSource(eventSource, this)"> <i title={{eventSource.name|i18n:this}} class="fa fa-square prefix-icon text-grey cc-solid-icon"></i> <span title={{eventSource.name|i18n:this}} class=text-grey> <cc-i18n data-key={{eventSource.name}}></cc-i18n> </span> </div> </div> <div style=width:100% data-uib-tooltip="{{\'common.ui.calendar.noNearestEventFound\'|i18n:this}}" data-tooltip-enable=widget.calendar.nearestEventNotFound data-tooltip-placement=bottom data-tooltip-is-open=widget.calendar.nearestEventNotFound></div> </div> <cc-calendar-filter></cc-calendar-filter> </div> <div class=cc-calendar-content></div> <div class="cc-calendar-popover popover {{widget.calendar.eventDetail.direction}} fade" data-ng-style="{\n                    width: eventPopoverWidth + \'px\',\n                    maxWidth: eventPopoverWidth + \'px\',\n                    top: widget.calendar.eventDetail.y + 5 + \'px\',\n                    left: widget.calendar.eventDetail.x + \'px\',\n                    opacity: !!widget.calendar.eventDetail ? 1 : 0,\n                    display: !!widget.calendar.eventDetail ? \'block\' : \'none\'\n                   }"> <div class=arrow></div> <div class="ibox-title fixed-height"> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <i title={{widget.calendar.eventDetail.event.primaryIconTitle|i18n:this}} class="fa prefix-icon {{widget.calendar.eventDetail.event.icon}}" data-ng-if=widget.calendar.eventDetail.event.icon></i> <cc-i18n data-ng-if="widget.calendar.eventDetail.titleType === \'none\'" data-key=common.ui.calendar.eventDetails.title></cc-i18n> <span data-ng-if="widget.calendar.eventDetail.titleType === \'String\'">{{widget.calendar.eventDetail.event.title}}</span> <cc-i18n data-ng-if="widget.calendar.eventDetail.titleType === \'TranslationField\'" data-key={{widget.calendar.eventDetail.event.i18nTitle.id}}></cc-i18n> </h5> <div class=ibox-tools data-ng-if=!widget.isEditingMode()> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div>
1 <button class="btn btn-xs btn-transparent" data-ng-click=widget.api.hidePopover(this)> <i class="fa fa-times"></i> </button> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex"> <div style="display: flex"> <button class="btn btn-xs btn-uppercase btn-success" data-ng-if="widget.calendar.eventDetail.dirty && widget.calendar.eventDetail.event.editable" data-ng-click="widget.api.updateEvent(this, widget.calendar.eventDetail.event); $event.stopPropagation()" data-ng-dblclick="widget.api.updateEvent(this, widget.calendar.eventDetail.event); $event.stopPropagation()" data-cc-i18n-title=common.save> <i class="fa fa-fw fa-check"></i> <cc-i18n data-key=common.save></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-danger" style="margin-left: 3px" data-ng-click=widget.api.hidePopover(this) data-ng-if=widget.calendar.eventDetail.dirty> <i class="fa fa-fw fa-ban"></i> <cc-i18n data-key=actions.CancelEditObjectAction></cc-i18n> </button> <cc-action data-action-id={{widget.api.getDeleteObjectAction(this)}} data-widget=widget data-ng-if="widget.calendar.eventDetail.event.editable && !widget.calendar.eventDetail.dirty" data-as-button=true data-custom-input="{eventId: widget.calendar.eventDetail.event.id}" data-show-icon=true data-no-margin="!(widget.calendar.eventDetail.dirty && widget.calendar.eventDetail.event.editable)" data-show-text=true></cc-action> </div> <div style="display: flex; flex-wrap: wrap" data-ng-if=!widget.calendar.eventDetail.dirty> <button class="btn btn-xs btn-primary btn-uppercase" style="margin-left: 3px" data-ng-if=widget.calendar.eventDetail.event.showDetails data-ng-click="widget.api.selection.activate(widget.calendar.eventDetail.event, this)" data-ng-disabled=widget.calendar.eventDetail.loading> <i class="fa fa-fw fa-circle-info"></i> <cc-i18n data-key=common.ui.calendar.openDetails></cc-i18n> </button> <div data-ng-if=widget.api.hasControls(this)> <cc-action data-ng-repeat="action in widget.api.getControls(this) track by $index" data-action-id={{action}} data-always-visible=true data-as-button=true data-show-text=true data-widget=widget data-option-origin-view-definition-id-override={{widget.calendar.editableEventSourceViewDefinitionId}}></cc-action> </div> </div> <div style="flex-grow: 1"></div> </div> <div class="ibox-content popover-inner" data-ng-if=widget.calendar.eventDetail> <div class="popover-content cc-form form-horizontal" data-ng-class="{\'disabled\': widget.calendar.eventDetail.event.editable}"> <div style="display: flex; flex-direction: column" data-ng-if="widget.calendar.eventDetail.titleType === \'String\'"> <label title="{{\'$defaults.attribute.title\'|i18n:this}}" class=text-ellipsis style="display: flex; align-content: stretch" data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <cc-i18n class=text-ellipsis style="margin-top: 3px; min-width: 20px" data-supports-customer-translation=true data-key=$defaults.attribute.title data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"></cc-i18n> <strong>*</strong> </label> <input class=form-control style="margin-left: 18px; width: auto" data-ng-model=widget.calendar.eventDetail.event.title autocomplete=off data-ng-change=bindValuePath({}) data-ng-class="{\'error\' : widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}" data-ng-disabled="widget.calendar.eventDetail.loading || !widget.calendar.eventDetail.event.editable"> <div class=text-error data-ng-if="widget.api.field.hasError(\'title\', this)"> <p data-ng-repeat="error in widget.api.field.getErrors(\'title\', undefined, this) track by $index" data-ng-bind-html=error></p> </div> <div class=text-error data-ng-if="widget.api.field.hasError(\'name\', this)"> <p data-ng-repeat="error in widget.api.field.getErrors(\'name\', undefined, this) track by $index" data-ng-bind-html=error></p> </div> </div> <div style="display: flex; flex-direction: column" data-ng-if="widget.calendar.eventDetail.titleType === \'TranslationField\'"> <label title="{{\'$defaults.attribute.title\'|i18n:this}}" class=text-ellipsis style="display: flex; align-content: stretch" data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"> <i title="{{\'widget.form.fieldPriority.important\'|i18n:this}}" class="fa fa-bookmark important prefix-icon info-icon cc-solid-icon"></i> <cc-i18n class=text-ellipsis style="margin-top: 3px;
1 min-width: 20px" data-supports-customer-translation=true data-key=$defaults.attribute.title data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"></cc-i18n> </label> <div style="margin-left: 18px; display: inline-block"> <cc-i18n data-key={{widget.calendar.eventDetail.event.i18nTitle.id}}></cc-i18n> </div> </div> <div class=vertical-offset-15 style="display: flex; flex-direction: column"> <label title="{{\'$defaults.attribute.eventPeriod\'|i18n:this}}" class=text-ellipsis style="display: flex; align-content: stretch" data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <cc-i18n class=text-ellipsis style="margin-top: 3px; min-width: 20px" data-supports-customer-translation=true data-key=$defaults.attribute.eventPeriod data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"></cc-i18n> <strong>*</strong> </label> <cc-event-period-picker style="display: flex; margin-left: 18px" data-ng-disabled=widget.calendar.eventDetail.loading></cc-event-period-picker> </div> <div style="width: 100%; display: flex"> <div class="full-width vertical-offset-15" data-ng-if=widget.calendar.eventDetail.event.status data-ng-repeat="eventStatus in widget.calendar.eventDetail.event.status"> <label title={{eventStatus.fieldI18n|i18n:this}} class=text-ellipsis style="display: flex; align-content: stretch"> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <cc-i18n class=text-ellipsis style="margin-top: 3px; min-width: 20px" data-supports-customer-translation=true data-key={{eventStatus.fieldI18n}} data-ng-class="{\'error\': widget.api.field.hasError(\'title\', this) || widget.api.field.hasError(\'name\', this)}"></cc-i18n> <strong>*</strong> <div class=label-action-connector data-ng-show=true> <hr> </div> <div class=field-actions style="display: flex"> <cc-action class=no-margin data-option-origin-view-definition-id-override={{widget.calendar.editableEventSourceViewDefinitionId}} data-action-id=RequestBookingEventAction data-visible="fieldActionVisibility[\'RequestBookingEventAction\']" data-show-icon=true data-show-text=true data-short-name=true data-as-button=true data-widget=widget></cc-action> <cc-action class=no-margin data-option-origin-view-definition-id-override={{widget.calendar.editableEventSourceViewDefinitionId}} data-action-id=ConfirmBookingEventAction data-visible="fieldActionVisibility[\'ConfirmBookingEventAction\']" data-show-icon=true data-show-text=true data-short-name=true data-as-button=true data-widget=widget></cc-action> <cc-action class=no-margin data-option-origin-view-definition-id-override={{widget.calendar.editableEventSourceViewDefinitionId}} data-action-id=RejectBookingEventAction data-visible="fieldActionVisibility[\'RejectBookingEventAction\']" data-show-icon=true data-show-text=true data-short-name=true data-as-button=true data-widget=widget></cc-action> <cc-action class=no-margin data-option-origin-view-definition-id-override={{widget.calendar.editableEventSourceViewDefinitionId}} data-action-id=CancelBookingEventAction data-visible="fieldActionVisibility[\'CancelBookingEventAction\']" data-show-icon=true data-show-text=true data-short-name=true data-as-button=true data-widget=widget></cc-action> </div> </label> <div style="margin-left: 18px; display: inline-block"> <i class="fa fa-fw prefix-icon {{eventStatus.icon}}" data-ng-if=eventStatus.icon></i> <cc-i18n data-key={{eventStatus.value.id}}></cc-i18n> </div> </div> </div> </div> </div> </div> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(item
1Config.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\',\'CalendarWidget\')}}"></i> </button> <button title="{{\'dev.navigationeditor.addUiItem\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.addUiItem(itemConfig.id)> <i class="fa fa-fw fa-plus-circle"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> <div class=cc-calendar-popover-backdrop data-ng-show=!!widget.calendar.eventDetail data-ng-mousedown="widget.api.hidePopover(this, $event)"></div> </div> '),e.put("scripts/directives/uiitem/widget/collection/collectionrenderer/bubbles.html",'<div class=cc-collection-bubbles> <ul class="list-group clear-list"> <li class=list-group-item data-ng-repeat="item in widget.data"> <div class="text-center entry" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}" data-ng-click="widget.api.selection.activate(item, this)"> <button class="btn btn-circle btn-primary btn-lg animated fadeIn" style="padding: 10px 13px" data-ng-class="{\'active\': widget.api.selection.isSelected(item, this)}"> <i class="fa fa-fw {{::widget.collection.icons[item.$viewDefinition]}}"></i> </button> <br> <p> <cc-collection-item></cc-collection-item> </p> </div> </li> <li class=list-group-item data-ng-if=!itemConfig.showHeader> <div class=text-center> <span title="{{\'ui.collectionWidget.create\'|i18n:this}}" class="btn-circle btn-secondary animated fadeIn btn-xs btn-group dropdown" data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length > 1" data-ng-show=widget.api.hasAnyVisibleCreateAction(this)> <i id=btn-append-to-body class="fa fa-plus clickable-icon" data-type=button data-uib-dropdown-toggle><span title="{{\'ui.collectionWidget.create\'|i18n:this}}" class=caret></span></i> <ul class="dropdown-menu dropdown-menu-right" data-uib-dropdown-menu> <li data-ng-repeat="action in widget.collection.actions.createActions"> <cc-action data-action-id={{action.id}} data-widget=widget data-as-link=true data-visible=widget.collection.actions.createActionVisibility[$index] data-option-model={{action.viewDefinitionId}} data-option-name-override="{{\'entity.\' + action.entity + \'.$entity\'}}" data-option-icon-override={{action.icon}} data-option-origin-entity-override={{action.entity}}></cc-action> </li> </ul> </span> <cc-action data-style="btn-circle btn-secondary animated fadeIn btn-xs" data-action-id={{widget.collection.actions.createActions[0].id}} data-widget=widget data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length === 1" data-option-model={{widget.collection.actions.createActions[0].viewDefinitionId}} data-option-name-override="{{\'entity.\' + widget.collection.actions.createActions[0].entity + \'.$entity\'}}" data-option-origin-entity-override={{widget.collection.actions.createActions[0].entity}}></cc-action> </div> </li> </ul> </div> '),e.put("scripts/directives/uiitem/widget/collection/collectionrenderer/default.html",'<div class=cc-collection-default> <ul class="list-group clear-list"> <li class=list-group-item data-ng-repeat="item in widget.data"> <cc-collection-item data-ng-click="widget.api.selection.activate(item, this)"></cc-collection-item> </li> <li class=list-group-item data-ng-if=!itemConfig.showHeader> <div class=text-center> <span title="{{\'ui.collectionWidget.create\'|i18n:this}}" class="btn-circle btn-secondary animated fadeIn btn-xs btn-group dropdown" data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length > 1" data-ng-show=widget.api.hasAnyVisibleCreateAction(this)> <i id=btn-append-to-body class="fa fa-plus clickable-icon" data-type=button data-uib-dropdown-toggle> <span title="{{\'ui.collectionWidget.create\'|i18n:this}}" class=caret></span></i> <ul class="dropdown-menu dropdown-menu-right" data-uib-dropdown-menu> <li data-ng-repeat="action in widget.collection.actions.createActions"> <cc-action data-action-id={{action.id}} data-widget=widget data-as-link=true data-visible=widget.collection.actions.createActionVisibility[$index] data-option-model={{action.viewDefinitionId}} data-option-name-override="{{\'entity.\' + action.entity + \'.$entity\'}}
1" data-option-icon-override={{action.icon}} data-option-origin-entity-override={{action.entity}}></cc-action> </li> </ul> </span> <cc-action class="btn-circle btn-secondary animated fadeIn btn-xs" data-action-id={{widget.collection.actions.createActions[0].id}} data-widget=widget data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length === 1" data-option-model={{widget.collection.actions.createActions[0].viewDefinitionId}} data-option-name-override="{{\'entity.\' + widget.collection.actions.createActions[0].entity + \'.$entity\'}}" data-option-origin-entity-override={{widget.collection.actions.createActions[0].entity}}></cc-action> </div> </li> </ul> </div> '),e.put("scripts/directives/uiitem/widget/collection/collectionrenderer/list.html",'<div class=cc-collection-list data-ng-repeat="viewDefinition in getMappingsWithItems()"> <label class=text-ellipsis data-ng-if="getMappingsWithItems().length > 1 || itemConfig.alwaysShowMappingType"> <i class="text-primary fa prefix-icon" data-ng-class=viewDefinition.icon></i> <cc-i18n data-key="{{\'entity.\'+widget.model.baseModel[viewDefinition.mutableViewDefinition].entity+\'.$entity\'}}"></cc-i18n> </label> <ul class=list-group> <li class=list-group-item data-ng-class="{\n                \'cc-collection-item-list-active\': widget.api.selection.isSelected(item, this),\n                \'clickable\': widget.selection.canSelect\n            }" data-ng-repeat="item in widget.data" data-ng-click="widget.api.selection.activate(item, this)" data-ng-if="item.$viewDefinition === viewDefinition.mutableViewDefinition"> <cc-collection-item style="display: flex;"></cc-collection-item> </li> </ul> </div> '),e.put("scripts/directives/uiitem/widget/collection/collectionrenderer/studiesjournal.html",'<div class=timeline-collection-renderer> <ol style="margin-bottom: 0; white-space: nowrap; display: flex; list-style-type: none; justify-content: flex-start; height: 130px; margin-top: 10px; padding: 0 10px 0 0; overflow: auto"> <li data-ng-repeat="item in widget.data"> <div> <cc-collection-item data-ng-click="widget.api.selection.toggle(item, this, $event)"></cc-collection-item> </div> <div class=timeline-collection-renderer-mark></div> </li> </ol> <div class=timeline-collection-renderer-line></div> </div> '),e.put("scripts/directives/uiitem/widget/collection/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <i title="{{\'common.ui.usesOldPermissions\'|i18n:this}}" class="fa fa-exclamation-circle text-red prefix-icon" data-ng-if=widget.api.model.showOldPermissionsIndicator(this)></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.data data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex"> <button title="{{\'ui.collectionWidget.create\'|i18n:this}}" class="btn btn-xs btn-uppercase btn-success dropdown" data-uib-dropdown data-auto-close
1=always data-dropdown-append-to-body data-uib-dropdown-toggle data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length > 1" data-ng-show=widget.api.hasAnyVisibleCreateAction(this)> <i id=btn-append-to-body class="fa fa-fw fa-file clickable-icon" data-type=button></i> <cc-i18n data-key=common.create data-supports-customer-translation=true data-ng-if=::widget.api.showCrudButtonLabels(this)></cc-i18n> <i class="fa fa-caret-down"></i> <ul class="dropdown-menu dropdown-menu-left" data-uib-dropdown-menu> <li data-ng-repeat="action in widget.collection.actions.createActions"> <cc-action data-action-id={{action.id}} data-widget=widget data-as-link=true data-button-style=primary data-visible=widget.collection.actions.createActionVisibility[$index] data-option-model={{action.viewDefinitionId}} data-option-name-override="{{\'entity.\' + action.entity + \'.$entity\'}}" data-option-icon-override={{action.icon}} data-option-origin-entity-override={{action.entity}}></cc-action> </li> </ul> </button> <cc-action data-action-id={{widget.collection.actions.createActions[0].id}} data-widget=widget data-show-text=true data-as-button=true data-ng-if="widget.collection.actions.initialized && widget.collection.actions.createActions.length === 1" data-option-model={{widget.collection.actions.createActions[0].viewDefinitionId}} data-show-text=::widget.api.showCrudButtonLabels(this) data-option-origin-entity-override={{widget.collection.actions.createActions[0].entity}}></cc-action> <cc-action data-action-id={{action.id}} data-widget=widget data-ng-repeat="action in widget.collection.actions.deleteActions" data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.collection.actions.initialized && widget.collection.actions.selectedEntity === action.entity"></cc-action> </div> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.CollectionWidget.$entity data-extras-title-key=entity.CollectionWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class=ibox-content style="display: flex; flex-direction: column" data-ng-class="{\'transparent\': widget.api.ui.isTransparent(this), \'no-padding\': itemConfig.noPadding}"> <div id={{::widget.api.getId(this)}} class="cc-collection {{::widget.api.getAlignment(this)}}"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <cc-collection-renderer> </div> <div class="controls text-center" data-ng-if=widget.api.hasControls(this)> <cc-control data-control=control data-widget=widget data-ng-repeat="control in widget.action.control"></cc-control> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <div style="display: flex; align-items: center"> <div data-ng-if="widget.api.selection.count(this) > 0"> <i title="{{\'widget.collection.count.selected\'|i18n:this}}" class="fa fa-check-circle prefix-icon info-icon"></i> <span class="badge-secondary count-selected">{{widget.api.selection.count(this)}}</span> </div> <div> <i title="{{\'widget.collection.count.full\'|i18n:this}}" class="fa fa-circle suffix-icon prefix-icon"></i> <span class="badge-secondary count-all">{{widget.api.data.count(this)}}</span> </div> </div> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(item
1Config.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\', \'CollectionWidget\')}}"></i> </button> <button title="{{\'common.editViewDefinition\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.model.editViewDefinition(itemConfig.id, itemConfig.viewDefinition, this)"> <i class="fa fa-fw fa-wrench"></i> </button> <button title="{{\'dev.navigationeditor.addUiItem\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.addUiItem(itemConfig.id)> <i class="fa fa-fw fa-plus-circle"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/custom/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.data data-ng-click="!isEditingMode() && widget.api.help.toggleShowHelp(this)"></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools data-ng-if=!widget.isEditingMode()> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-as-button=true data-caret-position=right data-title-key=widget.exportActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.CustomWidget.$entity data-extras-title-key=entity.CustomWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class=ibox-content style="display: flex; flex-direction: column" data-ng-class="{\'transparent\': widget.api.ui.isTransparent
1(this), \'no-padding\': itemConfig.noPadding, \'no-top-border\': !itemConfig.showHeader}"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <div id={{::widget.api.getId(this)}} class=cc-custom style="flex-grow: 1; overflow: auto"> <div class="custom-widget-content full-height" data-ng-include=widget.api.getTemplate(this)> </div> </div> <div class="controls text-center" data-ng-if=widget.api.hasControls(this)> <cc-control data-control=control data-widget=widget data-ng-repeat="control in widget.action.control"></cc-control> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(itemConfig.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\',\'CustomWidget\')}}"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/description.html",'<div class="alert alert-info flex-simple" data-ng-if=!!description> <div class="hint-text flex-simple" style="flex-grow: 1; flex-direction: column"> <div data-ng-click=toggle()> <cc-i18n data-key=common.description class=text-bold data-supports-customer-translation=true></cc-i18n> <cc-i18n data-key=common.clickToShow class=text-bold data-supports-customer-translation=true data-ng-if=!visible></cc-i18n> </div> <div class=vertical-offset-10 data-ng-if=visible> <cc-i18n data-key={{description.id}} data-supports-customer-translation=true></cc-i18n> </div> </div> <div class=icon-align-to-text data-ng-click=toggle()> <i class="fa fa-fw" data-ng-class="{\'fa-chevrons-down\': !visible, \'fa-chevrons-up\': visible}"></i> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/field.html",'<div data-ng-repeat="fieldInformation in fields track by fieldInformation.valuePath+fieldInformation.footer" data-ng-controller=directives.uiitem.widget.form.FieldApiController> <div data-ng-style="{marginLeft: depth * ((widget.api.isViewMode(this) && itemConfig.noIndentationInView) || (widget.api.isEditMode(this) && itemConfig.noIndentationInEdit) ? 0 : 20) + \'px\'}"> <div class=editor-label style="height: 22px; display: flex" data-ng-if="!fieldInformation.hideLabel && !fieldInformation.footer"> <label class="full-width text-ellipsis" style="display: flex; align-content: stretch" for={{fieldInformation.model.elementId}} data-ng-class="{\'error\': widget.api.field.hasError(valuePath, widget._scope)}" data-cc-i18n-title="(_.isUndefined(field.nameOverride) ? (\'entity.\' + (field.entity || objectModel.viewDefinitionId) + \'.\' + field.name) : field.nameOverride.id)"> <cc-priority-marker data-value-path={{::valuePath}} data-ng-click=handleFieldLabelClick(fieldInformation)></cc-priority-marker> <cc-i18n class=text-ellipsis style="margin-top: 3px;
1 min-width: 20px" data-supports-customer-translation=!itemConfig.preventDesignMode data-key="{{_.isUndefined(field.nameOverride) ? \'entity.\' + (field.entity || objectModel.viewDefinitionId) + \'.\' + field.name : field.nameOverride.id}}" data-params="setTranslationParameters(fieldInformation, widget)" data-ng-class="{\'error\': widget.api.field.hasError(valuePath, widget._scope)}" data-label-path={{valuePath}} data-ng-click=handleFieldLabelClick(fieldInformation)></cc-i18n> <strong data-ng-if=isMandatory()> *</strong> <div class=label-action-connector data-ng-if=widget.api.isViewMode(this) data-ng-show=hasVisibleFieldActions(this)> <hr> </div> <div class=field-actions style="display: flex" data-ng-if=widget.api.isViewMode(this) data-ng-show=hasVisibleFieldActions(this)> <cc-action class=no-margin data-ng-repeat="action in fieldActions" data-ng-if=!field.fieldActionsAsMenu data-action-id={{action.id}} data-show-icon=true data-show-text=true data-short-name=true data-as-button=true data-visible=fieldActionVisibility[action.id] data-widget=widget></cc-action> <cc-action-menu data-action-ids=fieldActionIds data-widget=widget data-ng-if="fieldActionVisibility && fieldActionIds.length && field.fieldActionsAsMenu" data-action-visibility=fieldActionVisibility data-caret-position=right data-show-icon=true menu-icon=fa-cog data-show-text=true data-title-key=widget.actions data-as-button=true></cc-action-menu> </div> </label> </div> <div class="field-display-type horizontal-offset-20 vertical-offset-5 hint-text alert alert-info" data-ng-if="!!field.hint && _.isUndefined(fieldInformation.collectionIndex) && !fieldInformation.footer"> <cc-i18n data-supports-customer-translation=!itemConfig.preventDesignMode data-key={{field.hint.id}}></cc-i18n> </div> <div class="field-display-type horizontal-offset-20" data-ng-switch=fieldInformation.displayType data-ng-if="fieldInformation.displayType !== \'OBJECT\' && !fieldInformation.hideCollectionField && !fieldInformation.footer"> <cc-address data-ng-switch-when=ADDRESS data-value-path={{::valuePath}}></cc-address> <cc-attribute data-ng-switch-when=ATTRIBUTE data-value-path={{::valuePath}}></cc-attribute> <cc-archive-path data-ng-switch-when=ARCHIVEPATH data-value-path={{::valuePath}}></cc-archive-path> <cc-archive-path-picker data-ng-switch-when=ARCHIVEPATHPICKER data-value-path={{::valuePath}}></cc-archive-path-picker> <cc-basic-date-period data-ng-switch-when=BASICDATEPERIOD data-value-path={{::valuePath}}></cc-basic-date-period> <cc-boolean data-ng-switch-when=BOOLEAN data-value-path={{::valuePath}}></cc-boolean> <cc-category data-ng-switch-when=CATEGORY data-value-path={{::valuePath}}></cc-category> <cc-checkbox data-ng-switch-when=CHECKBOX data-value-path={{::valuePath}}></cc-checkbox> <cc-collection-size data-ng-switch-when=COLLECTIONSIZE data-value-path={{::valuePath}}></cc-collection-size> <cc-color data-ng-switch-when=COLOR data-value-path={{::valuePath}}></cc-color> <cc-color-picker data-ng-switch-when=COLORPICKER data-value-path={{::valuePath}}></cc-color-picker> <cc-credential data-ng-switch-when=CREDENTIAL data-value-path={{::valuePath}}></cc-credential> <cc-date data-ng-switch-when=DATE data-value-path={{::valuePath}}></cc-date> <cc-date-period data-ng-switch-when=DATEPERIOD data-value-path={{::valuePath}}></cc-date-period> <cc-date-picker data-ng-switch-when=DATEPICKER data-value-path={{::valuePath}}></cc-date-picker> <cc-date-of-monday-week-picker data-ng-switch-when=DATEOFMONDAYWEEKPICKER data-value-path={{::valuePath}}></cc-date-of-monday-week-picker> <cc-date-of-sunday-week-picker data-ng-switch-when=DATEOFSUNDAYWEEKPICKER data-value-path={{::valuePath}}></cc-date-of-sunday-week-picker> <cc-display-name data-ng-switch-when=DISPLAYNAME data-value-path={{::valuePath}}></cc-display-name> <cc-duration data-ng-switch-when=DURATION data-value-path={{::valuePath}}></cc-duration> <cc-duration-picker data-ng-switch-when=DURATIONPICKER data-value-path={{::valuePath}}></cc-duration-picker> <cc-dynamic-grade-picker data-ng-switch-when=DYNAMICGRADEPICKER data-value-path={{::valuePath}}></cc-dynamic-grade-picker> <cc-event-period data-ng-switch-when=EVENTPERIOD data-value-path={{::valuePath}}></cc-event-period> <cc-event-period-picker data-ng-switch-when=EVENTPERIODPICKER data-value-path={{::valuePath}}></cc-event-period-picker> <cc-email data-ng-switch-when=EMAIL data-value-path={{::valuePath}}></cc-email> <cc-entity-name data-ng-switch-when=ENTITYNAME data-value-path={{::valuePath}}></cc-entity-name> <cc-enum-value data-ng-switch-when=ENUMVALUE data-value-path={{::valuePath}}></cc-enum-value>
1 <cc-enum-value-counter data-ng-switch-when=ENUMVALUECOUNTER data-value-path={{::valuePath}}></cc-enum-value-counter> <cc-field-hint data-ng-switch-when=FIELDHINT data-value-path={{::valuePath}}></cc-field-hint> <cc-field-header data-ng-switch-when=FIELDHEADER data-value-path={{::valuePath}}></cc-field-header> <cc-file data-ng-switch-when=FILE data-value-path={{::valuePath}}></cc-file> <cc-file-size data-ng-switch-when=FILESIZE data-value-path={{::valuePath}}></cc-file-size> <cc-file-size-picker data-ng-switch-when=FILESIZEPICKER data-value-path={{::valuePath}}></cc-file-size-picker> <cc-file-type data-ng-switch-when=FILETYPE data-value-path={{::valuePath}}></cc-file-type> <cc-file-upload data-ng-switch-when=FILEUPLOAD data-value-path={{::valuePath}}></cc-file-upload> <cc-file-selector-upload data-ng-switch-when=FILESELECTORUPLOAD data-value-path={{::valuePath}}></cc-file-selector-upload> <cc-filter-attribute data-ng-switch-when=FILTERATTRIBUTE data-value-path={{::valuePath}}></cc-filter-attribute> <cc-filter-attribute-picker data-ng-switch-when=FILTERATTRIBUTEPICKER data-value-path={{::valuePath}}></cc-filter-attribute-picker> <cc-filter-path data-ng-switch-when=FILTERPATH data-value-path={{::valuePath}}></cc-filter-path> <cc-filter-path-picker data-ng-switch-when=FILTERPATHPICKER data-value-path={{::valuePath}}></cc-filter-path-picker> <cc-grade data-ng-switch-when=GRADE data-value-path={{::valuePath}}></cc-grade> <cc-html data-ng-switch-when=HTML data-value-path={{::valuePath}}></cc-html> <cc-html-editor data-ng-switch-when=HTMLEDITOR data-value-path={{::valuePath}}></cc-html-editor> <cc-icon data-ng-switch-when=ICON data-value-path={{::valuePath}}></cc-icon> <cc-icon-picker data-ng-switch-when=ICONPICKER data-value-path={{::valuePath}}></cc-icon-picker> <cc-image data-ng-switch-when=IMAGE data-value-path={{::valuePath}}></cc-image> <cc-image-upload data-ng-switch-when=IMAGEUPLOAD data-value-path={{::valuePath}}></cc-image-upload> <cc-in-default data-ng-switch-when=INDEFAULT data-value-path={{::valuePath}}></cc-in-default> <cc-in-default-picker data-ng-switch-when=INDEFAULTPICKER data-value-path={{::valuePath}}></cc-in-default-picker> <cc-label data-ng-switch-when=LABEL data-value-path={{::valuePath}}></cc-label> <cc-link data-ng-switch-when=LINK data-value-path={{::valuePath}}></cc-link> <cc-money data-ng-switch-when=MONEY data-value-path={{::valuePath}}></cc-money> <cc-percent data-ng-switch-when=PERCENT data-value-path={{::valuePath}}></cc-percent> <cc-money-picker data-ng-switch-when=MONEYPICKER data-value-path={{::valuePath}}></cc-money-picker> <cc-month-day data-ng-switch-when=MONTHDAY data-value-path={{::valuePath}}></cc-month-day> <cc-month-day-picker data-ng-switch-when=MONTHDAYPICKER data-value-path={{::valuePath}}></cc-month-day-picker> <cc-multi-select data-ng-switch-when=MULTISELECT data-value-path={{::valuePath}}></cc-multi-select> <cc-multi-typeahead data-ng-switch-when=MULTITYPEAHEAD data-value-path={{::valuePath}}></cc-multi-typeahead> <cc-number data-ng-switch-when=NUMBER data-value-path={{::valuePath}}></cc-number> <cc-password data-ng-switch-when=PASSWORD data-value-path={{::valuePath}}></cc-password> <cc-password-placeholder data-ng-switch-when=PASSWORDPLACEHOLDER data-value-path={{::valuePath}}></cc-password-placeholder> <cc-passwordwithoutconfirmation data-ng-switch-when=PASSWORDWITHOUTCONFIRMATION data-value-path={{::valuePath}}></cc-passwordwithoutconfirmation> <cc-phone data-ng-switch-when=PHONE data-value-path={{::valuePath}}></cc-phone> <cc-recurrence-rule data-ng-switch-when=RRULE data-value-path={{::valuePath}}></cc-recurrence-rule> <cc-filter-variable data-ng-switch-when=FILTERVARIABLE data-value-path={{::valuePath}}></cc-filter-variable> <cc-pre-formatted-text data-ng-switch-when=PREFORMATTEDTEXT data-value-path={{::valuePath}}></cc-pre-formatted-text> <cc-release-note-type data-ng-switch-when=RELEASENOTETYPE data-value-path={{::valuePath}}></cc-release-note-type> <cc-select data-ng-switch-when=SELECT data-value-path={{::valuePath}}></cc-select> <cc-static-grade-picker data-ng-switch-when=STATICGRADEPICKER data-value-path={{::valuePath}}></cc-static-grade-picker> <cc-shareable-attribute-path data-ng-switch-when=SHAREABLEATTRIBUTEPATH data-value-path={{::valuePath}}></cc-shareable-attribute-path> <cc-shareable-attribute-path-picker data-ng-switch-when=SHAREABLEATTRIBUTEPATHPICKER data-value-path={{::valuePath}}></cc-shareable-attribute-path-picker> <cc-auth-attribute-mapping-path data-ng-switch-when=AUTHATTRIBUTEMAPPINGPATH data-value-path={{::valuePath}}></cc-auth-attribute-mapping-path> <cc-auth-attribute-mapping-path-picker data-ng-switch-when=AUTHATTRIBUTEMAPPINGPATHPICKER data-value-path={{::valuePath}}></cc-auth-attribute-mapping-path-picker> <cc-date-path data-ng-switch-when=DATEPATH data-value-path={{::valuePath}}></cc-date-path> <cc-date-path-picker data-ng-switch-when=DATEPATHPICKER data-value-path={{::valuePath}}></cc-date-path-picker> <cc-tag data-ng-switch-when=TAG data-value-path={{::valuePath}}></cc-tag> <cc-text data-ng-switch-when=TEXT data-value-path={{::valuePath}}></cc-text> <cc-textarea data-ng-switch-when=TEXTAREA data-value-path={{::valuePath}}></cc-textarea> <cc-time data-ng-switch-when=TIME data-value-path={{::valuePath}}></cc-time> <cc-time-picker data-ng-switch-when=TIMEPICKER data-value-path={{::valuePath}}></cc-time-picker> <cc-translation-field data-ng-switch-when=TRANSLATIONFIELD data-value-path={{::valuePath}}></cc-translation-field> <cc-typeahead data-ng-switch-when=TYPEAHEAD data-value-path={{::valuePath}}></cc-typeahead> <cc-url data-ng-switch-when=URL data-value-path={{::valuePath}}></cc-url>
1 <cc-view-definition data-ng-switch-when=VIEWDEFINITION data-value-path={{::valuePath}}></cc-view-definition> <cc-view-field data-ng-switch-when=VIEWFIELD data-value-path={{::valuePath}}></cc-view-field> <cc-week-of-date data-ng-switch-when=WEEKOFDATE data-value-path={{::valuePath}}></cc-week-of-date> <cc-week-of-date-period data-ng-switch-when=WEEKOFDATEPERIOD data-value-path={{::valuePath}}></cc-week-of-date-period> </div> <div style="height: 10px;" data-ng-if="fieldInformation.collectionFooter && fieldInformation.collectionSize == 0"></div> <div class=horizontal-offset-20 data-ng-if="fieldInformation.collectionSize !== undefined && showCollectionButtons && fieldInformation.footer && !(fieldInformation.model.minimumCollectionSize == 1 && fieldInformation.model.maximumCollectionSize == 1) && (!fieldInformation.collectionFooter || fieldInformation.collectionSize == 0) && fieldInformation.collectionPermissions.$anyCollectionPermission" data-ng-class="{\'object-collection-buttons\': fieldInformation.displayType === \'OBJECT\', \'simple-type-collection-buttons\': fieldInformation.displayType !== \'OBJECT\'}"> <span class="input-group-addon function-marker without-field"> <i title="{{\'widget.form.field.object.moveUp\'|i18n:this}}" class="fa fa-chevron-up clickable-icon" data-ng-if="fieldInformation.collectionPermissions.$arrange && fieldInformation.collectionIndex > 0" data-ng-click="moveElementInCollection(valuePath, -1)"></i> <i title="{{\'widget.form.field.object.moveDown\'|i18n:this}}" class="fa fa-chevron-down clickable-icon" data-ng-if="fieldInformation.collectionPermissions.$arrange && fieldInformation.collectionIndex < fieldInformation.collectionSize - 1" data-ng-click="moveElementInCollection(valuePath, 1)"></i> <i title="{{\'widget.form.field.object.addObject\'|i18n:this}}" class="fa fa-plus clickable-icon" data-ng-if="fieldInformation.collectionPermissions.$insert && (!fieldInformation.model.maximumCollectionSize || (fieldInformation.collectionSize < fieldInformation.model.maximumCollectionSize)) && (!fieldInformation.collectionFooter || fieldInformation.collectionSize == 0)" data-ng-click="addElementToCollection(valuePath, field, fieldInformation.collectionIndex)"></i> <i title="{{\'widget.form.field.object.removeObject\'|i18n:this}}" class="fa fa-minus clickable-icon" data-ng-if="fieldInformation.collectionPermissions.$remove && fieldInformation.collectionIndex > -1 && (!fieldInformation.model.minimumCollectionSize || fieldInformation.collectionSize > fieldInformation.model.minimumCollectionSize)" data-ng-click=removeElementFromCollection(valuePath)></i> </span> </div> <cc-form-file-collection-download class=horizontal-offset-20 data-ng-if="fieldInformation.collectionFooter && fieldInformation.displayType === \'FILE\' && fieldInformation.collectionSize !== undefined &&  fieldInformation.collectionSize > 1 && fieldInformation.collectionPermissions.$read" data-widget=widget data-value-path=valuePath></cc-form-file-collection-download> <cc-form-default-value class=horizontal-offset-20 data-ng-if="fieldInformation.footer && field.hasDefaultValue && widget.api.isEditMode(this) && field.$write" data-field=this data-widget=widget data-value-path=valuePath></cc-form-default-value> <div class=horizontal-offset-20 data-ng-if="_.isUndefined(fieldInformation.collectionIndex) && !fieldInformation.footer"> <cc-field-help></cc-field-help> </div> <div class=horizontal-offset-20 data-ng-if=fieldInformation.footer data-ng-style="{ marginBottom: (fieldInformation.collectionSize && fieldInformation.collectionIndex < fieldInformation.collectionSize-1 ? 0 : 15) + \'px\' }"> <div class=text-error data-ng-if="widget.api.field.hasError(valuePath, this)"> <p data-ng-repeat="error in widget.api.field.getErrors(valuePath, field, this) track by $index" data-ng-bind-html=error></p> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldhelp.html",'<div data-ng-if="fieldInformation.showHelp && !field.helpReady"> <div class="alert alert-info text-center full-width"> <i class="fa fa-circle-notch fa-spin"></i> </div> </div> <div class="form-control-static hint-text full-width clickable" data-ng-if="fieldInformation.showHelp && field.helpReady" data-ng-click=toggleShowHelpField(fieldInformation)> <div class="alert alert-info"> <div data-ng-repeat="h in field.helpTranslationFields" class=text-justify data-ng-class="{\'vertical-offset-5\': !$first}"> <cc-i18n data-key={{h}}></cc-i18n> </div> <div data-ng-if=widget.api.isEditMode(this)> <div data-ng-repeat="dtHelp in field.editDisplayTypeHelpTranslationFields" class=text-justify> <cc-i18n data-key={{dtHelp}}></cc-i18n> </div> <div data-ng-repeat="cHelp in field.collectionHelpTranslationFields" class=text-justify> <cc-i18n data-key={{cHelp}}></cc-i18n> </div> <br data-ng-if="field.dataTypeHelpTranslationFields.length > 0"> <div data-ng-repeat="d in field.dataTypeHelpTranslationFields" class=text-justify> <cc-i18n data-key={{d}}></cc-i18n> </div> </div> </div> </div>'),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/address/address.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isEmptyAddress> <span data-ng-if=!!typeName> <i data-ng-if=!!getValue().type.icon class="fa {{getValue().type.icon}} prefix-icon"></i>{{typeName}}<br> </span> <span data-ng-repeat="line in getValue().lines">{{line._item.line}}<br></span> <span data-ng-if="!!getValue().zipcode || !!getValue().city"> <span data-ng-if=!!getValue().zipcode>{{getValue().zipcode}}&nbsp;</span> <span data-ng-if=!!getValue().city>{{getValue().city}}</span> <br> </span> <span data-ng-if=!!countyName>{{countyName}}<br></span> <span data-ng-if=!!regionName>{{regionName}}<br></span> <span data-ng-if=!!countryName>{{countryName}}</span> </span> <span data-ng-if=isEmptyAddress class=placeholder>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/archivepath/archivepath.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-repeat="translation in getPath()"> <cc-i18n data-key={{translation}}></cc-i18n> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/archivepathpicker/archivepathpicker.html",'<p class=form-control-static data-ng-if=!validEntity> <cc-i18n data-key=widget.form.field.pathPicker.noValidEntity></cc-i18n> </p> <div data-ng-if=validEntity> <p class=form-control-static style="margin-bottom: 5px" id={{fieldInformation.model.elementId}} tabindex=0> <span> <kbd class=background-grey style="box-shadow: none"> <cc-i18n data-key={{translatedBaseModelName}}></cc-i18n> </kbd> <span data-ng-repeat="token in getPathTokens() track by $index"> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i> <kbd> <cc-i18n data-key="{{getTranslation($index + 1)}}"></cc-i18n> <span data-ng-click=removeTokens($index) class=clickable> <i class="fa fa-times suffix-icon"></i> </span> </kbd> </span> </span> </p> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info">
1 <cc-i18n data-key=datepath.createPath data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length > 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.availableQuantifierAttributes data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length === 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.simpleAttribute data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button data-ng-repeat="attribute in modelContext.attributes track by $index" class="btn btn-white" data-ng-click=selectToken(attribute) data-ng-if="modelContext.attributes.length > 0" type=button> <i class="fa fa-list prefix-icon" data-ng-if=attribute.collection title="{{\'filter.collection\'|i18n:this}}"></i> <i class="fa fa-link prefix-icon" data-ng-if="!attribute.isSimpleType && !attribute.collection" title="{{\'datepath.navigableAttribute\'|i18n:this}}"></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/authattributemappingpath/authattributemappingpath.html",'<p class=form-control-static> <span data-ng-if=!isValueEmpty() data-ng-repeat="translation in getPath()"> <cc-i18n data-key={{translation}}></cc-i18n> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/authattributemappingpathpicker/authattributemappingpathpicker.html",'<p class=form-control-static data-ng-if=!validEntity> <cc-i18n data-key=widget.form.field.pathPicker.noValidEntity></cc-i18n> </p> <div data-ng-if=validEntity> <p class=form-control-static style="margin-bottom: 5px"> <span> <kbd class=background-grey style="box-shadow: none"> <cc-i18n data-key={{translatedBaseModelName}}></cc-i18n> </kbd> <span data-ng-repeat="token in getPathTokens() track by $index"> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i> <kbd> <cc-i18n data-key="{{getTranslation($index + 1)}}"></cc-i18n> <span data-ng-click=removeTokens($index) class=clickable> <i class="fa fa-times suffix-icon"></i> </span> </kbd> </span> </span> </p> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info"> <cc-i18n data-key=datepath.createPath data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length > 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.availableQuantifierAttributes data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length === 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.simpleAttribute data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button data-ng-repeat="attribute in modelContext.attributes track by $index" class="btn btn-white" data-ng-click=selectToken(attribute) data-ng-if="modelContext.attributes.length > 0" type=button> <i class="fa fa-list prefix-icon" data-ng-if=attribute.collection title="{{\'filter.collection\'|i18n:this}}"></i> <i class="fa fa-link prefix-icon" data-ng-if="!attribute.isSimpleType && !attribute.collection" title="{{\'datepath.navigableAttribute\'|i18n:this}}"></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/basicdateperiod/basicdateperiod.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if="hasStart() || hasEnd()"> <i class="fa fa-calendar-alt prefix-icon"></i> <span data-ng-if=hasStart()>{{getStartDate()}}</span>&nbsp;-&nbsp;<span data-ng-if=hasEnd()>{{getEndDate()}}</span> </span> <span data-ng-if="!hasStart() && !hasEnd()">&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/boolean/boolean.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=isValueTrue()><i class="fa fa-check text-green prefix-icon"></i>{{getTrueLabel()}}</span> <span data-ng-if=isValueFalse()><i class="fa fa-times text-red prefix-icon"></i>{{getFalseLabel()}}</span> <span data-ng-if=isValueEmpty() class=placeholder>{{getEmptyLabel()}}</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/category/category.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty() class="label label-primary"> <cc-i18n data-key={{getCategoryNameId()}} class=text-uppercase></cc-i18n> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/checkbox/checkbox.html","<div class=input-group id={{fieldInformation.model.elementId}} tabindex=0> <div class=btn-group> <button data-ng-click=\"setValue(true, true)\" class=\"btn btn-white\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueTrue(), 'dirty': dirty }\" type=button> <i class=\"fa fa-check text-green prefix-icon\"></i> <span>{{getTrueLabel()}}</span> </button> <button data-ng-click=\"setValue(false, true)\" class=\"btn btn-white\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueFalse(), 'dirty': dirty }\" type=button> <i class=\"fa fa-times text-red prefix-icon\"></i> <span>{{getFalseLabel()}}</span> </button> <button data-ng-click=\"setValue(null, true)\" class=\"btn btn-white\" data-ng-if=\"!widget.api.field.isMandatory(valuePath, this, field)\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueEmpty(), 'dirty': dirty }\" type=button> <i class=\"fa fa-times-circle\"></i> <span>{{getEmptyLabel()}}</span> </button> </div> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/collectionsize/collectionsize.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span>{{getCollectionSize()}}</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/color/color.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty()> <i title={{getValue()}} class="fa fa-square prefix-icon cc-solid-icon" data-ng-style="{ color:  getValue() }"></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/colorpicker/colorpicker.html","<div class=\"input-group fixed-width-input-50\"> <input id={{fieldInformation.model.elementId}} type=color data-ng-model=color data-spectrum-colorpicker data-options=pickerOptions data-
1palette=pickerPalette data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'dirty': dirty }\" data-format=\"'hex'\" class=\"form-control color-picker\" style=\"background-color: {{getValue()}}\" title=\"{{'widget.form.field.colorPicker.select'|i18n:this}}\"> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/date/date.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isEmptyDate()>{{getFormattedDate()}}</span> <span data-ng-if=isEmptyDate()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/dateofmondayweekpicker/dateofmondayweekpicker.html",'<div class="input-group fixed-width-input-190"> <input id={{fieldInformation.model.elementId}} class=form-control data-ui-mask={{getInputMask()}} data-ui-options="{clearOnBlur: false}" data-ng-model=$displayName data-ng-change=updateFormData(true) data-allow-invalid-value=true data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'ng-dirty\': dirty }"> <span class="input-group-addon cc-datepicker-calendarweek"> {{\'common.calendarWeek\'|i18n:this}} {{calendarWeek}} </span> <span class="input-group-addon function-marker" data-dropdown-append-to-body=true> <i id={{selectorId}} title="{{\'widget.form.field.datePicker.select\'|i18n:this}}" class="fa {{getPickerIcon()}} clickable-icon dropdown-toggle" data-toggle=dropdown></i> <ul class="dropdown-menu datepicker" data-uib-dropdown-menu> <datetimepicker data-ng-model=bindValuePath data-ng-model-options="{getterSetter: true}" data-before-render="beforeRender($view, $dates)" data-datetimepicker-config=getPickerOptions() data-on-set-time=selectDate(newDate)></datetimepicker> </ul> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/dateofsundayweekpicker/dateofsundayweekpicker.html",'<div class="input-group fixed-width-input-190"> <input id={{fieldInformation.model.elementId}} class=form-control data-ui-mask={{getInputMask()}} data-ui-options="{clearOnBlur: false}" data-ng-model=$displayName data-ng-change=updateFormData(true) data-allow-invalid-value=true data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'ng-dirty\': dirty }"> <span class="input-group-addon cc-datepicker-calendarweek"> {{\'common.calendarWeek\'|i18n:this}} {{calendarWeek}} </span> <span class="input-group-addon function-marker" data-dropdown-append-to-body=true> <i id={{selectorId}} title="{{\'widget.form.field.datePicker.select\'|i18n:this}}" class="fa {{getPickerIcon()}} clickable-icon dropdown-toggle" data-toggle=dropdown></i> <ul class="dropdown-menu datepicker" data-uib-dropdown-menu> <datetimepicker data-ng-model=bindValuePath data-ng-model-options="{getterSetter: true}" data-before-render="beforeRender($view, $dates)" data-datetimepicker-config=getPickerOptions() data-on-set-time=selectDate(newDate)></datetimepicker> </ul> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/datepath/datepath.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-repeat="translation in getPath()"> <cc-i18n data-key={{translation}}></cc-i18n> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/datepathpicker/datepathpicker.html",'<p class=form-control-static data-ng-if=!validEntity> <cc-i18n data-key=widget.form.field.pathPicker.noValidEntity></cc-i18n> </p> <div data-ng-if=validEntity> <p class=form-control-static style="margin-bottom: 5px" id={{fieldInformation.model.elementId}} tabindex=0 data-ng-style="{\'opacity\': isValidPath() ? 1 : 0.6}"> <span> <kbd class=background-grey style="box-shadow: none"> <cc-i18n data-key={{translatedBaseModelName}}></cc-i18n> </kbd> <span data-ng-repeat="token in getPathTokens() track by $index"> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i> <kbd> <cc-i18n data-key="{{getTranslation($index + 1)}}"></cc-i18n> <span data-ng-click=removeTokens($index) class=clickable> <i class="fa fa-times suffix-icon"></i> </span> </kbd> </span> </span> </p> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info">
1 <cc-i18n data-key=datepath.createPath data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length > 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.availableQuantifierAttributes data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length === 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.simpleAttribute data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button data-ng-repeat="attribute in modelContext.attributes track by $index" class="btn btn-white" data-ng-click=selectToken(attribute) data-ng-if="modelContext.attributes.length > 0" type=button> <i class="fa fa-list prefix-icon" data-ng-if=attribute.collection title="{{\'filter.collection\'|i18n:this}}"></i> <i class="fa fa-link prefix-icon" data-ng-if="!attribute.isSimpleType && !attribute.collection" title="{{\'datepath.navigableAttribute\'|i18n:this}}"></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/dateperiod/dateperiod.html","<p class=form-control-static data-ng-class=\"{'text-green': isActive(), 'text-red': !isActive() }\" id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=\"hasStart() || hasEnd()\"> <i class=\"fa fa-calendar-alt prefix-icon\" data-ng-class=\"{'text-green': isActive(), 'text-red': !isActive() }\" title=\"{{(isActive() ? 'widget.form.field.dateperiod.active' : 'widget.form.field.dateperiod.inactive')|i18n:this}}\"></i> <span data-ng-if=hasStart()>{{getStartDate()}}</span>&nbsp;-&nbsp;<span data-ng-if=hasEnd()>{{getEndDate()}}</span> &nbsp; ( <cc-i18n data-key=widget.form.field.dateperiod.active data-ng-if=isActive()></cc-i18n> <cc-i18n data-key=widget.form.field.dateperiod.inactive data-ng-if=!isActive()></cc-i18n> ) </span> <span data-ng-if=\"!hasStart() && !hasEnd()\">&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/datepicker/datepicker.html","<div class=input-group data-ng-class=\"{'fixed-width-input-130': isDateField(), 'fixed-width-input-170': isDateTimeField()}\"> <input class=form-control data-ui-mask={{getInputMask()}} data-ui-options=\"{clearOnBlur: false}\" data-ng-model=$displayName data-ng-change=updateFormData(true) data-allow-invalid-value=true data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'ng-dirty': dirty }\"> <span class=\"input-group-addon function-marker\" data-dropdown-append-to-body=true> <i id={{selectorId}} title=\"{{'widget.form.field.datePicker.select'|i18n:this}}\" class=\"fa {{getPickerIcon()}} clickable-icon dropdown-toggle\" data-toggle=dropdown></i> <ul class=\"dropdown-menu datepicker\" data-uib-dropdown-menu> <datetimepicker data-ng-model=datePickerValue data-datetimepicker-config=getPickerOptions() data-on-set-time=selectDate(newDate)></datetimepicker> </ul> </span> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/displayname/displayname.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()> <span data-ng-if=getValue().$displayName data-ng-bind-html=getValue().$displayName></span> <span data-ng-if=!getValue().$displayName>&nbsp;</span> </span> <span data-ng-if=isValueEmpty()> <span data-ng-if=!hasUnselectValueNameOverride()>&nbsp;</span> <span data-ng-if=hasUnselectValueNameOverride() class=placeholder>{{getUnselectValueNameOverride()}}</span> </span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/duration/duration.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()> <span>{{getDurationValueAsNumber(getValue())}}</span> <cc-i18n data-ng-if=!!selectedDurationUnit data-key={{selectedDurationUnit.name.id}}></cc-i18n> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/durationpicker/durationpicker.html",'<div class=input-group style="width: 170px"> <input type=number class="form-control fixed-width-input-130" id={{fieldInformation.model.elementId}} data-ng-model=displayValue data-ng-change="setValue(displayValue, true)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }"> <span class="input-group-addon function-marker" data-dropdown-append-to-body=true data-ng-class="{\'dirty\': dirty}"> <span class=dropdown-toggle id={{selectorId}} data-toggle=dropdown> <cc-i18n data-key={{field.selectedDurationUnit.name.id}} data-ng-if=field.selectedDurationUnit></cc-i18n> <i class="fa fa-caret-down" data-ng-class="{\'suffix-icon\': !!field.selectedDurationUnit}"></i> </span> <ul class=dropdown-menu data-uib-dropdown-menu style="width: 100px; left: 140px"> <li data-ng-repeat="durationUnit in field.durationUnits" title={{durationUnit.name.id|i18n:this}}> <a data-ng-click=select(durationUnit)><cc-i18n data-key={{durationUnit.name.id}}></cc-i18n></a> </li> </ul> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/dynamicgradepicker/dynamicgradepicker.html",'<div class=input-group id={{fieldInformation.model.elementId}} tabindex=0> <div class="btn-group clearfix vertical-offset-10-bottom"> <button data-ng-click=setGradingSystem(gradingSystem.id) class="btn btn-white" data-ng-repeat="gradingSystem in gradingSystems" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isGradingSystemSelected(getValue(), gradingSystem), \'dirty\': dirty }" type=button style="z-index: 1"> <cc-i18n data-key={{gradingSystem.name.id}}></cc-i18n> </button> <button data-ng-if="!widget.api.field.isMandatory(valuePath, this, field)" data-ng-click="setGradingSystem(undefined)" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': !gradingSystem, \'dirty\': dirty }" title="{{\'widget.form.field.select.clear\'|i18n:widget._scope}}"><i class="fa fa-times-circle"></i> </button> </div> <div class="btn-group pull-left"> <button data-ng-repeat="gradeSpecification in gradeSpecifications" data-ng-click="selectGrade(this, getValue(), gradingSystem.id, grade
1Specification, freeInput.value)" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isGradeSelected(getValue(), gradeSpecification) && !freeInput.value, \'dirty\': dirty }" style="z-index: 1"> <i class="fa prefix-icon" data-ng-class="{\'fa-check text-green\': gradeSpecification.passed, \'fa-times text-red\': !gradeSpecification.passed}"></i> <cc-i18n data-key={{gradeSpecification.name.id}}></cc-i18n> </button> <button data-ng-if="!widget.api.field.isMandatory(valuePath, this, field) && gradeSpecificationsExists" data-ng-click="selectGrade(this, getValue(), gradingSystem.id, undefined, freeInput.value)" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }" title="{{\'widget.form.field.select.clear\'|i18n:widget._scope}}"><i class="fa fa-times-circle"></i> </button> </div> <div class="input-group pull-left" data-ng-if="gradingSystem.numericGrades && !widget.data.grade.onlyPredefinedGradesAllowed" style="z-index: 0; width: auto"> <input type=number class="form-control fixed-width-input-100" data-ng-class="{\'horizontal-offset-15\' : gradeSpecificationsExists}" data-ng-model=freeInput.value data-ng-change="selectGrade(this, getValue(), gradingSystem.id, undefined, freeInput.value)" step=0.01> <span class=input-group-addon title="{{\'widget.form.field.grade.freeInput\'|i18n:this}}"><i class="fa fa-pencil-alt"></i></span> </div> <div class=clearfix></div> <div class="input-group vertical-offset-10" data-ng-if=!!gradingSystem> <div class="input-group inline-input-group pull-left horizontal-offset-20" data-ng-if="isGradeFilled(getValue()) && (isWithDistinctionPossible(gradingSystem.id, undefined, getValue()) || !!freeInput.value)"> <cc-i18n data-key=entity.Grade.withDistinction></cc-i18n> <div class=btn-group> <button data-ng-click="setWithDistinction(this, getValue(), true)" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isWithDistinction(getValue()), \'dirty\': dirty }" type=button> <i class="fa fa-check text-green prefix-icon"></i> <cc-i18n data-key=common.true></cc-i18n> </button> <button data-ng-click="setWithDistinction(this, getValue(), false)" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': !isWithDistinction(getValue()), \'dirty\': dirty }" type=button> <i class="fa fa-times text-red prefix-icon"></i> <cc-i18n data-key=common.false></cc-i18n> </button> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/email/email.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!!getEmailAddress()> <i class="fa fa-envelope prefix-icon"></i> <a href=mailto:{{getEmailAddress()}} target=_blank>{{getEmailAddress()}}</a> </span> <span data-ng-if=!getEmailAddress()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/entityname/entityname.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <cc-i18n data-ng-if=!isValueEmpty() data-key=entity.{{getValue()}}.$entity></cc-i18n> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/enumvalue/enumvalue.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()> <i class="fa {{getIcon(item)}} prefix-icon" data-ng-if=hasIcon(item)></i> <span><cc-i18n data-key={{getLabelKey()}}></cc-i18n></span> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/enumvaluecounter/enumvaluecounter.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()> <span>{{renderValues()}}</span> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/eventperiod/eventperiod.html"," <div class=input-group id={{fieldInformation.model.elementId}} tabindex=0> <span>{{getDisplayName('startTime')}}</span> – <span>{{getDisplayName('endTime')}}</span> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/eventperiodpicker/eventperiodpicker.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class=input-group> <div class=btn-group> <button data-ng-click="bindValue(\'allDay\')(true)" class="btn btn-white mandatory" data-ng-class="{\'active\': bindValue(\'allDay\')() === true }" data-ng-disabled=disabled() data-ng-if="!disabled() || bindValue(\'allDay\')() === true" type=button> <i class="fa fa-calendar-alt prefix-icon"></i> <cc-i18n data-key=common.allDay.true></cc-i18n> </button> <button data-ng-click="bindValue(\'allDay\')(false)" class="btn btn-white mandatory" data-ng-class="{\'active\': bindValue(\'allDay\')() === false }" data-ng-disabled=disabled() data-ng-if="!disabled() || bindValue(\'allDay\')() === false" type=button> <i class="fa fa-clock prefix-icon"></i> <cc-i18n data-key=common.allDay.false></cc-i18n> </button> </div> </div> <div class="input-group vertical-offset-10" style="display: flex; align-items: center"> <div> <input class=form-control data-ui-mask={{getConfiguration().inputMask}} data-ui-options="{clearOnBlur: false}" data-ng-model=$displayName.startTime data-ng-change="updateFormData(\'startTime\')" data-ng-disabled=disabled() data-ng-class="{\n                        \'error\': widget.api.field.hasError(valuePath + \'.startTime\', this), \'ng-dirty\': $dirty.startTime,\n                        \'fixed-width-input-100\': isAllDay(), \'fixed-width-input-130\': !isAllDay()\n                    }"> <span class="input-group-addon function-marker" data-dropdown-append-to-body=false data-ng-if=!disabled()> <i class="fa {{getConfiguration().pickerIcon}} clickable-icon dropdown-toggle" id={{startTimeSelectorId}} data-toggle=dropdown title="{{\'widget.form.field.datePicker.select\'|i18n:this}}"></i> <ul class="dropdown-menu datepicker" data-uib-dropdown-menu> <datetimepicker data-ng-if=isAllDay() data-ng-model="bindValue(\'startTime\')" data-ng-model-options="{getterSetter: true}" data-datetimepicker-config="getPickerOptions(startTimeSelectorId, true)" data-on-set-time="selectDate(\'startTime\', newDate)"></datetimepicker> <datetimepicker data-ng-if=!isAllDay() data-ng-model="bindValue(\'startTime\')" data-ng-model-options="{getterSetter: true}" data-datetimepicker-config="getPickerOptions(startTimeSelectorId, false)" data-on-set-time="selectDate(\'startTime\', newDate)"></datetimepicker> </ul> </span> </div>
1 <div style="width: 20px; height: 26px; line-height: 26px; text-align: center">–</div> <div> <input class=form-control data-ui-mask={{getConfiguration().inputMask}} data-ui-options="{clearOnBlur: false}" data-ng-model=$displayName.endTime data-ng-change="updateFormData(\'endTime\')" data-ng-disabled=disabled() data-ng-class="{\n                        \'error\': widget.api.field.hasError(valuePath + \'.endTime\', this), \'ng-dirty\': $dirty.endTime,\n                        \'fixed-width-input-100\': isAllDay(), \'fixed-width-input-130\': !isAllDay()\n                    }"> <span class="input-group-addon function-marker" data-dropdown-append-to-body=false data-ng-if=!disabled()> <i class="fa {{getConfiguration().pickerIcon}} clickable-icon dropdown-toggle" id={{endTimeSelectorId}} data-toggle=dropdown data-ng-disabled=disabled() title="{{\'widget.form.field.datePicker.select\'|i18n:this}}"></i> <ul class="dropdown-menu datepicker" data-uib-dropdown-menu> <datetimepicker data-ng-if=isAllDay() data-ng-model="bindValue(\'endTime\')" data-ng-model-options="{getterSetter: true}" data-datetimepicker-config="getPickerOptions(endTimeSelectorId, true)" data-on-set-time="selectDate(\'endTime\', newDate)"></datetimepicker> <datetimepicker data-ng-if=!isAllDay() data-ng-model="bindValue(\'endTime\')" data-ng-model-options="{getterSetter: true}" data-datetimepicker-config="getPickerOptions(endTimeSelectorId, false)" data-on-set-time="selectDate(\'endTime\', newDate)"></datetimepicker> </ul> </span> </div> </div> <div data-ng-if="hasErrors().startTime || hasErrors().endTime" class=text-error> <p data-ng-repeat="error in getErrors() track by $index" data-ng-bind-html=error></p> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/fieldheader/fieldheader.html",'<div class="form-control-static hint-text full-width" data-ng-if=hasValue() id={{fieldInformation.model.elementId}} tabindex=0> <h4 data-ng-bind-html=getHtml() style="margin: 5px 0 0 0" class=text-secondary></h4> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/fieldhint/fieldhint.html",'<div class="form-control-static hint-text full-width" data-ng-if="fieldHintI18n || fieldHintId || fieldHintText" id={{fieldInformation.model.elementId}} tabindex=0> <div class="alert alert-info"> <cc-i18n data-key={{fieldHintI18n}} data-supports-customer-translation=true data-ng-if=fieldHintI18n></cc-i18n> <cc-i18n data-key={{fieldHintId}} data-ng-if=fieldHintId></cc-i18n> <span data-ng-bind-html=fieldHintText data-ng-if=fieldHintText></span> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/file/file.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static style="line-height: 24px" tabindex=0> <span style="display: flex; align-items: center" data-ng-if=!isValueEmpty()> <span class="label label-primary horizontal-offset-5-right" style="min-width: 40px"> <cc-i18n data-key=common.contentType.{{getValue().contentType}} data-default=common.contentType.application/octet-stream></cc-i18n> </span> <a class="horizontal-offset-5-right text-ellipsis" data-ng-click=downloadFile()>{{getValue().name}}</a> </span> <span class=placeholder data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/fileselectorupload/fileselectorupload.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class=input-group data-ng-if="!isValueEmpty() && !loading"> <span class=input-group-addon> <small class=text-secondary> <cc-i18n data-key=common.contentType.{{getValue().contentType}} data-default=common.contentType.application/octet-stream></cc-i18n> </small> </span> <input data-ng-model=bindValuePath data-ng-model-options="{getterSetter: true}" class="form-control uploaded-file-name" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError()}" readonly> <span class="input-group-addon function-marker"> <small>{{getValue().size | filesize}}</small> </span> <span class="input-group-addon function-marker file" data-ng-class="{\'file-collection\': !!objectCollectionView, \'multiple\': widget.api.field.canRearrangeFile(_.dropRight(valuePath.split(\'.\')).join(\'.\'), this)}" title="{{\'widget.form.field.fileselector.replace\'|i18n:this}}">
1 <i class="fa fa-trash clickable-icon" data-ng-click=removeFile(valuePath) style="position: absolute; z-index: 1; top: 7px; right: 6px" title="{{\'widget.form.field.fileupload.remove\'|i18n:this}}"></i> <i class="fa fa-search clickable-icon" style="position: absolute; z-index: 1; top: 7px; right: 29px" data-ng-click=lookupValue()></i> <div class="input-group-addon function-marker file-upload" style="border: 0px; height: 26px; width: 26px"> <i class="fa fa-upload" style="margin-top: 7px"></i> <input type=file accept={{field.validFileMimeTypes}} class=upload onchange=angular.element(this).scope().uploadFile(this) title="{{\'widget.form.field.fileupload.replace\'|i18n:this}}"> </div> </span> </div> <div class="input-group-addon function-marker without-field file-upload" data-ng-if="isValueEmpty() && !loading"> <i class="fa fa-upload"></i> <input type=file accept={{field.validFileMimeTypes}} onchange=angular.element(this).scope().uploadFile(this) class=upload title="{{\'actions.UploadFileAction\'|i18n:this}}"> </div> <div class="input-group-addon function-marker without-field file-upload" data-ng-if="isValueEmpty() && !loading" title="{{\'widget.form.field.fileselector.select\'|i18n:this}}"> <i class="fa fa-search clickable-icon" data-ng-click=lookupValue()></i> </div> <div class=input-group data-ng-if=loading> <span class=input-group-addon style="width:100%; padding:0; display: flex; align-items: center;"> <span class=progress-bar-info data-ng-style="{\'width\' : progress + \'%\' }" style="height:28px; display: flex; justify-content: center; align-items: center; white-space: nowrap; overflow: hidden; text-overflow: clip;"> {{progress}}% </span> </span> <span class=input-group-addon> <i class="fa fa-spin fa-circle-notch uploading"></i> </span> </div> <div class="alert alert-info" style="margin-top: 5px;"> <p class="hint-text full-width"> <cc-i18n data-key=common.upload.speakingNamesHint></cc-i18n> </p> <p class="hint-text full-width" data-ng-if=field.validFileMimeTypes> <cc-i18n data-key=common.contentType.filePolicyHintHeader></cc-i18n> <span data-ng-repeat="fileType in uploadMimeTypesToArray()"> <cc-i18n data-key=common.contentType.{{fileType}}></cc-i18n><span data-ng-if=!$last>, </span><span data-ng-if=$last>.</span> </span> </p> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filesize/filesize.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()>{{getValue() | filesize}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filesizepicker/filesizepicker.html",'<div class=input-group style="width: 210px"> <input type=number data-ng-model=size step=1 id={{fieldInformation.model.elementId}} data-ng-change=calculateByteValue() class="form-control fixed-width-input-170" data-smart-float data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\':\n    hasError(), \'dirty\': dirty }"> <span class="input-group-addon function-marker" data-dropdown-append-to-body=true data-ng-class="{\'dirty\': dirty}"> <span class=dropdown-toggle id=" dropdownSelector + \'" data-toggle=dropdown> <span>{{unit}}</span> </span> <ul class=dropdown-menu data-uib-dropdown-menu style="width: 100px; left: 140px"> <li data-ng-repeat="fileSizeUnit in fileSizeUnits"> <a data-ng-click=selectFileSizeUnit(fileSizeUnit)> {{fileSizeUnit}} </a> </li> </ul> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filetype/filetype.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty() class="label label-primary" style="margin-right: 5px"><cc-i18n data-key={{getFiletypeNameId()}}></cc-i18n></span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/fileupload/fileupload.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class=input-group data-ng-if="!isValueEmpty() && !loading"> <span class=input-group-addon> <small class=text-secondary> <cc-i18n data-key=common.contentType.{{getValue().contentType}} data-default=common.contentType.application/octet-stream></cc-i18n> </small> </span> <input class="form-control uploaded-file-name" data-ng-model=bindValuePath data-ng-model-options="{getterSetter: true}" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError()}" readonly> <span class="input-group-addon function-marker"> <small>{{getValue().size | filesize}}</small> </span> <span class="input-group-addon function-marker file" style=width:50px data-ng-class="{\'file-collection\': !!objectCollectionView, \'multiple\': widget.api.field.canRearrangeFile(_.dropRight(valuePath.split(\'.\')).join(\'.\'), this)}"> <div class="input-group-addon function-marker file-upload" style="border: 0px;
1 height: 26px; width: 21px; float: right; margin-right: 20px;"> <i class="fa fa-upload" style="margin-top: 7px"></i> <input type=file title="{{\'widget.form.field.fileupload.replace\'|i18n:this}}" class=upload accept={{field.validFileMimeTypes}} onchange=angular.element(this).scope().uploadFile(this)> </div> <i title="{{\'widget.form.field.fileupload.remove\'|i18n:this}}" class="fa fa-trash clickable-icon" style="position: absolute; z-index: 1; top: 7px; right: 5px" data-ng-click=removeFile(valuePath)></i> </span> </div> <div class="input-group-addon function-marker without-field file-upload" data-ng-if="isValueEmpty() && !loading"> <i class="fa fa-upload"></i> <input type=file title="{{\'actions.UploadFileAction\'|i18n:this}}" class=upload accept={{field.validFileMimeTypes}} onchange=angular.element(this).scope().uploadFile(this)> </div> <div class=input-group data-ng-if=loading> <span class=input-group-addon style="width:100%; padding:0; display: flex; align-items: center;"> <span class=progress-bar-info data-ng-style="{\'width\' : progress + \'%\' }" style="height:28px; display: flex; justify-content: center; align-items: center; white-space: nowrap; overflow: hidden; text-overflow: clip;"> {{progress}}% </span> </span> <span class=input-group-addon> <i class="fa fa-spin fa-circle-notch uploading"></i> </span> </div> <div class="alert alert-info" style="margin-top: 5px;"> <p class="hint-text full-width"> <cc-i18n data-key=common.upload.speakingNamesHint></cc-i18n> </p> <p class="hint-text full-width" data-ng-if=field.validFileMimeTypes> <cc-i18n data-key=common.contentType.filePolicyHintHeader></cc-i18n> <span data-ng-repeat="fileType in uploadMimeTypesToArray()"> <cc-i18n data-key=common.contentType.{{fileType}}></cc-i18n><span data-ng-if=!$last>, </span><span data-ng-if=$last>.</span> </span> </p> </div> </div>'),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filterattribute/filterattribute.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()>{{getAttribute()}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filterattributepicker/filterattributepicker.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info" data-ng-if="modelContext.attributes.length > 0"> <cc-i18n data-key=filter.selectAttribute data-params=modelContext></cc-i18n> </div> <div class="alert alert-info" data-ng-if="modelContext.attributes.length === 0"> <cc-i18n data-key=filter.noAttributesAvailable data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button data-ng-repeat="attribute in modelContext.attributes track by $index" data-ng-click=select(attribute) data-ng-if="modelContext.attributes.length > 0" class="btn btn-white" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isActive(attribute), \'dirty\': dirty }" type=button> <i class="fa fa-font prefix-icon" data-ng-if="attribute.type === \'String\'" title="{{\'filter.string\'|i18n:this}}"></i> <i class="fa fa-calculator prefix-icon" data-ng-if="attribute.type === \'Integer\' || attribute.type === \'int\' || attribute.type === \'Long\' || attribute.type === \'long\'" title="{{\'filter.number\'|i18n:this}}"></i> <i class="fa fa-check prefix-icon" data-ng-if="attribute.type === \'Boolean\' || attribute.type === \'boolean\'" title="{{\'filter.boolean\'|i18n:this}}"></i> <i class="fa fa-calendar-alt prefix-icon" data-ng-if="attribute.type === \'LocalDate\'" title="{{\'filter.date\'|i18n:this}}"></i> <i class="fa fa-clock prefix-icon" data-ng-if="attribute.type === \'LocalDateTime\'" title="{{\'filter.dateTime\'|i18n:this}}"></i> <i class="fa fa-money-bill-alt prefix-icon" data-ng-if="attribute.type === \'Money\'" title="{{\'filter.money\'|i18n:this}}"></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> <div data-ng-if=!isValueEmpty()> <div style="margin-top: 12px; margin-bottom: -12px"> <label class=text-ellipsis> <cc-i18n data-key=filter.operatormode.label></cc-i18n> </label> </div> <div class=input-group data-ng-if=!loading style=padding-top:10px> <div class=btn-group> <button data-ng-click="setMode(\'value\')" class="btn btn-white mandatory" data-ng-class="{\'active\': selectedMode === \'value\'}" type=button> <cc-i18n data-key=filter.operatormode.value></cc-i18n> </button> <button data-ng-click="setMode(\'variable\')" class="btn btn-white mandatory" data-ng-class="{\'active\': selectedMode === \'variable\'}" type=button> <cc-i18n data-key=filter.operatormode.variable></cc-i18n> </button> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filterpath/filterpath.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-repeat="translation in getPath()"> <cc-i18n data-key={{translation}}></cc-i18n> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filterpathpicker/filterpathpicker.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info" data-ng-if="modelContext.attributes.length > 0">
1 <cc-i18n data-key=filter.createPath data-params=modelContext></cc-i18n> </div> <div class="alert alert-info" data-ng-if="modelContext.attributes.length === 0"> <cc-i18n data-key=filter.noAttributesAvailable data-params=modelContext></cc-i18n> </div> </div> <p class=form-control-static data-ng-if=!isValueEmpty() style="margin-bottom: 5px"> <span> <kbd class=background-grey style="box-shadow: none"> <cc-i18n data-key={{translatedBaseModelName}}></cc-i18n> </kbd> <span data-ng-repeat="token in getPathTokens() track by $index"> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i> <kbd> <cc-i18n data-key="{{getTranslation($index + 1)}}"></cc-i18n> <span data-ng-click=removeTokens($index) class=clickable> <i class="fa fa-times suffix-icon"></i> </span> </kbd> </span> </span> </p> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length > 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.availableQuantifierAttributes data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length === 0"> <div class="alert alert-info"> <cc-i18n data-key=filter.typeWithoutEmbeddedObjectsReached data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button data-ng-repeat="attribute in modelContext.attributes track by $index" class="btn btn-white" data-ng-click=selectToken(attribute) data-ng-if="modelContext.attributes.length > 0" type=button> <i class="fa fa-list prefix-icon" data-ng-if=attribute.collection title="{{\'filter.collection\'|i18n:this}}"></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/filtervariable/filtervariable.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=objectDisplayName>{{objectDisplayName}}</span> <cc-i18n data-key=common.noValue data-ng-if=!objectDisplayName></cc-i18n> <span class="label label-primary text-uppercase"><cc-i18n data-key=entity.{{objectType}}.$entity></cc-i18n></span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/grade/grade.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if="!!getValue().numericGrade || !!getValue().alphanumericGrade"> <span data-ng-if=gradingSystem.numericGrades>{{getValue().numericGrade}}</span> <span data-ng-if=!gradingSystem.numericGrades>{{getValue().alphanumericGrade}}</span> <span> <i class="fa fa-trophy suffix-icon text-yellow" data-ng-if=getValue().withDistinction title="{{\'entity.Grade.withDistinction\'|i18n:this}}"></i> </span> <span data-ng-if=!!getValue().gradingSystem>&nbsp;(<cc-i18n data-key={{gradingSystem.name.id}}></cc-i18n>)</span> </span> <span data-ng-if="isValueEmpty() || (!getValue().numericGrade && !getValue().alphanumericGrade)">&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/html/html.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-bind-html=getValue()></span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p>"),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/htmleditor/htmleditor.html",'<div class=input-group> <div class=cc-quill-editor-wrapper style="width: 100%" data-value-path={{valuePath}} data-element-id={{fieldInformation.model.elementId}}> <div class=cc-quill-toolbar-wrapper> <div> <span class=ql-formats data-ng-show=!rawViewActive> <select title="{{\'common.ui.htmlEditor.header\'|i18n:this}}" class=ql-header tabindex=-1> <option selected value=false>{{\'common.ui.htmlEditor.header.none\' | i18n:this}}</option> <option value=1>{{\'common.ui.htmlEditor.header\' | i18n:this}} 1</option> <option value=2>{{\'common.ui.htmlEditor.header\' | i18n:this}} 2</option> <option value=3>{{\'common.ui.htmlEditor.header\' | i18n:this}} 3</option> <option value=4>{{\'common.ui.htmlEditor.header\' | i18n:this}} 4</option> <option value=5>{{\'common.ui.htmlEditor.header\' | i18n:this}} 5</option> <option value=6>{{\'common.ui.htmlEditor.header\' | i18n:this}} 6</option> </select> </span> <span class=ql-formats data-ng-show=!rawViewActive> <button title="{{\'common.ui.htmlEditor.undo\'|i18n:this}}" tabindex=-1 data-ng-click=quill.history.undo()><i class="fa fa-undo"></i></button> <button title="{{\'common.ui.htmlEditor.redo\'|i18n:this}}" tabindex=-1 data-ng-click=quill.history.redo()><i class="fa fa-redo"></i></button>
1 </span> <span class=ql-formats data-ng-show=!rawViewActive> <button title="{{\'common.ui.htmlEditor.bold\'|i18n:this}}" class=ql-bold tabindex=-1></button> <button title="{{\'common.ui.htmlEditor.italic\'|i18n:this}}" class=ql-italic tabindex=-1></button> <button title="{{\'common.ui.htmlEditor.underline\'|i18n:this}}" class=ql-underline tabindex=-1></button> <button title="{{\'common.ui.htmlEditor.strike\'|i18n:this}}" class=ql-strike tabindex=-1></button> <button title="{{\'common.ui.htmlEditor.script.sub\'|i18n:this}}" class=ql-script tabindex=-1 value=sub></button> <button title="{{\'common.ui.htmlEditor.script.super\'|i18n:this}}" class=ql-script tabindex=-1 value=super></button> </span> <span class=ql-formats data-ng-show=!rawViewActive> <button title="{{\'common.ui.htmlEditor.list.bullet\'|i18n:this}}" class=ql-list tabindex=-1 value=bullet></button> <button title="{{\'common.ui.htmlEditor.list.ordered\'|i18n:this}}" class=ql-list tabindex=-1 value=ordered></button> </span> <span class=ql-formats data-ng-show=!rawViewActive> <button title="{{\'common.ui.htmlEditor.blockquote\'|i18n:this}}" class=ql-blockquote data-ng-if=!fieldInformation.documentSafeHtml tabindex=-1></button> <button title="{{\'common.ui.htmlEditor.link\'|i18n:this}}" class=ql-link tabindex=-1></button> </span> <span class=ql-formats data-ng-show="!rawViewActive && canSelectFiles"> <button class="btn btn-xs" style="width: auto" data-cc-i18n-title=common.ui.htmlEditor.insertFile data-uib-dropdown data-auto-close=always data-dropdown-append-to-body data-uib-dropdown-toggle> <i id=inner-btn-append-to-body class="fa fa-fw {{\'fa-file-circle-plus\'}}" data-cc-i18n-title=common.ui.htmlEditor.insertFile></i> <i class="fa fa-caret-down"></i> <ul class="dropdown-menu dropdown-menu-left" data-uib-dropdown-menu> <li class=menu-heading> <cc-i18n data-key=common.ui.htmlEditor.insertFile data-supports-customer-translation=true></cc-i18n> </li> <li> <cc-action data-action-id=SelectFileFromPublicContainer data-widget=widget data-as-link=true data-do-on-success=handleFileActionResult></cc-action> </li> <li> <cc-action data-action-id=UploadFileToPublicFileContainerAction data-widget=widget data-as-link=true data-do-on-success=handleFileActionResult></cc-action> </li> </ul> </button> </span> </div> <div class=flex-spacer></div> <div> <button title="{{\'common.ui.htmlEditor.toggleFormattedView\'|i18n:this}}" tabindex=-1 data-ng-if=rawViewActive data-ng-click=toggleRawView()> <i class="fa fa-file-invoice"></i> </button> <button title="{{\'common.ui.htmlEditor.toggleRawView\'|i18n:this}}" tabindex=-1 data-ng-if=!rawViewActive data-ng-click=toggleRawView()> <i class="fa fa-code"></i> </button> </div> </div> <div class=cc-quill-editor-text data-ng-show=!rawViewActive data-ng-bind-html=::bindValuePath()></div> </div> <textarea data-ng-show=rawViewActive data-ng-model=bindValuePathRaw data-ng-model-options="{\'getterSetter\': true}"></textarea> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/icon/icon.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <i class="fa {{getValue()}}" data-ng-if=!isValueEmpty()></i> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/iconpicker/iconpicker.html",'<div class=input-group> <span class=input-group-addon> <i class="fa fa-fw" data-ng-class=getPreviewIcon() style=margin-top:2px></i> </span> <input id={{fieldInformation.model.elementId}} style="flex-grow: 1" autocomplete=off class=form-control data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }" data-ng-model=bindIcon data-ng-model-options="{ getterSetter: true, debounce: 200 }" data-uib-typeahead="item as item.$displayName for item in filterAllowedValuesSuggestions($viewValue)" data-typeahead-select-on-exact=true data-typeahead-append-to-body=true data-typeahead-min-length="openImmediately ? 0 : 1" data-typeahead-template-url=scripts/directives/uiitem/widget/form/fieldrenderer/iconpicker/item.html> <span class="input-group-addon function-marker"> <i class="fa fa-times-circle clickable-icon prefix-icon" data-ng-if=!isValueEmpty() data-ng-click=bindValuePath(null)></i> <i class="fa fa-search clickable-icon" data-ng-click=lookupValue()></i> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/iconpicker/item.html",'<a class=typeahead-item title={{match.label}}> <i class="prefix-icon fa fa-fw" data-ng-class="\'fa-\' + match.label"></i> <span data-ng-bind-html="match.label | highlight:query"></span> </a>'),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/image/image.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> </p><div class=field-image data-ng-if=!isValueEmpty()> <img data-ng-src=data:{{getValue().contentType}};base64,{{getValue().data}}> </div> <span data-ng-if=isValueEmpty()>&nbsp;</span> <p></p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/imageupload/imageupload.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <div class=field-image data-ng-if=!isValueEmpty()> <img data-ng-src=data:{{getValue().contentType}};base64,{{getValue().data}}> </div> <div class=input-group data-ng-if=!isValueEmpty() style="width: 48px"> <span class="input-group-addon function-marker without-field">
1 <i class="fa fa-trash clickable-icon" data-ng-click="setValue(null, true)" style="position: absolute; z-index: 1; top: 7px; right: 5px" title="{{\'widget.form.field.imageupload.upload\'|i18n:this}}"></i> <div class="input-group-addon function-marker without-field file-upload" style="border: 0px; width: 16px"> <i class="fa fa-upload"></i> <input type=file accept=image/bmp,image/gif,image/jpeg,image/png onchange=angular.element(this).scope().initCropping(this) class=upload> </div> </span> </div> <div class="input-group-addon function-marker without-field file-upload" data-ng-if=isValueEmpty()> <i class="fa fa-upload"></i> <input type=file accept=image/bmp,image/gif,image/jpeg,image/png class=upload onchange=angular.element(this).scope().initCropping(this)> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/indefault/indefault.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=isValueTrue()><i class="fa fa-credit-card text-red suffix-icon prefix-icon"></i>{{getTrueLabel()}}</span> <span data-ng-if=isValueFalse()><i class="fa fa-money-bill-alt text-green suffix-icon prefix-icon"></i>{{getFalseLabel()}}</span> <span data-ng-if=isValueEmpty() class=placeholder>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/indefaultpicker/indefaultpicker.html","<div class=input-group id={{fieldInformation.model.elementId}} tabindex=0> <div class=btn-group> <button data-ng-click=\"setValue(true, true)\" class=\"btn btn-white\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueTrue(), 'dirty': dirty }\" type=button> <i class=\"fa fa-credit-card text-red prefix-icon\"></i> <span>{{getTrueLabel()}}</span> </button> <button data-ng-click=\"setValue(false, true)\" class=\"btn btn-white\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueFalse(), 'dirty': dirty }\" type=button> <i class=\"fa fa-money-bill-alt text-green prefix-icon\"></i> <span>{{getFalseLabel()}}</span> </button> <button data-ng-click=\"setValue(null, true)\" class=\"btn btn-white\" data-ng-if=\"!widget.api.field.isMandatory(valuePath, this, field)\" data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'active': isValueEmpty(), 'dirty': dirty }\" type=button> <i class=\"fa fa-times-circle\"></i> <span>{{getEmptyLabel()}}</span> </button> </div> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/label/label.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()>{{getValue()}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/link/link.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if="state === \'GENERATING\'"> <i class="fa fa-circle-notch fa-spin"></i> <cc-i18n data-key=ui.form.link.generating data-supports-customer-translation=true></cc-i18n> <cc-action data-action-id=ReloadWidgetAction data-as-link=true data-widget=widget style="line-height: 25px;"></cc-action> </span> <span data-ng-if="(state === \'PROVIDED_BY_USER\' || state === \'READY\') && !!url"> <a href={{url}} title={{description}} target=_blank>{{name}}</a> <cc-i18n data-key=ui.form.link.passwordRequired data-supports-customer-translation=true data-params="{password: password}" data-ng-if=!!password></cc-i18n> </span> <span data-ng-if="(state === \'PROVIDED_BY_USER\' || state === \'READY\') && !url">&nbsp;</span> <span data-ng-if="state === \'GENERATION_FAILED\'"> <cc-i18n data-key=ui.form.link.generationFailed data-supports-customer-translation=true></cc-i18n> </span> </p> <div data-ng-if="state === \'READY\'" class="hint-text alert alert-info" style="margin-top: 5px"> <div style="display: flex"> <div> <span><cc-i18n data-key=ui.form.link.preview.title data-supports-customer-translation=true></cc-i18n>:</span> </div> <div class=label-action-connector> <hr> </div> <div> <button class="btn btn-xs btn-uppercase btn-primary" data-ng-style="{\'margin-left\': noMargin ? \'0\': \'3px\'}" data-cc-i18n-title=ui.form.link.reloadPreview data-ng-click="reloadPreview(); $event.stopPropagation()" data-ng-dblclick="reloadPreview(); $event.stopPropagation()"> <i class="fa fa-fw fa-circle-notch fa-spin" data-ng-if=previewReloadLocked></i> <i class="fa fa-fw fa-rotate" data-ng-if=!previewReloadLocked></i> <cc-i18n data-key=ui.form.link.reloadPreview data-supports-customer-translation=true></cc-i18n> </button> </div> </div> <div> <span data-ng-if="listing.length <= 0"> <cc-i18n data-key=ui.form.link.emptyPreviewContent data-supports-customer-translation=true></cc-i18n> </span> <ul data-ng-if="listing.length > 0" style="list-style-type: none; padding-left: 10px; margin-bottom: 5px"> <li data-ng-repeat="file in listing" style="margin-top: 4px"> <span style="display: flex; align-items: center"> <span class="label label-primary horizontal-offset-5-right" style="min-width: 40px"> <cc-i18n data-key=common.contentType.{{file.mimeType}} data-default=common.contentType.application/octet-stream></cc-i18n> </span> {{file.name}} ({{file.size | filesize}}
1) </span> </li> </ul> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/money/money.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()>{{getMoneyDisplayName()}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/moneypicker/moneypicker.html",'<div class=input-group style="width: 210px"> <input type=number data-ng-model=bindAmountValuePath step=0.01 id={{fieldInformation.model.elementId}} data-ng-model-options="{getterSetter: true}" class="form-control fixed-width-input-170" data-smart-float data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }"> <span class="input-group-addon function-marker" data-uib-dropdown data-dropdown-append-to-body=true data-ng-class="{\'dirty\': dirty}"> <span class=dropdown-toggle id=" dropdownSelector + \'" data-toggle=dropdown data-uib-dropdown-toggle> <i class="fa {{selectedCurrency.symbol}} prefix-icon" data-ng-if=!!selectedCurrency></i> <i class="fa fa-money-bill-alt" data-ng-if=!selectedCurrency></i> <span>{{selectedCurrency.iso}}</span> <i class="fa fa-caret-down" data-ng-class="{\'suffix-icon\': !!selectedCurrency}" data-ng-if=moneyType></i> </span> <ul class=dropdown-menu data-uib-dropdown-menu style="width: 100px; left: 140px" data-ng-if=moneyType> <li data-ng-repeat="currency in currencies" title={{currency.name.id|i18n:this}}> <a data-ng-click=selectCurrency(currency)> <i class="fa {{currency.symbol}} prefix-icon"></i>{{currency.iso}} (<cc-i18n data-key={{currency.name.id}}></cc-i18n>) </a> </li> </ul> </span> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/monthday/monthday.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isEmptyDate()>{{getFormattedDate()}}</span> <span data-ng-if=isEmptyDate()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/monthdaypicker/monthdaypicker.html",'<div class=monthdaypicker> <div style=display:block data-ng-style="{marginLeft: depth + 1 * (itemConfig.noIndentationInEdit ? 0 : 20) + \'px\'}"> <label class=text-ellipsis> <i class="fa fa-bookmark mandatory prefix-icon info-icon" title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}"></i> <cc-i18n data-key=$defaults.attribute.day></cc-i18n> </label> <br> <input type=number id={{fieldInformation.model.elementId}} data-ng-model=day class="form-control fixed-width-input-60 mandatory" data-ng-change=updateFormData(true) data-ng-class="{\'error\': hasError(), \'ng-dirty\': dirty }" style="width: 70px; margin-bottom: 15px"> </div> <div style=display:block data-ng-style="{marginLeft: depth + 1 * (itemConfig.noIndentationInEdit ? 0 : 20) + \'px\'}"> <label class=text-ellipsis> <i class="fa fa-bookmark mandatory prefix-icon info-icon" title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}"></i> <cc-i18n data-key=$defaults.attribute.month></cc-i18n> </label> <br> <div class=btn-group> <button class="btn btn-white mandatory" data-ng-repeat="(index, monthName) in getMonths()" data-ng-click=setMonth(index) data-ng-model=month data-ng-class="{\'active\': isMonthActive(index), \'dirty\': dirty }" type=button> <span data-key={{index}} data-ng-bind-html=monthName></span> </button> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/multiselect/multiselect.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <p class=form-control-static data-ng-if=loading> <i class="fa fa-circle-notch fa-spin"></i> </p> <p class=form-control-static data-ng-if="!loading && getAllowedValueItemCount() === 0"> <cc-i18n data-key=widget.form.field.select.noValues></cc-i18n> </p> <div class=input-group data-ng-if="!loading && getAllowedValueItemCount() > 0"> <div data-ng-repeat="item in field.allowedValues.items[valuePath] | orderBy:getSortCriteria(field.allowedValues.items[valuePath])" data-ng-click=select(item) class=clickable> <i class="fa fa-1_5x prefix-icon" data-ng-class="{\'fa-check-square\': isActive(item), \'fa-square\': !isActive(item)}"></i> <span class=multiselect-label> <cc-i18n data-ng-if="!item.$displayName && !!item.name" data-key={{item.name}}></cc-i18n> <span data-ng-if=!!item.$displayName data-ng-bind-html=item.$displayName></span> </span> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/multitypeahead/multitypeahead.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <p class=form-control-static data-ng-if=loading> <i class="fa fa-circle-notch fa-spin"></i> </p> <p class=form-control-static data-ng-if="!loading && getAllowedValueItemCount() === 0"> <cc-i18n data-key=widget.form.field.typeahead.noValues></cc-i18n> </p> <div class="input-group form-control cc-multi-typeahead" data-ng-if="!loading && getAllowedValueItemCount() !== 0" data-ng-class="{\'dirty\': dirty,\'error\': hasError()}"> <div class=cc-multi-typeahead-content> <span title={{value._item.$displayName}} class="label cc-multi-typeahead-label" data-ng-repeat="value in getValue()" data-ng-if=value._item> <span class=cc-multi-typeahead-label-text data-ng-bind-html=value._item.$displayName></span> <i class="fa fa-times suffix-icon clickable-icon" data-ng-click=removeValue(value)></i> </span> <input class="form-control cc-multi-typeahead-input" autocomplete=off data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant() }" data-ng-model=bindTypeaheadModel data-ng-model-options="{ getterSetter: true, debounce: 200 }" data-uib-typeahead="item as item.$displayName for item in filterAllowedValuesSuggestions($viewValue)" data-ng-keydown=onKeydown($event) data-typeahead-input-formatter=removeHtml($model) data-typeahead-select-on-exact=true data-typeahead-append-to-body=true data-typeahead-template-url=scripts/directives/uiitem/widget/form/fieldrenderer/typeahead/item.html> </div> <span class="input-group-addon cc-multi-typeahead-lookup-button" style="align-self: flex-start;" data-ng-if="!isValueEmpty() || hasAllowedValuesModel()"> <i class="fa fa-search clickable-icon" data-ng-click=lookupValue() data-ng-if=hasAllowedValuesModel()></i> </span> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/number/number.html",'<div class=input-group> <input id={{fieldInformation.model.elementId}} type=number class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }"> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/password/password.html",'<div class=input-group> <input type=password placeholder="{{\'common.auth.password\'|i18n:this}}" class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }" id={{fieldInformation.model.elementId}} maxlength={{maxSize}}> </div> <div class=input-group> <input type=password placeholder="{{\'common.auth.passwordConfirmation\'|i18n:this}}" class=form-control data-ng-model=bindPasswordConfirmation data-ng-model-options="{ getterSetter: true }" maxlength={{maxSize}}> <span class="input-group-addon function-marker" data-ng-if=confirmationTouched> <i class="fa fa-check text-success" data-ng-show=widget.form.passwordsMatch title="{{\'common.auth.passwordsMatching\'|i18n:this}}"></i> <i class="fa fa-times text-error" data-ng-show=!widget.form.passwordsMatch title="{{\'common.auth.passwordsNotMatching\'|i18n:this}}"></i> </span> </div> <div class="alert alert-info"> <h5> <cc-i18n data-key=common.auth.passwordPolicyHintHeader></cc-i18n> </h5> <ul class="hint-text full-width"> <li data-ng-repeat="(key, value) in activePasswordPolicies track by $index"> <cc-i18n data-key="entity.LocalAuthenticationSettings.{{value[\'x\']}}" data-default="$defaults.attribute.{{value[\'x\']}}"></cc-i18n> : {{value[\'y\']}} </li> </ul> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/passwordplaceholder/passwordplaceholder.html","<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span>&bull;&bull;&bull;&bull;&bull;&bull;&bull;&bull;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/passwordwithoutconfirmation/passwordwithoutconfirmation.html",'<div class=input-group> <input id={{fieldInformation.model.elementId}} type=password class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }" maxlength={{maxSize}} autocomplete=off> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/percent/percent.html",'<p id={{fieldInformation.model.elementId}} class="form-control-static percent-renderer" tabindex=0> <span class=percent-value>{{getPercentDisplayName()}}</span> <span class=percent-symbol>%</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/phone/phone.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty()> <i class="fa fa-phone prefix-icon"></i><span>{{getValue()}}</span> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/preformattedtext/preformattedtext.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty() style="white-space: pre">{{getValue()}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/releasenotetype/releasenotetype.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <i class="fa prefix-icon {{getIconForType(getValue())}}" data-ng-if=!isValueEmpty()></i> {{formatLabel(getValue())}} <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/rrule/rrule.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span>{{getDisplayName()}}</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/select/select.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <p class=form-control-static data-ng-if=loading> <i class="fa fa-circle-notch fa-spin"></i> </p> <p class=form-control-static data-ng-if="!loading && getAllowedValueItemCount() === 0 && !field.selectAllowManualInput"> <cc-i18n data-key=widget.form.field.select.noValues></cc-i18n> </p> <div class=input-group data-ng-if="!loading && getAllowedValueItemCount() > 0"> <div class=btn-group> <button type=button class="btn btn-white" data-ng-repeat="item in getSelectableFields()" data-ng-click="setValue(item, true)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isValueActive(item), \'dirty\': dirty }"> <i class="fa {{getIcon(item)}} prefix-icon" data-ng-if=hasIcon(item)></i> <cc-i18n data-key={{item.name}} data-ng-if="!item.$displayName && !!item.name"></cc-i18n> <span data-ng-if=!!item.$displayName data-ng-bind-html=item.$displayName></span> </button> <button type=button title="{{\'widget.form.field.select.clear\'|i18n:this}}" class="btn btn-white" data-ng-if=clearButtonAvailable() data-ng-click="setValue(clearButtonValue(), true)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isValueEmpty(), \'dirty\': dirty }"> <i class="fa fa-times-circle" data-ng-if=!hasUnselectValueNameOverride()></i> <span class=placeholder data-ng-if=hasUnselectValueNameOverride()> <span>{{getUnselectValueNameOverride()}}</span> </span> </button> </div> </div> <div class=input-group data-ng-if="!loading && getAllowedValueItemCount() === 0 && field.selectAllowManualInput"> <input class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }"> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/shareableattributepath/shareableattributepath.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-repeat="translation in getPath()"> <cc-i18n data-key={{translation}}></cc-i18n> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/shareableattributepathpicker/shareableattributepathpicker.html",'<div id={{fieldInformation.model.elementId}} tabindex=0> <p class=form-control-static data-ng-if=!validEntity> <cc-i18n data-key=widget.form.field.pathpicker.noValidEntity></cc-i18n> </p> <div data-ng-if=validEntity> <p class=form-control-static style="margin-bottom: 5px"> <span> <kbd class=background-grey style="box-shadow: none"> <cc-i18n data-key={{translatedBaseModelName}}></cc-i18n> </kbd> <span data-ng-repeat="token in getPathTokens() track by $index"> <i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon"></i> <kbd> <cc-i18n data-key="{{getTranslation($index + 1)}}"></cc-i18n> <span class=clickable data-ng-click=removeTokens($index)> <i class="fa fa-times suffix-icon"></i> </span> </kbd> </span> </span> </p> <div class="form-control-static hint-text full-width" data-ng-if=isValueEmpty()> <div class="alert alert-info">
1 <cc-i18n data-key=personshareableattributes.createPath data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length > 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.availableQuantifierAttributes data-params=modelContext></cc-i18n> </div> </div> <div class="form-control-static hint-text full-width" data-ng-if="!isValueEmpty() && modelContext.attributes.length === 0"> <div class="alert alert-info"> <cc-i18n data-key=pathpicker.simpleAttribute data-params=modelContext></cc-i18n> </div> </div> <div class=input-group data-ng-if=!loading> <div class=btn-group> <button type=button class="btn btn-white" data-ng-repeat="attribute in modelContext.attributes track by $index" data-ng-click=selectToken(attribute) data-ng-if="modelContext.attributes.length > 0"> <i title="{{\'filter.collection\'|i18n:this}}" class="fa fa-list prefix-icon" data-ng-if=attribute.collection></i> <i title="{{\'personshareableattribute.navigableAttribute\'|i18n:this}}" class="fa fa-link prefix-icon" data-ng-if=!attribute.isSimpleType></i> <span data-ng-bind-html=attribute.$displayName></span> </button> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/staticgradepicker/staticgradepicker.html",'<div id={{fieldInformation.model.elementId}} class=input-group tabindex=0> <cc-i18n class=clearfix data-key={{gradingSystem.name.id}}></cc-i18n> <div class="btn-group pull-left"> <button class="btn btn-white" style="z-index: 1" data-ng-repeat="gradeSpecification in gradeSpecifications" data-ng-click="selectGrade(this, getValue(), gradingSystem.id, gradeSpecification, freeInput.value)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isGradeSelected(getValue(), gradeSpecification) && !freeInput.value, \'dirty\': dirty }"> <i class="fa prefix-icon" data-ng-class="{\'fa-check text-green\': gradeSpecification.passed, \'fa-times text-red\': !gradeSpecification.passed}"></i> <cc-i18n data-key={{gradeSpecification.name.id}}></cc-i18n> </button> <button title="{{\'widget.form.field.select.clear\'|i18n:widget._scope}}" class="btn btn-white" data-ng-if="!widget.api.field.isMandatory(valuePath, this, field) && gradeSpecificationsExists" data-ng-click="selectGrade(this, getValue(), gradingSystem.id, undefined, freeInput.value)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }"><i class="fa fa-times-circle"></i> </button> </div> <div class="input-group pull-left" style="z-index: 0; width: auto" data-ng-if="gradingSystem.numericGrades && !widget.data.grade.onlyPredefinedGradesAllowed"> <input type=number class="form-control fixed-width-input-100" data-ng-class="{\'horizontal-offset-15\' : gradeSpecificationsExists}" data-ng-model=freeInput.value data-ng-change="selectGrade(this, getValue(), gradingSystem.id, undefined, freeInput.value)" step=0.01> <span title="{{\'widget.form.field.grade.freeInput\'|i18n:this}}" class=input-group-addon><i class="fa fa-pencil-alt"></i></span> </div> <div class=clearfix></div> <div class="input-group vertical-offset-10" data-ng-if=!!gradingSystem> <div class="input-group inline-input-group pull-left horizontal-offset-20" data-ng-if="isGradeFilled(getValue()) && (isWithDistinctionPossible(gradingSystem.id, undefined, getValue()) || !!freeInput.value)"> <cc-i18n data-key=entity.Grade.withDistinction></cc-i18n> <div class=btn-group> <button type=button class="btn btn-white" data-ng-click="setWithDistinction(this, getValue(), true)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': isWithDistinction(getValue()), \'dirty\': dirty }"> <i class="fa fa-check text-green prefix-icon"></i> <cc-i18n data-key=common.true></cc-i18n> </button> <button type=button class="btn btn-white" data-ng-click="setWithDistinction(this, getValue(), false)" data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'active\': !isWithDistinction(getValue()), \'dirty\': dirty }"> <i class="fa fa-times text-red prefix-icon"></i> <cc-i18n data-key=common.false></cc-i18n> </button> </div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/tag/tag.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span class="label label-primary" data-ng-if=!isValueEmpty()>{{getValue()}}</span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/text/text.html",'<div class=input-group> <input id={{fieldInformation.model.elementId}} class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }" maxlength={{maxSize}} autocomplete=off> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/textarea/textarea.html",'<div class=input-group> <textarea id={{fieldInformation.model.elementId}} class=form-control data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true }" maxlength={{maxSize}} autocomplete=off></textarea> </div>'),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/time/time.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isEmptyTime()>{{getFormattedTime()}} <cc-i18n data-key=common.time></cc-i18n> </span> <span data-ng-if=isEmptyTime()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/timepicker/timepicker.html",'<div id={{fieldInformation.model.elementId}} class=input-group tabindex=0> <div style="display: inline-block" data-ng-change=selectTime() data-ng-model=time data-ng-model-options="{getterSetter: true}" show-meridian=false show-spinners=false uib-timepicker> </div> <cc-i18n style="position: relative; bottom: 8px" data-key=common.time></cc-i18n> </div> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/translationfield/translationfield.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isValueEmpty() data-ng-bind-html=getTranslatedValue()></span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/typeahead/item.html",'<a class=typeahead-item title={{match.label}}> <span data-ng-bind-html="match.label | highlight:query"></span> </a>'),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/typeahead/typeahead.html",'<p class=form-control-static data-ng-if=loading> <i class="fa fa-circle-notch fa-spin"></i> </p> <p class=form-control-static data-ng-if="!loading && getAllowedValueItemCount() === 0"> <cc-i18n data-key=widget.form.field.typeahead.noValues></cc-i18n> </p> <p class=form-control-static data-ng-if=waiting> <cc-i18n data-key=widget.form.field.typeahead.waitingForInput></cc-i18n> </p> <div class=input-group data-ng-if="!loading && !waiting && ((isMandatory() && !hasExactlyOneAllowedValue()) || !isMandatory()) && getAllowedValueItemCount() !== 0"> <input id={{fieldInformation.model.elementId}} class=form-control autocomplete=off data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }" data-ng-model=bindValuePath data-ng-model-options="{ getterSetter: true, debounce: 200 }" data-typeahead-append-to-body=true data-typeahead-input-formatter=removeHtml($model) data-typeahead-min-length="openImmediately ? 0 : 1" data-typeahead-select-on-exact=true data-typeahead-template-url=scripts/directives/uiitem/widget/form/fieldrenderer/typeahead/item.html data-uib-typeahead="item as item.$displayName for item in filterAllowedValuesSuggestions($viewValue)"> <span class="input-group-addon function-marker" data-ng-if="!isValueEmpty() || hasAllowedValuesModel()"> <i class="fa fa-times-circle clickable-icon" data-ng-class="{\'prefix-icon\': hasAllowedValuesModel()}" data-ng-click=bindValuePath(null) data-ng-if=!isValueEmpty()></i> <i class="fa fa-search clickable-icon" data-ng-click=lookupValue() data-ng-if=hasAllowedValuesModel()></i> </span> </div> <p class=form-control-static data-ng-if="!loading && !waiting && hasExactlyOneAllowedValue() && isMandatory()">
1 <span data-ng-bind-html=getValue().$displayName></span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/url/url.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <a title={{getValue()}} data-ng-if=!isValueEmpty() href={{getValue()}} target=_blank>{{getValue()}}</a> <span data-ng-if=isValueEmpty() class=placeholder>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/viewdefinition/viewdefinition.html",'<p class=form-control-static id={{fieldInformation.model.elementId}} tabindex=0> <span data-ng-if=!isValueEmpty()> <i class="fa fa-link prefix-icon"></i><a data-ng-click=go(getValue())>{{getValue()}}</a> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/viewfield/viewfield.html","<div id={{fieldInformation.model.elementId}} class=input-group tabindex=0> <span class=full-width data-ng-if=!isValueEmpty()> <span data-ng-if=!!getValue().priority> <i class=\"fa fa-bookmark prefix-icon\" data-ng-class=\"{'default': getValue().priority === 'DEFAULT', 'mandatory':  getValue().priority === 'MANDATORY', 'important': getValue().priority === 'IMPORTANT'}\"></i> <span>{{getValue().attribute}}</span> </span> <span class=pull-right> <i class=\"fa fa-eye prefix-icon\"></i><span class=\"label label-primary\">{{getValue().viewDisplayType}}</span> <i class=\"fa fa-pencil-alt prefix-icon suffix-icon\"></i><span class=\"label label-secondary\">{{getValue().editDisplayType}}</span> </span> </span> <span data-ng-if=isValueEmpty()>&nbsp;</span> </div> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/weekofdate/weekofdate.html","<p id={{fieldInformation.model.elementId}} class=form-control-static tabindex=0> <span data-ng-if=!isEmptyDate()>{{getFormattedDate()}}</span> <span data-ng-if=isEmptyDate()>&nbsp;</span> </p> "),e.put("scripts/directives/uiitem/widget/form/fieldrenderer/weekofdateperiod/weekofdateperiod.html",'<p id={{fieldInformation.model.elementId}} class=form-control-static data-ng-class="{\'text-green\': isActive(), \'text-red\': !isActive() }" tabindex=0> <span data-ng-if="hasStart() && hasEnd()"> <i title="{{(isActive() ? \'widget.form.field.dateperiod.active\' : \'widget.form.field.dateperiod.inactive\')|i18n:this}}" class="fa fa-calendar-alt prefix-icon" data-ng-class="{\'text-green\': isActive(), \'text-red\': !isActive() }"></i> <span data-ng-if="hasStart() && hasEnd()">{{getPeriod()}}</span> &nbsp; ( <cc-i18n data-key=widget.form.field.dateperiod.active data-ng-if=isActive()></cc-i18n> <cc-i18n data-key=widget.form.field.dateperiod.inactive data-ng-if=!isActive()></cc-i18n> ) </span> <span data-ng-if="hasStart() && !hasEnd()"> <i title="{{(isActive() ? \'widget.form.field.dateperiod.active\' : \'widget.form.field.dateperiod.inactive\')|i18n:this}}" class="fa fa-calendar-alt prefix-icon" data-ng-class="{\'text-green\': isActive(), \'text-red\': !isActive() }"></i> <span data-ng-if=hasStart()>{{getStartDate()}}</span>&nbsp;-&nbsp; &nbsp; ( <cc-i18n data-key=widget.form.field.dateperiod.active data-ng-if=isActive()></cc-i18n> <cc-i18n data-key=widget.form.field.dateperiod.inactive data-ng-if=!isActive()></cc-i18n> ) </span> <span data-ng-if="!hasStart() && hasEnd()"> <i title="{{(isActive() ? \'widget.form.field.dateperiod.active\' : \'widget.form.field.dateperiod.inactive\')|i18n:this}}" class="fa fa-calendar-alt prefix-icon" data-ng-class="{\'text-green\': isActive(), \'text-red\': !isActive() }"></i> &nbsp;-&nbsp; <span data-ng-if="!hasStart() && hasEnd()">{{getEndDate()}}</span> &nbsp; ( <cc-i18n data-key=widget.form.field.dateperiod.active data-ng-if=isActive()></cc-i18n> <cc-i18n data-key=widget.form.field.dateperiod.inactive data-ng-if=!isActive()></cc-i18n> ) </span> <span data-ng-if="!hasStart() && !hasEnd()">&nbsp;</span> </p> '),e.put("scripts/directives/uiitem/widget/form/formdefaultvalue.html",'<a data-ng-click="restore(); $event.stopPropagation()" data-ng-dblclick="restore(); $event.stopPropagation()" data-ng-if=!loading title="{{\'common.form.restoreDefault\'|i18n:this}}"> {{\'common.form.restoreDefault\'|i18n:this}} </a> <i data-ng-if=loading class="fa fa-sync fa-spin"></i>'),e.put("scripts/directives/uiitem/widget/form/formfilecollectiondownload.html",'<span data-ng-if=!loading> <i class="fa fa-fw fa-file-zipper"></i> <a data-cc-i18n-title=common.form.fileCollectionDownload data-ng-click="download(); $event.stopPropagation()" data-ng-dblclick="download(); $event.stopPropagation()"> {{\'common.form.fileCollectionDownload\' | i18n:this}} </a> </span> <i class="fa fa-fw fa-sync fa-spin" data-ng-if=loading></i> '),e.put("scripts/directives/uiitem/widget/form/note.html",'<div> <div class="alert alert-warning hint-text full-width"> <div class="ibox-tools pull-right" style="display: flex"> <div style="flex-grow: 1"></div> <div> <button class="btn btn-xs btn-primary btn-uppercase" data-ng-if="note.canEditNote && !note.isMarkedAsDeleted" data-ng-click=editNote(this) data-cc-i18n-title=common.editNote> <i class="fa fa-fw fa-pencil"></i> <cc-i18n data-key=common.editNote data-ng-if=widget.api.showCrudButtonLabels(this)></cc-i18n> </button> <button class="btn btn-xs btn-danger btn-uppercase" data-ng-if="note.canMarkNoteAsDeleted && !note.isMarkedAsDeleted" data-ng-click=markNoteAsDeleted(this) data-cc-i18n-title=common.markNoteAsDeleted> <i class="fa fa-fw fa-eye-slash"></i> <cc-i18n data-key=common.markNoteAsDeleted data-ng-if=widget.api.showCrudButtonLabels(this)></cc-i18n> </button> <button class="btn btn-xs btn-danger btn-uppercase" data-ng-if=note.canDeleteNote data-ng-click="deleteNote(this, $index)" data-cc-i18n-title=common.deleteNote>
1 <i class="fa fa-fw fa-trash"></i> <cc-i18n data-key=common.deleteNote data-ng-if=widget.api.showCrudButtonLabels(this)></cc-i18n> </button> </div> </div> <div class=input-group style="height: 23px; line-height: 23px"> <cc-i18n data-ng-if=note.isMarkedAsDeleted data-key=common.note.deleted></cc-i18n> <span data-ng-if=!note.isMarkedAsDeleted ng-bind-html=note.text></span> </div> <hr style="margin: 10px 0"> <div class="input-group text-italic"> <i class="fa fa-plus-square prefix-icon"></i> <cc-i18n class=translatable-by-cutomer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.notes.postedBy></cc-i18n> <cc-editing-mode data-i18n="\'common.notes.postedBy\'" data-ng-if=isEditingMode() data-entity=widget.model.baseModel.entity></cc-editing-mode> <span> <b>{{note.displayName}} </b></span> <cc-i18n class=translatable-by-cutomer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.notes.postedOn></cc-i18n> <cc-editing-mode data-i18n="\'common.notes.postedOn\'" data-ng-if=isEditingMode()></cc-editing-mode> <span> <b>{{getFormattedCreatedAt(this)}}</b>. </span> <span data-ng-if=note.isModified> <br> <i class="fa fa-pen-square prefix-icon"></i> <cc-i18n class=translatable-by-cutomer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.notes.modifiedOn></cc-i18n> <cc-editing-mode data-i18n="\'common.notes.modifiedOn\'" data-ng-if=isEditingMode()></cc-editing-mode> <span> {{getFormattedModifiedAt(this)}}.</span> </span> <span data-ng-if=note.publicNote> <br> <i class="fa fa-share-alt prefix-icon"></i> <cc-i18n class=translatable-by-cutomer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.notes.public></cc-i18n> <cc-editing-mode data-i18n="\'common.notes.public\'" data-ng-if=isEditingMode()></cc-editing-mode> </span> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/notes.html",'<div style="display: flex" data-ng-if=visible> <div class=notes data-ng-class="{\'visible\': visible}"> <div style="display: flex; margin-bottom: 8px"> <div data-ng-if=i18n> <cc-i18n class=translatable-by-customer style="line-height: 22px" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key={{i18n}}></cc-i18n> <cc-editing-mode style="margin-left: 3px; margin-top: 2px" data-ng-if="isEditingMode() && !itemConfig.preventDesignMode" data-i18n=i18n data-entity=widget.model.baseModel.entity></cc-editing-mode> </div> <div data-ng-if=displayName> {{displayName}} </div> <div style="flex-grow: 1"></div> <button class="btn btn-xs btn-success btn-uppercase" data-cc-i18n-title=common.createNote data-ng-if=canCreate data-ng-click=createNote(this)> <i class="fa fa-fw fa-file"></i> <cc-i18n data-key=common.createNote data-ng-if=widget.api.showCrudButtonLabels(this)></cc-i18n> </button> </div> <cc-note data-ng-repeat="note in notes track by note.id"></cc-note> <div class="alert alert-info" data-ng-if=!hasNotes(this)> <cc-i18n class=translatable-by-customer style="line-height: 22px" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.notes.empty></cc-i18n> <cc-editing-mode style="margin-left: 3px; margin-top: 2px" data-ng-if="isEditingMode() && !itemConfig.preventDesignMode" data-i18n="\'common.notes.empty\'" data-entity=widget.model.baseModel.entity></cc-editing-mode> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/form/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <i title="{{\'common.ui.usesOldPermissions\'|i18n:this}}" class="fa fa-exclamation-circle text-red prefix-icon" data-ng-if=widget.api.model.showOldPermissionsIndicator(this)></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.data data-ng-click="!isEditingMode() && widget.api.help.toggleShowHelp(this)"></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools data-ng-if="!widget.isEditingMode() && !itemConfig.isModal"> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex"> <cc-action data-action-id={{widget.api.getEditObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.form.crudActionsInitialized && itemConfig.updateObjectAction"></cc-action> <cc-action data-action-id={{widget.api.getUpdateObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.form.crudActionsInitialized && itemConfig.updateObjectAction"></cc-action>
1 <cc-action data-action-id={{widget.api.getCancelEditObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.form.crudActionsInitialized && itemConfig.updateObjectAction"></cc-action> <cc-action data-action-id={{widget.api.getDeleteObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.form.crudActionsInitialized && itemConfig.deleteObjectAction && widget.api.isViewMode(this)"></cc-action> <button title="{{\'common.readNotes\'|i18n:this}}" class="btn btn-xs btn-secondary" style="margin-left: 3px" data-ng-if="notes.canReadNotes && widget.api.isViewMode(this)" data-ng-click=widget.api.toggleNotes(this)> <i class="fa fa-fw fa-sticky-note"></i> <span>{{notes.data.length}}</span> </button> </div> <div style="display: flex; flex-wrap: wrap" data-ng-if=widget.api.isViewMode(this)> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px" data-ng-if=widget.api.isViewMode(this)> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right data-extras-title-key=widget.defaultExportActions data-extra-action-ids="[\'ExportObjectAsCsvAction\', \'ExportObjectAsCsvWithBomAction\', \'ExportObjectAsXmlAction\', \'ExportObjectAsPdfAction\']"></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.FormWidget.$entity data-extras-title-key=entity.FormWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class=ibox-content data-ng-class="{\'transparent\': widget.api.ui.isTransparent(this), \'no-padding\': itemConfig.noPadding}"> <div id={{::widget.api.getId(this)}} class=full-height style="display: flex; flex-direction: column"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <div class="alert alert-info" data-ng-if=!!itemConfig.info> <span data-ng-bind-html=::itemConfig.info></span> </div> <div class="alert alert-danger global-errors" data-ng-if=!!widget.status.globalMessages> <ul> <li data-ng-repeat="message in widget.status.globalMessages"> <span data-ng-bind-html=::message></span> </li> </ul> </div> <form class="cc-form form-horizontal" style="overflow-x: visible" name={{::widget.api.getId(this)}} data-cc-form-reference data-ng-show=!notes.visible data-ng-class="{\'view\': widget.api.isViewMode(this), \'edit\': !widget.api.isViewMode(this)}"> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <div class=mandatory-hint data-ng-if=!widget.api.isViewMode(this)> <cc-i18n data-key=common.form.mandatoryFields></cc-i18n> </div> <cc-field></cc-field> </form> <div class="controls text-center" data-ng-if="widget.api.hasControls(this) && (widget.api.isViewMode(this) || itemConfig.isModal)"> <cc-control data-control=control data-widget=widget data-ng-repeat="control in widget.action.control"></cc-control> </div> <cc-notes data-ng-show=notes.visible data-i18n=common.notes data-visible="notes.visible && notes.canReadNotes && !itemConfig.isModal" data-notes=notes.data data-can-create=notes.canCreateNotes data-object-id=notes.objectId></cc-notes> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(item
1Config.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\',\'FormWidget\')}}"></i> </button> <button title="{{\'common.editViewDefinition\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.model.editViewDefinition(itemConfig.id, itemConfig.viewDefinition, this)"> <i class="fa fa-fw fa-wrench"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-action-id=AccessHelperAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-action-id=GetViewDefinitionIdAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-action-id=ExportObjectAsXmlDevAction data-widget=widget data-as-button=true data-button-style=primary data-ng-if=!itemConfig.isModal></cc-action> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-as-button=true data-button-style=primary data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/graph/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.data data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-no-margin=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.GraphWidget.$entity data-extras-title-key=entity.GraphWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class=ibox-content data-ng-class="{\'transparent\': widget.api.ui.isTransparent
1(this), \'no-padding\': itemConfig.noPadding}"> <div id={{::widget.api.getId(this)}} class=cc-graph style="display: flex; flex-direction: column"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <cytoscape data-graph-elements=widget.data data-graph-layout=widget.graph.layout style="flex-grow: 1" data-graph-style=widget.graph.style data-graph-options=widget.graph.options></cytoscape> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(itemConfig.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\', \'GraphWidget\')}}"></i> </button> <button title="{{\'common.editViewDefinition\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.model.editViewDefinition(itemConfig.id, itemConfig.viewDefinition, this)"> <i class="fa fa-fw fa-wrench"></i> </button> <button title="{{\'dev.navigationeditor.addUiItem\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.addUiItem(itemConfig.id)> <i class="fa fa-fw fa-plus-circle"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/help.html",'<div> <div data-ng-if=!widget.api.help.helpReady(this)> <div class="alert alert-info full-width text-center"> <i class="fa fa-circle-notch fa-spin"></i> </div> </div> <div class="form-control-static hint-text full-width clickable" data-ng-click=widget.api.help.toggleShowHelp(this) data-ng-if=widget.api.help.helpReady(this)> <div class="alert alert-info"> <div> <strong> <cc-i18n data-key=widget.helptitle data-params=widget.data></cc-i18n> <cc-i18n data-key={{widget.title}} data-params=widget.data></cc-i18n> </strong> </div> <div class=text-justify data-ng-repeat="h in widget.helpTranslationFields" data-ng-class="{\'vertical-offset-5\': !$first}"> <cc-i18n data-key={{h}}></cc-i18n> </div> <div class=vertical-offset-10 data-ng-if="widget.action.visibleActions.length > 0 && !itemConfig.isModal"> <strong> <cc-i18n data-key=widget.showActionHelpTexts></cc-i18n> </strong> </div> <div style="display: flex; gap: 8px; line-height: 20px" data-ng-if=!itemConfig.isModal data-ng-repeat="action in widget.action.visibleActions track by $index"> <div style="display: flex; width: 30px; height: 20px; align-items: center; justify-content: center"> <i class="fa fa-fw {{action.config.icon}} text-{{action.config.style}}" data-ng-if=!isTagIcon(action.config.icon)></i> <span class="label label-secondary" style="display: inline-block; width: 30px; padding: 4px" data-ng-if=isTagIcon(action.config.icon)>{{getActionIconAsTag(action.config.icon)}}</span> </div> <div style="flex-grow: 1"> <strong> <cc-i18n data-key={{getActionName(action)}}></cc-i18n> </strong> - <cc-i18n data-key={{action.config.help.id}}></cc-i18n> </div> </div> <div class=vertical-offset-10 data-ng-if=hasHotkeyHelpInformation()> <strong> <cc-i18n data-key=widget.showHotkeysHelpText></cc-i18n> </strong> </div> <div data-ng-repeat="hotkey in widget.hotkeyHelpInformation track by $index"> <table class=hotkeyhelp> <tr> <td class=hotkey> <span data-ng-repeat="singleKey in hotkey.displayKeys track by $index"><i class="fa {{singleKey.displayValue}}" data-ng-if=singleKey.isIcon></i> <span data-ng-if=!singleKey.isIcon data-ng-bind-html=singleKey.displayValue></span> <span data-ng-if=!$last>+</span> </span> </td> <td class=help-text> <cc-i18n data-key={{hotkey.name}}></cc-i18n> </td> </tr> </table> </div> <div data-ng-transclude></div> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/iframe.html",'<iframe class="full-width full-height" title="Embedded content" data-ng-src={{widget.iframe.url}}></iframe> '),e.put("scripts/directives/uiitem/widget/report/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.report.reportData data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-no-margin=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.ReportWidget.$entity data-extras-title-key=entity.ReportWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class="ibox-content cc-report" data-ng-class="{\'transparent\': widget.api.ui.isTransparent
1(this), \'no-padding\': itemConfig.noPadding}"> <i class="fa fa-circle-notch fa-2x fa-spin" data-ng-show=isLoading></i> <div style="display: flex; flex-direction: column; height: 100%" data-ng-show=!isLoading> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <div class="cc-option-toggle report-renderers" data-ng-if="!!widget.report.reportData && widget.api.hasAnySeries(this) && widget.api.canSwitchRenderer(this)"> <ul class=pagination> <li title={{renderer.name.id|i18n:this}} data-ng-repeat="renderer in widget.api.getAvailableRenderers(this)" data-ng-class="{\'active\': widget.api.isRendererActive(renderer, this) }" data-ng-click="widget.api.renderWith(renderer, this)"> <a><i class="fa {{renderer.icon}} prefix-icon"></i><span><cc-i18n data-key={{renderer.name.id}}></cc-i18n></span></a> </li> </ul> </div> <div id={{::widget.api.getId(this)}}_reportContent class=report-content> <div data-ng-if="!!widget.report.reportData && !widget.api.hasAnySeries(this)"> <div class="form-control-static hint-text full-width"> <div class="alert alert-info"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key=widget.report.noSeriesConfigured></cc-i18n> <cc-editing-mode data-i18n="\'widget.report.noSeriesConfigured\'" data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle"></cc-editing-mode> </div> </div> </div> <div class="alert alert-warning hint-text" style="margin-bottom: 0px; border-radius: 4px" data-ng-if="!widget.report.reportData && !widget.api.hasAnyData(this)"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle"></cc-editing-mode> </div> <div data-ng-if="!!widget.report.reportData && !widget.api.hasAnyData(this)"> <div class="form-control-static hint-text full-width no-padding"> <div class="alert alert-info" style="margin-bottom: 0px"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key=widget.report.noSeriesDataFound></cc-i18n> <cc-editing-mode data-i18n="\'widget.report.noSeriesDataFound\'" data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle"></cc-editing-mode> </div> </div> </div> <highchart id={{::widget.api.getId(this)}}_chart class="full-height full-width" config=widget.report.chart data-ng-if="widget.api.getCurrentRenderer(this).framework === \'highcharts\' && widget.api.hasAnyData(this)"></highchart> <div id={{::widget.api.getId(this)}}_legend class=table-report-legend data-ng-show="!!widget.report.reportData && widget.api.hasAnySeries(this) && widget.api.hasAnyData(this) && widget.api.getCurrentRenderer(this).framework === \'agGrid\'"> <span data-ng-repeat="series in widget.report.reportData" data-ng-init="colors = widget.api.getSeriesColors(this); letters = widget.api.getSeriesLetters(this);"> <i class="fa fa-circle cc-solid-icon" data-ng-class="{\'suffix-icon\': !$first}" data-ng-style="{ color: colors[$index] }"></i> <span>{{letters[$index]}} = <span><cc-i18n data-key={{series.name}}></cc-i18n><span data-ng-if=widget.api.hasSeriesTotal(series)> ({{::widget.api.getSeriesTotal(series, this)}})</span></span> </span> </span> </div> <div id={{::widget.api.getId(this)}} class="cc-table ag-campuscore" style="flex-grow: 1" data-ag-grid=widget.report.grid data-ng-style="{height: itemConfig.fixedHeight ? itemConfig.fixedHeight + \'px\' : undefined}" data-ng-show="!!widget.report.reportData && widget.api.hasAnySeries(this) && widget.api.hasAnyData(this) && widget.api.getCurrentRenderer(this).framework === \'agGrid\'"></div> </div> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <div style="display: flex; align-items: center"> <i title="{{\'widget.report.lastUpdate\'|i18n:this}}" class="fa fa-clock prefix-icon info-icon"></i><span class="badge-primary count-filtered"><span data-am-time-ago=widget.report.lastUpdate></span></span> </div> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(item
1Config.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\',\'ReportWidget\')}}"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/status.html",'<div class=footer-content style="line-height: 26px"> <div class="status-text text-ellipsis" title={{widget.status.text|i18n:this}}> <cc-i18n data-key={{widget.status.text}}></cc-i18n> </div> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/checkbox/checkbox.html",'<div data-ng-controller=ccCheckboxTableCellEditor data-cc-hotkeys=hotkeysConfig class=btn-group tabindex=0> <button class="btn btn-sm" data-ng-class="{\'active\' : data.value === true}" data-ng-click=setValueAndFinish(true)> <i class="fa fa-check text-green"></i> </button> <button class="btn btn-sm" data-ng-class="{\'active\' : data.value === false}" data-ng-click=setValueAndFinish(false)> <i class="fa fa-times text-red"></i> </button> <button class="btn btn-sm" data-ng-class="{\'active\' : data.value === null}" data-ng-click=setValueAndFinish(null) data-ng-if="::data.priority !== \'MANDATORY\'"> <i class="fa fa-times-circle"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/datepicker/datepicker.html",'<div style="display:flex; align-items: center; height: 100%" data-ng-controller=ccDatePickerTableCellEditor data-cc-hotkeys=hotkeysConfig> <div class=input-group data-ng-class="{\'fixed-width-input-130\': isDateField(), \'fixed-width-input-170\': isDateTimeField()}"> <input class=form-control style="flex: 1;" data-ui-mask={{getInputMask()}} data-ui-options="{clearOnBlur: false}" data-ng-model=$displayName data-ng-change=updateDate() data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'ng-dirty\': dirty }"> </div> <span class=horizontal-offset-5 style="display: flex; align-items: center" data-uib-dropdown data-dropdown-append-to-body=true data-is-open=dropdownIsOpen> <i title="{{\'widget.form.field.datePicker.select\'|i18n:this}}" class="fa {{getPickerIcon()}} clickable-icon dropdown-toggle" data-uib-dropdown-toggle></i> <ul class="dropdown-menu datepicker" data-uib-dropdown-menu aria-labelledby=simple-dropdown> <datetimepicker data-ng-model=date data-datetimepicker-config=getPickerOptions() data-on-set-time=selectDate(newDate)></datetimepicker> </ul> </span> <i class="fa fa-arrow-circle-right horizontal-offset-5" data-ng-click=data.finishEditFn()></i> </div>'),e.put("scripts/directives/uiitem/widget/table/celleditor/durationpicker/durationpicker.html","<div data-ng-controller=ccDurationPickerTableCellEditor class=btn-group tabindex=0> <input type=number autocomplete=off class=form-control data-ng-class=\"{'default': !hasPriority(), 'mandatory': isMandatory(), 'important': isImportant(), 'error': hasError(), 'dirty': dirty }\" data-ng-model=selectedValue data-uib-typeahead=\"item as item.$displayName for item in getValueSuggestions($viewValue)\" data-typeahead-input-formatter=removeHtml($model) data-typeahead-select-on-exact=true data-typeahead-on-select=setValueAndFinish($item) data-typeahead-append-to-body=true data-typeahead-template-url=scripts/directives/uiitem/widget/form/fieldrenderer/typeahead/item.html> </div> "),e.put("scripts/directives/uiitem/widget/table/celleditor/moneypicker/moneypicker.html",'<div data-ng-controller=ccMoneyPickerTableCellEditor class=input-group tabindex=0 style="display:flex; flex-direction:row; height: 100%"> <input type=number data-ng-model=bindAmountValuePath step=0.01 data-ng-model-options="{getterSetter: true}" class="form-control fixed-width-input-80" data-smart-float data-ng-class="{\'default\': !hasPriority(), \'mandatory\': isMandatory(), \'important\': isImportant(), \'error\': hasError(), \'dirty\': dirty }"> <span class="input-group-addon function-marker" data-uib-dropdown data-dropdown-append-to-body=true data-ng-class="{\'dirty\': dirty}" style="display: flex; flex-direction: column; justify-content: center; height: 100%; width: 50px"> <span class=dropdown-toggle id=" dropdownSelector + \'" data-toggle=dropdown data-uib-dropdown-toggle> <i class="fa {{selectedCurrency.symbol}} prefix-icon" data-ng-if="currencies && !!selectedCurrency"></i> <i class="fa fa-money-bill-alt prefix-icon" data-ng-if=!selectedCurrency></i> <i class="fa fa-caret-down"></i> </span> <ul class="dropdown-menu currencies" data-uib-dropdown-menu style="width: 100px; left: 140px"> <li data-ng-repeat="currency in currencies" title={{currency.name.id|i18n:this}}> <a data-ng-click=selectCurrency(currency)> <i class="fa {{currency.symbol}} prefix-icon"></i>{{currency.iso}} (<cc-i18n data-key={{currency.name.id}}></cc-i18n>) </a> </li> </ul> </span> <button class="btn btn-finish-edit" data-ng-click=data.finishEditFn()> <i class="fa fa-arrow-circle-right"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/number/number.html",'<div data-ng-controller=ccNumberTableCellEditor style="display:flex; flex-direction:row"> <input type=number data-ng-model=bindValue data-ng-model-options="{ getterSetter: true }" style="flex: 1; height: 100%; margin-top: -3px"> <button class="btn btn-xs" data-ng-click=data.finishEditFn() style="margin-top: -3px"> <i class="fa fa-arrow-circle-right"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/staticgradepicker/staticgradepicker.html",'<div data-ng-controller=ccStaticGradePickerTableCellEditor style="display:flex; flex-direction:row"> <a uib-popover-html=gradingSystemPopOverText popover-trigger="\'outsideClick\'" popover-title={{::title}} popover-append-to-body=true popover-placement=left-top> <i class="fa {{::icon}}"></i> </a> <input id={{::data.objectId}} type={{::type}} data-ng-model=bindValue data-ng-model-options="{ getterSetter: true }" style="flex: 1; height: 100%; margin-left: 4px; margin-top: -3px"> <button class="btn btn-xs" data-ng-click=data.finishEditFn() style="margin-top: -3px"> <i class="fa fa-arrow-circle-right"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/text/text.html",'<div data-ng-controller=ccTextTableCellEditor style="display:flex; flex-direction:row"> <input data-ng-model=bindValue data-ng-model-options="{ getterSetter: true }" style="flex: 1; height: 100%; margin-top: -3px"> <button class="btn btn-xs" data-ng-click=data.finishEditFn() style="margin-top: -3px"> <i class="fa fa-arrow-circle-right"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/timepicker/timepicker.html",'<div data-ng-controller=ccTimePickerTableCellEditor style="display:flex; align-items: center;
1" data-cc-hotkeys=hotkeysConfig> <div uib-timepicker data-ng-model=time data-ng-model-options="{getterSetter: true}" show-meridian=false show-spinners=false data-ng-change=updateTime()> </div> <cc-i18n data-key=common.time style="margin: 0 5px 0 5px;"></cc-i18n> <button class="btn btn-xs confirm" data-ng-click=data.finishEditFn()> <i class="fa fa-arrow-circle-right"></i> </button> </div>'),e.put("scripts/directives/uiitem/widget/table/celleditor/translationfield/translationfield.html",'<div data-ng-controller=ccTranslationFieldTableCellEditor style="display:flex; flex-direction:row; height: 100%; justify-content: flex-start"> <span class="input-group-addon function-marker" data-uib-dropdown data-dropdown-append-to-body=true data-ng-class="{\'dirty\': dirty}" style="display: flex; flex-direction: column; justify-content: center; height: 100%; width: 50px"> <span class=dropdown-toggle data-toggle=dropdown data-uib-dropdown-toggle> <span>{{visibleLocale.iso}}</span> <i class="fa fa-caret-down suffix-icon"></i> </span> <ul class=dropdown-menu data-uib-dropdown-menu style="width: 100px; left: 140px"> <li data-ng-repeat="locale in locales" title={{locale.name[locale.iso]}}> <a data-locale={{locale.iso}} data-ng-click=selectLocale(locale)>{{locale.iso}}</a> </li> </ul> </span> <input data-locale=de data-ng-show="visibleLocale.iso === \'de\'" data-cc-hotkeys=hotkeysConfig data-ng-model=bindValueDe data-ng-model-options="{ getterSetter: true }" style="flex: 1; height: 100%;"> <input data-locale=en data-ng-show="visibleLocale.iso === \'en\'" data-cc-hotkeys=hotkeysConfig data-ng-model=bindValueEn data-ng-model-options="{ getterSetter: true }" style="flex: 1; height: 100%;"> <button class="btn btn-xs btn-finish-edit" data-ng-click=data.finishEditFn() style="margin: 0"> <i class="fa fa-arrow-circle-right"></i> </button> </div> '),e.put("scripts/directives/uiitem/widget/table/celleditor/typeahead/typeahead.html",'<div data-ng-controller=ccTypeaheadTableCellEditor> <i class="fa fa-circle-notch fa-spin"></i> </div>'),e.put("scripts/directives/uiitem/widget/table/filter/text/floatingtext.html",'<div class=ag-input-wrapper data-ng-controller="ccFloatingTextTableFilter as filterCtrl" data-ng-model-options="{ debounce: 300 }" tabindex=0> <input class="ag-floating-filter-input ag-input-field-input ag-text-field-input" data-ng-model=filterCtrl.value data-ng-change=filterCtrl.uiChanged() placeholder="{{\'common.ui.placeholder.search\'|i18n:this}}" aria-label="Filter Value" data-ng-disabled="filterCtrl.advanced || isEditMode()" col-id={{::field}}> </div> '),e.put("scripts/directives/uiitem/widget/table/filter/text/text.html",'<div data-ng-controller="ccTextTableFilter as filterCtrl" tabindex=0 class="cc-form form-horizontal"> <button class="btn btn-xs btn-default pull-right" data-ng-click=filterCtrl.clear()> <i class="fa fa-times"></i> <cc-i18n data-key=common.ui.table.filter.clear> </button> <div style="clear: both"></div> <label class=text-ellipsis data-ng-click=toggleShowHelpField(fieldInformation) title={{common.ui.table.filter.toggleCaseSensitive|i18n:this}}> <i class="fa fa-bookmark mandatory prefix-icon info-icon"></i> <cc-i18n class=translatable-by-customer data-key=common.ui.table.filter.toggleCaseSensitive></cc-i18n> </label> <div class=input-group> <div class=btn-group> <button data-ng-click=filterCtrl.setCaseSensitive(true) class="btn btn-white mandatory" data-ng-class="{\'active\': filterCtrl.caseSensitive }" type=button> <i class="fa fa-check text-green prefix-icon"></i> <span><cc-i18n data-key=common.true></span> </button> <button data-ng-click=filterCtrl.setCaseSensitive(false) class="btn btn-white mandatory" data-ng-class="{\'active\': !filterCtrl.caseSensitive }" type=button> <i class="fa fa-times text-red prefix-icon"></i> <span><cc-i18n data-key=common.false></span> </button> </div> </div> <div class=vertical-offset-15> <label class=text-ellipsis data-ng-click=toggleShowHelpField(fieldInformation) title={{common.ui.table.filter.groupMatcher.label|i18n:this}}> <i class="fa fa-bookmark mandatory prefix-icon info-icon"></i> <cc-i18n class=translatable-by-customer data-key=common.ui.table.filter.groupMatcher.label></cc-i18n> </label> <div class=input-group> <div class=btn-group> <button class="btn btn-white mandatory" data-ng-click="filterCtrl.setGroupMatcher(\'&\')" data-ng-class="{\'active\': filterCtrl.groupMatcher===\'&\'}" type=button> <cc-i18n data-key=common.ui.table.filter.groupMatcher.and> </button> <button class="btn btn-white mandatory" data-ng-click="filterCtrl.setGroupMatcher(\'|\')" data-ng-class="{\'active\': filterCtrl.groupMatcher===\'|\'}" type=button> <cc-i18n data-key=common.ui.table.filter.groupMatcher.or> </button> </div> </div> </div> <hr> <div data-ng-repeat="filterValue in filterCtrl.filterValues" class=vertical-offset-10> <div style="display: flex; margin-bottom: 5px"> <select data-ng-model=filterValue.operator data-ng-change=filterCtrl.uiChanged()> <option value=contains>{{filterCtrl.translations.operator.contains}}</option> <option value=notContains>
1{{filterCtrl.translations.operator.notContains}}</option> <option value=equals>{{filterCtrl.translations.operator.equals}}</option> <option value=notEquals>{{filterCtrl.translations.operator.notEquals}}</option> <option value=startsWith>{{filterCtrl.translations.operator.startsWith}}</option> <option value=notStartsWith>{{filterCtrl.translations.operator.notStartsWith}}</option> <option value=endsWith>{{filterCtrl.translations.operator.endsWith}}</option> <option value=notEndsWith>{{filterCtrl.translations.operator.notEndsWith}}</option> </select> <input class=form-control style="background-color: transparent;" data-ng-model=filterValue.value data-ng-model-options="{ debounce: 300 }" data-ng-change=filterCtrl.uiChanged() placeholder="{{\'common.ui.table.filter.placeholder.filter\'|i18n:this}}" aria-label="Filter Value"> </div> <span class="input-group-addon function-marker without-field" style="margin-bottom: 10px"> <i class="fa fa-plus clickable-icon" data-ng-click=filterCtrl.addFilter()></i> <i class="fa fa-minus clickable-icon" data-ng-click=filterCtrl.removeFilter($index) data-ng-show="filterCtrl.filterValues.length > 1"></i> </span> </div> </div> '),e.put("scripts/directives/uiitem/widget/table/widget.html",'<div class="ibox animated fadeIn flex-simple" style="display: flex; flex-direction: column" data-ng-show=visible data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if=widget.api.ui.hasHeader(this)> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <i title="{{\'common.ui.usesOldPermissions\'|i18n:this}}" class="fa fa-exclamation-circle text-red prefix-icon" data-ng-if=widget.api.model.showOldPermissionsIndicator(this)></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params=widget.table.grid.rowData data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i title="{{\'editingMode.locked\'|i18n:this}}" class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle"></i> </h5> <div class=ibox-tools data-ng-if=!isEditingMode()> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && widget.api.action.requiresToolbar(this)"> <div style="display: flex"> <cc-action-menu data-action-ids=widget.api.getCreateObjectActions(this) data-widget=widget data-button-style=success data-ng-if="widget.table.crudActionsInitialized && itemConfig.createObjectAction && widget.api.getCreateObjectActions(this).length > 1 && !widget.api.isEditMode(this)" data-show-icon=true data-title=common.create menu-icon=fa-file data-as-button=true data-title-key=common.create data-hide-headings=true data-show-text=::widget.api.showCrudButtonLabels(this)></cc-action-menu> <cc-action data-action-id={{widget.api.getCreateObjectActions(this)[0]}} data-widget=widget data-no-margin=true data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.table.crudActionsInitialized && itemConfig.createObjectAction && widget.api.getCreateObjectActions(this).length === 1 && !widget.api.isEditMode(this)"></cc-action> <cc-action data-action-id={{widget.api.getEditObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.table.crudActionsInitialized && widget.api.isInlineEditingEnabled(this)"></cc-action> <cc-action data-action-id={{widget.api.getUpdateObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.table.crudActionsInitialized && widget.api.isInlineEditingEnabled(this)"></cc-action>
1 <cc-action data-action-id={{widget.api.getCancelEditObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.table.crudActionsInitialized && widget.api.isInlineEditingEnabled(this)"></cc-action> <cc-action data-action-id={{widget.api.getDeleteObjectAction(this)}} data-widget=widget data-as-button=true data-show-text=::widget.api.showCrudButtonLabels(this) data-ng-if="widget.table.crudActionsInitialized && itemConfig.deleteObjectAction && !widget.api.isEditMode(this)"></cc-action> <cc-action data-action-id=ShowFloatingTableFiltersAction data-widget=widget data-as-button=true data-button-style=secondary data-ng-if="!widget.table.floatingFilterVisible && !widget.api.isEditMode(this)"></cc-action> <cc-action data-action-id=HideFloatingTableFiltersAction data-widget=widget data-as-button=true data-button-style=secondary data-ng-if="widget.table.floatingFilterVisible && !widget.api.isEditMode(this)"></cc-action> <cc-action data-action-id=AddCustomFilterAction data-widget=widget data-as-button=true data-button-style=secondary data-ng-if="widget.canFilter && !widget.api.isEditMode(this)"></cc-action> </div> <div style="display: flex; flex-wrap: wrap" data-ng-if="!itemConfig.isModal && !widget.api.isEditMode(this)"> <cc-transition-menu data-transitions=widget.action.transition data-as-button=true data-button-style=primary data-widget=widget data-ng-if="widget.action.transition && widget.action.transition.length > 0"></cc-transition-menu> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-ng-if="entry.type === \'GROUP\'" data-show-icon=true data-show-text=entry.showName data-title=entry.groupName menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px" data-ng-if=!itemConfig.isModal> <cc-action-menu data-action-ids=widget.action.document data-widget=widget data-no-margin=true menu-icon=fa-scroll data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget data-no-margin=true menu-icon=fa-file-export data-title-key=widget.exportActions data-as-button=true data-caret-position=right data-extras-title-key=widget.defaultExportActions data-extra-action-ids="[\'ExportObjectAsCsvAction\', \'ExportObjectAsCsvWithBomAction\', \'ExportObjectAsXmlAction\', \'ExportObjectAsPdfAction\']"></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.TableWidget.$entity data-extras-title-key=entity.TableWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\', \'ResetTableAction\']"></cc-action-menu> </div> </div> <div class=ibox-content style="display: flex; flex-direction: column" data-ng-show=widget.table.selectAllInProgress> <cc-i18n data-key=widget.table.loadingAllBlocksForSelection></cc-i18n> </div> <div class=ibox-content style="display: flex; flex-direction: column" data-ng-show=!widget.table.selectAllInProgress data-ng-class="{\'transparent\': widget.api.ui.isTransparent(this), \'no-padding\': itemConfig.noPadding}"> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <div class="alert alert-danger" data-ng-if=!!widget.status.globalMessages> <ul> <li data-ng-repeat="message in widget.status.globalMessages"> <span data-ng-bind-html=::message></span> </li> </ul> </div> <div class="alert alert-warning hint-text full-width" data-ng-if=widget.table.filteredExternally style="display: flex; flex-direction: column; gap: 10px; align-items: center"> <div> <cc-i18n data-key=widget.table.externallyFiltered></cc-i18n> <cc-editing-mode data-i18n="\'widget.table.externallyFiltered\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <button class="btn btn-xs btn-uppercase btn-primary" data-ng-click=widget.api.reload(this)> <i class="fa fa-fw fa-undo"></i> <cc-i18n data-key=common.reload></cc-i18n> </button> </div> <div class="cc-option-toggle flexed" data-ng-if=!widget.table.filteredExternally> <ul class="pagination mode-filters" data-ng-if=widget.api.filter.hasMode(this)> <li data-cc-i18n-title=filter.description.id data-ng-repeat="filter in widget.filter.mode" data-ng-class="{\'active\': widget.api.filter.isActive(filter, this)}" data-ng-click="widget.api.filter.toggle(filter, this)"> <a class=text-ellipsis> <i class="fa fa-adjust cc-solid-icon prefix-icon"></i> <cc-i18n data-key={{filter.name.id}}></cc-i18n> </a> </li> <li class=text-ellipsis data-ng-click=widget.api.filter.clearMode(this)> <a class=text-ellipsis> <i class="fa fa-circle prefix-icon"></i> <cc-i18n data-key=widget.table.filter.all></cc-i18n> </a> </li> </ul>
1 <span style="width: 20px" data-ng-if="widget.api.tableView.showTableViews(this) && widget.api.filter.hasMode(this) && widget.api.tableView.getProminentTableViews(this).length"></span> <ul class="pagination mode-filters" data-ng-if="widget.api.tableView.showTableViews(this) && widget.api.tableView.getProminentTableViews(this).length"> <li title="{{\'common.ui.table.tableView.apply\'|i18n:this}}: {{tableView.name.id|i18n:this}}" class=text-ellipsis data-ng-repeat="tableView in widget.api.tableView.getProminentTableViews(this)" data-ng-click="widget.api.tableView.applyTableView(this, tableView.id)"> <a class=text-ellipsis> <i class="fa fa-table prefix-icon"></i> <cc-i18n data-key={{tableView.name.id}}></cc-i18n> </a> </li> </ul> </div> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <div style=margin-bottom:10px; data-ng-if="itemConfig.alias === \'ownApplicationsToUniversity\'"> <cc-i18n data-key=common.application.help></cc-i18n> </div> <div id={{::widget.api.getId(this)}} class="cc-table ag-campuscore ag-selectable" style="flex-grow: 1" data-ng-class="{\'inline-editing-active\': widget.table.inlineEditingActive, \'allowFocusInViewMode\': itemConfig.allowFocusInViewMode}" tabindex=0> </div> <div class="controls text-center" data-ng-if=widget.api.hasControls(this)> <cc-control data-control=control data-widget=widget data-ng-repeat="control in widget.action.control"></cc-control> </div> </div> <div class=ibox-footer style="display: flex; align-items:center" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <div class=cc-widget-table-footer style="display: flex"> <div style="white-space: nowrap" data-ng-if="widget.table.numberOfSelectedRows > 0"> <i title="{{\'widget.table.count.selected\'|i18n:this}}" class="fa fa-check-circle suffix-icon prefix-icon"></i> <span class="badge-secondary count-selected">{{widget.table.numberOfSelectedRows}}</span> </div> <div style="white-space: nowrap" data-ng-if="widget.api.getNumberOfRows(this) >= 0"> <i title="{{\'widget.table.count.full\'|i18n:this}}" class="fa fa-circle cc-solid-icon suffix-icon prefix-icon"></i> <span class="badge-secondary count-full">{{widget.api.getNumberOfRows(this)}}</span> </div> <div title="{{customFilter.name.id|i18n:this}}{{customFilter.description ? \': \' : \'\'}}{{customFilter.description.id|i18n:this}}" class="horizontal-offset-5 clickable cc-widget-filter" data-ng-repeat="customFilter in widget.filter.custom" data-ng-click="widget.api.filter.toggle(customFilter, this)" data-ng-class="{\'badge-secondary\': widget.api.filter.isActive(customFilter, this), \'badge-disabled\': !widget.api.filter.isActive(customFilter, this)}" data-ng-if=!widget.table.filteredExternally> <i class="fa prefix-icon" data-ng-class="{\'fa-minus-circle\': widget.api.filter.isActive(customFilter, this), \'fa-plus-circle\': !widget.api.filter.isActive(customFilter, this)}"></i> <cc-i18n data-key={{customFilter.name.id}}></cc-i18n> <i class="fa fa-times-circle fa-inverse suffix-icon" data-ng-click="widget.api.filter.removeCustom(customFilter, this)"></i> </div> <div title="{{systemFilter.name.id|i18n:this}}{{systemFilter.description ? \': \' : \'\'}}{{systemFilter.description.id|i18n:this}}" class="horizontal-offset-5 clickable cc-widget-filter" data-ng-repeat="systemFilter in widget.filter.system" data-ng-click="widget.api.filter.toggle(systemFilter, this)" data-ng-class="{\'badge-secondary\': widget.api.filter.isActive(systemFilter, this), \'badge-disabled\': !widget.api.filter.isActive(systemFilter, this)}" data-ng-if=!widget.table.filteredExternally> <i class="fa prefix-icon" data-ng-class="{\'fa-minus-circle\': widget.api.filter.isActive(systemFilter, this), \'fa-plus-circle\': !widget.api.filter.isActive(systemFilter, this)}"></i> <cc-i18n data-key={{systemFilter.name.id}}></cc-i18n> </div> </div> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(item
1Config.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\', \'TableWidget\')}}"></i> </button> <button title="{{\'common.editViewDefinition\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.model.editViewDefinition(itemConfig.id, itemConfig.viewDefinition, this)"> <i class="fa fa-fw fa-wrench"></i> </button> <button title="{{\'dev.navigationeditor.addUiItem\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.addUiItem(itemConfig.id)> <i class="fa fa-fw fa-plus-circle"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div style="display: flex; align-items: center" data-ng-if=isDevMode()> <cc-action data-action-id=AccessHelperAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-action-id=GetViewDefinitionIdAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-action-id=ExportObjectAsXmlDevAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/achievementoverview.html",'<div class=tree-node style="display: flex; align-items: baseline; flex-wrap: nowrap; justify-content: flex-start; gap: 3px" data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon fa-fw" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa clickable-icon fa-fw" style="flex-shrink: 0" data-ng-if="node.$reference || !node.$children || node.$children.length === 0"></i> <i class="fa clickable-icon {{widget.api.getNodeIcon(node, this)}} fa-fw" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)" title={{node.$displayName}} style="flex-grow: 0; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> </span> <span style=flex-grow:1></span> <span class=pull-right style="flex-shrink: 0" data-ng-if=!!widget.tree.appRegRuleResults[node.rules]> <span data-ng-if="!!widget.tree.appRegRuleResults[node.rules].grade && !!widget.tree.appRegRuleResults[node.rules].grade.id"> <i class="fa fa-fw fa-calculator suffix-icon" data-ng-if=!!!widget.tree.appRegRuleResults[node.rules].grade.withDistinction title="{{\'common.transcript.calculatedGrade\'|i18n:this}}"></i> <i data-ng-if=!!widget.tree.appRegRuleResults[node.rules].grade.withDistinction class="fa fa-fw fa-trophy text-yellow suffix-icon" title="{{\'entity.Grade.withDistinction\'|i18n:this}}"></i> <span data-ng-if=!!widget.tree.appRegRuleResults[node.rules].grade.numericGrade> {{widget.tree.appRegRuleResults[node.rules].grade.numericGrade}} </span> <span data-ng-if=!!widget.tree.appRegRuleResults[node.rules].grade.alphanumericGrade> {{widget.tree.appRegRuleResults[node.rules].grade.alphanumericGrade}} </span> <i data-ng-if=!!widget.tree.appRegRuleResults[node.rules].grade.noEvaluation class="fa fa-calculator suffix-icon text-red" title="{{\'entity.Grade.noEvaluation\'|i18n:this}}"></i> </span> <i class="fa fa-question-circle text-grey" title="{{\'entity.CheckingRuleResult.NOT_COMPLETED\'|i18n:this}}" data-ng-if="widget.tree.appRegRuleResults[node.rules].complete === \'NOT_COMPLETED\'"></i> <i class="fa fa-check-circle text-success" title="{{\'entity.CheckingRuleResult.PASSED\'|i18n:this}}" data-ng-if="widget.tree.appRegRuleResults[node.rules].complete === \'PASSED\'"></i> <i class="fa fa-times-circle text-warning" title="{{\'entity.CheckingRuleResult.NOT_PASSED\'|i18n:this}}" data-ng-if="widget.tree.appRegRuleResults[node.rules].complete === \'NOT_PASSED\'"></i> <i class="fa fa-minus-circle text-error" title="{{\'entity.CheckingRuleResult.ULTIMATELY_NOT_PASSED\'|i18n:this}}" data-ng-if="widget.tree.appRegRuleResults[node.rules].complete === \'ULTIMATELY_NOT_PASSED\'"></i> </span> <span class="pull-right text-grey" data-ng-if=!widget.tree.appRegRuleResultsValid> <i><cc-i18n data-key=common.transcript.calculating></cc-i18n></i> </span> <span class="pull-right text-grey" data-ng-if="widget.tree.appRegRuleResultsValid &&\n                        !widget.tree.appRegRuleResults[node.rules]"> <i>(<cc-i18n data-key=common.transcript.noresult></cc-i18n>)</i> </span> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol> '),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/default.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> </span> <i class="fa fa-circle" style="color: {{widget.tree.partialColors[node.id]}}" data-ng-if=node.$reference></i> <i class="fa fa-sign-in-alt clickable-icon" data-ng-click="widget.api.drillDown(node, this)" data-ng-if="node.$reference && !!widget.tree.partials[node.id]"></i> <kbd data-ng-if=!!node.alias>{{node.alias}}</kbd> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol>'),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/examreg.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle style="display: flex; align-items: baseline; flex-wrap: nowrap;"> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-style="{\'color\': widget.api.getNodeEntity(node, this) === \'ExamRegElectiveModuleGroup\' ? node.color : \'inherit\'}" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)" style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> <i class="fa fa-fw fa-signs-post suffix-icon" data-ng-if="widget.api.getNodeEntity(node, this) === \'ExamRegModuleVersion\' && node.relatedExamRegElectiveModuleGroups.length < 3" data-ng-repeat="relatedExamRegElectiveModuleGroup in node.relatedExamRegElectiveModuleGroups | orderBy:\'id\'" style="{{\'color:\'+relatedExamRegElectiveModuleGroup.examRegElectiveModuleGroup.color}}" title={{electiveModule.nameId|i18n:this}}></i> <i class="fa fa-fw fa-signs-post suffix-icon gradient-icon" data-ng-style="{ background: \'linear-gradient(to bottom right, \'+(node.relatedExamRegElectiveModuleGroups|orderBy: \'id\')[0].examRegElectiveModuleGroup.color+\' 50%, \'+(node.relatedExamRegElectiveModuleGroups|orderBy: \'id\')[1].examRegElectiveModuleGroup.color+\' 50%)\' }" data-ng-if="widget.api.getNodeEntity(node, this) === \'ExamRegModuleVersion\' && node.relatedExamRegElectiveModuleGroups.length >= 3" title="{{\'transcript.tree.multipleElectiveModules\'|i18n:this}}"></i> </span> <span class=pull-right style="flex-shrink: 0"> <span class="label label-default" data-ng-if=!!node.usedAuthorizations title="{{\'entity.CountingDefinitionOfAuthorizationsToBeAnExaminer.$entity\'|i18n:this}}: {{\'entity.CountingDefinitionOfAuthorizationsToBeAnExaminer.\' + node.usedAuthorizations|i18n:this}}"> <strong><cc-i18n data-key="{{\'entity.CountingDefinitionOfAuthorizationsToBeAnExaminer.\' + node.usedAuthorizations}}"></cc-i18n></strong> </span> </span> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol>'),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/filefolder.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) !== \'
1LayoutContainer\' || node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <i class="clickable-icon fa {{widget.api.getEnumIcon[\'LayoutType\'][node.childLayout]}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) === \'LayoutContainer\' && !node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> </span> <i class="fa fa-circle" style="color: {{widget.tree.partialColors[node.id]}}" data-ng-if=node.$reference></i> <i class="fa fa-sign-in-alt clickable-icon" data-ng-click="widget.api.drillDown(node, this)" data-ng-if="node.$reference && !!widget.tree.partials[node.id]"></i> <kbd data-ng-if=!!node.alias>{{node.alias}}</kbd> <span class=pull-right> <i class="fa fa-laptop prefix-icon" title="{{\'$defaults.attribute.systemFolder\'|i18n:this}}" data-ng-if="node.systemFolder === true"></i> </span> <span class=pull-right> <kbd class="btn-warning horizontal-offset-5-right no-box-shadow" title="{{\'common.FileForestFolder.numberOfSharedFiles\'|i18n:this}}" style="font-size: 9pt" data-ng-if="node.isSharedFilesFolder === true && node.files.length > 0"> <span data-ng-if="node.files.length <= 99">{{node.files.length}}</span> <span data-ng-if="node.files.length > 99">99+</span> <i class="fa fa-fw fa-exclamation-triangle prefix-icon"></i> </kbd> </span> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol> '),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/filter.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <span data-ng-click="widget.api.selection.toggle(node, this)"> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'FILTER\'"> <kbd><cc-i18n data-key="entity.{{widget.api.getNodeTypeName(node.$viewDefinition, this)}}.$entity"></cc-i18n></kbd> <span data-ng-if=!!node.subfilter> <cc-i18n data-key={{node.subfilter.name.id}}></cc-i18n> </span> <span data-ng-if=!node.subfilter>&nbsp;</span> </span> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'OPERATOR\'"> <kbd data-ng-if=!!node.attribute><cc-i18n data-key=entity.{{node.$modelContextEntity}}.{{node.attribute}}></cc-i18n></kbd> <kbd data-ng-if=!!node.variable>{{node.variable}}</kbd> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-if=node.value>{{node.value}}</span><span data-ng-if=node.stringValue>{{node.stringValue}}</span><span data-ng-if="node.booleanValue !== undefined && node.booleanValue !== null"><i class="fa prefix-icon" data-ng-class="{\'fa-check text-green\': node.booleanValue === true, \'fa-times text-red\': node.booleanValue === false}"></i></span><span data-ng-if="node.intValue !== undefined">{{node.intValue}}</span><span data-ng-if="node.doubleValue !== undefined">{{node.doubleValue}}</span><span data-ng-if=node.dateTimeValue>{{utils.transformDate(node.dateTimeValue) | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}</span><span data-ng-if=node.timeValue>{{utils.getTimestampWithSpecifiedHourAndMinute(node.timeValue[0],node.timeValue[1]) | amDateFormat: \'HH:mm\'}}</span><span data-ng-if=node.dateValue>{{utils.transformDate(node.dateValue) | amDateFormat: \'DD.MM.YYYY\'}}</span><span data-ng-if=node.moneyValue>{{node.moneyValue.amount}} {{node.moneyValue.currency}}</span><span data-ng-if=node.objectValue data-ng-bind-html=node.$name></span><span data-ng-if=!!node.values> <span data-ng-repeat="listValue in node.values"><span data-ng-if=listValue.stringValue>{{listValue.stringValue}}</span><span data-ng-if="listValue.booleanValue !== undefined && listValue.booleanValue !== null"><i class="fa prefix-icon" data-ng-class="{\'fa-check text-green\': listValue.booleanValue === true, \'fa-times text-red\': listValue.booleanValue === false}"></i></span><span data-ng-if=listValue.intValue>{{listValue.intValue}}</span><span data-ng-if=listValue.doubleValue>{{listValue.doubleValue}}</span><span data-ng-if=listValue.dateTimeValue>{{utils.transformDate(listValue.dateTimeValue) | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}</span><span data-ng-if=listValue.timeValue>{{utils.getTimestampWithSpecifiedHourAndMinute(listValue.timeValue[0],listValue.timeValue[1]) | amDateFormat: \'HH:mm\'}}</span><span data-ng-if=listValue.dateValue>{{utils.transformDate(listValue.dateValue) | amDateFormat: \'DD.MM.YYYY\'}}</span><span data-ng-if=listValue.moneyValue>{{listValue.moneyValue.amount}} {{listValue.moneyValue.currency}}</span><span data-ng-if=listValue.objectValue>{{listValue.$name}}</span><span data-ng-if=!$last>, </span></span></span> <span data-ng-if="node.stringValue == null && node.booleanValue === null && node.intValue === null && node.doubleValue === null && node.dateTimeValue == null && node.timeValue == null && node.dateValue == null && node.moneyValue == null && node.objectValue == null && node.dateTimeValue == null"><cc-i18n data-key=common.noValue></cc-i18n></span> </span> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'COLLECTIONOPERATOR\'"> <kbd data-ng-if=!!node.attribute><cc-i18n data-key=entity.{{node.$modelContextEntity}}.{{node.attribute}}></cc-i18n></kbd> {{widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}; n = <span data-ng-if=node.value>{{node.value}}</span><span data-ng-if=node.stringValue>{{node.stringValue}}</span><span data-ng-if="node.booleanValue !== undefined && node.booleanValue !== null"><i class="fa prefix-icon" data-ng-class="{\'fa-check text-green\': node.booleanValue === true, \'fa-times text-red\': node.booleanValue === false}"></i></span><span data-ng-if="node.intValue !== undefined">{{node.intValue}}</span><span data-ng-if="node.doubleValue !== undefined">{{node.doubleValue}}</span><span data-ng-if=node.dateTimeValue>{{utils.transformDate(node.dateTimeValue) | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}</span><span data-ng-if=node.timeValue>{{utils.getTimestampWithSpecifiedHourAndMinute(node.timeValue[0],node.timeValue[1]) | amDateFormat: \'HH:mm\'}}</span><span data-ng-if=node.dateValue>{{utils.transformDate(node.dateValue) | amDateFormat: \'DD.MM.YYYY\'}}</span><span data-ng-if=node.moneyValue>{{node.moneyValue.amount}} {{node.moneyValue.currency}}</span><span data-ng-if=node.objectValue>{{node.$name}}</span> <span data-ng-if="node.value === null && node.stringValue === null && node.booleanValue === null && node.intValue === null && node.doubleValue === null && node.dateTimeValue === null && node.timeValue === null && node.dateValue === null && node.moneyValue === null && node.objectValue === null"><cc-i18n data-key=common.noValue></cc-i18n></span> </span> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'PROCESS\'"> <kbd><cc-i18n data-key="entity.{{widget.api.getNodeTypeName(node.$viewDefinition, this)}}.$entity"></cc-i18n></kbd> <span>{{node.$displayName}}</span> </span> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'QUANTIFIER\'"> <kbd><cc-i18n data-key="entity.{{widget.api.getNodeTypeName(node.$viewDefinition, this)}}.$entity"></cc-i18n></kbd> <span data-ng-repeat="translation in node.$modelCreationContextTranslations"><cc-i18n data-key={{translation}}></cc-i18n><i class="fa fa-long-arrow-alt-right prefix-icon suffix-icon" data-ng-if=!$last></i></span> </span> <span data-ng-if="widget.api.getNodeGroup(node, this) === \'TREE\'"> <kbd data-ng-if=!!node.attribute><cc-i18n data-key=entity.{{node.$modelContextEntity.id}}.{{node.attribute}}></cc-i18n></kbd> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> {{node.pathEntity.id}} ({{node.pathObjectId}}): {{node.attributePath}} </span> </span> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol> '),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/navigation.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle style="display: flex; align-items: center"> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) !== \'
1LayoutContainer\' || node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <i class="clickable-icon fa {{widget.api.getEnumIcon[\'LayoutType\'][node.childLayout]}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) === \'LayoutContainer\' && !node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)" class="text-ellipsis horizontal-offset-5"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> </span> <i class="fa fa-circle" style="color: {{widget.tree.partialColors[node.id]}}" data-ng-if=node.$reference></i> <kbd data-ng-if=!!node.alias style="flex-shrink: 1">{{node.alias}}</kbd> <span class=flex-spacer></span> <i class="fa fa-sign-in-alt clickable-icon" data-ng-click="widget.api.drillDown(node, this)" data-ng-if="node.$reference && !!widget.tree.partials[node.id]"></i> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol>'),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/softwarefeature.html",'<div class=tree-node data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-nodrag data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa fa-fw" data-ng-if="node.$reference || !node.$children || node.$children.length === 0" data-nodrag></i> <i class="clickable-icon fa {{widget.api.getNodeIcon(node, this)}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) !== \'LayoutContainer\' || node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <i class="clickable-icon fa {{widget.api.getEnumIcon[\'LayoutType\'][node.childLayout]}}" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-if="widget.api.getNodeTypeName(node.$viewDefinition, this) === \'LayoutContainer\' && !node.icon" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> </span> <i class="fa fa-circle" style="color: {{widget.tree.partialColors[node.id]}}" data-ng-if=node.$reference></i> <i class="fa fa-sign-in-alt clickable-icon" data-ng-click="widget.api.drillDown(node, this)" data-ng-if="node.$reference && !!widget.tree.partials[node.id]"></i> <kbd data-ng-if=!!node.alias>{{node.alias}}</kbd> <i class=form-control-static> <span data-ng-if="node.enabled === true"><i class="fa fa-check text-green prefix-icon"></i>{{getTrueLabel()}}</span> <span data-ng-if="node.enabled === false"><i class="fa fa-times text-red prefix-icon"></i>{{getFalseLabel()}}</span> </i> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol>'),e.put("scripts/directives/uiitem/widget/tree/nodetemplate/transcript.html",'<div class=tree-node style="display: flex; align-items: baseline; flex-wrap: nowrap; justify-content: flex-start; gap: 3px" data-ng-class="{\'active\': widget.api.selection.isSelected(node, this) }" data-ui-tree-handle> <i class="fa clickable-icon fa-fw" data-ng-class="{\'fa-caret-right\': widget.api.isNodeCollapsed(node, this), \'fa-caret-down\': !widget.api.isNodeCollapsed(node, this) }" data-ng-if="!node.$reference && node.$children && node.$children.length > 0" data-ng-click="widget.api.toggleNodeExpansion(node, this)"></i> <i class="fa clickable-icon fa-fw" style="flex-shrink: 0" data-ng-if="node.$reference || !node.$children || node.$children.length === 0"></i> <i class="fa clickable-icon {{widget.api.getNodeIcon(node, this)}} fa-fw" data-ng-class="{\'text-secondary\': node.icon, \'drag-icon\': itemConfig.allowDragAndDrop }" data-ng-style="{\'color\': widget.api.getNodeEntity(node, this) === \'ExamRegElectiveModuleGroup\' ? node.color : \'inherit\', \'opacity\': widget.tree.examRegRuleResults[node.rules].relevantForFinalGrade ? 1 : 0.7}" title="{{::widget.api.getNodeTypeDisplayName(node.$viewDefinition, this)}}"></i> <span data-ng-click="widget.api.selection.toggle(node, this)" title="{{widget.tree.examRegRuleResults[node.rules].relevantForFinalGrade ? node.$displayName : n
1ode.$displayName +\' (\'+widget.tree.notRelevantForFinalGradeI18n+\')\'}}" style="flex-grow: 0; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px" data-ng-style="{\'opacity\': widget.tree.examRegRuleResults[node.rules].relevantForFinalGrade ? 1 : 0.7}"> <span data-ng-if=!!node.$displayName data-ng-bind-html=node.$displayName></span> <cc-i18n data-key=common.noTitle data-ng-if=!node.$displayName></cc-i18n> <i class="fa fa-fw fa-signs-post suffix-icon" data-ng-if="widget.api.getNodeEntity(node, this) === \'ExamRegModuleVersion\' && widget.tree.electiveModules[node.rules].length < 3" data-ng-repeat="electiveModule in widget.tree.electiveModules[node.rules]" style="{{\'color:\'+electiveModule.color}}" title={{electiveModule.nameId|i18n:this}}></i> <i class="fa fa-fw fa-signs-post suffix-icon" style="{{\'background: linear-gradient(to bottom right, \'+widget.tree.electiveModules[node.rules][0].color+\' 50%, \'+widget.tree.electiveModules[node.rules][1].color+\' 50%);\n               background-clip: border-box;\n               -webkit-background-clip: text;\n               -webkit-text-fill-color: transparent;\'}}" data-ng-if="widget.api.getNodeEntity(node, this) === \'ExamRegModuleVersion\' && widget.tree.electiveModules[node.rules].length >= 3" title="{{\'transcript.tree.multipleElectiveModules\'|i18n:this}}"></i> </span> <span style=flex-grow:1></span> <span class=pull-right style="flex-shrink: 0" data-ng-if=!!widget.tree.examRegRuleResults[node.rules]> <kbd title="{{\'$defaults.attribute.creditPoints\'|i18n:this}}" style="padding:4px 0 1px 4px" data-ng-if="widget.tree.examRegRuleResultsValid && !!widget.tree.examRegRuleResults[node.rules].gainedCreditPoints"> {{widget.tree.examRegRuleResults[node.rules].gainedCreditPoints}} <cc-i18n data-key=common.transcript.creditPointsAbbreviation></cc-i18n> </kbd> <span data-ng-if="!!widget.tree.examRegRuleResults[node.rules].grade && !!widget.tree.examRegRuleResults[node.rules].grade.id"> <i class="fa fa-fw fa-calculator suffix-icon" data-ng-if=!!!widget.tree.examRegRuleResults[node.rules].grade.withDistinction title="{{\'common.transcript.calculatedGrade\'|i18n:this}}"></i> <i data-ng-if=!!widget.tree.examRegRuleResults[node.rules].grade.withDistinction class="fa fa-fw fa-trophy text-yellow suffix-icon" title="{{\'entity.Grade.withDistinction\'|i18n:this}}"></i> <span data-ng-if=!!widget.tree.examRegRuleResults[node.rules].grade.numericGrade> {{widget.tree.examRegRuleResults[node.rules].grade.numericGrade}} </span> <span data-ng-if=!!widget.tree.examRegRuleResults[node.rules].grade.alphanumericGrade> {{widget.tree.examRegRuleResults[node.rules].grade.alphanumericGrade}} </span> <i data-ng-if=!!widget.tree.examRegRuleResults[node.rules].grade.noEvaluation class="fa fa-calculator suffix-icon text-red" title="{{\'entity.Grade.noEvaluation\'|i18n:this}}"></i> </span> <i class="fa fa-question-circle text-grey" title="{{\'entity.CheckingRuleResult.NOT_COMPLETED\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].complete === \'NOT_COMPLETED\'"></i> <i class="fa fa-check-circle text-success" title="{{\'entity.CheckingRuleResult.PASSED\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].complete === \'PASSED\'"></i> <i class="fa fa-times-circle text-warning" title="{{\'entity.CheckingRuleResult.NOT_PASSED\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].complete === \'NOT_PASSED\'"></i> <i class="fa fa-minus-circle text-error" title="{{\'entity.CheckingRuleResult.ULTIMATELY_NOT_PASSED\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].complete === \'ULTIMATELY_NOT_PASSED\'"></i> <i class="fa fa-sign-in-alt text-green" title="{{\'common.transcript.canRegister\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].canRegister === true"></i> <i class="fa fa-sign-in-alt text-red" title="{{\'common.transcript.canNotRegister\'|i18n:this}}" data-ng-if="widget.tree.examRegRuleResults[node.rules].canRegister === false"></i> </span> <span class="pull-right text-grey" data-ng-if=!widget.tree.examRegRuleResultsValid> <i><cc-i18n data-key=common.transcript.calculating></cc-i18n></i> </span> <span class="pull-right text-grey" data-ng-if="widget.tree.examRegRuleResultsValid &&\n                        !widget.tree.examRegRuleResults[node.rules]"> <i>(<cc-i18n data-key=common.transcript.noresult></cc-i18n>)</i> </span> </div> <ol data-ui-tree-nodes data-ng-model=node.$children data-ng-if="!node.$reference && !widget.api.isNodeCollapsed(node, this)"> <li data-ng-repeat="node in node.$children" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol> '),e.put("scripts/directives/uiitem/widget/tree/widget.html",'<div class="ibox animated fadeIn flex-simple" data-ng-show=visible style="display: flex; flex-direction: column" data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <div class="ibox-title fixed-height" data-ng-if="widget.api.ui.hasHeader(this) && (widget.title || widget.api.help.hasShowHelpConfiguration(this))"> <h5 data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <i data-ng-if=widget.api.model.showOldPermissionsIndicator(this) class="fa fa-exclamation-circle text-red prefix-icon" title="{{\'common.ui.usesOldPermissions\'|i18n:this}}"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}" data-key={{widget.title}} data-params="widget.tree.currentBranches[widget.tree.currentBranches.length - 1]" data-ng-click=widget.api.help.toggleShowHelp(this)></cc-i18n> <cc-editing-mode data-ng-if="isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle" data-i18n=widget.title data-entity=widget.model.baseModel.entity></cc-editing-mode> <i class="fa fa-lock text-danger" data-ng-if="isEditingMode() && itemConfig.preventEditingModeForTitle" title="{{\'editingMode.locked\'|i18n:this}}"></i> </h5> <div class=ibox-tools data-ng-if=!widget.isEditingMode()> <div class=action-status data-ng-if="!!widget.action && widget.action.instances.length > 0"> <cc-action-status data-ng-repeat="instance in widget.action.instances" data-instance=instance></cc-action-status> </div> </div> <div> <cc-action data-action-id=ShowWidgetHelpAction data-widget=widget data-ng-if=widget.api.help.hasShowHelpConfiguration(this)></cc-action> </div> </div> <div class=ibox-title style="border-width: 0 0 3px; display: flex" data-ng-if="widget.api.ui.hasHeader(this) && !itemConfig.isModal && widget.api.action.requiresToolbar(this)"> <div style="display: flex"> <button class="btn btn-xs btn-uppercase btn-success dropdown" data-uib-dropdown data-auto-close
1=always title="{{\'ui.tree.createForestNode\'|i18n:this}}" data-dropdown-append-to-body data-uib-dropdown-toggle data-ng-if="widget.api.hasCreateConfiguration(this) && widget.api.canAddNode(this)"> <i id=btn-append-to-body data-type=button class="fa fa-file clickable-icon"></i> <cc-i18n data-key=common.create data-supports-customer-translation=true></cc-i18n> <i class="fa fa-caret-down"></i> <ul class="dropdown-menu dropdown-menu-left" data-uib-dropdown-menu style="z-index: 1039; margin-top: 8px"> <li data-ng-repeat="type in widget.tree.allowedChildrenModels"> <cc-action data-action-id="{{widget.api.getCreateForestNodeAction(type, this)}}" data-widget=widget data-as-link=true data-button-style=primary data-option-model={{type.viewDefinitionId}} data-option-name-override="{{\'entity.\' + type.entity + \'.$entity\'}}" data-option-icon-override={{type.icon}}></cc-action> </li> </ul> </button> <cc-action data-action-id={{widget.api.getDeleteForestNodeAction(this)}} data-widget=widget data-as-button=true data-show-text=true data-ng-if="widget.api.hasDeleteConfiguration(this) && widget.api.canDeleteNode(this)"></cc-action> <cc-action data-action-id=ExpandAllForestNodesAction data-widget=widget data-as-button=true data-button-style=secondary></cc-action> <cc-action data-action-id=CollapseAllForestNodesAction data-widget=widget data-as-button=true data-button-style=secondary></cc-action> <cc-action data-action-id=DrillUpAction data-widget=widget data-button-style=secondary data-as-button=true></cc-action> <cc-action data-action-id=StartCopySubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if="widget.api.selection.hasSelectedAny(this) && widget.api.canCopyNode(this)"></cc-action> <cc-action data-action-id=CopySubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if="widget.api.canCopyNode(this) && !widget.api.canCopyExaminationRegulationTreeNode(this) && !widget.api.canCopyAppRegTreeNode(this)"></cc-action> <cc-action data-action-id=CopyExamRegContentTreeSubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if=widget.api.canCopyExamRegTreeNode(this)></cc-action> <cc-action data-action-id=CopyAppRegContentTreeSubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if=widget.api.canCopyAppRegTreeNode(this)></cc-action> <cc-action data-action-id=CopyModuleTemplateContentTreeSubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if=widget.api.canCopyModuleTemplateVersionTreeNode(this)></cc-action> <cc-action data-action-id=CopyModulePartTemplateContentTreeSubForestAction data-as-button=true data-widget=widget data-button-style=secondary data-ng-if=widget.api.canCopyModulePartTemplateVersionTreeNode(this)></cc-action> </div> <div style="display: flex; flex-wrap: wrap"> <div data-ng-repeat="entry in itemConfig.toolbar.entries track by entry.id"> <cc-action data-action-id={{entry.action}} data-ng-if="entry.type === \'ACTION\'" data-as-button=true data-widget=widget data-show-text=entry.showName></cc-action> <cc-action-menu data-actions=entry.groupActions data-widget=widget data-show-icon=true data-ng-if="entry.type === \'GROUP\'" data-show-text=entry.showName data-title=entry.groupName data-menu-icon={{entry.groupIcon}} data-as-button=true></cc-action-menu> </div> </div> <div style="flex-grow: 1"></div> <div style="display: flex; gap: 3px"> <cc-action-menu data-action-ids=widget.action.document data-widget=widget menu-icon=fa-scroll data-no-margin=true data-as-button=true data-caret-position=right data-title-key=widget.documentActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.export data-widget=widget menu-icon=fa-file-export data-no-margin=true data-title-key=widget.exportActions data-as-button=true data-caret-position=right data-extras-title-key=widget.defaultExportActions></cc-action-menu> <cc-action-menu data-action-ids=widget.action.default data-widget=widget data-as-button=true data-no-margin=true data-caret-position=right data-title-key=entity.TreeWidget.$entity data-extras-title-key=entity.TreeWidget.$entity data-extra-action-ids="[\'ReloadWidgetAction\']"></cc-action-menu> </div> </div> <div class=ibox-content data-ng-class="{\'transparent\': widget.api.ui.isTransparent
1(this), \'no-padding\': itemConfig.noPadding}"> <div id={{::widget.api.getId(this)}} data-ui-tree=widget.tree.uiTree.handlers data-drag-enabled=widget.api.canMoveNode(this) data-drag-delay=250 class="cc-tree full-height"> <cc-widget-help data-ng-if=widget.api.help.showHelp(this)></cc-widget-help> <cc-widget-description data-description=itemConfig.description data-visible=itemConfig.showDescriptionInitially data-ng-if=itemConfig.description></cc-widget-description> <ol data-ui-tree-nodes data-ng-model="widget.tree.currentBranches[widget.tree.currentBranches.length - 1]"> <li data-ng-repeat="node in widget.tree.currentBranches[widget.tree.currentBranches.length - 1]" data-ui-tree-node data-ng-include=::widget.api.getNodeTemplate(this) data-collapsed="widget.api.isNodeCollapsed(node, this)"></li> </ol> <div class="controls text-center" data-ng-if=widget.api.hasControls(this)> <cc-control data-control=control data-widget=widget data-ng-repeat="control in widget.action.control"></cc-control> </div> </div> </div> <div class=ibox-footer style="display: flex" data-ng-if="widget.api.ui.hasFooter(this) || (widget.api.isDesignMode() && !itemConfig.preventDesignMode) || (widget.api.isEditingMode() && !itemConfig.preventEditingModeForTitle)" data-ng-class="{\'widget-dirty\': widget.api.isDirty(this), \'widget-error\': widget.api.status.hasError(this), \'widget-success\': widget.api.status.hasSuccess(this), \'design-mode\': (widget.api.isDesignMode() && !itemConfig.preventDesignMode)}"> <div data-ng-if="widget.tree.drills.length > 0" style="display: flex; align-items: center"> <i class="fa fa-sign-out-alt prefix-icon info-icon" title="{{\'widget.tree.resetDrill\'|i18n:this}}" data-ng-click=widget.api.resetDrill(this)></i> <span data-ng-repeat="drill in widget.tree.drills"> <span data-ng-if="$index > 0" class=text-primary style="margin: 0 5px">&raquo;</span> <span data-ng-click="widget.api.drillTo($index, this)" style="cursor: pointer"> <span class="label label-primary" title="{{::widget.api.getNodeTypeName(drill.$viewDefinition, this)}}">{{::widget.api.getNodeTypeNameAcronym(drill.$viewDefinition, this)}}</span> <i class="fa fa-circle" style="color: {{widget.tree.partialColors[drill.id]}}"></i> <span class=text-primary> <cc-i18n data-key={{drill.title.id}} data-ng-if=!!drill.title></cc-i18n> <cc-i18n data-key=common.noTitle data-ng-if=!drill.title></cc-i18n> </span> </span> </span> </div> <cc-widget-status style="flex-grow: 1"></cc-widget-status> <div class=design-mode style="display: flex; align-items: center; gap: 3px" data-ng-if="widget.api.isDesignMode() && !itemConfig.preventDesignMode"> <button title="{{\'widget.determineIcon\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.determineIcon(itemConfig.id, this)"> <i class="fa fa-fw fa-wand-sparkles"></i> </button> <button title="{{\'widget.editConfiguration\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.editWidget(itemConfig.id)> <i class="fa fa-fw {{widget.api.getEnumIcon(\'WidgetType\',\'TreeWidget\')}}"></i> </button> <button title="{{\'dev.navigationeditor.addUiItem\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click=widget.api.addUiItem(itemConfig.id)> <i class="fa fa-fw fa-plus-circle"></i> </button> <button title="{{\'dev.navigationeditor.confirmRemoveUiItem.title\'|i18n:this}}" class="btn btn-xs btn-primary" data-ng-click="widget.api.removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-minus-circle"></i> </button> </div> <div data-ng-if=isDevMode() style="display: flex; align-items: center"> <cc-action data-action-id=ExportForestAsXmlAction data-widget=widget data-as-button=true data-button-style=primary></cc-action> <cc-action data-ng-repeat="action in widget.action.developer" data-widget=widget data-action-id={{action}}></cc-action> </div> </div> </div> '),e.put("scripts/directives/uiitem/widget/widget.html",'<div id={{::id}} class=cc-widget data-ng-switch=itemConfig.type data-ng-style=itemStyle data-cc-hotkeys=hotkeysConfig tabindex=0> <div class="text-center vertical-offset-20 full-width full-height" data-ng-if="initializer.loading && !initializer.failed"> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class="text-center invalid-widget-configuration full-height scrolling-overflow" data-ng-if=showConfigFailure() data-ng-class="{\'dev-mode\': isDevMode(), \'design-mode\': isDesignMode(), \'editing-mode\': isEditingMode() && !itemConfig.preventDesignMode && !itemConfig.preventEditingModeForTitle}"> <cc-i18n data-key=widget.noData data-ng-if=!isDevMode()></cc-i18n> <div data-ng-if=isDevMode()> <i class="fa fa-frown large-icon"></i> <br> <h2> <cc-i18n data-key=widget.configurationValidator.initializationFailed></cc-i18n> </h2> <div class="alert alert-danger" data-ng-if=!!initializer.errors> <ul> <li data-ng-repeat="error in initializer.errors"> <cc-i18n data-key={{error.key}} data-params=error.params></cc-i18n> </li> </ul> </div> <button class="btn btn-xs btn-uppercase btn-primary" data-ng-click=editWidget(item
1Config.id)> <i class="fa fa-fw fa-pencil"></i> <cc-i18n data-key=widget.editConfiguration></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-primary" data-ng-if=isBasedOnViewDefinition() data-ng-click="editViewDefinition(itemConfig.id, itemConfig.viewDefinition, widget)"> <i class="fa fa-fw {{getEnumIcon(\'WidgetType\', itemConfig.type)}} prefix-icon"></i> <cc-i18n data-key=common.editViewDefinition></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-danger" data-ng-click="removeUiItem(itemConfig.parentId, itemConfig.id)"> <i class="fa fa-fw fa-trash"></i> <cc-i18n data-key=widget.deleteWidget></cc-i18n> </button> </div> </div> <cc-calendar-widget id=CalendarWidget_{{::itemConfig.id}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=CalendarWidget></cc-calendar-widget> <cc-custom-widget id=CustomWidget_{{::itemConfig.id}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=CustomWidget></cc-custom-widget> <cc-form-widget id=FormWidget_{{::itemConfig.viewDefinition}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=FormWidget></cc-form-widget> <cc-graph-widget id=GraphWidget_{{::itemConfig.nodesView}}_{{::itemConfig.edgesView}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=GraphWidget></cc-graph-widget> <cc-collection-widget id=CollectionWidget_{{::itemConfig.id}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=CollectionWidget></cc-collection-widget> <cc-report-widget id=ReportWidget_{{::itemConfig.id}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=ReportWidget></cc-report-widget> <cc-table-widget id=TableWidget_{{::itemConfig.viewDefinition}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=TableWidget></cc-table-widget> <cc-tree-widget id=TreeWidget_{{::itemConfig.forestView}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=TreeWidget></cc-tree-widget> <cc-iframe-widget id=iFrameWidget_{{::itemConfig.id}} class=flex-simple data-ng-show="!initializer.loading && !initializer.failed" data-ng-switch-when=IFrameWidget></cc-iframe-widget> </div> '),e.put("scripts/modules/about/campuscore.html",'<div class=text-center data-ng-controller=modules.about.CampusCoreController> <h2> <cc-i18n data-key=common.welcome></cc-i18n> <cc-i18n data-key=common.welcome.organization data-params=widget.custom.params></cc-i18n> </h2> <div style="text-align: left; text-align: justify;"> <cc-i18n data-key=common.welcome.text data-params=widget.custom.params></cc-i18n> </div> <cc-appinfo></cc-appinfo> <br> <address> <strong>entado GmbH</strong><br> Emil-Figge-Straße 76-80<br> 44227 Dortmund<br> <i class="fa fa-envelope prefix-icon"></i><span>ma<span class=unicorns-and-fairytales>toadhowljellyring</span>il@ent<span class=unicorns-and-fairytales>toadhowljellyring</span>ado.de</span><br> <i class="fa fa-globe prefix-icon"></i><a href=http://www.entado.de target=_blank>www.entado.de</a> </address> </div>'),e.put("scripts/modules/about/imprint.html",'<div class=text-center data-ng-controller=modules.about.ImprintController> <div style="text-align: left"> <cc-i18n data-key=module.about.imprint.text data-params=widget.custom.params></cc-i18n> </div> </div>'),e.put("scripts/modules/activity/examination/selfregistertoexamination.html",'<div data-ng-controller=modules.activity.examination.SelfRegisterToExaminationController style=margin-left:10px> <div style="margin-bottom: 30px;" data-ng-if=!loadingRegistrations> <div data-ng-if="errorsRegistration.length !== 0"> <div style="margin-bottom: 8px"> <cc-i18n data-key=common.examinationRegistrationValidation.heading></cc-i18n> </div> </div> <div data-ng-repeat="key in errorsRegistration" data-ng-if="errorsRegistration.length !== 0"> <div class="alert alert-warning"> <cc-i18n data-key={{key}}></cc-i18n> </div> </div> <cc-action data-action-id=SelfRegistrationForExaminationAction data-widget=widget data-custom-input=actionInput data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" data-always-visible=true data-ng-if="errorsRegistration.length === 0"></cc-action> </div> <div style="margin-bottom: 30px;" data-ng-if=!loadingDeregistrations> <div data-ng-if="errorsDeregistration.length !== 0"> <div style="margin-bottom: 8px"> <cc-i18n data-key=common.examinationDeregistrationValidation.heading></cc-i18n> </div> </div> <div data-ng-repeat="key in errorsDeregistration" data-ng-if="errorsDeregistration.length !== 0"> <div class="alert alert-warning"> <cc-i18n data-key={{key}}></cc-i18n> </div> </div> <cc-action data-action-id=SelfDeregistrationFromExaminationAction data-widget=widget data-custom-input=actionInput data-as-block=true data-show-text=true data-show-button-border=true data-button-style="danger full-width text-center" data-always-visible=true data-ng-if="errorsDeregistration.length === 0"></cc-action> </div> </div> '),e.put("scripts/modules/activity/quotas/quotas.html",'<div data-ng-controller=modules.activity.quotas.QuotasController class=activity-quotas> <div class=text-center data-ng-if=widget.custom.loading> <i class="fa fa-spin fa-circle-notch fa-4x"></i> </div> <div class=list-group data-ng-if=!widget.custom.loading> <div class=list-group-item style="height: 70px"> <div> <strong> <cc-i18n data-key=activity.quotas.reservedLeftForQuotas></cc-i18n> </strong>: <span class="btn-lg btn-circle btn-default number-bubble horizontal-offset-10" data-ng-class="{\n                    \'btn-danger\': widget.custom.reservedLeftForQuotas,\n                    \'btn-default\': !widget.custom.reservedLeftForQuotas\n                }"> {{widget.custom.reservedLeftForQuotas || 0}} </span> </div> <div class=flex-spacer></div> <cc-action data-action-id=FulfillQuotaRegulationsForActivityAction data-as-block=true data-show-text=true data-show-button-border=true data-always-visible=true data-ng-if="widget.custom.allowedActions.includes(\'FulfillQuotaRegulationsForActivityAction\')" data-option-origin-view-def
1inition-id-override={{widget.custom.viewDefinitionId}} data-button-style="primary text-center horizontal-offset-10" do-on-success=loadData data-widget=widget></cc-action> </div> </div> <div class=list-group> <div class=list-group-item data-ng-repeat="quota in widget.data"> <div class=quota-progress-wrapper> <strong> <cc-i18n data-key={{quota.name.id}}> </strong> <div class="quota-progress vertical-offset-10"> <uib-progress max=quota.maximumSeats> <uib-bar data-ng-if=quota.currentSeats class=progress-bar-success value=quota.currentSeats></uib-bar> <uib-bar data-ng-if="quota.minimumSeats > quota.currentSeats" class=progress-bar-danger value="quota.minimumSeats - quota.currentSeats"></uib-bar> </uib-progress> <div data-ng-if="quota.minimumSeats !== null" class=quota-minimum-indicator data-ng-style="{\n                            width: quota.minimumSeats / quota.maximumSeats * 100 + \'%\',\n                        }"></div> </div> <div class=quota-progress-text> <span data-ng-if="quota.minimumSeats !== null"> <cc-i18n data-key=activity.quotas.minimumSeats></cc-i18n>: {{quota.minimumSeats}} </span> <span></span> <span> <cc-i18n data-key=activity.quotas.maximumSeats></cc-i18n>: {{quota.maximumSeats}} </span> </div> </div> <span class="btn-lg btn-circle number-bubble horizontal-offset-20" data-ng-class="{\n                \'btn-success\': quota.currentSeats >= quota.maximumSeats,\n                \'btn-default\': !quota.currentSeats || quota.currentSeats < quota.maximumSeats\n            }"> {{quota.currentSeats || 0}} </span> <div class=horizontal-offset-20 title="{{\'$defaults.attribute.matchingRegistrationsOnWaitingList\'|i18n:this}}"> <i class="fa fa-hourglass fa-2x"></i> <span style="font-size: 15pt; margin-left: 4px;"> {{quota.matchingRegistrationsOnWaitingList || 0}} </span> </div> <button class="btn btn-xs btn-primary text-center horizontal-offset-10" data-ng-click=executeFulfillAction(quota) data-ng-if="widget.custom.allowedActions.includes(\'FindRegistrationsForQuotaAction\')" title="{{\'activity.quotas.FindRegistrationsForQuotaAction.nameOverride\'|i18n:this}}"> <i class="fa fa-search prefix-icon"></i> <cc-i18n data-key=activity.quotas.FindRegistrationsForQuotaAction.nameOverride> </button> </div> </div> </div> '),e.put("scripts/modules/administration/import/objectmapping.html",'<div class=object-mapping data-ng-controller=modules.administration.import.ObjectMappingController> <div class=mapping-source> <div class="input-group actions"> <div class=btn-group> <button type=button class="btn btn-xs btn-uppercase btn-white mandatory" data-ng-click=widget.api.confirmAll() data-ng-if=widget.custom.edit data-ng-class="{\'active\': widget.api.isSelected(entity)}"> <i class="fa fa-fw fa-check"></i> <cc-i18n data-key=widget.objectmapping.confirmAll></cc-i18n> </button> </div> </div> <ul class=mappings> <li class=mapping data-ng-repeat="mapping in widget.custom.source.mappings track by $index" data-ng-class="{\'dirty\': widget.api.isModified(mapping)}" data-ng-if=widget.custom.edit> <div> <strong data-ng-if="mapping.sourceObjectDisplayName && mapping.sourceObjectDisplayName !== \'null\'">{{mapping.sourceObjectDisplayName}}</strong> <strong data-ng-if="!mapping.sourceObjectDisplayName || mapping.sourceObjectDisplayName === \'null\'"><em>{{\'common.empty\' | i18n:this}}</em></strong> </div> <ul class=linked-objects style="display: flex" data-dnd-list=mapping.linkedObjects data-dnd-drop="widget.api.onDrop(event, index, item, type, external)" data-ng-class="{\'confirmed\': mapping.isAssigned, \'filled\': mapping.linkedObjects.length > 0, \'empty\': mapping.linkedObjects.length === 0}"> <div style="flex-grow: 1"> <cc-i18n data-key=common.noValue data-ng-if="mapping.linkedObjects.length === 0"></cc-i18n> <li class=linked-object data-ng-repeat="linkedObject in mapping.linkedObjects"> <i class="fa fa-fw fa-long-arrow-alt-right"></i> <cc-i18n data-ng-if=mapping.targetEntityName data-key=entity.{{mapping.targetEntityName}}.$entity></cc-i18n> <span data-ng-if=mapping.targetEntityName>"<span data-ng-bind-html=linkedObject.$displayName></span>&quot;</span> <cc-i18n data-ng-if=mapping.targetSimpleEnumName data-key=entity.{{mapping.targetSimpleEnumName}}.$entity></cc-i18n> <span data-ng-if=mapping.targetSimpleEnumName>"<cc-i18n data-key=entity.{{mapping.targetSimpleEnumName}}.{{mapping.targetEnumValue}}></cc-i18n>&quot;</span> </li> </div> <div style="display: flex; justify-content: space-around; gap: 3px"> <button title="{{\'common.confirm\'|i18n:this}}" class="btn btn-xs btn-success" data-ng-click=widget.api.confirm(mapping) data-ng-if=!mapping.isAssigned> <i class="fa fa-fw fa-check action-icon"></i> </button> <button title="{{\'common.delete\'|i18n:this}}" class="btn btn-xs btn-danger" data-ng-click=widget.api.unlink(mapping)> <i class="fa fa-fw fa-times action-icon"></i> </button> </div> </ul> </li> <li class=mapping-summary data-ng-repeat="mapping in widget.custom.source.mappings track by $index" data-ng-if=!widget.custom.edit data-ng-class="{\'confirmed\': mapping.isAssigned, \'filled\': mapping.linkedObjects.length > 0, \'empty\': mapping.linkedObjects.length === 0}"> <div><strong>{{mapping.sourceObjectDisplayName}}</strong></div> <div> <i class="fa fa-fw fa-long-arrow-alt-right suffix-icon"></i> <span class=text-italic> <cc-i18n data-key=common.noValue data-ng-if="mapping.linkedObjects.length === 0"></cc-i18n> <span data-ng-if="mapping.linkedObjects.length > 0"> <cc-i18n data-ng-if=mapping.targetEntityName data-key=entity.{{mapping.targetEntityName}}.$entity></cc-i18n> <span data-ng-if=mapping.targetEntityName>"<span data-ng-bind-html=mapping.linkedObjects[0].$displayName></span>&quot;</span> <cc-i18n data-ng-if=mapping.targetEnumName data-key=entity.{{mapping.targetEnumName}}.$entity></cc-i18n> <span data-ng-if=mapping.targetEnumName>"<cc-i18n data-key=entity.{{mapping.targetEnumName}}.{{mapping.targetEnumValue}}></cc-i18n>&quot;</span> </span> </span> </div> </li> </ul> </div> <div class="spacer text-center"><i class="fa fa-fw fa-long-arrow-alt-left"></i></div> <div class=mapping-target> <div class="input-group target-entities" data-ng-if="widget.custom.targetEntities.length>0"> <div class=btn-group> <button type=button class="btn btn-xs btn-uppercase btn-white" name=targetEntity_{{::entity.name}} data-ng-repeat="entity in widget.custom.targetEntities" data-ng-click=widget.api.select(entity) data-ng-class="{\'active\': widget.api.isSelected(entity)}" data-ng-bind-html=entity.dataEntity> </button> </div> </div> <div class="input-group target-entities" data-ng-if="widget.custom.targetEnumNames.length>0"> <div class=btn-group> <button type=button class="btn btn-xs btn-uppercase btn-white" name=targetEntity_{{::enumName.enumName}}
1 data-ng-repeat="enumName in widget.custom.targetEnumNames" data-ng-click=widget.api.selectEnum(enumName) data-ng-class="{\'active\': widget.api.isSelectedEnum(enumName)}" data-ng-bind-html=enumName.simpleEnumName> </button> </div> </div> <div class=target-objects> <ul class=objects data-dnd-list=widget.custom.objects[widget.custom.selectedEntity.dataEntity] data-dnd-disable-if=true data-ng-if=widget.custom.edit> <li class="object draggable" data-ng-repeat="object in widget.custom.objects[widget.custom.selectedEntity.dataEntity] track by $index" data-dnd-draggable=object> <strong data-ng-bind-html=object.$displayName></strong> </li> </ul> <ul class=objects data-ng-if=!widget.custom.edit> <li class=object data-ng-repeat="object in widget.custom.objects[widget.custom.selectedEntity.dataEntity] track by $index"> <strong data-ng-bind-html=object.$displayName></strong> </li> </ul> <ul class=objects data-dnd-list=widget.custom.enumValues[widget.custom.selectedEnumName.simpleEnumName] data-dnd-disable-if=true data-ng-if=widget.custom.edit> <li class="object draggable" data-ng-repeat="object in widget.custom.enumValues[widget.custom.selectedEnumName.simpleEnumName] track by $index" data-dnd-draggable=object> <strong data-ng-bind-html=object.$displayName></strong> </li> </ul> <ul class=objects data-ng-if=!widget.custom.edit> <li class=object data-ng-repeat="object in widget.custom.enumValues[widget.custom.selectedEnumName.simpleEnumName] track by $index"> <strong data-ng-bind-html=object.$displayName></strong> </li> </ul> </div> </div> </div> '),e.put("scripts/modules/authentication/samlserviceproviderinformation.html",'<div class=process-transitions data-ng-controller=modules.authentication.SamlServiceProviderInformationController> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div data-ng-if=!loading> <div data-ng-if="serviceProviderInformation.ccMetadataUrl !== null"> <div class=editor-label> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <strong> <cc-i18n data-key=$defaults.attribute.ccMetadataUrl data-supports-customer-translation=true></cc-i18n> </strong> </div> <div class=horizontal-offset-20> <a href={{serviceProviderInformation.ccMetadataUrl}}>{{serviceProviderInformation.ccMetadataUrl}}</a> </div> </div> <div style="margin-top: 10px;" data-ng-if="serviceProviderInformation.idpInitiatedLogoutEndpoint !== null"> <div class=editor-label> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <strong> <cc-i18n data-key=$defaults.attribute.idpInitiatedLogoutEndpoint data-supports-customer-translation=true></cc-i18n> </strong> </div> <div class=horizontal-offset-20> <a href={{serviceProviderInformation.idpInitiatedLogoutEndpoint}}>{{serviceProviderInformation.idpInitiatedLogoutEndpoint}}</a> </div> </div> <div style="margin-top: 10px;"> <div class=editor-label> <i title="{{\'widget.form.fieldPriority.mandatory\'|i18n:this}}" class="fa fa-bookmark mandatory prefix-icon info-icon cc-solid-icon"></i> <strong> <cc-i18n data-key=$defaults.attribute.x509Certificate></cc-i18n> <span data-ng-if="serviceProviderInformation.x509Certificate !== null"> (<cc-i18n data-key=authentication.samlCertificate.validityDuration data-params="{validityPeriodInYears: serviceProviderInformation.certificateValidityPeriodInYears}" data-supports-customer-translation=true> </cc-i18n>) </span> </strong> </div> <div class=horizontal-offset-20> <pre style="padding: 0" data-ng-if="serviceProviderInformation.x509Certificate !== null">{{serviceProviderInformation.x509Certificate}}</pre> <cc-i18n style=font-style:italic data-ng-if="serviceProviderInformation.x509Certificate === null" data-key=authentication.samlCertificate.notYetGenerated></cc-i18n> </div> </div> </div> </div> '),e.put("scripts/modules/common/confirm/activewidgetchange.html",'<cc-i18n data-key=common.confirm.activeWidgetChange></cc-i18n> <div class="controls text-center"> <button class="btn btn-xs btn-uppercase btn-success m-b" data-ng-click="widget.api._modal.close(\'save\')"> <i class="fa fa-fw fa-check"></i> <cc-i18n data-key=common.confirm.activeWidgetChange.save></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-danger m-b" data-ng-click="widget.api._modal.close(\'discard\')"> <i class="fa fa-fw fa-rotate-left"></i> <cc-i18n data-key=common.confirm.activeWidgetChange.discard></cc-i18n> </button> <button class="btn btn-xs btn-uppercase btn-danger m-b" data-ng-click=widget.api._modal.dismiss()> <i class="fa fa-fw fa-ban"></i> <cc-i18n data-key=common.confirm.activeWidgetChange.cancel></cc-i18n> </button> </div> '),e.put("scripts/modules/common/confirm/alert.html",'<cc-i18n data-ng-if=itemConfig.customData.i18nKey data-key={{itemConfig.customData.i18nKey}}></cc-i18n> <ul data-ng-if=itemConfig.customData.translatedTexts class=list-item-without-icon> <li class=list-item-without-icon data-ng-repeat="text in itemConfig.customData.translatedTexts">{{text}}</li> </ul> '),e.put("scripts/modules/common/confirm/choice.html",'<cc-i18n data-key={{widget.data.description}}></cc-i18n> <div class="controls text-center"> <span data-ng-repeat="choice in widget.data.choices"> <button class="btn btn-xs btn-primary m-b" data-ng-click=widget.api._modal.close(choice)> <cc-i18n data-key=actions.{{choice}}></cc-i18n> </button> <span data-ng-if=!$last>&nbsp;</span> </span> </div> '),e.put("scripts/modules/common/confirm/confirm.html",'<cc-i18n data-key={{itemConfig.customData.i18nKey}} data-params={{itemConfig.customData.i18nData}}></cc-i18n> <div class="input-group full-width cc-form form-horizontal vertical-offset-20" data-ng-if=widget.data.confirmWithAdditionalInput> <div class="form-control-static hint-text full-width"> <div class="alert alert-info"> <cc-i18n data-key=common.action.confirmWithAdditionalInput data-params={{itemConfig.customData.i18nData}}></cc-i18n> </div> </div> <input placeholder="{{\'common.action.additionalInput\'|i18n:this}}" class=form-control data-ng-model=widget.data.additionalConfirmation maxlength={{maxSize}} autocomplete=off> </div>'),e.put("scripts/modules/common/confirm/legacyconfirm.html",'<cc-i18n data-key={{widget.data.description}}></cc-i18n> <div class="controls text-center" data-ng-if="widget.data.action.length > 0"> <button class="btn btn-xs {{::widget.data.cssClass}} m-b" data-ng-click=widget.api._modal.close(true)> <cc-i18n data-key=common.yes></cc-i18n> , <cc-i18n data-key={{widget.data.buttonText}}></cc-i18n> </button> </div> '),e.put("scripts/modules/common/confirm/select.html","<cc-i18n data-key={{itemConfig.customData.i18nKey}}></cc-i18n> "),e.put("scripts/modules/common/cropimage/cropimage.html",'<div data-ng-controller=modules.common.CropImageController class=container-fluid> <div class="row text-center"> <cc-i18n data-key=common.upload.imageCropping></cc-i18n> </div> <div class=row> <div style="height: 400px; display: flex"> <div style="display: flex; align-items: center"> <button class="btn btn-primary" data-ng-click=widget.api.rotateLeft() style="margin-right: 10px" title="{{\'common.upload.imageRotationLeft\'|i18n:this}}"> <i class="fa fa-rotate-left"></i> </button> </div> <img-crop data-image=widget.custom.image data-result-image=widget.custom.croppedImage data-on-change=widget.api.storeCroppedDataUri($dataURI) data-area-type=square data-area-min-size=100></img-crop> <div style="display: flex; align-items: center"> <button class="btn btn-primary" data-ng-click=widget.api.rotateRight() style="margin-left: 10px" title="{{\'common.upload.imageRotationRight\'|i18n:this}}"> <i class="fa fa-rotate-right"></i> </button> </div> </div> </div> </div> '),e.put("scripts/modules/common/exportasxml/exportasxml.html","<div>
1 <pre class=prettyprint>{{widget.data.xml}}</pre> </div>"),e.put("scripts/modules/common/interactiverequest/interactionrequired.html",'<div data-ng-controller=modules.common.interactiveRequest.InteractionRequiredController> <div class="form-control-static hint-text full-width no-padding"> <div class="alert alert-info"> <cc-i18n data-key=common.interactiveRequest.description></cc-i18n> <br><br> <cc-i18n data-key=action.interactiveRequest.continue></cc-i18n> </div> </div> <div data-ng-repeat="type in getResponseTypes()"> <strong title="{{\'action.interactiveResponse.\' + type.id + \'.description\'|i18n:this}}"> <cc-i18n data-key=action.interactiveResponse.{{type.id}}></cc-i18n> </strong> <br> <div data-ng-repeat="result in widget.data.results[type.code]" data-ng-init="result.$index = $index; widget.data.checked[$index] = false" class="form-control-static hint-text full-width no-padding"> <div class=alert data-ng-class="{\'alert-info\': !widget.data.checked[$index], \'alert-success\': widget.data.checked[$index]}"> <cc-i18n data-key=entity.{{widget.data.instance.$originEntity}}.$entity></cc-i18n> {{getSingleResultDisplayName(widget.data.instance, 1)}} <cc-control data-control=type.checkControl data-control-data=result data-widget=widget class=pull-right style="margin-top: -3px"></cc-control> </div> </div> </div> </div>'),e.put("scripts/modules/common/loggedout/loggedout.html",'<div data-ng-controller=modules.common.loggedout.LoggedOutController> <div class="alert alert-info"> <cc-i18n data-key=common.loggedOut.text></cc-i18n> </div> </div> '),e.put("scripts/modules/common/navigation/entityselection.html",'<div data-ng-controller=modules.common.navigation.EntitySelectionController class="container-fluid navigation-editor-entity-selection"> <div class="col-lg-4 text-center widget-types" data-ng-repeat="type in uiItemTypes"> <button class="btn btn-primary btn-circle btn-lg" type=button data-ng-click=selectEntity(type.name) title="{{\'entity.\' + type.name + \'.$entity\'|i18n:this}}"> <i class="fa {{type.icon}} fa-2x"></i> </button> <br> <cc-i18n data-key=entity.{{type.name}}.$entity></cc-i18n> </div> <hr> <div class="text-center widget-types"> <button class="btn btn-primary btn-circle btn-lg" type=button data-ng-click="selectEntity(\'LayoutContainer\')" title="{{\'entity.LayoutContainer.$entity\'|i18n:this}}"> <i class="fa fa-archive fa-2x"></i> </button> <br> <cc-i18n data-key=entity.LayoutContainer.$entity></cc-i18n> <br><br> </div> </div>'),e.put("scripts/modules/common/viewdefinitioneditor/typeahead-item-template.html",'<a class=typeahead-item title={{match.label}}> <span data-ng-bind-html="match.label | highlight:query"></span> </a>'),e.put("scripts/modules/common/viewdefinitioneditor/viewdefinitioneditor.html",'<div class=view-definition-editor data-ng-controller=modules.common.ViewDefinitionEditorController> <div data-ng-if=isImmutableViewDefinition> <cc-i18n data-key=dev.viewDefinitionEditor.immutableViewDefinition></cc-i18n> </div> <div data-ng-if=!isImmutableViewDefinition> <label class=text-ellipsis style="margin-bottom: -5px"> <cc-i18n data-key=dev.viewDefinitionEditor.baseEntity></cc-i18n> </label> <input class="form-control mandatory" placeholder="{{\'dev.viewDefinitionEditor.selectEntity\'|i18n:this}}" autocomplete=off data-ng-model=baseEntity data-uib-typeahead="item for item in allEntities | filter: $viewValue | orderBy:\'toString()\' | limitTo:10" data-typeahead-select-on-exact=true data-typeahead-on-select=createViewDefinition(baseEntity) data-typeahead-append-to-body=true data-typeahead-template-url={{getTemplate()}}> </div> <div class=vertical-offset-20 style="margin-bottom: -5px" data-ng-if="!isImmutableViewDefinition && !!baseEntity"> <label class=text-ellipsis> <i class="fa fa-address-book prefix-icon"></i> <cc-i18n data-key=entity.{{activeEntity}}.$entity></cc-i18n> <i title=Back class="fa fa-sign-out-alt suffix-icon prefix-icon" data-ng-if="activePath.length > 0" data-ng-click=navigateBack()></i> </label> <label class="text-ellipsis pull-right"> <i class="fa fa-cubes prefix-icon"></i> <cc-i18n data-key=dev.viewDefinitionEditor.availableAttributes></cc-i18n> &nbsp;in&nbsp; <cc-i18n data-key=entity.{{activeEntity}}.$entity></cc-i18n> </label> </div> <div class=attribute-lists data-ng-if="!isImmutableViewDefinition && !!baseEntity"> <div class=used-attributes> <ul class=attributes data-dnd-list=viewDefinitionFields data-dnd-external-sources=true> <li class=attribute data-ng-repeat="field in viewDefinitionFields" data-ng-init="typeDefinition = getTypeDefinition(viewDefinitionModel[field.attribute].type)" data-ng-if=viewDefinition data-dnd-draggable=field data-dnd-moved="viewDefinitionFields.splice($index, 1)"> <div> <i title="{{\'entity.\' + typeDefinition.name + \'.$entity\'|i18n:this}}" class="fa fa-fw {{typeDefinition.icon}} prefix-icon"></i> <cc-i18n data-key=entity.{{activeEntity}}.{{field.attribute}}></cc-i18n>
1 <i title="{{\'filter.collection\'|i18n:this}}" class="fa fa-list suffix-icon" data-ng-if=viewDefinitionModel[field.attribute].collection></i> <i title="{{\'dev.viewDefinitionEditor.editField\'|i18n:this}}" class="fa fa-cog pull-right clickable-icon" data-ng-click=editField(field.attribute)></i> <i title="{{\'dev.viewDefinitionEditor.immutableEmbeddedView\'|i18n:this}}" class="fa fa-locked pull-right prefix-icon" data-ng-if="!viewDefinitionModel[field.attribute].isSimpleType && field.immutableEmbeddedObjectViewId"></i> <i title="{{\'dev.viewDefinitionEditor.drillDownToField\'|i18n:this}}" class="fa fa-sign-in-alt suffix-icon clickable-icon" data-ng-if="!viewDefinitionModel[field.attribute].isSimpleType && !field.immutableEmbeddedObjectViewId" data-ng-click=navigateToAttribute(field.attribute)></i> </div> </li> </ul> </div> <div class="spacer text-center"><i class="fa fa-exchange-alt"></i></div> <div class=available-attributes> <ul class=attributes data-dnd-list=availableFields data-dnd-external-sources=true> <li class=attribute data-ng-repeat="field in availableFields" data-ng-init="typeDefinition = getTypeDefinition(viewDefinitionModel[field.attribute].type)" data-dnd-draggable=field data-dnd-moved="availableFields.splice($index, 1)"> <div> <i title="{{\'entity.\' + typeDefinition.name + \'.$entity\'|i18n:this}}" class="fa fa-fw {{typeDefinition.icon}} prefix-icon"></i> <cc-i18n data-key=entity.{{activeEntity}}.{{field.attribute}}></cc-i18n> <i title="{{\'filter.collection\'|i18n:this}}" class="fa fa-list suffix-icon" data-ng-if=viewDefinitionModel[field.attribute].collection></i> </div> </li> </ul> </div> </div> </div> '),e.put("scripts/modules/common/widget/erroralert.html",'<div data-ng-controller=modules.common.widget.ErrorAlertController style=margin-left:10px> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div style="margin-bottom: 20px;"> <p> <cc-i18n data-key={{::title}}></cc-i18n> </p> </div> <div class="alert alert-danger"> <ul> <li data-ng-repeat="message in entries"> <span data-ng-bind-html=::message></span> </li> </ul> </div> </div>'),e.put("scripts/modules/landingpages/institution/contact-information.html",'<div data-ng-controller=modules.landingpages.institutionfactsheet.ContactInformation> <cc-landing-page-widget> <div> <i class="fa fa-fw fa-at fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="email.length === 0"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="email.length > 0"> <ul class=pull-right> <li class="full-width no-bullet" data-ng-repeat="address in email track by $index"> <h4 class="font-bold no-margin"> <span class="pull-right text-primary" data-ng-if=$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </span> <small class=pull-right data-ng-if=!$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10> <i class="fa fa-fw fa-phone fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="phone.length === 0"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="phone.length > 0"> <ul class=pull-right> <li class="full-width no-bullet" data-ng-repeat="number in phone track by $index"> <h4 class="font-bold no-margin"> <span class="pull-right text-primary" data-ng-if=$first>{{::number}}</span> <small class=pull-right data-ng-if=!$first>{{::number}}</small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10> <i class="fa fa-fw fa-fax fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="fax.length === 0"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="fax.length > 0">
1 <ul class=pull-right> <li class="full-width no-bullet" data-ng-repeat="number in fax track by $index"> <h4 class="font-bold no-margin"> <span class="pull-right text-primary" data-ng-if=$first>{{::number}}</span> <small class=pull-right data-ng-if=!$first>{{::number}}</small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10> <i class="fa fa-fw fa-link fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!website> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if=!!website> <ul class=pull-right> <li class="full-width no-bullet"> <h4 class="font-bold no-margin"> <a class="pull-right text-primary" href={{website}} target=_blank>{{::website}}</a> </h4> </li> </ul> </div> </div> </div> <hr> <div class="text-center vertical-offset-20-bottom"> <strong> <i class="fa fa-envelopes-bulk prefix-icon" data-ng-class="{\'text-red\' : !contactDesired, \'text-green\' : contactDesired}"></i> <cc-i18n data-ng-if=contactDesired data-key=ui.landingPage.contact.basicallyDesired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!contactDesired data-key=ui.landingPage.contact.basicallyNotDesired data-supports-customer-translation=true></cc-i18n> </strong> </div> <div class="vertical-offset-10 flex flex-wrap" data-ng-if=contactDesired> <div class="contact contact__email flex-auto text-center"> <i class="fa fa-3x fa-envelopes" data-ng-class="{\'text-red\' : !emailContactDesired, \'text-green\' : emailContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.email data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=emailContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!emailContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> <div class="contact contact__mail flex-auto text-center"> <i class="fa fa-3x fa-mailbox" data-ng-class="{\'text-red\' : !mailContactDesired, \'text-green\' : mailContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.mail data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=mailContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!mailContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> <div class="contact contact__phone flex-auto text-center"> <i class="fa fa-3x fa-phone" data-ng-class="{\'text-red\' : !phoneContactDesired, \'text-green\' : phoneContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.phone data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=phoneContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!phoneContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/institution/memos.html",'<div class=landing-page-widget data-ng-controller=modules.landingpages.contact.institution.memos> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=ui.contactMemos.title></cc-i18n>&nbsp; </small> </div> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class=contact-memo-container data-ng-if=!loading> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult data-supports-customer-translation></cc-i18n> </div> <div class=list-group data-ng-if=!noResult> <div class="flex contact-memo-item" data-ng-repeat="memo in memosToShow" data-ng-class="{\'contact-memo-past\': memo.isDone}" data-ng-click="updateMemo(memo.id, this)"> <i class="fa fa-fw contact-memo-bubble-icon prefix-icon {{memo.typeIcon}}"></i> <div class=contact-memo-item-left> <strong> <cc-i18n data-key={{memo.typeI18n}} data-supports-customer-translation=true></cc-i18n> <i class="fa fa-tag cc-solid-icon suffix-icon" data-ng-repeat="procedure in memo.procedures" data-ng-style="{color: procedure.color}" data-cc-i18n-title=procedure.name.id></i> </strong> <div class=flex-spacer></div> <small><i class="fa fa-fw prefix-icon {{memo.statusIcon}}"></i> <cc-i18n data-key={{memo.statusI18n}} data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=flex-spacer></div> <div class=contact-memo-item-right> <small> <i class="fa fa-exclamation-triangle text-warning prefix-icon" data-ng-if=memo.isOverdue></i> {{memo.timeStamp | amDateFormat: \'DD.MM.YYYY, HH:mm\'}} </small> <div class=flex-spacer></div> <small data-ng-style="{\'font-weight\': memo.isMine ? \'bold\' : \'normal\'}" data-ng-if=memo.responsiblePerson> <i class="fa fa-user prefix-icon" data-ng-if=memo.isMine></i> {{memo.responsiblePerson}} </small> </div> </div> </div> </div> </div> </div>'),e.put("scripts/modules/landingpages/institution/name.html",'<div data-ng-controller=modules.landingpages.institutionfactsheet.name> <cc-landing-page-widget> <i class="fa fa-fw fa-id-badge fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <h3 class="font-bold no-margin pull-right"> <span class="text-primary pull-right"> {{data}} </span> </h3> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/newactivity/academicterms.html",'<div data-ng-controller=modules.landingpages.activityfactsheet.AcademicTerms> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <i class="fa fa-fw fa-login fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div style="display: flex;flex-direction:row; justify-content: space-between;" data-ng-if=!noResult> <i class="fa fa-fw fa-hourglass fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div> <div class="text-right vertical-offset-10-bottom" style="width: 100%" data-ng-repeat="termType in termTypes"> <h4><i class="fa fa-fw {{termType.icon}}"></i> <cc-i18n data-key={{termType.name.id}}></cc-i18n> </h4> <div style="display: flex;flex-flow: row wrap;justify-content: flex-end;
1gap: 5px;align-self: flex-start;"> <span class=label data-ng-repeat="term in termType.terms"> <cc-i18n data-key={{term.shortName.id}}></cc-i18n> </span> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/newactivity/activitytitle.html",'<div data-ng-controller=modules.landingpages.activityfactsheet.ActivityTitle> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <i class="fa fa-fw fa-login fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <div class="full-width text-center"> <h3 data-ng-if=!!activity.title> <cc-i18n data-key={{activity.title.id}}></cc-i18n> <br> </h3> <span data-ng-if=!!activity.subtitle> <cc-i18n data-key={{activity.subtitle.id}}></cc-i18n> <br> </span> <small data-ng-if=!!activity.shortTitle> <cc-i18n data-key={{activity.shortTitle.id}}></cc-i18n> </small> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/newactivity/modulepartclearances.html",'<div data-ng-controller=modules.landingpages.activityfactsheet.ModulePartClearances> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="noResult && !canSelfRegister"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noPermissions></cc-i18n> <cc-editing-mode data-i18n="\'common.noPermissions\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class="text-left vertical-offset-5-bottom" data-ng-if="noResult && canSelfRegister"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=modulePartClearance.noClearancesRequested></cc-i18n> <cc-editing-mode data-i18n="\'modulePartClearance.noClearancesRequested\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=module-part-clearances data-ng-if="canSelfRegister && !noResult && !registrationExists"> <i class="fa fa-fw fa-check fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" aria-hidden=true></i> <div class="list-group full-width"> <div class=list-group-item data-ng-repeat="clearance in modulePartClearances"> <div class=module-part-clearances-content> <span>{{clearance.$displayName}}</span> <span class=label data-ng-class="{\n                            \'label-default\': clearance.transcriptModulePartClearanceStatus === \'REQUESTED\',\n                            \'label-success\': clearance.transcriptModulePartClearanceStatus === \'APPROVED\',\n                            \'label-danger\': clearance.transcriptModulePartClearanceStatus === \'REJECTED\'\n                        }"> <cc-i18n data-key="{{\'entity.TranscriptModulePartClearanceStatus.\' + clearance.transcriptModulePartClearanceStatus}}"></cc-i18n> </span> </div> <small data-ng-if=clearance.transcriptModulePartRejectionReason> {{clearance.transcriptModulePartRejectionReason.name.id | i18n:this}} </small> </div> </div> </div> <div class=text-right style="display: flex; justify-content: flex-end" data-ng-if="canSelfRegister && !registrationExists"> <cc-action data-action-id=RequestModulePartClearanceForActivityAction data-widget=widget data-show-text=true data-custom-input=customActionInput do-on-success=loadModulePartClearances data-as-button=true></cc-action> </div> <div class="alert alert-info" data-ng-if="canSelfRegister && registrationExists"> <cc-i18n data-key=activityfactsheet.ModulePartClearances.registrationExists></cc-i18n> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/newactivity/registration-deregistration.html",'<div class=landing-page-widget data-ng-controller=modules.landingpages.activityfactsheet.RegistrationDeregistration> <cc-landing-page-widget> <div> <div class=place-allocation> <i class="fa fa-fw fa-users fa-3x text-primary vertical-offset-5" style="flex-shrink: 1" aria-hidden=true></i> <div style="display: flex; flex-direction: column; align-items: center"> <span title="{{\'activityfactsheet.participants.freeSeats\'|i18n:this}}" class="btn-circle btn-lg background-secondary number-bubble" style="padding: 10px 0" data-ng-if=participants.freeSeats>{{participants.freeSeats}}</span> <span title="{{\'activityfactsheet.participants.freeSeats\'|i18n:this}}" class="btn-circle btn-lg background-grey number-bubble" style="padding: 10px 0" data-ng-if="participants.freeSeats === 0">{{participants.freeSeats}}</span> <span title="{{\'activityfactsheet.participants.noRestriction\'|i18n:this}}" class="btn-circle btn-lg background-secondary number-bubble" style="font-size: 21px" data-ng-if="participants.freeSeats === null">∞</span> <cc-i18n data-key=$defaults.attribute.freeSeats> </div> </div> <br> <div class="alert alert-info place-allocation-not-done text-center" data-ng-if=participants.showPlaceAllocationHint> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=activityfactsheet.participants.placeAllocationNotTriggered data-supports-customer-translation=true></cc-i18n> </div> <div class=registration style=margin-top:10px data-ng-if="!actionsLoading && registration.status"> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=activityfactsheet.registration.heading></cc-i18n> <cc-editing-mode data-i18n=activityfactsheet.registration.heading data-ng-if=isEditingMode()></cc-editing-mode> </small> </div> <div style="display: flex"> <i class="fa fa-fw fa-ticket-alt fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" aria-hidden=true></i> <div class="registration-status landing-page-widget-icon-text pull-right"> <span class=pull-right> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.status data-supports-customer-translation=true></cc-i18n>: <strong> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key={{registration.statusI18n}} data-supports-customer-translation=true></cc-i18n> </strong> </span> <br> <span class="registration-partial-activity pull-right text-right" data-ng-if=registration.partialActivityNameId><cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.partialActivity></cc-i18n>: <strong> <cc-i18n data-key={{registration.partialActivityNameId}}></cc-i18n> </strong> </span> <br> <div class="registration-waiting-list-place pull-right" data-ng-if="registration.status === \'WAITING_LIST\' && registration.waitingListPlace"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.waitingListPlace data-supports-customer-translation=true> </cc-i18n> : <strong>{{registration.waitingListPlace}}</strong> </div> </div> </div> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <i class="fa fa-fw fa-login fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if="!noResult && !registration.active"> <hr> <div style="display: flex; margin-bottom: 10px"> <i class="fa fa-fw fa-sign-in-alt fa-3x text-success landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <h4 class="font-bold no-margin pull-right"> <cc-i18n data-key=activityfactsheet.RegistrationDeregistration.registrationPeriod></cc-i18n> <cc-editing-mode data-i18n="\'activityfactsheet.RegistrationDeregistration.registrationPeriod\'" data-ng-if=isEditingMode()></cc-editing-mode> </h4> <span class=clearfix></span> <span class=pull-right data-ng-class="{\'text-success\': isActive(registrationPeriod)}" data-ng-if="registrationPeriod.startDateTime && registrationPeriod.endDateTime"> <strong>{{registrationPeriod.startDateTime | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> - <strong>{{registrationPeriod.endDateTime | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> </span> <span class=pull-right data-ng-if="!registrationPeriod.startDateTime || !registrationPeriod.endDateTime"> <strong><cc-i18n data-key=activityfactsheet.RegistrationDeregistration.unlimited></cc-i18n></strong> </span> </div> </div> <div class=self-register-actions data-ng-if=!actionsLoading> <div class="alert alert-info lecture-public-hint" data-ng-if=showLectureAndPublicHint()> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=activityfactsheet.registration.lectureAndPublicHint></cc-i18n> <cc-editing-mode data-i18n="\'activityfactsheet.registration.lectureAndPublicHint\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <cc-action data-action-id=SelfRegisterForLectureAction data-ng-if="showAction(\'actionValidation.registerLecture\') && !actionValidation.registerLecture.length" data-widget=widget data-custom-input=actionInput data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-on-success=loadActionVisibilities data-always-visible=true></cc-action> <strong class=link-help data-ng-if="showAction(\'actionValidation.registerLecture\') && actionValidation.registerLecture.length" data-ng-click="toggle(\'showRegisterLectureValidationMessages\')"> <i class="fa fa-question-circle"></i> <cc-i18n data-key=common.activitySelfRegistrationLectureValidation.heading></cc-i18n> </strong> <div class="alert alert-warning vertical-offset-10" data-ng-if="showAction(\'actionValidation.registerLecture\') && actionValidation.registerLecture.length" data-ng-show=showRegisterLectureValidationMessages> <p data-ng-repeat="validationMessage in actionValidation.registerLecture"> <cc-i18n data-key={{getI18nOfMessage(validationMessage)}}></cc-i18n> </p> </div> <cc-action data-action-id=SelfRegisterForGuestStudiesAction data-ng-if="showAction(\'actionValidation.registerGuestStudy\') && !actionValidation.registerGuestStudy.length" data-widget=widget data-custom-input=actionInput data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-on-success=loadActionVisibilities data-always-visible=true></cc-action> <strong class=link-help data-ng-if="showAction(\'actionValidation.registerGuestStudy\') && actionValidation.registerGuestStudy.length" data-ng-click="toggle(\'showRegisterGuestStudyValidationMessages\')"> <i class="fa fa-question-circle"></i> <cc-i18n data-key=common.activitySelfRegistrationGuestStudyValidation.heading></cc-i18n> </strong> <div class="alert alert-warning vertical-offset-10" data-ng-if="showAction(\'actionValidation.registerGuestStudy\') && actionValidation.registerGuestStudy.length" data-ng-show=showRegisterGuestStudyValidationMessages> <p data-ng-repeat="validationMessage in actionValidation.registerGuestStudy"> <cc-i18n data-key={{getI18nOfMessage(validationMessage)}}></cc-i18n> </p> </div> <cc-action data-action-id=SelfRegisterForPublicActivityAction data-ng-if="showAction(\'actionValidation.registerPublic\') && !actionValidation.registerPublic.length" data-widget=widget data-custom-input=actionInput data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-on-success=loadActionVisibilities data-always-visible=true></cc-action> <strong class=link-help data-ng-if="showAction(\'actionValidation.registerPublic\') && actionValidation.registerPublic.length" data-ng-click="toggle(\'showRegisterPublicValidationMessages\')"> <i class="fa fa-question-circle"></i> <cc-i18n data-key=common.activitySelfRegistrationPublicValidation.heading></cc-i18n> </strong> <div class="alert alert-warning vertical-offset-10" data-ng-if="showAction(\'actionValidation.registerPublic\') && actionValidation.registerPublic.length" data-ng-show=showRegisterPublicValidationMessages> <p data-ng-repeat="validationMessage in actionValidation.registerPublic"> <cc-i18n data-key={{getI18nOfMessage(validationMessage)}}></cc-i18n> </p> </div> </div> </div> <div data-ng-if="!noResult && showAction(\'actionValidation.deregister\') && registration.active"> <hr> <i class="fa fa-fw fa-sign-out-alt fa-3x text-danger landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <h4 class="font-bold no-margin pull-right"> <cc-i18n data-key=activityfactsheet.RegistrationDeregistration.deregistrationPeriod></cc-i18n> <cc-editing-mode data-i18n="\'activityfactsheet.RegistrationDeregistration.deregistrationPeriod\'" data-ng-if=isEditingMode()></cc-editing-mode> </h4> <span class=clearfix></span> <span class=pull-right data-ng-class="{\'text-success\': isActive(registrationPeriod)}"> <strong>{{deregistrationPeriod.startDateTime | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> – <strong>{{deregistrationPeriod.endDateTime | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> </span> </div> <div class=self-register-actions data-ng-if=!actionsLoading> <cc-action data-action-id=SelfDeregisterAction data-ng-if="showAction(\'actionValidation.deregister\') && !actionValidation.deregister.length" data-disabled=actionValidation.SelfDeregisterAction.validationMessages.length data-widget=widget data-custom-input=actionInput data-as-block=true data-show-button-border=true data-button-style="danger full-width text-center" data-show-text=true do-on-success=loadActionVisibilities data-always-visible=true></cc-action> <br> <strong class=link-help data-ng-if="showAction(\'actionValidation.deregister\') && actionValidation.deregister.length" data-ng-click="toggle(\'showDeregisterValidationMessages\')"> <i class="fa fa-question-circle"></i> <cc-i18n data-key=common.activityDeregistrationValidation.heading></cc-i18n> </strong> <div class="alert alert-warning vertical-offset-10" data-ng-if="showAction(\'actionValidation.deregister\') && actionValidation.deregister.length" data-ng-show=showDeregisterValidationMessages> <ul> <li data-ng-repeat="validationMessage in actionValidation.deregister"> <cc-i18n data-key={{getI18nOfMessage(validationMessage)}}></cc-i18n> </li> </ul> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/control-help.html",'<div data-ng-controller=modules.landingpages.startpage.ControlHelp> <cc-landing-page-widget> <div class=control-help> <div class="alert alert-info hint-text no-margin"> <cc-i18n data-key=controlHelp.intro></cc-i18n> <cc-editing-mode data-i18n="\'controlHelp.intro\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class="control-help-grid text-center vertical-offset-10 full-width"> <div title="{{\'controlHelp.addData.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-file"></i> <i class="fa fa-fw fa-2x fa-plus"></i> <br> <small> <cc-i18n data-key=controlHelp.addData></cc-i18n> </small> </div> <div title="{{\'controlHelp.deleteData.text\'|i18n:this}}" class="col-md-6 control-help-item">
1 <i class="fa fa-fw fa-2x fa-trash"></i> <i class="fa fa-fw fa-2x fa-minus"></i> <br> <small> <cc-i18n data-key=controlHelp.deleteData></cc-i18n> </small> </div> <div title="{{\'controlHelp.editData.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-pencil-alt"></i> <br> <small> <cc-i18n data-key=controlHelp.editData></cc-i18n> </small> </div> <div title="{{\'controlHelp.saveData.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-check"></i> <br> <small> <cc-i18n data-key=controlHelp.saveData></cc-i18n> </small> </div> <div title="{{\'controlHelp.cancel.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-ban"></i> <br> <small> <cc-i18n data-key=controlHelp.cancel></cc-i18n> </small> </div> <div title="{{\'controlHelp.documentActions.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-scroll"></i> <br> <small> <cc-i18n data-key=controlHelp.documentActions></cc-i18n> </small> </div> <div title="{{\'controlHelp.exportActions.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-file-export"></i> <br> <small> <cc-i18n data-key=controlHelp.exportActions></cc-i18n> </small> </div> <div title="{{\'controlHelp.transitions.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-arrows-turn-to-dots"></i> <br> <small> <cc-i18n data-key=controlHelp.transitions></cc-i18n> </small> </div> <div title="{{\'controlHelp.moreActions.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-bars"></i> <br> <small> <cc-i18n data-key=controlHelp.moreActions></cc-i18n> </small> </div> <div title="{{\'controlHelp.searchData.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-search"></i> <br> <small> <cc-i18n data-key=controlHelp.searchData></cc-i18n> </small> </div> <div title="{{\'controlHelp.mandatoryFields.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-bookmark mandatory"></i> <br> <small> <cc-i18n data-key=controlHelp.mandatoryFields></cc-i18n> </small> </div> <div title="{{\'controlHelp.importantFields.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-bookmark important"></i> <br> <small> <cc-i18n data-key=controlHelp.importantFields></cc-i18n> </small> </div> <div title="{{\'controlHelp.showHelp.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-question"></i> <br> <small> <cc-i18n data-key=controlHelp.showHelp></cc-i18n> </small> </div> <div title="{{\'controlHelp.reloadData.text\'|i18n:this}}" class="col-md-6 control-help-item"> <i class="fa fa-fw fa-2x fa-undo"></i> <br> <small> <cc-i18n data-key=controlHelp.reloadData></cc-i18n> </small> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/entry-points.html",'<div data-ng-controller=modules.landingpages.startpage.EntryPoints> <cc-landing-page-widget> <div class=entry-points> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class="hint-text alert alert-info hint-text no-margin" data-ng-if="widgetConfig.favouriteEntryPoints.length === 0 && !anonymous && activeLandingPage.canConfigure"> <cc-i18n data-key=entryPoints.noFavourites></cc-i18n> <cc-editing-mode data-i18n="\'entryPoints.noFavourites\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class="entry-points-grid text-center full-width" data-ng-if="favouriteEntryPoints.length > 0"> <div title={{getDescription(entryPoint)}} class="col-md-12 entry-points-item" data-ng-repeat="entryPoint in favouriteEntryPoints track by entryPoint.id" data-ng-click=execute(entryPoint)> <i class="fa fa-fw fa-2x {{entryPoint.icon}}"></i> <br> <small class=text-bold> <cc-i18n data-key={{entryPoint.name.id}}></cc-i18n> </small> </div> </div> <div data-ng-if="!loading && widgetConfig.showSearch && !noResult"> <div class="form-group has-feedback entry-point-search row" data-ng-class="{\'vertical-offset-5\': favouriteEntryPoints.length > 0,\'vertical-offset-10\': favouriteEntryPoints.length === 0}"> <span class=input-group> <input class="form-control search-input" placeholder="{{\'common.whatToDo\'|i18n:this}}" data-ng-model=filter.searchEntryPoints data-cc-autofocus=true> <i class="fa fa-search form-control-feedback"></i> </span> </div> <div class="hint-text alert alert-info hint-text vertical-offset-5 vertical-offset-5-bottom" data-ng-if="hiddenEntryPoints.length !== 0 && !anonymous && !filter.searchEntryPoints"> <cc-i18n data-key=entryPoints.searchHint data-params="{ hiddenEntryPoints: hiddenEntryPoints.length}"></cc-i18n> </div> <div class="entry-points-grid text-center full-width vertical-offset-5" data-ng-if="!!filter.searchEntryPoints && isA
1nyVisibleForCurrentFilter()"> <div title={{getDescription(entryPoint)}} class="col-md-12 entry-points-item" data-ng-repeat="entryPoint in getVisibleEntryPoints() track by entryPoint.id" data-ng-if=isVisibleForCurrentFilter(entryPoint) data-ng-click=execute(entryPoint)> <i class="fa fa-fw fa-2x {{entryPoint.icon}}"></i> <br> <small> <span class=entry-point-name data-ng-bind-html="getEntryPointName(entryPoint) | highlight:filter.searchEntryPoints"></span> </small> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghiniconnectivity.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniConnectivity> <cc-landing-page-widget> <cc-action data-action-id=TestGhiniConnectionAction data-widget=widget data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-on-success=showResponse data-always-visible=true></cc-action> <div style="display: flex; justify-content: center; margin-top: 8px" data-ng-if=message> <div class=alert data-ng-class="{\'alert-danger\': error, \'alert-success\': !error}" data-ng-if=error data-ng-bind-html=message></div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghinierrorsandwarnings.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniErrorsAndWarnings> <cc-landing-page-widget> <div style="margin-bottom: 10px"> <div data-ng-if="data.numberOfErrors > 1" style="margin-top: 10px;"> <span style="color: red;"><i class="fa fa-exclamation-triangle"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.numberOfErrors data-params=data data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="data.numberOfErrors === 1" style="margin-top: 10px;"> <span style="color: red;"><i class="fa fa-exclamation-triangle"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.oneError data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="data.numberOfErrors === 0" style="margin-top: 10px;"> <span style="color: green;"><i class="fa fa-check"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.noErrors data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="data.numberOfWarnings > 1" style="margin-top: 10px;"> <span style="color: orange;"><i class="fa fa-exclamation-triangle"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.numberOfWarnings data-params=data data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="data.numberOfWarnings === 1" style="margin-top: 10px;"> <span style="color: orange;"><i class="fa fa-exclamation-triangle"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.oneWarning data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="data.numberOfWarnings === 0" style="margin-top: 10px;"> <span style="color: green;"><i class="fa fa-check"></i></span> <cc-i18n data-key=common.ghini.errorsandwarnings.noWarnings data-supports-customer-translation=true></cc-i18n> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghiniimportexport.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniImportExport> <cc-landing-page-widget> <div data-ng-if=hasPermissions> <cc-action data-action-id=ImportStudentsForGhiniLandingPageAction data-widget=widget data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-before-execution=cleanupError do-on-success=showResponse data-always-visible=true></cc-action> <cc-action data-action-id=ImportApplicantsForGhiniLandingPageAction data-widget=widget data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-before-execution=cleanupError do-on-success=showResponse data-always-visible=true></cc-action> <cc-action data-action-id=ExportApplicantAndStudentLandingPageActionAction data-widget=widget data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" do-before-execution=cleanupError do-on-success=showResponse data-always-visible=true></cc-action> <div style="display: flex; justify-content: center; margin-top: 8px" data-ng-if=message> <div class=alert data-ng-class="{\'alert-danger\': error, \'alert-success\': !error}" data-ng-if=error data-ng-bind-html=message></div> </div> <div style="display: flex; flex-direction: column; margin-top: 5px;"> <a style="margin-top: 5px; text-align: center;" data-ng-repeat="file in files track by file.id" data-ng-click=download(file.id)> <span class="label label-primary"> <cc-i18n data-key=common.contentType.{{file.contentType}}></cc-i18n> </span> <span class=horizontal-offset-5>{{file.name}} ({{file.size | filesize}})</span> </a> </div> </div> <div class="alert alert-warning" data-ng-if=!hasPermissions> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghinireport.html","<div data-ng-controller=modules.landingpages.ghini.GhiniReport> <cc-landing-page-widget> <highchart config=chart></highchart> </cc-landing-page-widget> </div>"),e.put("scripts/modules/landingpages/noentity/ghinistatus.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniStatus> <cc-landing-page-widget> <div style="display: flex; align-items: center" class=fill-width> <div style="font-size: 7rem; line-height: 7rem; margin: 0 20px" data-ng-style="{color: data.state === \'inactive\' ? \'red\' : (data.state === \'beforeactivation\' ? \'#F0CA00\' : \'green\')}"> <i class="fa fa-power-off"></i></div> <div style="display: flex; flex-direction: column; align-items: flex-end; flex-grow: 1"> <div style="font-size: 1.6rem; margin-bottom: 10px"> <cc-i18n data-key=common.ghini.status.{{data.state}} data-params=status data-supports-customer-translation=true> </cc-i18n> </div> <div style="font-size: 1rem"> <cc-i18n data-key=common.ghini.status.highestIncomingMessageSerialNumber data-params=status data-supports-customer-translation=true></cc-i18n> </div> <div style="font-size: 1rem"> <cc-i18n data-key=common.ghini.status.highestOutgoingMessageUpdateSerialNumber data-params=status data-supports-customer-translation=true></cc-i18n> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghinitransmissiondates.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniTransmissionDates> <cc-landing-page-widget> <div class=cc-graph style="height: 180px; margin-bottom: 10px"> <cytoscape data-graph-elements=elements data-graph-layout=layout data-graph-style=style data-graph-options=options></cytoscape> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/ghiniunprocessedmessages.html",'<div data-ng-controller=modules.landingpages.ghini.GhiniUnprocessedMessages> <cc-landing-page-widget> <div class=place-allocation> <i class="fa fa-fw fa-envelope fa-3x text-primary vertical-offset-5-bottom" aria-hidden=true style="flex-shrink: 1"></i> <div style="display: flex; flex-direction: column; align-items: center"> <span style="font-size: 2rem">{{data.numberOfUnprocessedMessages}}</span> </div> </div> </cc-landing-page-widget> </div>'),e.put("scripts/modules/landingpages/noentity/information.html","<div class=rss-feed data-ng-controller=modules.landingpages.information> <cc-landing-page-widget> <div data-ng-bind-html=content></div> </cc-landing-page-widget> </div> "),e.put("scripts/modules/landingpages/noentity/pendingmodulepartclearancerequests.html",'<div data-ng-controller=modules.landingpages.startpage.PendingModulePartClearanceRequests> <cc-landing-page-widget> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom landing-page-widget-icon-text full-width" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if="!noResult && !loading"> <div style="display: flex; flex-direction: column; gap: 8px" class=text-bold> <div data-ng-repeat="(degree, modulePartVersions) in modulePartClearances" style="display: flex; flex-direction: column; gap: 8px"> <div class=text-primary>{{degree}}</div> <div data-ng-repeat="(modulePartVersion, modulePartClearances) in modulePartVersions" style="margin-left: 16px"> <div class=text-secondary>{{modulePartVersion}}</div> <div style="display: flex; gap: 8px" data-ng-repeat="modulePartClearance in modulePartClearances"> <div> <i class="fa fa-fw fa-check-square text-primary" data-ng-if=selection[modulePartClearance.id] data-ng-click=toggleSelection(modulePartClearance.id)></i> <i class="fa fa-fw fa-square text-grey" data-ng-if=!selection[modulePartClearance.id] data-ng-click=toggleSelection(modulePartClearance.id)></i> </div> <div data-ng-click=toggleSelection(modulePartClearance.id) class=clickable> {{modulePartClearance.personName}} </div> </div> </div> </div> <cc-action data-action-id=ChangeTranscriptModulePartClearanceStatusAction data-widget=widget data-ng-if=!noResult data-disabled=!hasSelection() data-as-block=true data-show-text=true data-show-button-border=true data-button-style="success full-width text-center" data-option-origin-view-def
1inition-id-override={{changeTranscriptModulePartClearanceStatusInputView}} data-extra-button-classes=pull-right data-do-on-success=update data-always-visible=true></cc-action> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/person-link.html",'<div data-ng-controller=modules.landingpages.startpage.PersonLink> <cc-landing-page-widget> <div class=person-link> <div class="alert alert-warning hint-text no-margin" data-ng-if=noResult> <cc-i18n data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <div class=text-center data-ng-if=!!person.masterData.photo.data> <img class="img-circle person-image clickable" data-ng-src=data:{{person.masterData.photo.contentType}};base64,{{person.masterData.photo.data}} data-ng-click=showPerson()> </div> <div class="profile-element text-center" data-ng-if=!person.masterData.photo.data> <div class="logo-element clickable" data-ng-click=showPerson()> <div class=img-placeholder> <span>{{(person.masterData.firstName.substring(0, 1) + person.masterData.lastName.substring(0, 1))}}</span> </div> </div> </div> <div class="person-name font-bold no-margin full-width text-center"> {{person.masterData.firstName}} {{person.masterData.middleNames}} {{person.masterData.namePrefix}} {{person.masterData.lastName}} {{person.masterData.nameAddition}} </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/placeholder.html",'<div data-ng-controller=modules.landingpages.placeholder> <cc-landing-page-widget> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n data-key={{widget.name.id}} data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=landing-page-widget-body> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=showFeatureMissing> <cc-i18n data-key=landingPage.missingSoftwareFeature data-supports-customer-translation=true></cc-i18n> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=showTraitMissing> <cc-i18n data-key=landingPage.missingPersonTrait data-ng-if=showTraitMissing data-supports-customer-translation=true></cc-i18n> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/report.html",'<div data-ng-controller=modules.landingpages.startpage.Report> <cc-landing-page-widget> <div class=report> <div class="vertical-offset-5-bottom full-height" data-ng-if=!configurationError> <cc-widget id=report-content_{{widget.id}} class=full-height data-item-config=reportItemConfig></cc-widget> </div> <div class="alert alert-danger hint-text no-margin" data-ng-if=configurationError> <cc-i18n data-key=landingPage.configurationError></cc-i18n> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/rights-to-vote-ballots.html",'<div data-ng-controller=modules.landingpages.startpage.RightsToVoteBallots> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-thumbs-up fa-3x landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div style="display: flex" data-ng-if=!noResult> <div data-ng-repeat="ballot in personBallots track by ballot.id" data-ng-class="{\'vertical-offset-10\': !$first}"> <div class="landing-page-widget-icon-text pull-right text-right"> <span class=text-bold> <cc-i18n data-key={{::ballot.election.electionGroup.name.id}}></cc-i18n> - <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.election.name></cc-i18n> <cc-editing-mode data-i18n="\'common.election.name\'" data-ng-if=isEditingMode()></cc-editing-mode> <cc-i18n data-key={{::ballot.election.eligibleRole.name.id}}></cc-i18n>: </span> <span> {{ballot.electionDays.startDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} -- {{ballot.electionDays.endDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</span> <span data-ng-if=ballot.name>(<cc-i18n title="{{\'entity.Ballot.$entity\'|i18n:this}}" data-key={{::ballot.name.id}} data-ng-if=ballot.name></cc-i18n>)</span> </div> </div> <div class=clearfix></div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/rssfeed.html",'<div class=rss-feed data-ng-controller=modules.landingpages.rss.feed> <cc-landing-page-widget> <div class=rss-feed-item data-ng-click=showRssFeedItem(item.id) data-ng-repeat="item in feedItems"> <div class="rss-feed-item-element rss-feed-item-title" data-ng-bind-html=item.title></div> <div class="rss-feed-item-element rss-feed-item-description text-ellipsis" data-ng-bind-html=item.description> </div> <div class=rss-feed-item-bottom-line-wrapper> <span data-ng-if=item.author> <span class="rss-feed-item-element rss-feed-item-author" data-ng-bind-html=item.author> </span> | </span> <span class="rss-feed-item-element rss-feed-item-pubDate" data-ng-bind-html=item.pubDate> </span> </div> <div class=rss-feed-item-separator data-ng-if=!$last></div> </div> <em data-ng-if="!loading && !feedItems.length"> <cc-i18n data-key=common.noEntries></cc-i18n> </em> <div class=rss-feed-empty data-ng-if="!loading && !feedTitle"> <div class="alert alert-warning hint-text vertical-offset-5-bottom"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/tasks.html",'<div data-ng-controller=modules.landingpages.startpage.Tasks> <cc-landing-page-widget> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n data-key=tasks.title data-supports-customer-translation=true></cc-i18n>&nbsp; <span data-ng-class="{\'text-red\': openTasks.length > 0, \'text-green\': openTasks.length === 0}">{{openTasks.length}}&nbsp; <cc-i18n data-key=common.pending data-ng-if=isEditingMode()></cc-i18n> </span> <span data-ng-if="widgetConfig.showDone && doneTasksTotal > 0">, <span class=text-green>&nbsp;{{doneTasksTotal}}&nbsp;<cc-i18n data-key=common.done data-supports-customer-translation=true></cc-i18n></span> </span> </small> </div> <div class=tasks> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if=!noResult> <div class="alert alert-success hint-text vertical-offset-5" style="display: flex" data-ng-class="{\'vertical-offset-10-bottom\': widgetConfig.showDone && doneTasks.length > 0, \'vertical-offset-5-bottom\': !widgetConfig.showDone || doneTasks.length === 0}" data-ng-if="openTasks.length === 0"> <cc-i18n data-key=tasks.nothingToDo data-supports-customer-translation=true></cc-i18n> </div> <div class="alert alert-warning task full-width" style="display: flex" data-ng-repeat="task in openTasks track by task.id"> <i class="fa fa-fw fa-1_5x fa-square text-warning landing-page-widget-icon pull-left clickable-icon" data-ng-click=toggleTask(task)></i> <div class="landing-page-widget-icon-text pull-right text-right"> <strong> <cc-i18n data-key={{task.name.id}}></cc-i18n> </strong> <br> <div data-ng-if=widgetConfig.showFullTask> <div class=text-italic data-ng-if=!!task.description> <cc-i18n data-key={{task.description.id}}></cc-i18n> </div> <br> <cc-i18n class="label label-default" data-key={{task.category.name.id}}></cc-i18n> <div> <small> <cc-i18n data-key=entity.Task.reportedBy data-supports-customer-translation=true></cc-i18n> <strong>&nbsp;{{task.reportedBy.masterData.firstName}}&nbsp;{{task.reportedBy.masterData.lastName}}</strong> </small> <i class="fa fa-fw fa-plus-square"></i> </div> <div> <small data-ng-if=!!task.assignedTo> <cc-i18n data-key=entity.Task.assignedTo data-supports-customer-translation=true></cc-i18n> <strong>&nbsp;{{task.assignedTo.masterData.firstName}}&nbsp;{{task.assignedTo.masterData.lastName}}</strong> </small> <small class=text-red data-ng-if=!task.assignedTo> <cc-i18n data-key=$defaults.attribute.unassigned data-supports-customer-translation=true></cc-i18n> </small> <i class="fa fa-fw fa-user-circle"></i> </div> <div data-ng-if="task.visibleToPersons.length > 0"> <small> <cc-i18n data-key=entity.Task.visibleToPersons data-supports-customer-translation=true></cc-i18n> : <strong data-ng-repeat="person in task.visibleToPersons track by person.id"> &nbsp;{{person.masterData.firstName}}&nbsp;{{person.masterData.lastName}} <span data-ng-if=!$last>, </span> </strong> </small> <i class="fa fa-fw fa-user"></i> </div> <div data-ng-if="task.visibleToRoles.length > 0"> <small> <cc-i18n data-key=entity.Task.visibleToRoles data-supports-customer-translation=true></cc-i18n> : <strong data-ng-repeat="role in task.visibleToRoles track by role.id"> &nbsp;<cc-i18n data-key={{role.name.id}}></cc-i18n> <span data-ng-if=!$last>, </span> </strong> </small> <i class="fa fa-fw fa-users"></i> </div> </div> </div> <div class=clearfix></div> </div> <div data-ng-if="widgetConfig.showDone && doneTasks.length > 0"> <div class="alert alert-success done-task full-width" style="display: flex" data-ng-repeat="task in doneTasks track by task.id"> <i class="fa fa-fw fa-1_5x fa-check-square text-green landing-page-widget-icon pull-left clickable-icon" data-ng-click=toggleTask(task)></i> <div class="landing-page-widget-icon-text pull-right text-right"> <span class="text-strikethrough text-green"> <cc-i18n data-key={{task.name.id}}></cc-i18n> </span> </div> <div class=clearfix></div> </div> </div> <div class="text-center full-width manage-tasks"> <div title="{{\'tasks.manageTasks\'|i18n:this}}" class="col-md-12 task-action" data-ng-click=manageTasks()> <i class="fa fa-fw fa-2x fa-tasks"></i> <br> <small class=text-bold> <cc-i18n data-key=tasks.manageTasks data-supports-customer-translation=true></cc-i18n> </small> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/unconfirmed-assessments.html",'<div data-ng-controller=modules.landingpages.startpage.UnconfirmedAssessments> <cc-landing-page-widget> <div class=unconfirmed-assessments> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!canManageAchievementAttempts> <cc-i18n data-key=common.noResult></cc-i18n> </div> <div data-ng-if=canManageAchievementAttempts> <div data-ng-if="totalCountUnconfirmedAssessments === 0"> <div class="text-center text-green"> <cc-i18n data-key=assessments.unconfirmedCount></cc-i18n> {{totalCountUnconfirmedAssessments}}&nbsp; </div> <br> </div> <div data-ng-if="totalCountUnconfirmedAssessments > 0"> <div class="text-center text-red"> <cc-i18n data-key=assessments.unconfirmedCount></cc-i18n> {{totalCountUnconfirmedAssessments}}&nbsp; </div> <br> </div> <div class="text-center full-width manage-assessments"> <div title="{{\'unconfirmedAssessments.manageAssessments\'|i18n:this}}" class="col-md-12 assessments-action" data-ng-click=manageAssessments()> <i class="fa fa-fw fa-2x fa-tasks"></i> <br> <small class=text-bold> <cc-i18n data-key=unconfirmedAssessments.manageAssessments></cc-i18n> </small> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/university-contact.html",'<div data-ng-controller=modules.landingpages.noentity.UniversityContact> <cc-landing-page-widget> <div style="display: flex; column-gap: 20px;"> <div style="display: flex; flex-direction:column; align-items:center;"> <img style="border-radius: 50% !important; height: 100px; width: 100px;" alt=image data-ng-src=data:{{photo.contentType}};base64,{{photo.data}}> </div> <div> <h3><strong>{{name}}</strong></h3> <h4><strong>{{role}}</strong></h4> <p data-ng-if=emailAddress><i class="fa fa-at"></i> <a href=mailto:{{emailAddress}}>{{emailAddress}}</a></p> <p data-ng-if=!emailAddress>&nbsp;</p> <p data-ng-if=phone><i class="fa fa-phone"></i> {{phone}}</p> <p data-ng-if=!phone>&nbsp;</p> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/noentity/welcome.html",'<div data-ng-controller=modules.landingpages.startpage.Welcome> <cc-landing-page-widget> <div class="welcome text-center"> <div class="customer-logo welcome-logo app"></div> <br> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.welcome></cc-i18n> <cc-editing-mode data-i18n="\'common.welcome\'" data-ng-if=isEditingMode()></cc-editing-mode> </small> <br> <h3 class="text-bold text-uppercase"> <cc-i18n data-key=common.welcome.organization data-params=templateSettings></cc-i18n> </h3> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/absence.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Absence> <cc-landing-page-widget> <div> <div class="absence text-warning" data-ng-if=absent> <div style="display: flex" data-ng-repeat="currentAbsence in currentAbsence
1s track by currentAbsence.id"> <i class="fa fa-fw fa-3x fa-hourglass text-warning landing-page-widget-icon vertical-offset-5-bottom"></i> <div class="landing-page-widget-icon-text text-right"> <h3 class=text-uppercase> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=absence.absent></cc-i18n> <cc-editing-mode data-i18n="\'absence.absent\'" data-ng-if=isEditingMode()></cc-editing-mode> ({{::currentAbsence.name}}) </h3> <strong> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.until></cc-i18n> <cc-editing-mode data-i18n="\'common.util\'" data-ng-if=isEditingMode()></cc-editing-mode> </strong>: {{currentAbsence.until | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <strong data-ng-if=currentAbsence.replacements.length> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.replacements></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.replacements\'" data-ng-if=isEditingMode()></cc-editing-mode> </strong>: <span data-ng-repeat="replacement in currentAbsence.replacements track by replacement.id"> <span data-ng-if=!$first>,</span>&nbsp;{{::replacement.masterData.firstName}} {{replacement.masterData.lastName}} </span> </div> </div> </div> <div class="no-absence text-success" style="display: flex" data-ng-if=!absent> <i class="fa fa-fw fa-3x fa-user text-success landing-page-widget-icon vertical-offset-5-bottom"></i> <div class="landing-page-widget-icon-text text-right vertical-offset-5-bottom"> <div class="alert alert-success hint-text no-margin"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=absence.notAbsent></cc-i18n> <cc-editing-mode data-i18n="\'absence.notAbsent\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> <div class=office-hour style="display: flex" data-ng-repeat="event in futureAbsences track by event.id"> <div class="landing-page-widget-icon-text text-right pull-right"> <br> <strong> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=absence.future></cc-i18n> <cc-editing-mode data-i18n="\'absence.future\'" data-ng-if=isEditingMode()></cc-editing-mode> : {{::event.name}}</strong> <span> <br> {{::event.timeString}} <i class="fa fa-fw fa-clock"></i> </span> <strong data-ng-if=event.replacements.length> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.replacements></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.replacements\'" data-ng-if=isEditingMode()></cc-editing-mode> : </strong> <span data-ng-repeat="futureReplacement in event.replacements track by futureReplacement.id"> <span data-ng-if=!$first>,</span>&nbsp;{{::futureReplacement.masterData.firstName}} {{futureReplacement.masterData.lastName}} </span> <br> </div> <div class=clearfix></div> </div> <br> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/achievement-attempts.html",'<div data-ng-controller=modules.landingpages.personfactsheet.AchievementAttempts> <cc-landing-page-widget> <div style="flex: 1 1 auto"> <div data-ng-repeat="attempt in data track by attempt.id" style="display: flex; align-items: start; justify-content: flex-end;"> <i class="fa fa-fw landing-page-widget-icon vertical-offset-5-bottom" data-ng-if="attempt.passed !== null" data-ng-class=::attempt.symbol></i> <div class="landing-page-widget-icon-text pull-right text-right"> <div style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px; padding-bottom: 5px;"> <span class=text-bold> <cc-i18n data-key={{::attempt.printedAchievement.name.id}}></cc-i18n> </span> <span class=text-bold data-ng-if=!!attempt.printedAchievement.i
1dentifier> ({{attempt.printedAchievement.identifier}}) </span> <span title="{{\'entity.AchievementAttempt.attemptNumber\'|i18n:this}}" class="label label-success text-uppercase">{{attempt.attemptNumber}}</span> </div> <div style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <cc-i18n data-key="{{\'entity.AchievementAttemptType.\' + attempt.attemptType}}"></cc-i18n> </div> <div class=text-primary data-ng-if=!!attempt.topicDe style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <strong> <cc-i18n data-key=$defaults.attribute.topic data-supports-customer-translation=true></cc-i18n> </strong>: <i>{{attempt.topicDe}}</i> </div> <div data-ng-if="attempt.attemptType === \'REGULAR_ATTEMPT\'" style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <span class=text-primary style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <strong><cc-i18n data-key=entity.ExamRegModulePartVersion.$entity data-supports-customer-translation=true></cc-i18n></strong>: <cc-i18n data-key={{::attempt.printedAchievement.parentExamRegModulePart.name.id}}></cc-i18n> </span> <span class=text-primary data-ng-if=!!attempt.printedAchievement.parentExamRegModulePart.identification> ({{attempt.printedAchievement.parentExamRegModulePart.identification}}) </span> </div> <div class=text-primary style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px"> <strong> <cc-i18n data-key=entity.StudyProgram.$entity data-supports-customer-translation=true></cc-i18n> </strong>: <cc-i18n data-key={{::attempt.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.degree.name.id}}></cc-i18n> in <cc-i18n data-key={{::attempt.transcript.examinationRegulationVersion.examinationRegulation.studyProgram.name.id}}></cc-i18n> </div> <div data-ng-if=attempt.modifiedAt data-ng-class="{\'text-success\': attempt.active}"> <cc-i18n data-key=$defaults.attribute.modifiedAt data-supports-customer-translation=true></cc-i18n> : {{attempt.modifiedAt | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <i class="fa fa-fw fa-clock"></i> </div> <div style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px; margin-top:5px;" data-ng-if=attempt.proofOfAchievementGerman> <a data-ng-click="downloadFile(attempt.id, \'proofOfAchievementGerman\', attempt.proofOfAchievementGerman.id)"> <cc-i18n data-key=$defaults.attribute.proofOfAchievementGerman data-supports-customer-translation=true></cc-i18n> </a> <i class="fa fa-download"></i> </div> <div style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px" data-ng-if=attempt.proofOfAchievementEnglish> <a data-ng-click="downloadFile(attempt.id, \'proofOfAchievementEnglish\', attempt.proofOfAchievementEnglish.id)"> <cc-i18n data-key=$defaults.attribute.proofOfAchievementEnglish data-supports-customer-translation=true></cc-i18n> </a> <i class="fa fa-download"></i> </div> <div style="flex-grow: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; padding-left: 4px; margin-top:5px;"> <a data-ng-click=showAttempt(attempt)>Details anzeigen</a> <i class="fa fa-info"></i> </div> <hr> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/acronym.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Acronym> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-id-badge fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary>{{::acronym}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/active-relationships.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Relationships> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-handshake fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=relationships data-ng-if=!noResult> <div data-ng-repeat="relationshipGroup in relationshipGroups track by $index"> <div class=pull-right data-ng-class="{\'vertical-offset-10-bottom\': !$last}"> <cc-i18n class="text-primary text-bold pull-right" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key={{relationshipGroup[0]}}></cc-i18n> <br> <ul> <li class=no-bullet data-ng-repeat="relationship in relationshipGroup[1] track by $index"> <a class="text-bold pull-right" data-ng-click=showPerson(relationship.otherPerson.id)> {{::relationship.otherPerson.masterData.firstName}}&nbsp;{{::relationship.otherPerson.masterData.lastName}}
1 </a> <br> <small class=pull-right>({{relationship.startDate | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}&nbsp;-&nbsp;{{relationship.endDate | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}})</small> </li> </ul> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/applicant-number.html",'<div data-ng-controller=modules.landingpages.personfactsheet.ApplicantNumber> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-hashtag fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary>{{::applicantNumber}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/applications-to-university.html",'<div data-ng-controller=modules.landingpages.personfactsheet.ApplicationsToUniversity> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-pencil-alt fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div data-ng-repeat="application in data track by application.id" data-ng-class="{\'vertical-offset-30\': !$first}"> <span class="pull-right text-bold"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key={{::application.applicationRegulationVersion.applicationRegulation.studyProgramme.degree.name.id}}></cc-i18n> <cc-i18n data-key=common.in></cc-i18n> <cc-editing-mode data-i18n="\'common.in\'" data-ng-if=isEditingMode()></cc-editing-mode> <cc-i18n data-key={{::application.applicationRegulationVersion.applicationRegulation.studyProgramme.name.id}}></cc-i18n> (<cc-i18n data-key={{::application.applicationRegulationVersion.name.id}}></cc-i18n>) </span> <br> <span class=pull-right> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.applicationForTerm></cc-i18n> <cc-editing-mode data-i18n="\'common.applicationForTerm\'" data-ng-if=isEditingMode()></cc-editing-mode> <cc-i18n data-key={{::application.applicationPeriod.applicationForAdmissionApplicationPeriod.term.name.id}}></cc-i18n> </span> <br> <span class="label label-primary text-uppercase pull-right horizontal-offset-5"> <cc-i18n data-key={{::application.processDefinitionStatus.name.id}}></cc-i18n> </span> <span class="label label-secondary pull-right">{{::application.applicationNumber}}</span> <div class="flex-simple-gap log-entries vertical-offset-30" style="flex-direction: column" data-ng-if=!!application.logEntries> <div> <cc-i18n data-key=$defaults.attribute.transitionLogEntries></cc-i18n> <button title="{{\'common.applicationHistory.expand\'|i18n:this}}" class="btn btn-xs btn-secondary pull-right" style="margin-left: 3px" data-ng-if=!application.expandLogEntries data-ng-click=toggleLogEntries($index)> <i class="fa fa-fw fa-plus-square"></i> </button> <button title="{{\'common.applicationHistory.collapse\'|i18n:this}}" class="btn btn-xs btn-secondary pull-right" style="margin-left: 3px" data-ng-if=!!application.expandLogEntries data-ng-click=toggleLogEntries($index)> <i class="fa fa-fw fa-minus-square"></i> </button> </div> <div class=flex-simple data-ng-repeat="entry in application.logEntries" data-ng-if=!!application.expandLogEntries> <i class="fa fa-fw {{entry.transitionIcon}} prefix-icon fa-1_5x"></i> <div style="flex-grow: 1; text-align: right; width: 0"> <div class=text-italic data-ng-if=!entry.processTransitionId> <span style="white-space: normal">{{entry.processTransitionName}}</span> </div> <div class=text-italic data-ng-if=!!entry.processTransitionId> <cc-i18n style="white-space: normal" data-key={{entry.processTransitionId.name.id}}></cc-i18n> </div> <div class=text-italic data-ng-if=!entry.invokedById> {{entry.invokedByName}} </div> <div class=text-italic data-ng-if=!!entry.invokedById> {{entry.invokedById.masterData.lastName}}, {{entry.invokedById.masterData.firstName}} </div> <div><small class=text-secondary>{{entry.createdAt | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}</small></div> <div class=text-secondary>(<small data-am-time-ago=entry.createdAt></small>)</div> </div> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/artistic-name.html",'<div data-ng-controller=modules.landingpages.personfactsheet.ArtisticName> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-id-badge fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary>{{::artisticName}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/balance.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Balance> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-money-bill-alt fa-3x landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\'text-green\': positive, \'text-red\': !positive}"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span data-ng-class="{\'text-green\': positive, \'text-red\': !positive}">{{::balance}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/calendar.html",'<div data-ng-controller=modules.landingpages.person.Calendar> <cc-landing-page-widget> <div class=cc-event-source-list-header style="display: flex; align-items: center; column-gap: 5px;" data-ng-click="eventSourceListVisible = !eventSourceListVisible"> <i class="fa fa-caret-square-down" data-ng-class="{ \'fa-caret-square-right\': !eventSourceListVisible, \'fa-caret-square-down\': eventSourceListVisible }"></i> <h4> <cc-i18n data-key=widget.calendar.eventSources data-supports-customer-translation=true></cc-i18n> </h4> <span title="{{\'landingpage.widget.person.calendar.activeEventSource\'|i18n:this}}" class=badge>{{ (widget.calendar.eventSources | filter: {active: true}).length }}/{{widget.calendar.eventSources.length}}</span> </div> <div class=cc-event-source-list style="margin-bottom: 5px" data-ng-show=eventSourceListVisible> <div class=cc-calendar-event-source data-ng-repeat="eventSource in widget.calendar.eventSources" data-ng-click="widget.api.toggleEventSource(eventSource, this)"> <div class=cc-event-source__active data-ng-if=eventSource.active> <i title={{eventSource.name|i18n:this}} class="fa fa-square prefix-icon cc-solid-icon" data-ng-style="{color: eventSource.color}"></i> <span title={{eventSource.name|i18n:this}}> <cc-i18n data-key={{eventSource.name}}></cc-i18n> </span> </div> <div class=cc-event-source__inactive data-ng-if=!eventSource.active> <i title={{eventSource.name|i18n:this}} class="fa fa-square prefix-icon text-grey cc-solid-icon"></i> <span title={{eventSource.name|i18n:this}} class=text-grey> <cc-i18n data-key={{eventSource.name}}></cc-i18n> </span> </div> </div> </div> <div class="cc-calendar cc-calendar-content" style="margin-bottom: 5px;"></div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/contact-information.html",'<div data-ng-controller=modules.landingpages.personfactsheet.ContactInformation> <cc-landing-page-widget> <div style="display: flex; text-align: right"> <i class="fa fa-fw fa-at fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="email.length === 0"> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="email.length > 0"> <ul class=no-padding> <li class=no-bullet data-ng-repeat="address in email track by $index"> <h4 class="font-bold no-margin text-ellipsis"> <span class=text-primary data-ng-if=$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </span> <small data-ng-if=!$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10 style="display: flex; text-align: right"> <i class="fa fa-fw fa-phone fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="phone.length === 0"> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="phone.length > 0"> <ul class=no-padding> <li class=no-bullet data-ng-repeat="number in phone track by $index"> <h4 class="font-bold no-margin text-ellipsis"> <span class=text-primary data-ng-if=$first>{{::number}}</span> <small data-ng-if=!$first>{{::number}}</small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10 style="display: flex; text-align: right"> <i class="fa fa-fw fa-fax fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="fax.length === 0"> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if="fax.length > 0"> <ul class=no-padding> <li class=no-bullet data-ng-repeat="number in fax track by $index"> <h4 class="font-bold no-margin text-ellipsis"> <span class=text-primary data-ng-if=$first>{{::number}}</span> <small data-ng-if=!$first>{{::number}}</small> </h4> </li> </ul> </div> </div> </div> <div class=vertical-offset-10 style="display: flex; text-align: right"> <i class="fa fa-fw fa-link fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!website> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if=!!website> <ul class=no-padding> <li class=no-bullet> <h4 class="font-bold no-margin text-ellipsis"> <a class=text-primary href={{website}} target=_blank>{{::website}}</a> </h4> </li> </ul> </div> </div> </div> <hr data-ng-if=contactFeatureActive> <div class="text-center vertical-offset-10-bottom" data-ng-if=contactFeatureActive> <strong> <i class="fa fa-envelopes-bulk prefix-icon" data-ng-class="{\'text-red\' : !contactDesired, \'text-green\' : contactDesired}"></i> <cc-i18n data-ng-if=contactDesired data-key=ui.landingPage.contact.basicallyDesired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!contactDesired data-key=ui.landingPage.contact.basicallyNotDesired data-supports-customer-translation=true></cc-i18n> </strong> </div> <div class="vertical-offset-10 flex flex-wrap" data-ng-if="contactDesired && contactFeatureActive"> <div class="contact contact__email flex-auto text-center"> <i class="fa fa-3x fa-envelopes" data-ng-class="{\'text-red\' : !emailContactDesired, \'text-green\' : emailContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.email data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=emailContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!emailContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> <div class="contact contact__mail flex-auto text-center"> <i class="fa fa-3x fa-mailbox" data-ng-class="{\'text-red\' : !mailContactDesired, \'text-green\' : mailContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.mail data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=mailContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!mailContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> <div class="contact contact__phone flex-auto text-center"> <i class="fa fa-3x fa-phone" data-ng-class="{\'text-red\' : !phoneContactDesired, \'text-green\' : phoneContactDesired}"></i> <div class=contact-text> <cc-i18n data-key=ui.landingPage.contact.phone data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=phoneContactDesired data-key=ui.landingPage.contact.desired data-supports-customer-translation=true></cc-i18n> <cc-i18n data-ng-if=!phoneContactDesired data-key=ui.landingPage.contact.notDesired data-supports-customer-translation=true></cc-i18n> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/curriculum-vitae.html",'<div data-ng-controller=modules.landingpages.personfactsheet.CurriculumVitae> <cc-landing-page-widget> <div class=curriculum-vitae> <table class="vertical-offset-10 full-width"> <tr class=table-row data-ng-repeat="entry in timeline" data-ng-init="category = getCategory(entry.category)" data-ng-class="{\'cc-table-row-borderless\': $last}"> <td title={{category.name|i18n:this}} class="text-center icon-column"> <i class="fa fa-fw {{category.icon}}" data-ng-style="{color: category.color}"></i> </td> <td class="text-right data-column"> <strong data-ng-if=entry.title>{{entry.title}}<br></strong> <strong data-ng-if="entry.i18nTitle1 || entry.i18nTitle2"> <cc-i18n data-key={{entry.i18nTitle1}}></cc-i18n> <cc-i18n data-key={{entry.i18nTitle2}}></cc-i18n> </strong> <span data-ng-if=entry.i18nSubtitle> <br data-ng-if="entry.i18nTitle1 || entry.i18nTitle2"> <small> <cc-i18n data-key={{entry.i18nSubtitle}}></cc-i18n> </small> </span> <br> <small data-ng-if="!!entry.from || !!entry.to"> {{entry.from | amDateFormat: \'DD.MM.YYYY\'}} <span data-ng-if="entry.to && !entry.from.isSame(entry.to, \'day\')"> - {{entry.to | amDateFormat: \'DD.MM.YYYY\'}}</span> </small> <small data-ng-if="!!entry.fromYear || !!entry.toYear"> {{entry.fromYear}} <span data-ng-if="entry.fromYear !== entry.toYear"> - {{entry.toYear}}</span></small> </td> </tr> </table> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/data-of-birth.html",'<div data-ng-controller=modules.landingpages.personfactsheet.PersonDataOfBirth> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-3x landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\'fa-calendar-alt text-primary\': !data.isBirthday, \'fa-birthday-cake text-danger\': data.isBirthday}"></i> <div class="landing-page-widget-icon-text text-right"> <h4 class="font-bold no-margin"> <span data-ng-class="{\'text-primary\': !data.isBirthday, \'text-danger\': data.isBirthday}">{{data.dateOfBirth | amDateFormat:\'DD.MM.YYYY\'}}</span> </h4> <p class="text-bold text-danger text-uppercase" data-ng-if=data.isBirthday> <span class="label label-danger"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.today></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode>! </span> </p> <p class="text-secondary vertical-offset-10" data-ng-if="!!showPlaceOfBirth && (!!data.placeOfBirth || !!data.countryOfBirthName)"> <i class="fa fa-fw" data-ng-class="\'fa-lo
1cation-dot\'"></i> <span data-ng-if=!!data.placeOfBirth>{{data.placeOfBirth}}<span data-ng-if=!!data.countryOfBirthName>,</span></span> <cc-i18n data-key={{::data.countryOfBirthName.id}} data-ng-if=!!data.countryOfBirthName data-supports-customer-translation=true></cc-i18n> </p> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/disadvantage-compensation-rights.html",'<div data-ng-controller=modules.landingpages.personfactsheet.DisadvantageCompensationRights> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-balance-scale fa-3x landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\'text-primary\': !hasRightForDisadvantageCompensation, \'text-danger\': hasRightForDisadvantageCompensation}"></i> <div class=landing-page-widget-icon-text style="text-align: right"> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <small class="font-bold no-margin pull-right"> <cc-i18n class=translatable-by-customer class="pull-right text-right text-danger" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-ng-if=::hasRightForDisadvantageCompensation data-key=disadvantageCompensationRights.isCurrentlyEntitled></cc-i18n> <cc-editing-mode data-i18n="\'disadvantageCompensationRights.isCurrentlyEntitled\'" data-ng-if="hasRightForDisadvantageCompensation && isEditingMode()"></cc-editing-mode> <cc-i18n class=translatable-by-customer class="pull-right text-right" data-ng-class="{\'editing-mode\' : isEditingMode()}" data-ng-if=::!hasRightForDisadvantageCompensation data-key=disadvantageCompensationRights.isCurrentlyNotEntitled></cc-i18n> <cc-editing-mode data-i18n="\'disadvantageCompensationRights.isCurrentlyNotEntitled\'" data-ng-if="!hasRightForDisadvantageCompensation && isEditingMode()"></cc-editing-mode> </small> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/duplicates.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Duplicates> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-copy fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=duplicates data-ng-if=!noResult> <div class="text-success text-center" data-ng-if="duplicates.length === 0 && checked"> <br> <i class="fa fa-check"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=duplicates.none></cc-i18n> <cc-editing-mode data-i18n="\'duplicates.none\'" data-ng-if=isEditingMode()></cc-editing-mode> <br> <br> </div> <div class="duplicate text-right" data-ng-repeat="duplicate in duplicates track by $index" data-ng-class="{\'text-success\': duplicate.different === true, \'text-danger\': duplicate.different === false, \'text-warning\': duplicate.different === null}"> <strong>{{::duplicate.otherPerson.masterData.firstName}} {{::duplicate.otherPerson.masterData.lastName}}</strong> <br> <span data-ng-if="duplicate.different === true"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.different></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.different\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-check"></i> </span> <span data-ng-if="duplicate.different === false"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.PersonDuplicate.$entity></cc-i18n> <cc-editing-mode data-i18n="\'entity.PersonDuplicate.$entity\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-copy"></i> </span> <span data-ng-if="duplicate.different === null"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=duplicates.notCheckedForDifferences></cc-i18n> <cc-editing-mode data-i18n="\'duplicates.notCheckedForDifferences\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-question-circle"></i> </span> </div> <div class="alert alert-warning hint-text" data-ng-if=!checked> <i class="fa fa-times"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=duplicates.notCheckedYet></cc-i18n> <cc-editing-mode data-i18n="\'duplicates.notCheckedYet\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class="alert alert-danger hint-text" data-ng-if=failed> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=duplicates.actionFailed></cc-i18n> <cc-editing-mode data-i18n="\'duplicates.actionFailed\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> </div> <div class="text-center full-width trigger-duplicate-check"> <div title="{{\'tasks.manageTasks\'|i18n:this}}" class="col-md-12 duplicate-check-action" data-ng-click="!isEditingMode() && triggerDuplicateCheck()"> <i class="fa fa-fw fa-2x fa-copy"></i> <br> <small class=text-bold> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=duplicates.triggerDuplicateCheck></cc-i18n> <cc-editing-mode data-i18n="\'duplicates.triggerDuplicateCheck\'" data-ng-if=isEditingMode()></cc-editing-mode> </small> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/enrolment-files.html",'<div data-ng-controller=modules.landingpages.person.EnrolmentFiles> <cc-landing-page-widget> <div data-ng-repeat="chapter in data" data-ng-class="{\'vertical-offset-10\': !$first}"> <span class=text-bold>{{chapter.termName}}</span> <div style="display: flex; flex-direction: row; flex: 1; justify-content: flex-end;"> <i class="fa fa-fw fa-3x fa-file-lines text-primary landing-page-widget-icon vertical-offset-10"></i> <div style="display: flex; flex-direction: column; flex: 1;"> <div class="landing-page-widget-icon-text pull-right text-right vertical-offset-5"> <p data-ng-repeat="file in chapter.files" data-ng-class="{\'vertical-offset-10\': !$first}"> <a class="horizontal-offset-5-right text-ellipsis" data-ng-click="downloadFile(chapter.personId, chapter.id, chapter.attributePath, file.id)">{{file.name}}</a><span class="label label-primary horizontal-offset-5-right" style="min-width: 40px"> <cc-i18n data-key=common.contentType.{{file.contentType}} data-default=common.contentType.application/octet-stream></cc-i18n> </span> </p> <p class="vertical-offset-10 horizontal-offset-5-right"> <span data-ng-if=!downloading> <i class="fa fa-fw fa-file-zipper"></i> <a data-cc-i18n-title=common.form.fileCollectionDownload data-ng-click="downloadZippedFiles(chapter.personId, chapter.id, chapter.attributePath); $event.stopPropagation()" data-ng-dblclick="downloadZippedFiles(chapter.personId, chapter.id, chapter.attributePath); $event.stopPropagation()"> {{\'common.form.fileCollectionDownload\' | i18n:this}} </a> </span> <i class="fa fa-fw fa-sync fa-spin" data-ng-if=downloading></i> </p> </div> </div> </div> <hr class="vertical-offset-10 vertical-offset-10-bottom" data-ng-if=!$last> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/full-name.html",'<div data-ng-controller=modules.landingpages.personfactsheet.FullName> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-id-badge fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin text-right"> <div class=text-primary> <div data-ng-if=!!masterData.salutation> <small> <cc-i18n data-key={{::masterData.salutation.name.id}}></cc-i18n> </small> </div> <strong> <span data-ng-if=!!masterData.title> <cc-i18n data-key={{::masterData.title.abbreviation.id}}></cc-i18n>&nbsp; </span> <span data-ng-if="!!masterData.academicDegree && !!masterData.academicDegree.prefix"> <cc-i18n data-key={{::masterData.academicDegree.prefix.id}}></cc-i18n>&nbsp; </span> {{::masterData.firstName}} {{::masterData.middleNames}} {{::masterData.namePrefix}} {{::masterData.lastName}} {{::masterData.nameAddition}} <span data-ng-if="!!masterData.academicDegree && !!masterData.academicDegree.suffix"> &nbsp;<cc-i18n data-key={{::masterData.academicDegree.suffix.id}}></cc-i18n> </span> <span data-ng-if=!!masterData.pronoun> &nbsp;(<cc-i18n data-key={{::masterData.pronoun.name.id}}></cc-i18n>) </span> </strong> <div data-ng-if=!!masterData.birthName> <small> <cc-i18n data-key=common.born data-supports-customer-translation=true></cc-i18n> {{::masterData.birthName}} </small> </div> </div> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/gender.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Gender> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw {{gender.icon}} fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\'fa-question-circle\': !gender}"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary> <cc-i18n data-key={{gender.name.id}}></cc-i18n> </span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/home-address.html",'<div data-ng-controller=modules.landingpages.startpage.HomeAddress> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text no-margin" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div style="display: flex" data-ng-if=!noResult> <i class="fa fa-fw fa-home fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div data-ng-if=!noResult> <div class="full-width text-right" data-ng-if=!!homeAddress> <span data-ng-repeat="line in homeAddress.lines"> {{line.line}} <br> </span> <span>{{homeAddress.zipcode}}</span> <span>{{homeAddress.city}}</span> <br> <span data-ng-if=!!homeAddress.county> <cc-i18n data-key={{homeAddress.county.name.id}}></cc-i18n> <br> </span> <span data-ng-if=!!homeAddress.region> <cc-i18n data-key={{homeAddress.region.name.id}}></cc-i18n> <br> </span> <cc-i18n data-key={{homeAddress.country.name.id}}></cc-i18n> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!homeAddress> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/inquiries.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Inquiries> <cc-landing-page-widget> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=inquiries.title></cc-i18n> <cc-editing-mode data-i18n="\'inquiries.title\'" data-ng-if=isEditingMode()></cc-editing-mode> <span class=text-warning data-ng-if=!!openCount> ( {{openCount}} <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.pending></cc-i18n> <cc-editing-mode data-i18n="\'common.pending\'" data-ng-if=isEditingMode()></cc-editing-mode> ) </span> </small> </div> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div data-ng-if=!loading> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=inquiries data-ng-if=!noResult> <div class="alert inquiry" data-ng-repeat="inquiry in inquiries track by inquiry.id" data-ng-class="{\'alert-success\': inquiry.isDone, \'alert-warning\': !inquiry.isDone}"> <i class="fa fa-fw fa-3x landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\'fa-check-circle text-success\': inquiry.isDone, \'fa-question-circle text-warning\': !inquiry.isDone}"></i> <div class=landing-page-widget-icon-text> <span title="{{\'$defaults.attribute.createdAt\'|i18n:this}}
1" class=pull-right> {{::inquiry.createdAt | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <i class="fa fa-fw fa-clock"></i> </span> <br> <span title="{{\'$defaults.attribute.category\'|i18n:this}}" class=pull-right> {{inquiry.category.name.id | i18n:this}} <i class="fa fa-fw fa-archive"></i> </span> <br> <span class=pull-right> <span class="label label-default" data-ng-repeat="topic in inquiry.topics track by topic.id">{{::topic.name.id | i18n:this}}</span> </span> </div> </div> </div> <div class="text-success text-center" data-ng-if="!noResult && closedAdditional"> + {{ closedAdditional }} {{\'common.more\' | i18n:this}} </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/institution.html",'<div data-ng-controller=modules.landingpages.personfactsheet.institution> <cc-landing-page-widget> <div class=primary-institution__name> <i class="fa fa-fw fa-building fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class=primary-institution__name> <h4 class="font-bold no-margin pull-right" data-ng-click="navigateToInstitution(primaryInstitution.id, primaryInstitution.contactId)"> <span class=text-primary>{{::primaryInstitution.name}}</span> <i class="fa fa-arrow-up-right-from-square"></i> </h4> </div> </div> </div> <div class=primary-institution__mail> <div data-ng-if=primaryInstitution.emailAddresses.length> <i class="fa fa-fw fa-at fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="primaryInstitution.emailAddresses.length === 0"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="primaryInstitution.emailAddresses.length === 0"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <ul class=pull-right> <li class="full-width no-bullet" data-ng-repeat="address in primaryInstitution.emailAddresses track by $index"> <h4 class="font-bold no-margin"> <span class="pull-right text-primary" data-ng-if=$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </span> <small class=pull-right data-ng-if=!$first> <a href=mailto:{{::address}} target=_blank>{{::address}}</a> </small> </h4> </li> </ul> </div> </div> </div> <div class=primary-institution__address> <i class="fa fa-fw fa-map-marker fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!primaryInstitution.addresses.length> <cc-i18n data-key=common.noResult data-supports-customer-translation=true></cc-i18n> </div> <div class="full-width text-right" data-ng-if=!!primaryInstitution.addresses.length> <span data-ng-repeat="line in primaryInstitution.addresses[0].lines"> {{line}} <br> </span> <span>{{primaryInstitution.addresses[0].zipcode}}</span> <span>{{primaryInstitution.addresses[0].city}}</span> <br> <span data-ng-if=!!primaryInstitution.addresses[0].county> <cc-i18n data-key={{primaryInstitution.addresses[0].county}}></cc-i18n> <br> </span> <span data-ng-if=!!primaryInstitution.addresses[0].region> <cc-i18n data-key={{primaryInstitution.addresses[0].region}}></cc-i18n> <br> </span> <cc-i18n data-key={{primaryInstitution.addresses[0].country}}></cc-i18n> </div> </div> </div> <div style="padding: 5px 10px;" data-ng-if=institutions.length> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n data-key=$defaults.attribute.institutions data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=institutions> <i class="fa fa-fw fa-building-user fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <ul class="institution pull-right"> <li class="institution__name full-width no-bullet" style=text-align:right data-ng-repeat="institution in institutions" data-ng-click="navigateToInstitution(institution.id, institution.contactId)"> <h5 class=font-bold>{{institution.name}} <i class="fa fa-arrow-up-right-from-square"></i></h5> </li> </ul> </div> </div> </div> </cc-landing-page-widget> </div>'),e.put("scripts/modules/landingpages/person/latest-studies-journal-entry.html",'<div data-ng-controller=modules.landingpages.personfactsheet.L
1atestStudiesJournalEntry> <cc-landing-page-widget> <div> <div style="display: flex"> <i class="fa fa-fw {{data.studiesJournalEntry.icon}} fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" title={{::data.studiesJournalEntry.titleI18n|i18n:this}}></i> <div class=vertical-offset-5 data-ng-if=!!data.studiesJournalEntry.totalTermsEnrolled> <span class="label label-secondary landing-page-widget-icon" style="font-size: 2em" title="{{\'$defaults.attribute.totalTermsEnrolled\'|i18n:this}}"> <i class="fa fa-fw fa-university prefix-icon"></i> <span data-ng-bind-html=data.studiesJournalEntry.totalTermsEnrolled></span> </span> </div> <div class=landing-page-widget-icon-text> <div class="vertical-offset-5 pull-right" style="text-align: right" data-ng-if=!!data.studiesJournalEntry> <p class="text-secondary text-bold"> <cc-i18n data-key={{::data.studiesJournalEntry.titleI18n}} data-supports-customer-translation=true></cc-i18n> </p> <p data-ng-if=!!data.studiesJournalEntry.termName> <cc-i18n data-key={{::data.studiesJournalEntry.termName.id}}></cc-i18n> </p> <p data-ng-if=!!data.studiesJournalEntry.effectiveDate> <span><cc-i18n data-key=$defaults.attribute.effectiveDate data-supports-customer-translation=true></cc-i18n>:</span> <span>{{data.studiesJournalEntry.effectiveDate | amDateFormat:\'DD.MM.YYYY\'}}</span> <span data-ng-if=!!data.studiesJournalEntry.effectivenessStatusI18n> (<cc-i18n data-key={{::data.studiesJournalEntry.effectivenessStatusI18n}} data-ng-class="{\'text-yellow\': !data.studiesJournalEntry.isEffective}"></cc-i18n>) </span> </p> <p class=vertical-offset-5 data-ng-if=!!data.studiesJournalEntry.reasonForTermination> <cc-i18n data-key={{::data.studiesJournalEntry.reasonForTermination.name.id}}></cc-i18n> <br> <span><cc-i18n data-key=$defaults.attribute.reimmatriculationPossible></cc-i18n>:</span> <i class="fa fa-check text-green" data-ng-if=data.studiesJournalEntry.reasonForTermination.reimmatriculationPossible></i> <i class="fa fa-times text-red" data-ng-if=!data.studiesJournalEntry.reasonForTermination.reimmatriculationPossible></i> </p> <p class=vertical-offset-5 data-ng-if="data.studiesJournalEntry.firstEnrolment !== undefined"> <span><cc-i18n data-key=$defaults.attribute.firstEnrolment></cc-i18n>:</span> <i class="fa fa-check text-green" data-ng-if=data.studiesJournalEntry.firstEnrolment></i> <i class="fa fa-times text-red" data-ng-if=!data.studiesJournalEntry.firstEnrolment></i> </p> </div> </div> </div> <div data-ng-if="showCourseJournalEntries && !!data.courseJournalEntries && data.courseJournalEntries.length > 0"> <div class="landing-page-widget-heading text-uppercase vertical-offset-10 text-bold"> <small> <cc-i18n data-key=courseJournalEntries.title data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=full-width data-ng-repeat="courseJournalEntry in data.courseJournalEntries" data-ng-class="{\'vertical-offset-10\': !$first}"> <p class="text-bold vertical-offset-10-bottom" data-ng-bind-html=courseJournalEntry.examRegVersionName></p> <div style="display: flex"> <i class="fa fa-fw {{courseJournalEntry.icon}} fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" title={{::courseJournalEntry.titleI18n|i18n:this}}></i> <div class=vertical-offset-5 data-ng-if=!!courseJournalEntry.termsStudied> <span class="label label-secondary landing-page-widget-icon" style="font-size: 2em" title="{{\'$defaults.attribute.termsStudied\'|i18n:this}}"> <i class="fa fa-fw fa-book prefix-icon"></i> <span data-ng-bind-html=courseJournalEntry.termsStudied></span> </span> </div> <div class="landing-page-widget-icon-text pull-right" style="text-align: right"> <p class="text-secondary text-bold"> <cc-i18n data-key={{::courseJournalEntry.titleI18n}} data-supports-customer-translation=true></cc-i18n> </p> <p data-ng-if=!!courseJournalEntry.effectiveDate> <span><cc-i18n data-key=$defaults.attribute.effectiveDate data-supports-customer-translation=true></cc-i18n>:</span> <span>{{courseJournalEntry.effectiveDate | amDateFormat:\'DD.MM.YYYY\'}}</span> <span data-ng-if=!!courseJournalEntry.effectivenessStatusI18n> (<cc-i18n data-key={{::courseJournalEntry.effectivenessStatusI18n}} data-ng-class="{\'text-yellow\': !courseJournalEntry.isEffective}"></cc-i18n>) </span> </p> <p class=vertical-offset-5 data-ng-if=!!courseJournalEntry.oldExamRegVersionName> <span data-ng-bind-html=courseJournalEntry.oldExamRegVersionName></span> </p> <p class=vertical-offset-5 data-ng-if=!!courseJournalEntry.leaveOfAbsenceReason> <cc-i18n data-key={{::courseJournalEntry.leaveOfAbsenceReason.name.id}}></cc-i18n> </p> <p class=vertical-offset-5 data-ng-if=!!courseJournalEntry.newExamRegVersionName> <span data-ng-bind-html=courseJournalEntry.newExamRegVersionName></span> </p> <p class=vertical-offset-5 data-ng-if=!!courseJournalEntry.studiesTerminationReason> <cc-i18n data-key={{::courseJournalEntry.studiesTerminationReason.name.id}}></cc-i18n> <br> <span><cc-i18n data-key=$defaults.attribute.resumptionOfStudyPossible></cc-i18n>:</span> <i class="fa fa-check text-green" data-ng-if=courseJournalEntry.reasonForTermination.resumptionOfStudyPossible></i> <i class="fa fa-times text-red" data-ng-if=!courseJournalEntry.reasonForTermination.resumptionOfStudyPossible></i> </p> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/matriculation-number.html",'<div data-ng-controller=modules.landingpages.personfactsheet.MatriculationNumber> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-hashtag fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary>{{::matriculationNumber}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/memberships.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Memberships> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-address-card fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=memberships data-ng-if=!noResult> <div class=membership data-ng-repeat="membership in memberships track by $index"> <div class=text-right> <strong> <cc-i18n data-key={{membership.role.name.id}}></cc-i18n> </strong> <span class="label label-success text-uppercase" data-ng-if=membership.active><cc-i18n data-key=$defaults.attribute.active></cc-i18n></span> <div class=clearfix></div> <span data-ng-if=membership.startDate data-ng-class="{\'text-success\': membership.active}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.startDate></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.startDate\'" data-ng-if=isEditingMode()></cc-editing-mode>: {{membership.startDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <i class="fa fa-fw fa-clock"></i> </span> <div class=clearfix></div> <span data-ng-if=membership.endDate data-ng-class="{\'text-success\': membership.active}"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.endDate></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.endDate\'" data-ng-if=isEditingMode()></cc-editing-mode>: {{membership.endDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <i class="fa fa-fw fa-clock"></i> </span> </div> <div class=clearfix></div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/memos.html",'<div class=landing-page-widget data-ng-controller=modules.landingpages.contact.person.memos> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=ui.contactMemos.title></cc-i18n>&nbsp; </small> </div> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class=contact-memo-container data-ng-if=!loading> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult data-supports-customer-translation></cc-i18n> </div> <div class=list-group data-ng-if=!noResult> <div class="flex contact-memo-item" data-ng-repeat="memo in memosToShow" data-ng-class="{\'contact-memo-past\': memo.isDone}" data-ng-click="updateMemo(memo.id, this)"> <i class="fa fa-fw contact-memo-bubble-icon prefix-icon {{memo.typeIcon}}"></i> <div class=contact-memo-item-left> <strong> <cc-i18n data-key={{memo.typeI18n}} data-supports-customer-translation=true></cc-i18n> <i class="fa fa-tag cc-solid-icon suffix-icon" data-ng-repeat="procedure in memo.procedures" data-ng-style="{color: procedure.color}" data-cc-i18n-title=procedure.name.id></i> </strong> <div class=flex-spacer></div> <small><i class="fa fa-fw prefix-icon {{memo.statusIcon}}"></i> <cc-i18n data-key={{memo.statusI18n}} data-supports-customer-translation=true></cc-i18n> </small> </div> <div class=flex-spacer></div> <div class=contact-memo-item-right> <small> <i class="fa fa-exclamation-triangle text-warning prefix-icon" data-ng-if=memo.isOverdue></i> {{memo.timeStamp | amDateFormat: \'DD.MM.YYYY, HH:mm\'}} </small> <div class=flex-spacer></div> <small data-ng-style="{\'font-weight\': memo.isMine ? \'bold\' : \'normal\'}" data-ng-if=memo.responsiblePerson> <i class="fa fa-user prefix-icon" data-ng-if=memo.isMine></i> {{memo.responsiblePerson}} </small> </div> </div> </div> </div> </div> </div>'),e.put("scripts/modules/landingpages/person/moduleguides.html",'<div data-ng-controller=modules.landingpages.startpage.ModuleGuides> <cc-landing-page-widget> <i class="fa fa-fw fa-3x fa-download"></i> <div style="flex: 1; display: flex; flex-direction: column; gap: 8px"> <div data-ng-repeat="transcript in transcriptsWithModuleGuides track by $index" style="display: flex; align-items: center; justify-content: flex-end; gap: 8px"> <a class="pull-right text-right" data-ng-click="downloadFile(transcript.id, transcript.examRegVersionId, transcript.moduleGuide)" data-ng-bind-html=transcript.examRegVersionName></a> <cc-i18n class="label text-uppercase" data-ng-class="{\n'+"                        'label-primary': transcript.studyStatus === 'ACTIVE',\n                        'label-secondary': transcript.studyStatus !== 'ACTIVE'\n                        }\" data-key=entity.StudyStatus.{{transcript.studyStatus}} data-supports-customer-translation=true></cc-i18n> </div> </div> </cc-landing-page-widget> </div> "),e.put("scripts/modules/landingpages/person/nationalities.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Nationalities> <cc-landing-page-widget> <div style="display: flex; text-align: right"> <i class="fa fa-fw fa-globe fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n data-key=common.noResult></cc-i18n> </div> <div data-ng-if=!noResult> <ol class=pull-right> <li class="full-width no-bullet" data-ng-repeat="nationality in nationalities track by n
1ationality.id"> <h4 class="font-bold no-margin"> <span class="pull-right text-primary" data-ng-if=$first> <cc-i18n data-key={{nationality.name.id}}></cc-i18n> </span> <small class=pull-right data-ng-if=!$first> <cc-i18n data-key={{nationality.name.id}}></cc-i18n> </small> </h4> </li> </ol> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/notes.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Notes> <cc-landing-page-widget> <cc-notes data-ng-if=widgetConfig.showNotesFromPersonRecord data-i18n=common.notes.personRecord data-can-create=notes.canCreateNotes data-object-id=notes.objectId data-notes=notes.personRecordNotes data-visible="notes.visible && notes.canReadNotes && !itemConfig.isModal"> </cc-notes> <cc-notes data-ng-if=widgetConfig.showNotesFromApplications data-ng-repeat="applicationRecordNote in notes.applicationRecordNotes track by applicationRecordNote.id" data-display-name=applicationRecordNote.displayName data-can-create=notes.canCreateNotes data-object-id=applicationRecordNote.id data-notes=applicationRecordNote.notes data-visible="notes.visible && notes.canReadNotes && !itemConfig.isModal"> </cc-notes> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/obligations.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Obligations> <cc-landing-page-widget> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=obligations.title></cc-i18n> <cc-editing-mode data-i18n="\'obligations.title\'" data-ng-if=isEditingMode()></cc-editing-mode> <span class=text-warning data-ng-if=!!openCount> ( {{openCount}} <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.pending></cc-i18n> <cc-editing-mode data-i18n="\'common.pending" data-ng-if=isEditingMode()></cc-editing-mode>) </span> </small> </div> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div data-ng-if=!loading> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=obligations data-ng-if=!noResult> <div class="alert obligation" style="display: flex" data-ng-repeat="obligation in obligations track by obligation.id" data-ng-class="{ \'alert-success\': obligation.isSettled, \'alert-warning\': !obligation.isSettled && !obligation.isOverdue, \'alert-danger\': !obligation.isSettled && obligation.isOverdue}"> <i class="fa fa-fw landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{ \'fa-check-circle fa-1_5x text-success\': obligation.isSettled, \'fa-exclamation-triangle fa-3x text-warning\': !obligation.isSettled && !obligation.isOverdue, \'fa-exclamation-triangle fa-3x text-danger\': !obligation.isSettled && obligation.isOverdue}"></i> <div class="landing-page-widget-icon-text pull-right text-right"> <strong> <cc-i18n data-key={{obligation.obligationType.name.id}}></cc-i18n> </strong> <span data-ng-if=widgetConfig.showFullObligation> <br> <span class="label label-default" data-ng-if=widgetConfig.showFullObligation> <cc-i18n data-key={{obligation.category.name.id}}></cc-i18n> </span> </span> <div class=text-right data-ng-if=!obligation.isSettled> <span data-ng-if=obligation.dueDate> <br data-ng-if=widgetConfig.showFullObligation> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.Obligation.dueDate></cc-i18n>: <cc-editing-mode data-i18n="\'entity.Obligation.dueDate\'" data-ng-if=isEditingMode()></cc-editing-mode> <strong>{{::obligation.dueDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> <i class="fa fa-fw fa-clock"></i> </span> <span data-ng-if=obligation.demandedDate> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.Obligation.demandedDate></cc-i18n>: <cc-editing-mode data-i18n="\'entity.Obligation.demandedDate\'" data-ng-if=isEditingMode()></cc-editing-mode> <strong>{{::obligation.demandedDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> <i class="fa fa-fw fa-clock"></i> </span> <span data-ng-if="widgetConfig.showFullObligation && obligation.mandatory"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.Obligation.mandatory></cc-i18n> <cc-editing-mode data-i18n="\'entity.Obligation.mandatory\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-fw fa-exclamation-triangle"></i> </span> <span data-ng-if="widgetConfig.showFullObligation && obligation.createdBy"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.Obligation.createdBy></cc-i18n> <cc-editing-mode data-i18n="\'entity.Obligation.createdBy\'" data-ng-if=isEditingMode()></cc-editing-mode> <strong>{{obligation.createdBy.masterData.firstName}} {{obligation.createdBy.masterData.lastName}}</strong> <i class="fa fa-fw fa-user-circle"></i> </span> </div> <span data-ng-if="widgetConfig.showFullObligation && obligation.isSettled"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=entity.Obligation.fulfilledDate></cc-i18n>: <cc-editing-mode data-i18n="\'entity.Obligation.fulfilledDate\'" data-ng-if=isEditingMode()></cc-editing-mode> <strong>{{::obligation.fulfilledDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</strong> <i class="fa fa-fw fa-check"></i> </span> </div> <div class=clearfix></div> </div> </div> <div class="text-success text-center" data-ng-if="!noResult && settledAdditional"> + {{ settledAdditional }} <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.more></cc-i18n> <cc-editing-mode data-i18n="\'common.more\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/office-hours.html",'<div data-ng-controller=modules.landingpages.personfactsheet.OfficeHours> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=office-hours data-ng-if=!noResult> <div class=office-hour style="display: flex" data-ng-repeat="event in officeHours track by event.i
1d"> <i class="fa fa-fw fa-clock fa-1_5x landing-page-widget-icon vertical-offset-5-bottom"></i> <div class="landing-page-widget-icon-text text-right pull-right"> <strong>{{::event.name}}</strong> <span> <br> {{::event.timeString}} <span class=text-grey data-ng-if=event.wholeDay>(<cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.wholeDay></cc-i18n><cc-editing-mode data-i18n="\'$defaults.attribute.wholeDay\'" data-ng-if=isEditingMode()></cc-editing-mode>)</span> <i class="fa fa-fw fa-clock"></i> </span> <span data-ng-if=event.rruleDisplayName> <br> {{event.rruleDisplayName}} <i class="fa fa-fw fa-sync"></i> </span> <br> </div> <div class=clearfix></div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/payment-address.html",'<div data-ng-controller=modules.landingpages.startpage.PaymentAddress> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text no-margin" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div style="display: flex" data-ng-if=!noResult> <i class="fa fa-fw fa-credit-card fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <div class="full-width text-right" data-ng-if=!!paymentAddress> <span data-ng-repeat="line in paymentAddress.lines"> {{line.line}} <br> </span> <span>{{paymentAddress.zipcode}}</span> <span>{{paymentAddress.city}}</span> <br> <span data-ng-if=!!paymentAddress.county> <cc-i18n data-key={{paymentAddress.county.name.id}}></cc-i18n> <br> </span> <span data-ng-if=!!paymentAddress.region> <cc-i18n data-key={{paymentAddress.region.name.id}}></cc-i18n> <br> </span> <cc-i18n data-key={{paymentAddress.country.name.id}}></cc-i18n> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!paymentAddress> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/periods-of-enrolment.html",'<div class=landing-page-widget data-ng-controller=modules.landingpages.personfactsheet.PeriodsOfEnrolment> <cc-landing-page-widget> <div data-ng-repeat="period in data" data-ng-class="{\'vertical-offset-10\': !$first}"> <div style="display: flex; flex: 1 1; flex-wrap: wrap"> <div style="width: 45%"> <i class="fa fa-fw fa-sign-in-alt fa-3x landing-page-widget-icon vertical-offset-5-bottom text-secondary"></i> <div> <div> <cc-i18n data-key=entity.Enrolment.$entity></cc-i18n> </div> <div> <cc-i18n class=text-bold data-key={{period.startTermName}}></cc-i18n> </div> <div>{{period.startDate | amDateFormat:\'DD.MM.YYYY\'}}</div> <div class=text-ellipsis> <cc-i18n data-key=entity.Enrolment.firstEnrolment></cc-i18n>: <span data-ng-if=!!period.isFirstEnrolment> <i class="fa fa-fw fa-check text-green prefix-icon"></i> </span> <span data-ng-if=!period.isFirstEnrolment> <i class="fa fa-fw fa-times text-red prefix-icon"></i> </span> </div> </div> </div> <div class=vertical-offset-5 style="width: 10%; text-align: center" data-ng-if=!!period.endTermName> <i class="fa fa-fw fa-arrow-right-long fa-2x text-secondary"></i> </div> <div style="width: 45%; display: flex; flex-direction: column; flex: 1 1 auto; align-items: flex-end; gap: 4px;" data-ng-if=!!period.endTermName> <i class="fa fa-fw fa-sign-out-alt fa-3x text-secondary"></i> <div style="display: flex; flex-direction: row; flex: 1 1 auto; justify-content: flex-end; gap: 4px;"> <div class=text-right> <div> <cc-i18n data-key=entity.TerminationOfEnrolment.$entity></cc-i18n> </div> <div> <cc-i18n class=text-bold data-key={{period.endTermName}}></cc-i18n> </div> <div>{{period.endDate | amDateFormat:\'DD.MM.YYYY\'}}</div> <div> <cc-i18n data-key={{period.terminationReasonName}}></cc-i18n> </div> </div> </div> </div> </div> <hr class="vertical-offset-10 vertical-offset-10-bottom" data-ng-if=!$last> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/person-locations.html",'<div data-ng-controller=modules.landingpages.personfactsheet.PersonLocations> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <i class="fa fa-fw fa-map-marker-alt fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <div data-ng-repeat="location in personLocations track by location.id" data-ng-class="{\'vertical-offset-10\': !$first}"> <i class="fa fa-fw fa-map-marker-alt fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class="landing-page-widget-icon-text pull-right text-right"> <span class=text-bold> <cc-i18n data-key={{::location.name.id}}></cc-i18n> </span> <br data-ng-if=!!location.location> <cc-i18n title="{{\'entity.Location.$entity\'|i18n:this}}" data-key={{::location.location.name.id}} data-ng-if=location.location></cc-i18n> <span data-ng-if=!!location.campus>, </span> <cc-i18n title="{{\'entity.Campus.$entity\'|i18n:this}}" data-key={{::location.campus.name.id}} data-ng-if=location.campus></cc-i18n> <span data-ng-if=!!location.building>, </span> <cc-i18n title="{{\'entity.Building.$entity\'|i18n:this}}" data-key={{::location.building.name.id}} data-ng-if=location.building></cc-i18n> <span data-ng-if=!!location.room>, </span> <cc-i18n title="{{\'entity.Room.$entity\'|i18n:this}}" data-key={{::location.room.name.id}} data-ng-if=location.room></cc-i18n> </div> </div> <div class=clearfix></div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/person-number.html",'<div data-ng-controller=modules.landingpages.personfactsheet.PersonNumber> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-hashtag fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <h4 class="font-bold no-margin pull-right"> <span class=text-primary>
1{{::personNumber}}</span> </h4> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/photo.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Photo> <cc-landing-page-widget> <div class=photo> <div class="alert alert-warning hint-text no-margin" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=text-center data-ng-if=!noResult> <img class="img-circle person-image no-margin" data-ng-src=data:{{person.masterData.photo.contentType}};base64,{{person.masterData.photo.data}} data-ng-if=!!person.masterData.photo.data> <div class=profile-element data-ng-if=!person.masterData.photo.data> <div class=logo-element> <div class=img-placeholder> <span>{{::(person.masterData.firstName.substring(0, 1) + person.masterData.lastName.substring(0, 1))}}</span> </div> </div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/postal-address.html",'<div data-ng-controller=modules.landingpages.startpage.PostalAddress> <cc-landing-page-widget> <div> <div class="alert alert-warning hint-text no-margin" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div style="display: flex" data-ng-if=!noResult> <i class="fa fa-fw fa-envelope fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div style="flex-grow: 1" data-ng-if=!!postalAddress> <div class="no-margin full-width text-right" data-ng-if=widgetConfig.recipientView> <span data-ng-if=!!salutation> <cc-i18n data-key={{salutation.name.id}}></cc-i18n> <br> </span> <span data-ng-if="!!title || !!academicDegree"> <span data-ng-if=!!title> <cc-i18n data-key={{title.abbreviation.id}}></cc-i18n>&nbsp; </span> <span data-ng-if=!!academicDegree.prefix> <cc-i18n data-key={{academicDegree.prefix.id}}></cc-i18n>&nbsp; </span> </span> <span>{{firstName}}</span> <span data-ng-if=!!namePrefix>{{namePrefix}} </span> <span>{{lastName}}</span> <span data-ng-if=!!nameAddition>{{nameAddition}}</span> <span data-ng-if="!!academicDegree && !!academicDegree.suffix"> &nbsp;<cc-i18n data-key={{academicDegree.suffix.id}}></cc-i18n> </span> </div> <div class="full-width text-right" data-ng-class="{\'vertical-offset-10\': widgetConfig.recipientView}"> <span data-ng-repeat="line in postalAddress.lines"> {{line.line}} <br> </span> <span>{{postalAddress.zipcode}}</span> <span>{{postalAddress.city}}</span> <br> <span data-ng-if=!!postalAddress.county> <cc-i18n data-key={{postalAddress.county.name.id}}></cc-i18n> <br> </span> <span data-ng-if=!!postalAddress.region> <cc-i18n data-key={{postalAddress.region.name.id}}></cc-i18n> <br> </span> <cc-i18n data-key={{postalAddress.country.name.id}}></cc-i18n> </div> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=!postalAddress> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/proceedings.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Proceedings> <cc-landing-page-widget> <div class="landing-page-widget-heading text-uppercase vertical-margin-5 text-bold"> <small> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=proceedings.title></cc-i18n> <cc-editing-mode data-i18n="\'proceedings.title\'" data-ng-if=isEditingMode()></cc-editing-mode> <span class=text-warning data-ng-if=!!ongoingCount> ( {{ongoingCount}} <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.ongoing></cc-i18n> <cc-editing-mode data-i18n="\'common.ongoing\'" data-ng-if=isEditingMode()></cc-editing-mode>) </span> </small> </div> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div data-ng-if=!loading> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div class=proceedings data-ng-if=!noResult> <div class="alert proceeding" style="display: flex" data-ng-repeat="proceeding in proceedings track by proceeding.id" data-ng-class="{\n                    \'alert-info\': proceeding.status === 0,\n                    \'alert-warning\': proceeding.status === 1,\n                     \'alert-danger\': proceeding.status > 1}"> <i class="fa fa-3x fa-fw landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\n                    \'fa-info-circle\': proceeding.status === 0,\n                    \'fa-exclamation-triangle text-warning\': proceeding.status === 1,\n                    \'fa-gavel text-danger\': proceeding.status === 2,\n                    \'fa-exclamation-triangle text-danger\': proceeding.status === 3}"></i> <div class="landing-page-widget-icon-text pull-right text-right"> <strong> {{::proceeding.createdAt | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} </strong> <span data-ng-if="proceeding.status === 0"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.noProceedingOngoing></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.noProceedingOngoing\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-check"></i> </span> <span data-ng-if="proceeding.status >= 1"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.oppositionProceedingOngoing></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.oppositionProceedingOngoing\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-exclamation-triangle"></i> </span> <span data-ng-if="proceeding.status >= 2"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.legalProceedingFiled></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.legalProceedingFiled\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-gavel"></i> </span> <span data-ng-if="proceeding.status >= 3"> <br> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=$defaults.attribute.legalProceedingOngoing></cc-i18n> <cc-editing-mode data-i18n="\'$defaults.attribute.legalProceedingOngoing\'" data-ng-if=isEditingMode()></cc-editing-mode> <i class="fa fa-exclamation-triangle"></i> </span> </div> <div class=clearfix></div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/project-participations.html",'<div data-ng-controller=modules.landingpages.personfactsheet.ProjectParticipations> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-map-marker-alt fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom" data-ng-if=noResult></i> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult style="flex: 1"> <div data-ng-repeat="projectParticipation in projectParticipations track by projectParticipation.id" data-ng-class="{\'vertical-offset-10\': !$first}"> <div style="display: flex"> <i class="fa fa-fw fa-cubes fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class="landing-page-widget-icon-text clickable" style="display: flex; flex-direction: column; align-items: flex-end" data-ng-click=showProject(this)> <div class="text-bold text-right"> <cc-i18n data-key={{::projectParticipation.project.name.id}}></cc-i18n> </div> <div class="label label-success text-uppercase"> <cc-i18n data-key={{::projectParticipation.projectParticipationType.n
1ame.id}}></cc-i18n> </div> <div data-ng-if="projectParticipation.startDate && projectParticipation.endDate" data-ng-class="{\'text-success\': projectParticipation.active}" class=text-right> {{projectParticipation.startDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} <cc-i18n data-key=common.until></cc-i18n> <cc-editing-mode data-i18n="\'common.until\'" data-ng-if=isEditingMode()></cc-editing-mode> {{projectParticipation.endDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} </div> <div data-ng-if="projectParticipation.startDate && !projectParticipation.endDate" data-ng-class="{\'text-success\': projectParticipation.active}" class=text-right> <cc-i18n data-key=common.since></cc-i18n> <cc-editing-mode data-i18n="\'common.since\'" data-ng-if=isEditingMode()></cc-editing-mode> {{projectParticipation.startDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} </div> <div data-ng-if="!projectParticipation.startDate && projectParticipation.endDate" data-ng-class="{\'text-success\': projectParticipation.active}" class=text-right> <cc-i18n data-key=common.until></cc-i18n> <cc-editing-mode data-i18n="\'common.until\'" data-ng-if=isEditingMode()></cc-editing-mode> {{projectParticipation.endDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} </div> </div> <hr> </div> </div> <div class=clearfix></div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/rights-to-vote-ballots.html",'<div data-ng-controller=modules.landingpages.personfactsheet.RightsToVoteBallots> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-thumbs-up fa-3x landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <div data-ng-if=!noResult> <div data-ng-repeat="ballot in personBallots track by ballot.id" data-ng-class="{\'vertical-offset-10\': !$first}"> <div class="landing-page-widget-icon-text pull-right text-right"> <span class=text-bold> <cc-i18n data-key={{::ballot.election.electionGroup.name.id}}></cc-i18n>- <cc-i18n class=translatable-by-customer data-key=common.election.name></cc-i18n> <cc-editing-mode data-i18n="\'common.election.name\'" data-ng-if=isEditingMode()></cc-editing-mode> <cc-i18n data-key={{::ballot.election.eligibleRole.name.id}}></cc-i18n>: </span> <span> {{ballot.electionDays.startDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}} -- {{ballot.electionDays.endDate | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</span> <span data-ng-if=ballot.name>(<cc-i18n title="{{\'entity.Ballot.$entity\'|i18n:this}}" data-key={{::ballot.name.id}} data-ng-if=ballot.name></cc-i18n> )</span> </div> </div> <div class=clearfix></div> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/studies-status.html",'<div data-ng-controller=modules.landingpages.personfactsheet.StudiesStatus> <cc-landing-page-widget> <div style="display: flex"> <i class="fa fa-fw fa-hourglass fa-3x text-primary landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> <h4 class="font-bold no-margin pull-right"> <span class=text-primary> <cc-i18n data-key={{::studiesStatus.name.id}}></cc-i18n> </span> <br> <span class="text-secondary pull-right" data-ng-class="{\'text-yellow\': !effectivenessStatus.effective}"> <cc-i18n data-key={{::effectivenessStatus.i18nKey}}></cc-i18n> </span> </h4> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/studyprogram-coordinators.html",'<div data-ng-controller=modules.landingpages.person.StudyProgramCoordinators> <cc-landing-page-widget> <div style="display: flex; flex-direction: column; gap: 5px;" data-ng-repeat="studyProgram in data"> <h5> <span data-ng-bind-html=studyProgram.name></span> </h5> <div style="display:flex; flex-direction: column; gap: 20px;"> <div style="display: flex; gap: 20px; align-items: center" data-ng-repeat="coordinator in studyProgram.coordinators" data-ng-if="studyProgram.coordinators.length > 0"> <div style="display: flex; flex-direction:column; align-items:center;"> <img style="border-radius: 50% !important; height: 100px; width: 100px;" alt=image data-ng-src=data:{{coordinator.photo.contentType}};base64,{{coordinator.photo.data}} data-ng-if=!!coordinator.photo> <div class=profile-element data-ng-if=!coordinator.photo> <div class=logo-element> <div class=img-placeholder style="width: 100px; height: 100px; line-height: 100px; margin: 0; font-size: 36px;"> <span>{{(coordinator.firstName.substring(0, 1) + coordinator.lastName.substring(0, 1))}}</span> </div> </div> </div> </div> <div class=text-right style="flex: 1 1 auto"> <h3 style="margin-bottom: 0"><strong>{{coordinator.firstName}} {{coordinator.lastName}}</strong></h3> <strong> <cc-i18n data-key=landingpage.widget.person.StudyProgramCoordinators.personTitle data-supports-customer-translation=true></cc-i18n> </strong> <div class=vertical-offset-5> <p data-ng-if=coordinator.emailAddress><i class="fa fa-at"></i> <a href=mailto:{{coordinator.emailAddress}}>{{coordinator.emailAddress}}</a></p> <p data-ng-if=!coordinator.emailAddress>&nbsp;</p> <p data-ng-if=coordinator.phone><i class="fa fa-phone"></i> {{coordinator.phone}}</p> <p data-ng-if=!coordinator.phone>&nbsp;</p> </div> </div> </div> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if="studyProgram.coordinators.length == 0"> <cc-i18n data-key=landingpage.widget.person.StudyProgramCoordinators.noCoordinatorsSpecified data-supports-customer-translation=true></cc-i18n> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/transcripts.html",'<div data-ng-controller=modules.landingpages.personfactsheet.Transcripts> <cc-landing-page-widget> <div style="display: flex" data-ng-repeat="transcript in transcripts track by transcript.id" data-ng-class="{\'vertical-offset-10\': !$first}"> <i class="fa fa-fw fa-graduation-cap fa-3x landing-page-widget-icon vertical-offset-5-bottom" data-ng-class="{\n                    \'text-secondary\': transcript.active,\n                    \'text-primary\': !transcript.active\n                }"></i> <div style="display: flex; flex-direction: column; flex: 1 1 auto; justify-content: flex-end; gap: 4px;"> <div class="landing-page-widget-icon-text pull-right text-right"> <span class=text-bold data-ng-bind-html=transcript.examRegVersionName></span> <span class="label text-uppercase" ng-class="{\n                            \'label-primary\': transcript.active,\n                            \'label-secondary\': !transcript.active\n                            }"><cc-i18n data-key=entity.StudyStatus.{{transcript.studyStatus}}></cc-i18n></span> </div> <cc-action data-action-id=GenerateSingleTranscriptOfRecordsDocumentAction data-option-origin-view-def
1inition-id-override={{::originViewDefinitionId}} data-custom-context="{\'transcriptId\': transcript.id}" do-on-success=downloadTranscriptOfRecordFiles data-as-button=true data-show-text=true data-show-button-border=true data-button-justification=flex-end></cc-action> <div data-ng-if="showChosenMajorSubjects && transcript.areMajorSubjectsAvailable"> <div class="text-uppercase text-bold text-secondary" style="border-bottom: 1px solid"> <small> <cc-i18n data-key=entity.Transcript.majorSubjects></cc-i18n> </small> </div> <div class=text-right> <cc-i18n class="text-italic text-ellipsis" data-ng-if="transcript.chosenMajorSubjectNames.length == 0" data-key=common.none></cc-i18n> </div> <ul class="text-right no-margin" data-ng-if="transcript.chosenMajorSubjectNames.length > 0"> <li class=no-bullet data-ng-repeat="majorSubjectBanane in transcript.chosenMajorSubjectNames"> <cc-i18n class=text-ellipsis data-key={{::majorSubjectBanane}}></cc-i18n> </li> </ul> </div> <div data-ng-if="showChosenMinorSubjects && transcript.areMinorSubjectsAvailable"> <div class="text-uppercase text-bold text-secondary" style="border-bottom: 1px solid"> <small> <cc-i18n data-key=entity.Transcript.minorSubjects></cc-i18n> </small> </div> <div class=text-right> <cc-i18n class="text-italic text-ellipsis" data-ng-if="transcript.chosenMinorSubjectNames.length == 0" data-key=common.none></cc-i18n> </div> <ul class="text-right no-margin" data-ng-if="transcript.chosenMinorSubjectNames.length > 0"> <li class=no-bullet data-ng-repeat="minorSubjectName in transcript.chosenMinorSubjectNames"> <cc-i18n class=text-ellipsis data-key={{::minorSubjectName}}></cc-i18n> </li> </ul> </div> <div data-ng-if="showChosenAreasOfFocus && transcript.areAreasOfFocusAvailable"> <div class="text-uppercase text-bold text-secondary" style="border-bottom: 1px solid"> <small> <cc-i18n data-key=entity.Transcript.examRegVersionStudyFocuses></cc-i18n> </small> </div> <div class=text-right> <cc-i18n class="text-italic text-ellipsis" data-ng-if="transcript.chosenAreaOfFocusNames.length == 0" data-key=common.none></cc-i18n> </div> <ul class="text-right no-margin" data-ng-if="transcript.chosenAreaOfFocusNames.length > 0"> <li class=no-bullet data-ng-repeat="chosenAreaOfFocusName in transcript.chosenAreaOfFocusNames"> <cc-i18n class=text-ellipsis data-key={{::chosenAreaOfFocusName}}></cc-i18n> </li> </ul> </div> <div data-ng-if="showChosenInDepthSpecialisations && transcript.areDepthSpecialisationsAvailable"> <div class="text-uppercase text-bold text-secondary" style="border-bottom: 1px solid"> <small> <cc-i18n data-key=$defaults.attribute.chosenInDepthSpecialisations></cc-i18n> </small> </div> <div class=text-right> <cc-i18n class="text-italic text-ellipsis" data-ng-if="transcript.chosenInDepthSpecialisationNames.length == 0" data-key=common.none></cc-i18n> </div> <ul class="text-right no-margin" data-ng-if="transcript.chosenInDepthSpecialisationNames.length > 0"> <li class=no-bullet data-ng-repeat="chosenInDepthSpecialisationName in transcript.chosenInDepthSpecialisationNames"> <cc-i18n class=text-ellipsis data-key={{::chosenInDepthSpecialisationName}}></cc-i18n> </li> </ul> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/transcripttree.html",'<div data-ng-controller=modules.landingpages.personfactsheet.TranscriptTree> <cc-landing-page-widget> <div class=full-width style="display: flex; gap: 10px; align-items: center"> <div style="flex: 1 1 auto; min-height: 25px"> <select data-ng-options="transcript as transcript.name for transcript in transcripts" class=full-width data-ng-model=item data-ng-change=selectTranscript(item) data-ng-init="item = transcripts[0]"></select> </div> <cc-action data-action-id=GenerateSingleTranscriptOfRecordsDocumentAction data-option-origin-view-definition-id-override={{::originViewDefinitionId}} data-custom-context="{\'transcriptId\': selectedTranscript.id}" do-on-success=downloadTranscriptOfRecordFiles data-as-button=true data-show-text=true data-show-button-border=true data-ng-if="transcripts.length > 0"></cc-action> </div> <div id=tree-wrapper_{{treeWidgetId}} style="margin-top: 8px" class=landing-page-widget-embedded-widget-header-no-title data-ng-style="{ \'height\': heightInPixels + \'px\' }"> <cc-widget id=tree-content_{{treeWidgetId}} class=full-height data-ng-if=selectedTranscript data-item-config=treeItemConfig></cc-widget> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/landingpages/person/unread-messages.html",'<div data-ng-controller=modules.landingpages.personfactsheet.UnreadMessages> <cc-landing-page-widget> <div style="display: flex"> <div data-ng-class="{\'text-primary\': unreadMessageCount == 0, \'text-warning\': unreadMessageCount > 0}"> <i class="fa fa-fw fa-envelope fa-3x landing-page-widget-icon vertical-offset-5-bottom"></i> <div class=landing-page-widget-icon-text> <div class="alert alert-warning hint-text vertical-offset-5-bottom" data-ng-if=noResult> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=common.noResult></cc-i18n> <cc-editing-mode data-i18n="\'common.noResult\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> <div style="margin-right: 10px" data-ng-if=!noResult data-ng-class="{\'text-primary\': unreadMessageCount == 0, \'text-warning\': unreadMessageCount > 0}"> <h1 class="font-bold no-margin vertical-offset-5">{{unreadMessageCount}}</h1> </div> <div class=vertical-offset-5-bottom> <div class="alert alert-info hint-text no-margin"> <cc-i18n class=translatable-by-customer data-ng-class="{\'editing-mode\' : isEditingMode()}" data-key=unreadMessages.info></cc-i18n> <cc-editing-mode data-i18n="\'unreadMessages.info\'" data-ng-if=isEditingMode()></cc-editing-mode> </div> </div> </div> </cc-landing-page-widget> </div> '),e.put("scripts/modules/process/processdefinitionpermissions/processdefinitionpermissions.html",'<div data-ng-controller=modules.process.processdefinitionpermissions.ProcessDefinitionPermissionsController class="container-fluid full-height"> <div class=row> <div class="form-control-static hint-text full-width"> <div class="alert alert-info"> <cc-i18n data-key=module.process.processDefinitionPermissions></cc-i18n> </div> </div> </div> <div class="text-center row cc-option-toggle">
1 <ul class=pagination> <li data-ng-class="{\'active\': widget.custom.selectedStatuses.length === widget.custom.statuses.length }" data-ng-click=widget.api.toggleAllStatuses()> <a><span><cc-i18n data-key=common.all></cc-i18n></span></a> </li> </ul> <ul class=pagination> <li data-ng-repeat="status in widget.custom.statuses" title={{status.$displayName}} data-ng-class="{\'active\': widget.api.isStatusSelected(status) }" data-ng-click=widget.api.toggleStatus(status)> <a><span data-ng-bind-html=status.$displayName></span></a> </li> </ul> </div> <div data-ng-style="{ width: (865 + (widget.custom.selectedStatuses.length * 60)) + \'px\' }"> <div class=row data-ng-if="widget.custom.selectedStatuses.length === 0"> <div class="form-control-static hint-text full-width"> <div class="alert alert-info"> <cc-i18n data-key=module.process.processDefinitionPermissions.noStatusSelected></cc-i18n> </div> </div> </div> <span style="top: 140px; position: relative; width: 285px"> <input placeholder="{{\'common.search\'|i18n:this}}" autocomplete=off data-ng-model=widget.custom.quickFilterText class=search data-ng-if="widget.custom.selectedStatuses.length > 0"> <span class="horizontal-offset-5 clickable" data-ng-class="{\'badge-primary\': widget.custom.filterByInUi, \'badge-disabled\': !widget.custom.filterByInUi}" data-ng-click="widget.custom.filterByInUi = !widget.custom.filterByInUi" data-ng-if="widget.custom.selectedStatuses.length > 0"> <i class="fa prefix-icon" data-ng-class="{\'fa-plus-circle\': !widget.custom.filterByInUi, \'fa-minus-circle\': widget.custom.filterByInUi}"></i> <cc-i18n data-key=module.process.processDefinitionPermissions.inUI></cc-i18n> </span> </span> <div class="row text-ellipsis" style="position: relative; left: 450px; height: 150px; width: calc(100% - 450px)" data-ng-if="widget.custom.selectedStatuses.length > 0"> <div style="width: 110px; height: 145px; display: inline-block"> <i class="fa fa-eye" title="{{\'module.process.processDefinitionPermissions.read\'|i18n:this}}" style="position: absolute; bottom: 12px; left: 20px"></i> <i class="fa fa-pencil-alt" title="{{\'module.process.processDefinitionPermissions.write\'|i18n:this}}" style="position: absolute; bottom: 12px; left: 48px"></i> <div class="text-vertical text-ellipsis text-primary" style="padding-top: 0px; margin-left: 25px; margin-top: 5px"> <strong>{{\'common.default\'|i18n:this}}</strong> </div> </div> <div style="width: 60px; height: 145px; display: inline-block" data-ng-repeat="status in widget.custom.selectedStatuses"> <i class="fa fa-eye" title="{{\'module.process.processDefinitionPermissions.read\'|i18n:this}}" style="position: relative; bottom: 10px; left: 2px"></i> <i class="fa fa-pencil-alt" title="{{\'module.process.processDefinitionPermissions.write\'|i18n:this}}" style="position: relative; bottom: 10px; left: 14px"></i> <div class="text-vertical text-ellipsis text-primary" style="position: relative; bottom: 145px; padding-top: 0px; margin-left: 10px" data-ng-bind-html=status.$displayName> </div> </div> <cc-i18n data-key=module.process.processDefinitionPermissions.attributeName data-ng-if=widget.api.isDevMode() style="position: relative; bottom: 10px; left: -4px"></cc-i18n> </div> </div> <div style="border-top: 1px solid black; padding-top: 5px; height: calc(100% - 310px); overflow: scroll" data-ng-if="widget.custom.selectedStatuses.length > 0" data-ng-style="{ minWidth: (865 + (widget.custom.selectedStatuses.length * 60) - 20) + \'px\' }"> <div class="row hover-row" style="padding-left: 20px; height: 24px" data-ng-repeat="attribute in widget.custom.defaultAttributes | filter: widget.api.filter" data-ng-style="{ width: (865 + (widget.custom.selectedStatuses.length * 60)) + \'px\' }"> <div class=text-ellipsis style="line-height: 23px; width: 536px; margin-bottom: -7px; display: inline-block" title="{{::attribute.$displayName}} ({{::attribute.attributePath}})"> <span> <span data-ng-bind-html=::widget.api.indent(attribute)></span> <i class="fa {{::attribute.$type.icon}} prefix-icon" title="{{\'entity.\' + attribute.$type.name + \'.$entity\'|i18n:this}} ({{::attribute.$type.name}})"></i> <span class="label label-primary" data-ng-if=attribute.inUi title="{{\'module.process.processDefinitionPermissions.inUI\'|i18n:this}}">UI</span> <span class=text-highlight data-ng-bind-html="attribute.$displayName | highlight:widget.custom.quickFilterText"></span> </span>
1 <div data-ng-if=widget.custom.edit class=pull-right style="margin-right: 40px"> <i class="fa fa-fw {{widget.api.getDefaultPermissionsIcon(attribute, \'read\')}} bordered-icon" style="margin-left: 8px" data-ng-click="widget.api.toggle(attribute, status)"></i> <i class="fa fa-fw {{widget.api.getDefaultPermissionsIcon(attribute, \'write\')}} bordered-icon" style="margin-left: 8px" data-ng-click="widget.api.toggle(attribute, status)"></i> </div> <div data-ng-if=!widget.custom.edit class=pull-right style="margin-right: 40px"> <i class="fa fa-fw {{widget.api.getDefaultPermissionsIcon(attribute, \'read\')}}" style="border-radius: 4px; padding: 2px 5px; width: 24px"></i> <i class="fa fa-fw {{widget.api.getDefaultPermissionsIcon(attribute, \'write\')}}" style="border-radius: 4px; padding: 2px 5px; width: 24px"></i> </div> </div> <div style="width: 60px; display: inline-block" data-ng-repeat="status in widget.custom.selectedStatuses"> <div data-ng-if=" widget.custom.edit" style="margin-bottom: 2px" data-ng-click="widget.api.toggle(attribute, status)"> <i class="fa fa-fw {{widget.api.getAttributeStatusPermissionsIcon(attribute, status, \'read\')}} bordered-icon" style="margin-left: 1px"></i> <i class="fa fa-fw {{widget.api.getAttributeStatusPermissionsIcon(attribute, status, \'write\')}} bordered-icon" style="margin-left: 1px"></i> </div> <div data-ng-if=" !widget.custom.edit" style="margin-bottom: 2px"> <i class="fa fa-fw {{widget.api.getAttributeStatusPermissionsIcon(attribute, status, \'read\')}}" style="border-radius: 4px; padding: 2px 5px; width: 24px"></i> <i class="fa fa-fw {{widget.api.getAttributeStatusPermissionsIcon(attribute, status, \'write\')}}" style="border-radius: 4px; padding: 2px 5px; width: 24px"></i> </div> </div> <span data-ng-if=widget.api.isDevMode()> <span data-ng-bind-html=::widget.api.indent(attribute)></span> <kbd data-ng-if=!!attribute.name>{{::attribute.name}}</kbd> <kbd data-ng-if=!attribute.name>{{::widget.custom.baseEntity}}</kbd> </span> </div> </div> </div>'),e.put("scripts/modules/process/showtransitionlog.html",'<div data-ng-controller=modules.process.ShowTransitionLogController> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class=flex-simple-gap style="flex-direction: column"> <div class=flex-simple data-ng-repeat="entry in entries" data-ng-if=!loading> <i class="fa fa-fw {{entry.transitionIcon}} prefix-icon fa-1_5x"></i> <div style="flex-grow: 1; text-align: right; width: 0"> <div class=text-italic data-ng-if=!entry.processTransitionId> <span style="white-space: normal">{{entry.processTransitionName}}</span> </div> <div class=text-italic data-ng-if=!!entry.processTransitionId> <cc-i18n style="white-space: normal" data-key={{entry.processTransitionId.name.id}}></cc-i18n> </div> <div class=text-italic data-ng-if=!entry.invokedById> {{entry.invokedByName}} </div> <div class=text-italic data-ng-if=!!entry.invokedById> {{entry.invokedById.masterData.lastName}}, {{entry.invokedById.masterData.firstName}} </div> <div><small class=text-secondary>{{entry.createdAt | amDateFormat: \'DD.MM.YYYY, HH:mm:ss\'}}</small></div> <div class=text-secondary>(<small data-am-time-ago=entry.createdAt></small>)</div> </div> </div> </div> <div data-ng-if="!loading && entries.length === 0"> <cc-i18n data-key=process.noLogEntriesAvailable></cc-i18n> </div> </div> '),e.put("scripts/modules/process/showtransitions.html",'<div class=process-transitions data-ng-controller=modules.process.ShowTransitionsController> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class=text-center data-ng-if="!loading && transitions.length === 0 && hasTransitions"> <cc-i18n data-key=process.noTransitionsAvailable></cc-i18n> </div> <div data-ng-if="!loading && transitions.length > 0 && hasTransitions"> <ul class="list-group clear-list text-center full-width flex-simple-gap" style="flex-direction: column; margin-bottom: 0"> <li class="list-group-item text-center progress-control full-width no-padding" data-ng-repeat="transition in transitions"> <a title={{transition.name.id|i18n:this}} class="btn btn-{{transition.style}} btn-rounded full-width progress-control-button" style="display: flex" data-ng-click=execute(transition)> <i class="fa fa-fw {{transition.icon}} prefix-icon"></i> <span class="text-uppercase text-ellipsis" style="flex-grow: 1"><cc-i18n data-key={{transition.name.id}}></cc-i18n></span> </a> </li> </ul> </div> </div> '),e.put("scripts/modules/process/userguide/userguide.html",'<div class="form-control-static hint-text full-width text-center alert alert-info" style="margin-bottom: 0" data-ng-controller=modules.process.userguide.UserGuideController> <cc-i18n style="white-space: normal" data-key=process.inputInformation></cc-i18n> <br><br> <i class="fa fa-lightbulb prefix-icon"></i> <a> <cc-i18n data-key=process.needHelp data-ng-click=showUserGuide()></cc-i18n> </a> </div> '),e.put("scripts/modules/process/userguide/userguidemodal.html",'<div data-ng-controller=modules.process.userguide.UserGuideModalController> <div class=text-center data-ng-if=loading><i class="fa fa-circle-notch fa-spin fa-2x"></i></div> <div data-ng-bind-html=getTranslation(userGuide) data-ng-if="!loading && !!userGuide"></div> <div data-ng-if="!loading && !userGuide"> <cc-i18n data-key=process.noUserGuideAvailable></cc-i18n> </div> </div>'),e.put("scripts/modules/process/validation/processablevalidation.html",'<div data-ng-controller=modules.process.ProcessableValidationController> <div class=text-center data-ng-if=loading> <i class="fa fa-circle-notch fa-spin fa-2x"></i> </div> <div class="alert alert-info" style="margin-bottom: 20px; white-space: normal"> <p> <cc-i18n data-key={{::title}}></cc-i18n> </p> </div> <div class=cc-process-validation-error-block data-ng-repeat="(index, entry) in entries track by $index" data-ng-if=!loading> <span style="font-weight:bold; font-size: 1.1em; line-height:2; margin-right:7px;"> <i class="fa prefix-icon" data-ng-class="{\'fa-check text-success\': entry.errors.length === 0, \'fa-exclamation-triangle text-danger\': entry.errors.length !== 0}"></i> <cc-i18n data-key={{entry.title}} data-params={{entry.titleObject}}></cc-i18n> </span> <a title="{{\'common.showMissingInput\'|i18n:this}}" data-ng-click=toggleEntry(index) data-ng-dblclick=toggleEntry(index) data-ng-if="entry.errors.length > 0 && !isExpandedEntry(index)"> <cc-i18n data-key=common.showMissingInput></cc-i18n> </a> <a title="{{\'common.hideErrors\'|i18n:this}}" data-ng-click=toggleEntry(index) data-ng-dblclick=toggleEntry(index) data-ng-if="entry.errors.length > 0 && isExpandedEntry(index)"> <cc-i18n data-key=common.hideErrors></cc-i18n> </a> <div class="alert alert-danger" data-ng-if=isExpandedEntry(index)> <div data-ng-repeat="fieldErrors in entry.errors track by $index"> <div style=margin-top:5px;margin-bottom:5px; data-ng-repeat="error in fieldErrors track by $index" data-ng-bind-html=error></div> </div> </div> </div> </div> '),e.put("scripts/modules/user/accesshelper/accesshelper.html",'<div data-ng-controller=modules.user.accesshelper.AccessHelperController> <cc-i18n data-key=common.accesshelper.noNewPermissionsExistingError data-ng-if="widget.data.permissionResults.length === 0"></cc-i18n> <div data-ng-if="widget.data.permissionResults.length > 0"> <h4> <cc-i18n data-key=common.accesshelper.summary></cc-i18n> </h4> <div class=alert data-ng-class="{\'alert-success\': !!result, \'alert-danger\': !result}"> <cc-i18n data-key=common.accesshelper.accessGranted data-ng-if=!!result></cc-i18n> <cc-i18n data-key=common.accesshelper.accessDenied data-ng-if=!result></cc-i18n> </div> </div> <h4> <cc-i18n data-key=common.accesshelper.details></cc-i18n> </h4> <div data-ng-repeat="permissionResult in widget.data.permissionResults"> <h4 class=cc-accesshelper> <div data-ng-if="widget.data.permissionResults.length > 0" class=alert data-ng-class="{\'alert-success\': !!permissionResult.permissionAccessEvaluation, \'alert-danger\': !permissionResult.permissionAccessEvaluation}" data-ng-click="permissionResult.visible = !permissionResult.visible"> <i class="fa fa-check text-green prefix-icon" data-ng-if=!!permissionResult.permissionAccessEvaluation></i> <i class="fa fa-times text-red prefix-icon" data-ng-if=!permissionResult.permissionAccessEvaluation></i> {{permissionResult.permissionName}} <i class="fa fa-caret-left pull-right" data-ng-if=!permissionResult.visible></i> <i class="fa fa-caret-down pull-right" data-ng-if=permissionResult.visible></i> </div> </h4> <table class=cc-accesshelper-table data-ng-if=permissionResult.visible> <thead> <tr> <th class=cc-accesshelper-userstories> <cc-i18n data-key=common.accesshelper.userStory></cc-i18n> </th> <th class=cc-accesshelper-available> <cc-i18n data-key=common.accesshelper.hasUserStory></cc-i18n> </th> <th class=cc-accesshelper-accessgranted> <cc-i18n data-key=common.accesshelper.hasObjectAccess></cc-i18n> </th> </tr> </thead> <tbody> <tr data-ng-repeat="userStoryResult in permissionResult.userStoryResults" data-ng-class="{\'odd\': $odd}"> <td> <cc-i18n data-key={{userStoryResult.userStory.id}}></cc-i18n> </td> <td align=center>
1 <div data-ng-if=userStoryResult.granted class="fa fa-check text-green"></div> <div data-ng-if=!userStoryResult.granted class="fa fa-times text-red"></div> </td> <td align=center> <div data-ng-if=userStoryResult.userstoryAccessEvaluation class="fa fa-check text-green"></div> <div data-ng-if=!userStoryResult.userstoryAccessEvaluation class="fa fa-times text-red"></div> </td> </tr> </tbody> </table> </div> </div> '),e.put("scripts/modules/user/messages/message.html",'<div class=full-height style="display: flex; flex-direction: column" data-ng-controller=modules.user.messages.MessageController> <div class=message-header> <div style="display: inline-block"> <cc-i18n data-key=entity.Message.from></cc-i18n>: <span class="label label-primary">{{widget.data.from.name}}</span>&nbsp; <cc-i18n data-key=entity.Message.to></cc-i18n>: <span data-ng-repeat="to in widget.data.to"><span class="label label-primary">{{to.name}}</span><span data-ng-if=!$last>&nbsp;</span></span><br> <span data-ng-if="widget.data.cc.length > 0"> <cc-i18n data-key=entity.Message.cc></cc-i18n>: <span data-ng-repeat="cc in widget.data.cc"><span class="label label-primary">{{cc.name}}</span><span data-ng-if=!$last>&nbsp;</span></span><br> </span> <span data-ng-if="widget.data.bcc.length > 0"> <cc-i18n data-key=entity.Message.bcc></cc-i18n>: <span data-ng-repeat="bcc in widget.data.bcc"><span class="label label-primary">{{bcc.name}}</span><span data-ng-if=!$last>&nbsp;</span></span><br> </span> </div> <div class=pull-right> <span class=pull-right><cc-i18n data-key=entity.Message.createdAt></cc-i18n>: {{moment(widget.data._date) | amDateFormat:\'DD.MM.YYYY, HH:mm\'}}</span><br> <span class=pull-right><cc-i18n data-key=entity.Message.viewed></cc-i18n>: <i class="fa fa-check text-green" data-ng-if=widget.data.viewed></i><i class="fa fa-times text-red" data-ng-if=!widget.data.viewed></i></span><br> <span class=pull-right><cc-i18n data-key=entity.Message.category></cc-i18n>: <span class="label label-primary" style="margin-top: 5px"><cc-i18n class=text-uppercase data-key={{widget.data.category.name.id}}></cc-i18n></span></span> </div> </div> <div class=message-body style="flex-grow: 1; min-height: 300px;" data-ng-bind-html=messageContent.content></div> <div class=message-attachments data-ng-if="widget.data.attachments.length > 0"> <h5>{{widget.data.attachments.length}} <cc-i18n data-key="common.message.{{widget.data.attachments.length > 1 ? \'attachments\' : \'attachment\'}}"></cc-i18n></h5> <div class=attachments style="display: flex; flex-wrap: wrap; gap: 16px"> <div style="display: flex; gap: 6px;" data-ng-repeat="attachment in widget.data.attachments" data-ng-click=download(attachment)> <div style=padding-top:4px;> <button title={{attachment.name}} class="btn btn-circle btn-primary animated fadeIn" style="margin-bottom: 4px"> <i class="fa fa-paperclip"></i> </button> </div> <div class=attachment style="display: flex; flex-direction: column; gap: 4px;"> <div>{{attachment.name}}</div> <div> <span class="label label-primary"><cc-i18n data-key=common.contentType.{{attachment.contentType}} data-default=common.contentType.application/octet-stream></cc-i18n></span> <span>{{attachment.size | filesize}}</span> </div> </div> </div> </div> </div> </div> '),e.put("index.html",'<html> <head> <meta http-equiv=refresh content="0; URL=app/"> </head> <body></body> </html> '),e.put("index.html",'<!doctype html> <html> <head> <meta charset=utf-8> <title></title> <base href=/print> <meta name=description content=""> <meta name=viewport content="width=device-width,initial-scale=1"> <meta http-equiv=x-ua-compatible content="IE=EDGE"> <link rel=stylesheet href=../api/theme/campuscore.css> </head> <body style="background-color: white"> <div id=ccPrint class=print-container data-ng-controller=PrintController data-ng-cloak> <div data-ng-repeat="singleData in data"> <div class=message-body data-ng-bind-html=singleData.content></div> <hr data-ng-if=!$last> </div> </div> <div id=waitForLoginInOtherWindow style="text-align:center; margin: 100px auto; z-index: 99999; display: none;"> Login process open in another window / tab. Please finish that one and reload this page.<br> Der Login-Vorgang ist bereits in einem anderen Fenster / Reiter ge&ouml;ffnet. Bitte schließen Sie diesen Vorgang ab und laden Sie die Seite erneut. </div> <div id=ccLogin class="text-center animated fadeIn" style="display: none" data-ng-controller=LoginController data-ng-cloak> <div class="customer-logo login"></div> <div> <h2> <cc-i18n data-key=module.login.welcome></cc-i18n> </h2> </div> <div class="row alert" style="overflow-wrap: break-word;" data-ng-if=loginMessageId data-ng-class="{\n          \'alert-success\' : loginMessageType === \'SUCCESS_BOX\',\n          \'alert-info\': loginMessageType === \'INFO_BOX\',\n          \'alert-warning\': loginMessageType === \'WARNING_BOX\',\n          \'alert-danger\': loginMessageType === \'ERROR_BOX\'}"> <cc-i18n data-key={{loginMessageId}}></cc-i18n> </div> <br> <div id=login_container class=row> <div id=credential_column class="col-sm-6 col-xs-12" data-ng-class="{\'col-sm-offset-3\' : !allowAccessAsGuest && !canRegister}">
1 <div class=idprovider data-ng-repeat="idp in identityProviders track by idp.name"> <button data-cc-i18n-title=idp.tooltip.id class="btn btn-default full-width idprovider-button" data-ng-click=goToIdentityProvider(idp.name) style={{idp.styling}}> <img data-ng-src={{idp.iconPath}} alt={{idp.tooltip.id|i18n:this}}> <cc-i18n data-key={{idp.label.id}}></cc-i18n> </button> </div> <div style="display: flex; align-items: center; margin: 12px;" data-ng-if=identityProviders.length> <hr style="border: 1px solid #bbb; flex-grow: 1"> <span style="padding: 0 12px 0"> <cc-i18n data-key=common.or></cc-i18n> </span> <hr style="border: 1px solid #bbb; flex-grow: 1"> </div> <form data-ng-submit=submitLoginForm()> <div style="text-align: left"> <label for=username> <small> <cc-i18n data-key=module.login.form.username></cc-i18n> </small> </label> <div class="input-group m-b full-width"> <input id=username class=form-control name=username autocomplete=username data-ng-model=credentials.username required> <span title="{{\'module.login.form.username\'|i18n:this}}" class="input-group-addon function-marker"> <i class="fa fa-user"></i> </span> </div> <label for=password style="display: flex; justify-content: space-between"> <small> <cc-i18n data-key=module.login.form.password></cc-i18n> </small> <a data-ng-if=passwordResetPossible data-ng-click=resetPassword()> <small> <cc-i18n data-key=module.login.form.recovery></cc-i18n> </small> </a> </label> <div class="input-group m-b full-width"> <input id=password type=password class=form-control name=password autocomplete=current-password data-ng-model=credentials.password required> <span title="{{\'module.login.form.password\'|i18n:this}}" class="input-group-addon function-marker"> <i class="fa fa-key"></i> </span> </div> <div style="display: flex; align-items: center"> <input id=rememberme type=checkbox name=remember-me data-ng-model=credentials.rememberMe> <small><label for=rememberme style="margin: 0"> <cc-i18n data-key=login.stayLoggedIn></cc-i18n> </label></small> <a data-ng-click="showAlert = !showAlert"> <i class="fa fa-fw fa-info-circle suffix-icon"></i> </a> </div> <div class="alert alert-info m-t text-center" data-ng-show="credentials.rememberMe || showAlert"> <small> <cc-i18n data-key=login.stayLoggedIn.hint></cc-i18n> </small> </div> </div> <br> <div class=vertical-offset-10> <button type=submit class="btn btn-success full-width" data-ng-disabled=loggingIn> <cc-i18n data-key=module.login.form.login></cc-i18n> </button> </div> </form> </div> <div id=divider data-ng-if="allowAccessAsGuest || canRegister"></div> <div id=side_column class="col-sm-6 col-xs-12" data-ng-if="allowAccessAsGuest || canRegister"> <div data-ng-if=canRegister> <i class="fa fa-user-plus fa-3x"></i> <small> <cc-i18n data-key=module.login.register></cc-i18n> </small> <form> <cc-action data-action-id=RegisterPersonAction data-as-block=true data-button-style=primary data-show-icon=true data-show-text=true></cc-action> </form> </div> <br> <br> <div data-ng-if=allowAccessAsGuest> <i class="fa fa-user fa-3x"></i> <small> <cc-i18n data-key=module.login.guest></cc-i18n> </small> <div class=idprovider> <button class="btn btn-primary block m-b full-width" data-ng-click=accessAsGuest()> <i class="fa fa-fw fa-circle-notch fa-spin prefix-icon" data-ng-if=locked></i> <i class="fa fa-fw fa-user prefix-icon"></i> <cc-i18n data-key=module.login.form.accessAsGuest></cc-i18n> </button> </div> </div> <br> </div> </div> </div> <iframe id=ccAuth title="Authentication Window" style="position:fixed; top:0; left:0; bottom:0; right:0; width:0; height:0; border:none; margin:0; padding:0; overflow:hidden; z-index:999999; display: none;"></iframe> \x3c!--[if IE]>\n<script type="text/javascript">\n    window.location = "../browser.html";\n<\/script>\n<![endif]--\x3e <script src=../node_modules/moment/min/moment-with-locales.js><\/script> <script src=../libs/angular-ui-router.js><\/script> <script src=../libs/ct-ui-router-extras.js><\/script> <script src=../libs/ngCytoscape.js><\/script> <script> angular.element(document).ready(function () {\n\n        FeatureHelper.init()\n            .then(() => AuthenticationHelper.init())\n            .then(() =>
1 {\n                agGrid.initialiseAgGridWithAngular1(angular);\n                angular.bootstrap(document, [\'cc3.print\']);\n            });\n    }); <\/script> </body> </html> ')}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.