@openveo/core
Version:
OpenVeo core CMS
1 lines • 41.1 kB
JavaScript
;!function(){void 0===SVGElement.prototype.contains&&(SVGElement.prototype.contains=HTMLDivElement.prototype.contains);var e=null;"undefined"!=typeof HTMLDocument?e=HTMLDocument:"undefined"!=typeof Document&&(e=Document),e&&void 0===e.prototype.contains&&(e.prototype.contains=function(e){return Boolean(16&this.compareDocumentPosition(e))})}(),function(o){var t=["ngRoute","ov.authentication","ov.storage","ov.i18n","ov.entity","ov.alert","ov.tableForm","ov.util","ov.socket","ui.bootstrap","ui.tree","ngTasty","formly","formlyBootstrap","ngAnimate","ui.tinymce","ngFileUpload"];"undefined"!=typeof openVeoSettings&&openVeoSettings.plugins&&o.forEach(openVeoSettings.plugins,function(e){o.module("ov."+e),t.push("ov."+e)});var e=o.module("ov",t);e.run(["formlyConfig","$filter","$sce",function(e,i,t){e.setWrapper({name:"collapse",templateUrl:"ov-core-collapse.html"}),e.setWrapper({name:"horizontalBootstrapLabel",templateUrl:"ov-core-horizontal-bootstrap-label.html"}),e.setWrapper({name:"horizontalBootstrapLabelOnly",templateUrl:"ov-core-horizontal-bootstrap-label-only.html"}),e.setWrapper({name:"editableWrapper",templateUrl:"ov-core-editable-wrapper.html"}),e.setType({name:"datepicker",templateUrl:"ov-core-formly-datepicker.html",defaultOptions:{validation:{show:!0}},link:function(e,t,n){e.status={opened:!1},e.open=function(){e.status.opened=!0}}}),e.setType({name:"dateTimePicker",templateUrl:"ov-core-formly-date-time-picker.html"}),e.setType({name:"tags",templateUrl:"ov-core-formly-tags.html",defaultOptions:{validation:{show:!0}}}),e.setType({name:"match",templateUrl:"ov-core-formly-match.html",defaultOptions:{validation:{show:!0}}}),e.setType({name:"emptyrow",templateUrl:"ov-core-empty-row.html",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"section",templateUrl:"ov-core-section.html"}),e.setType({name:"autoComplete",templateUrl:"ov-core-formly-auto-complete.html",defaultOptions:{validation:{show:!0}}}),e.setType({extends:"input",name:"editableInput",link:function(e,t,n){e.show=function(){return e.isEmpty=!e.model[e.options.key],e.model[e.options.key]||i("translate")("CORE.UI.EMPTY")}}}),e.setType({extends:"select",name:"editableSelect",link:function(t,e,n){t.show=function(){var n=[],e="[object Array]"===Object.prototype.toString.call(t.model[t.options.key])?t.model[t.options.key]:[t.model[t.options.key]];return t.to.options.forEach(function(t){e.forEach(function(e){t.value===e&&n.push(t.name)})}),t.isEmpty=!n.length,n.length?n.join(", "):i("translate")("CORE.UI.EMPTY")}}}),e.setType({name:"editableDatepicker",extends:"datepicker",link:function(e,t,n){e.show=function(){return i("date")(e.model[e.options.key],"shortDate")}}}),e.setType({name:"editableDateTimePicker",extends:"dateTimePicker",link:function(e,t,n){e.show=function(){return e.isEmpty=!e.model[e.options.key],i("date")(e.model[e.options.key],"medium")||i("translate")("CORE.UI.EMPTY")}}}),e.setType({name:"editableTags",extends:"tags",link:function(a,e,t){a.show=function(){var e=a.model[a.options.key];if(a.isEmpty=!e||!e.length,a.isEmpty)return i("translate")("CORE.UI.EMPTY");var o=[];return a.to.availableOptions?e.forEach(function(e){for(var t=0;t<a.to.availableOptions.length;t++){var n=a.to.availableOptions[t];if(e===n.value){o.push(n.name);break}}}):o=e,o.join(", ")}}}),e.setType({name:"ovMultiCheckBox",templateUrl:"ov-core-formly-multi-check-box.html"}),e.setType({name:"ovEditableMultiCheckBox",extends:"ovMultiCheckBox",link:function(n){n.show=function(){var t=[];return o.forEach(n.to.options,function(e){n.model[n.options.key]&&0<=n.model[n.options.key].indexOf(e.id)&&t.push(e.name)}),n.isEmpty=!t.length,t.length?t.join(", "):i("translate")("CORE.UI.EMPTY")}}}),e.setType({extends:"checkbox",name:"editableCheckbox",link:function(e,t,n){e.show=function(){return e.isEmpty=!1,e.model[e.options.key]&&i("translate")("CORE.UI.TRUE")||i("translate")("CORE.UI.FALSE")}}}),e.setType({name:"ovTinymce",templateUrl:"ov-core-textarea-tinymce.html"}),e.setType({name:"ovEditableTinymce",extends:"ovTinymce",link:function(e){e.show=function(){return e.isEmpty=!e.model[e.options.key],e.model[e.options.key]||i("translate")("CORE.UI.EMPTY")}}}),e.setType({name:"editableAutoComplete",extends:"autoComplete",link:function(e,t,n){e.show=function(){return e.isEmpty=!e.model[e.options.key],e.model[e.options.key]||i("translate")("CORE.UI.EMPTY")}}}),e.setType({name:"ovFile",templateUrl:"ov-file.html",link:function(t){t.file=null,t.$watch('model["'+t.options.key+'"]',function(e){100===e&&(t.file=null,t.form.file.$setUntouched(),t.form.file.$setPristine())})}}),e.setType({name:"simple",templateUrl:"ov-core-simple.html",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalFile",extends:"ovFile",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableFile",extends:"horizontalFile",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalTinymce",extends:"ovTinymce",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableTinymce",extends:"ovEditableTinymce",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalInput",extends:"input",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableInput",extends:"editableInput",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalDatepicker",extends:"datepicker",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableDatepicker",extends:"editableDatepicker",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalDateTimePicker",extends:"dateTimePicker",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableDateTimePicker",extends:"editableDateTimePicker",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalSelect",extends:"select",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableSelect",extends:"editableSelect",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalMultiCheckbox",extends:"ovMultiCheckBox",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableMultiCheckbox",extends:"ovEditableMultiCheckBox",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalTags",extends:"tags",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalMatch",extends:"match",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableTags",extends:"editableTags",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalCheckbox",extends:"checkbox",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableCheckbox",extends:"editableCheckbox",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalAutoComplete",extends:"autoComplete",wrapper:["horizontalBootstrapLabel","bootstrapHasError"]}),e.setType({name:"horizontalEditableAutoComplete",extends:"editableAutoComplete",wrapper:["editableWrapper","horizontalBootstrapLabel","bootstrapHasError"]})}]),e.config(["$routeProvider","$locationProvider","$httpProvider",function(e,t,n){var o=openVeoSettings.authenticationStrategies,a=0<=openVeoSettings.authenticationMechanisms.indexOf(o.LDAP),i=0<=openVeoSettings.authenticationMechanisms.indexOf(o.CAS);e.when("/",{templateUrl:"views/home.html",controller:"HomeController",title:"CORE.HOME.PAGE_TITLE"}),e.when("/login",{title:"CORE.LOGIN.PAGE_TITLE",templateUrl:"views/login.html",controller:"LoginController",resolve:{i18nCommon:["i18nService",function(e){return e.addDictionary("common")}],i18nLogin:["i18nService",function(e){return e.addDictionary("login")}]}}).otherwise("/"),e.when("/applications-list",{templateUrl:"views/applications.html",controller:"ApplicationController",title:"CORE.APPLICATIONS.PAGE_TITLE",access:"core-access-applications-page",resolve:{scopes:["applicationService",function(e){return e.loadScopes()}]}}),e.when("/users-list",{templateUrl:"views/users.html",controller:"UserController",title:"CORE.USERS.PAGE_TITLE",access:"core-access-users-page",resolve:{roles:["entityService",function(e){return e.getAllEntities("roles")}]}}),e.when("/profile",{templateUrl:"views/profile.html",controller:"ProfileController",controllerAs:"ctrl",title:"CORE.PROFILES.PAGE_TITLE",resolve:{user:["authenticationService",function(e){return e.getUserInfo()}]}}),e.when("/roles-list",{templateUrl:"views/roles.html",controller:"RoleController",title:"CORE.ROLES.PAGE_TITLE",access:"core-access-roles-page",resolve:{permissions:["userService",function(e){return e.loadPermissions()}]}}),e.when("/groups-list",{templateUrl:"views/groups.html",controller:"GroupController",title:"CORE.GROUPS.PAGE_TITLE",access:"core-access-groups-page"}),e.when("/openveo-settings",{templateUrl:"views/settings.html",controller:"SettingsController",controllerAs:"ctrl",title:"CORE.SETTINGS.PAGE_TITLE",access:"core-access-settings-page",resolve:{ldapSettings:["$q","entityService",function(e,t){return a?t.getEntity("settings",null,"core-"+o.LDAP):e.when({data:{}})}],casSettings:["$q","entityService",function(e,t){return i?t.getEntity("settings",null,"core-"+o.CAS):e.when({data:{}})}],roles:["entityService",function(e){return e.getAllEntities("roles")}]}}),t.html5Mode(!0),n.interceptors.push("errorInterceptor"),FastClick.attach(document.body),tinyMCE.baseURL="/tinymce"}]),e.filter("noBreakSpace",function(){return function(e){return e.replace(/ /g," ")}})}(angular),function(){function a(e,t){var n,o;return e.data&&e.data.error&&(n=e.data.error.code,o=e.data.error.module),403===e.status?t("translate")("CORE.ERROR.FORBIDDEN"):400===e.status?t("translate")("CORE.ERROR.CLIENT")+" (code="+n+", module="+o+")":n&&o?t("translate")("CORE.ERROR.SERVER")+" (code="+n+", module="+o+")":t("translate")("CORE.ERROR.SERVER")}function e(t,n,o){return{responseError:function(e){if(401===e.status)t.$broadcast("forceLogout");else{if(400===e.status&&e.data&&e.data.error&&776===e.data.error.code)return o.reject(e);-1==e.status&&e.config&&e.config.timeout&&e.config.timeout.status||t.$broadcast("setAlert","danger",a(e,n),0)}return o.reject(e)}}}angular.module("ov").factory("errorInterceptor",e),e.$inject=["$rootScope","$filter","$q"]}(angular),function(){function e(e,r,l,s,p,u,t,n,c,a,o,i,d){function m(){r.closeResponsiveMenu(),p.setUserInfo(),r.menu=!1,r.displayMainMenu=!1,u.destroyMenu(),c.removeDictionary("back-office"),t.destroy(),n.destroy(),o.deleteCache(),a.closeAll(),l.path("/login")}function h(e,t){return(t=angular.copy(t))&&Object.keys(t).length?(n=t,o=[],angular.forEach((e||"").split(":"),function(e,t){0===t?o.push(e):(e=(t=e.match(/(\w+)(?:[?*])?(.*)/))[1],o.push(n[e]),o.push(t[2]||""),delete n[e])}),o.join("")):e;var n,o}r.displayMainMenu=!1,r.isResponsiveMenuClosed=!0,r.languages=c.getLanguages(),r.language=c.getLanguageName(c.getLanguage()),r.indexOpen=-1,r.menuDropdownIsOpen=!1,r.toggleResponsiveMenu=function(){r.isResponsiveMenuClosed=!r.isResponsiveMenuClosed},r.closeResponsiveMenu=function(){!r.isResponsiveMenuClosed&&r.displayMainMenu&&(r.isResponsiveMenuClosed=!0)},r.openResponsiveMenu=function(){r.isResponsiveMenuClosed&&r.displayMainMenu&&(r.isResponsiveMenuClosed=!1)},r.navigate=function(e){e&&(r.closeResponsiveMenu(),l.path(angular.element(e.currentTarget).attr("href")))},r.changeLanguage=function(e){c.setLanguage(e),i.location.reload()},r.toggleSidebarSubMenu=function(e){-1!=r.indexOpen&&r.indexOpen==e?r.indexOpen=-1:r.indexOpen=e},r.logout=function(){r.userInfo&&r.userInfo.origin===openVeoSettings.authenticationStrategies.CAS?i.location.href="logout":p.logout().then(m,m)},r.$on("setAlert",function(e,t,n,o){a.add(t,n,o)}),r.$on("logout",function(){r.logout()}),r.$on("forceLogout",function(){m()}),r.$on("$routeChangeStart",function(e,t){var n=t.params,o=h(t.originalPath,n);if(!o)return!1;var a=p.getUserInfo(),i=c.getDictionary("back-office",c.getLanguage());if(!("/login"===l.path()||!a||u.getMenu()&&i)){e.preventDefault();i={i18nCommon:c.addDictionary("common"),i18nBE:c.addDictionary("back-office",!0),menu:u.loadMenu()};return d.all(i).then(function(e){o===h(l.path(),n)?s.reload():l.path(o)},function(e){401===e.status&&(m(),s.reload())}),!1}if("/login"!==l.path()&&!a)return e.preventDefault(),l.path("/login"),!1;if("/login"!==l.path()&&a){if(r.userInfo=a,t.access&&!r.checkAccess(t.access))return e.preventDefault(),l.path("/"),!1}else if("/login"===l.path()&&a)return e.preventDefault(),l.path("/"),!1}),r.$on("$routeChangeSuccess",function(e,t){o.deleteCache(),r.userInfo=p.getUserInfo(),r.userInfo?(r.menu=u.getMenu(),r.displayMainMenu=!!r.menu,u.setActiveMenuItem()):r.displayMainMenu=!1,r.title=s.current&&s.current.title||""}),r.$on("$routeChangeError",function(e,t,n,o){r.userInfo?o&&o.redirect?l.path(o.redirect):l.path("/"):l.path("/login")}),r.checkAccess=function(e){if(r.userInfo){if(r.userInfo.id===openVeoSettings.superAdminId)return!0;if("string"==typeof e&&(e=[e]),r.userInfo.roles&&0!=r.userInfo.roles.length&&r.userInfo.permissions&&0!=r.userInfo.permissions.length)return 0<e.filter(function(e){return 0<=r.userInfo.permissions.indexOf(e)}).length}return!1},r.checkContentAccess=function(e,t){if(r.userInfo&&e&&t){if(r.userInfo.id===openVeoSettings.superAdminId||e.metadata.user===openVeoSettings.anonymousId||r.userInfo.id===e.metadata.user)return!0;if(e.metadata.groups&&e.metadata.groups.length)for(var n=(e=e.metadata.groups,a=t,i=[],e&&e.length&&e.forEach(function(e){i.push(a+"-group-"+e)}),i),o=0;o<n.length;o++)if(0<=r.userInfo.permissions.indexOf(n[o]))return!0}var a,i;return!1},r.hasPermission=function(e){return!!(r.userInfo&&r.userInfo.permissions&&e)&&0<=r.userInfo.permissions.indexOf(e)}}angular.module("ov").controller("MainController",e),e.$inject=["$rootScope","$scope","$location","$route","authenticationService","menuService","applicationService","userService","i18nService","alertService","entityService","$window","$q"]}(),function(){function e(t,n,o,a,i,r){var e=openVeoSettings.authenticationStrategies;t.verticalAlign=!0,t.onError=!1,t.languages=i.getLanguages(),t.language=i.getLanguage(),t.isPending=!1,t.hasCas=0<=openVeoSettings.authenticationMechanisms.indexOf(e.CAS),t.changeLanguage=function(e){i.setLanguage(e),o.location.reload()},t.signIn=function(){t.isPending=!0,a.login(t.userLogin,t.password).then(function(e){t.isPending=!1,a.setUserInfo(e.data),r(function(){n.path("/")},100)},function(){t.isPending=!1,t.onError=!0,t.userLogin=t.password=""})}}angular.module("ov").controller("LoginController",e),e.$inject=["$scope","$location","$window","authenticationService","i18nService","$timeout"]}(),function(e){function t(t,n){t.version=openVeoSettings.version,t.open=function(e){n.open({templateUrl:"versionModal.html",controller:"ModalInstanceCtrl",size:e,resolve:{items:function(){return t.version}}})}}function n(e,t,n){e.items=n,e.close=function(){t.close("close")}}e.controller("HomeController",t),e.controller("ModalInstanceCtrl",n),t.$inject=["$scope","$uibModal"],n.$inject=["$scope","$uibModalInstance","items"]}(angular.module("ov")),function(){function e(n,o,a,e){var i="applications";function r(e,t){a.removeEntities(i,null,e.join(",")).then(function(){n.$emit("setAlert","success",o("translate")("CORE.APPLICATIONS.REMOVE_SUCCESS"),4e3),t()})}n.scopes=e.data.scopes,angular.forEach(n.scopes,function(e){e.name=o("translate")(e.name),e.description=o("translate")(e.description)}),n.rights={},n.rights.add=n.checkAccess("core-add-"+i),n.rights.edit=n.checkAccess("core-update-"+i),n.rights.delete=n.checkAccess("core-delete-"+i);e=n.tableContainer={};e.entityType=i,e.filterBy=[{key:"query",value:"",label:o("translate")("CORE.APPLICATIONS.QUERY_FILTER")}],e.header=[{key:"name",name:o("translate")("CORE.APPLICATIONS.NAME_COLUMN"),class:["col-xs-11"]},{key:"action",name:o("translate")("CORE.UI.ACTIONS_COLUMN"),class:["col-xs-1"]}],e.actions=[{label:o("translate")("CORE.UI.REMOVE"),warningPopup:!0,condition:function(e){return n.rights.delete&&!e.locked&&!e.saving},callback:function(e,t){r([e.id],t)},global:function(e,t){r(e,t)}}];var t=n.editFormContainer={};t.model={},t.entityType=i,t.init=function(e){t.fields[1].templateOptions.message=e.id,t.fields[2].templateOptions.message=e.secret},t.fields=[{key:"name",type:"horizontalEditableInput",templateOptions:{label:o("translate")("CORE.APPLICATIONS.ATTR_NAME"),required:!0}},{noFormControl:!0,type:"emptyrow",templateOptions:{label:o("translate")("CORE.APPLICATIONS.ATTR_ID"),message:""}},{noFormControl:!0,type:"emptyrow",templateOptions:{label:o("translate")("CORE.APPLICATIONS.ATTR_SECRET"),message:""}}],0!=n.scopes.length&&t.fields.push({key:"scopes",type:"horizontalEditableMultiCheckbox",templateOptions:{label:o("translate")("CORE.APPLICATIONS.ATTR_SCOPES"),options:n.scopes,valueProperty:"id",labelProperty:"name"}}),t.conditionEditDetail=function(e){return n.rights.edit&&!e.locked},t.onSubmit=function(e){return a.updateEntity(i,null,e.id,{name:e.name,scopes:e.scopes})};e=n.addFormContainer={};e.model={},e.fields=[{key:"name",type:"horizontalInput",templateOptions:{label:o("translate")("CORE.APPLICATIONS.FORM_ADD_NAME"),required:!0,description:o("translate")("CORE.APPLICATIONS.FORM_ADD_NAME_DESC")}}],0==n.scopes.length?e.fields.push({noFormControl:!0,template:"<p>"+o("translate")("CORE.APPLICATIONS.NO_APPLICATIONS")+"</p>"}):e.fields.push({key:"scopes",type:"horizontalMultiCheckbox",templateOptions:{label:o("translate")("CORE.APPLICATIONS.FORM_ADD_SCOPES"),required:!1,options:n.scopes,valueProperty:"id",labelProperty:"name",description:o("translate")("CORE.APPLICATIONS.FORM_ADD_SCOPES_DESC")},expressionProperties:{"templateOptions.disabled":"!model.name"}}),e.onSubmit=function(e){return a.addEntities(i,null,[e])}}angular.module("ov").controller("ApplicationController",e),e.$inject=["$scope","$filter","entityService","scopes"]}(),function(){function e(i,n,o,e){var a,r="roles";function l(e){var o={name:e.name,permissions:[]};return angular.forEach(e,function(e,t){var n="permissions_";t.slice(0,n.length)==n&&(o.permissions=o.permissions.concat(e))}),o}function s(e,t){o.removeEntities(r,null,e.join(",")).then(function(){i.$emit("setAlert","success",n("translate")("CORE.ROLES.REMOVE_SUCCESS"),4e3),t()})}i.permissions=e.data.permissions,angular.forEach(i.permissions,function(e){e.label=n("translate")(e.label),angular.forEach(e.permissions,function(e){e.name=n("translate")(e.name),e.description=n("translate")(e.description)})}),i.rights={},i.rights.add=i.checkAccess("core-add-"+r),i.rights.edit=i.checkAccess("core-update-"+r),i.rights.delete=i.checkAccess("core-delete-"+r);e=i.tableContainer={};e.entityType=r,e.filterBy=[{key:"query",value:"",label:n("translate")("CORE.ROLES.QUERY_FILTER")}],e.header=[{key:"name",name:n("translate")("CORE.ROLES.NAME_COLUMN"),class:["col-xs-11"]},{key:"action",name:n("translate")("CORE.UI.ACTIONS_COLUMN"),class:["col-xs-1"]}],e.actions=[{label:n("translate")("CORE.UI.REMOVE"),warningPopup:!0,condition:function(e){return i.rights.delete&&!e.locked&&!e.saving},callback:function(e,t){s([e.id],t)},global:function(e,t){s(e,t)}}];e=i.editFormContainer={};e.model={},e.entityType=r,e.init=function(n){var e,o,a,e=(e=i.permissions,o=n.permissions,a={},angular.forEach(e,function(e,t){angular.forEach(e.permissions,function(e){a["permissions_"+t]||(a["permissions_"+t]=[]),0<=o.indexOf(e.id)&&a["permissions_"+t].push(e.id)})}),a);angular.forEach(e,function(e,t){n[t]=e})},e.fields=[{key:"name",type:"horizontalEditableInput",templateOptions:{label:n("translate")("CORE.ROLES.ATTR_NAME"),required:!0}}],0==i.permissions.length?e.fields.push({noFormControl:!0,template:"<p>"+n("translate")("CORE.ROLES.NO_DATA")+"</p>"}):(a=[],e.fields.push({noFormControl:!0,templateOptions:{label:n("translate")("CORE.ROLES.FORM_ADD_PERMISSIONS")},wrapper:["horizontalBootstrapLabelOnly"],template:""}),angular.forEach(i.permissions,function(e,t){a.push({key:"permissions_"+t,type:"ovEditableMultiCheckBox",wrapper:["editableWrapper","collapse"],templateOptions:{label:"",labelCollapse:e.label,options:e.permissions,valueProperty:"id",labelProperty:"name"}})}),e.fields.push({className:"col-md-8 col-push-md-4",fieldGroup:a})),e.conditionEditDetail=function(e){return i.rights.edit&&!e.locked},e.onSubmit=function(e){return n=l(t=e),o.updateEntity(r,null,t.id,n).then(function(){t.permissions=angular.copy(n.permissions)});var t,n};e=i.addFormContainer={};e.model={},e.fields=[{key:"name",type:"horizontalInput",templateOptions:{label:n("translate")("CORE.ROLES.FORM_ADD_NAME"),required:!0,description:n("translate")("CORE.ROLES.FORM_ADD_NAME_DESC")}}],0==i.permissions.length?e.fields.push({noFormControl:!0,template:"<p>"+n("translate")("CORE.ROLES.NO_DATA")+"</p>"}):(a=[],e.fields.push({noFormControl:!0,templateOptions:{label:n("translate")("CORE.ROLES.FORM_ADD_PERMISSIONS")},wrapper:["horizontalBootstrapLabelOnly"],template:""}),angular.forEach(i.permissions,function(e,t){a.push({key:"permissions_"+t,type:"ovMultiCheckBox",wrapper:["collapse"],templateOptions:{label:"",labelCollapse:e.label,options:e.permissions,valueProperty:"id",labelProperty:"name"}})}),e.fields.push({className:"col-md-8 col-push-md-4",fieldGroup:a})),e.onSubmit=function(e){return n=l(t=e),o.addEntities(r,null,[n]).then(function(){t.permissions=angular.copy(n.permissions)});var t,n}}angular.module("ov").controller("RoleController",e),e.$inject=["$scope","$filter","entityService","permissions"]}(),function(){function e(n,o,a,e){var i="users",t="^[0-9a-z._-]+@{1}[0-9a-z.-]{2,}[.]{1}[a-z]{2,5}$";function r(e,t){a.removeEntities(i,null,e.join(",")).then(function(){n.$emit("setAlert","success",o("translate")("CORE.USERS.REMOVE_SUCCESS"),4e3),t()})}n.roles=e.data.entities,n.rights={},n.rights.add=n.checkAccess("core-add-"+i),n.rights.edit=n.checkAccess("core-update-"+i),n.rights.delete=n.checkAccess("core-delete-"+i);var l,e=n.tableContainer={};e.entityType=i,e.filterBy=[{key:"query",value:"",label:o("translate")("CORE.USERS.QUERY_FILTER")},{key:"origin",type:"select",value:null,label:o("translate")("CORE.USERS.ORIGIN_FILTER"),options:(l=[{value:null,name:o("translate")("CORE.USERS.ORIGIN_FILTER_ALL")}],openVeoSettings.authenticationMechanisms.forEach(function(e){l.push({name:o("translate")("CORE.USERS.ORIGIN_FILTER_"+e.toUpperCase()),value:e})}),l)}],e.header=[{key:"name",name:o("translate")("CORE.USERS.NAME_COLUMN"),class:["col-xs-11"]},{key:"action",name:o("translate")("CORE.UI.ACTIONS_COLUMN"),class:["col-xs-1"]}],e.actions=[{label:o("translate")("CORE.UI.REMOVE"),warningPopup:!0,condition:function(e){return n.rights.delete&&!e.locked&&!e.saving},callback:function(e,t){r([e.id],t)},global:function(e,t){r(e,t)}}];e=n.editFormContainer={};e.model={},e.entityType=i,e.fields=[{key:"originLiteral",type:"simple",templateOptions:{label:o("translate")("CORE.USERS.ATTR_ORIGIN")}},{key:"name",type:"horizontalEditableInput",templateOptions:{label:o("translate")("CORE.USERS.ATTR_NAME"),required:!0}},{key:"email",type:"horizontalEditableInput",templateOptions:{label:o("translate")("CORE.USERS.ATTR_EMAIL"),required:!0,pattern:t}}],0!=n.roles.length&&e.fields.push({key:"roles",type:"horizontalEditableMultiCheckbox",templateOptions:{label:o("translate")("CORE.USERS.ATTR_ROLE"),required:!1,options:n.roles,valueProperty:"id",labelProperty:"name"}}),e.conditionEditDetail=function(e){return n.rights.edit&&!e.locked},e.onSubmit=function(e){return a.updateEntity(i,null,e.id,{name:e.name,email:e.email,roles:e.roles})},e.init=function(e){e.originLiteral=o("translate")("CORE.USERS.ORIGIN_"+e.origin.toUpperCase())};e=n.addFormContainer={};e.model={},e.fields=[{key:"name",type:"horizontalInput",templateOptions:{label:o("translate")("CORE.USERS.FORM_ADD_NAME"),required:!0,description:o("translate")("CORE.USERS.FORM_ADD_NAME_DESC")}},{key:"email",type:"horizontalInput",templateOptions:{type:"email",label:o("translate")("CORE.USERS.FORM_ADD_EMAIL"),required:!0,description:o("translate")("CORE.USERS.FORM_ADD_EMAIL_DESC"),pattern:t},expressionProperties:{"templateOptions.disabled":"!model.name"}},{key:"password",type:"horizontalInput",templateOptions:{type:"password",label:o("translate")("CORE.USERS.FORM_ADD_PASSWORD"),required:!0,description:o("translate")("CORE.USERS.FORM_ADD_PASSWORD_DESC")},expressionProperties:{"templateOptions.disabled":"!model.email"}},{key:"passwordValidate",type:"horizontalInput",templateOptions:{type:"password",label:o("translate")("CORE.USERS.FORM_ADD_PASSWORD_VALIDATE"),required:!0,description:o("translate")("CORE.USERS.FORM_ADD_PASSWORD_VALIDATE_DESC")},expressionProperties:{"templateOptions.disabled":"!model.password"}}],0==n.roles.length?e.fields.push({noFormControl:!0,type:"emptyrow",templateOptions:{label:o("translate")("CORE.USERS.FORM_ADD_ROLE"),message:o("translate")("CORE.USERS.NO_ROLE")}}):e.fields.push({key:"roles",type:"horizontalMultiCheckbox",templateOptions:{label:o("translate")("CORE.USERS.FORM_ADD_ROLE"),required:!1,options:n.roles,valueProperty:"id",labelProperty:"name",description:o("translate")("CORE.USERS.FORM_ADD_ROLE_DESC")},expressionProperties:{"templateOptions.disabled":"!model.passwordValidate"}}),e.onSubmit=function(e){return t={name:(t=e).name,email:e.email,password:e.password,passwordValidate:e.passwordValidate,roles:e.roles||[]},a.addEntities(i,null,[t]);var t}}angular.module("ov").controller("UserController",e),e.$inject=["$scope","$filter","entityService","roles"]}(),function(){function e(n,o,a,i){var r="groups";function l(e,t){a.removeEntities(r,null,e.join(",")).then(function(){i.cacheClear("permissions"),n.$emit("setAlert","success",o("translate")("CORE.GROUPS.REMOVE_SUCCESS"),4e3),t()})}n.rights={},n.rights.add=n.checkAccess("core-add-"+r),n.rights.edit=n.checkAccess("core-update-"+r),n.rights.delete=n.checkAccess("core-delete-"+r);var e=n.addFormContainer={};e.model={},e.fields=[{key:"name",type:"horizontalInput",templateOptions:{label:o("translate")("CORE.GROUPS.FORM_ADD_NAME"),required:!0,description:o("translate")("CORE.GROUPS.FORM_ADD_NAME_DESC")}},{key:"description",type:"horizontalInput",templateOptions:{label:o("translate")("CORE.GROUPS.FORM_ADD_DESCRIPTION"),required:!0,description:o("translate")("CORE.GROUPS.FORM_ADD_DESCRIPTION_DESC")}}],e.onSubmit=function(e){return a.addEntities(r,null,[e]).then(function(){i.cacheClear("permissions")})};e=n.tableContainer={};e.entityType=r,e.filterBy=[{key:"query",label:o("translate")("CORE.GROUPS.QUERY_FILTER")}],e.header=[{key:"name",name:o("translate")("CORE.GROUPS.NAME_COLUMN"),class:["col-xs-11"]},{key:"action",name:o("translate")("CORE.UI.ACTIONS_COLUMN"),class:["col-xs-1"]}],e.actions=[{label:o("translate")("CORE.UI.REMOVE"),warningPopup:!0,condition:function(e){return n.rights.delete&&!e.locked&&!e.saving},callback:function(e,t){l([e.id],t)},global:function(e,t){l(e,t)}}];e=n.editFormContainer={};e.model={},e.entityType=r,e.fields=[{key:"name",type:"horizontalEditableInput",templateOptions:{label:o("translate")("CORE.GROUPS.ATTR_NAME"),required:!0}},{key:"description",type:"horizontalEditableInput",templateOptions:{label:o("translate")("CORE.GROUPS.ATTR_DESCRIPTION"),required:!0}}],e.conditionEditDetail=function(e){return n.rights.edit&&!e.locked},e.onSubmit=function(e){return a.updateEntity(r,null,e.id,e).then(function(){i.cacheClear("permissions")})}}angular.module("ov").controller("GroupController",e),e.$inject=["$scope","$filter","entityService","userService"]}(),function(){function e(e,t,n,o,a){var i="users";function r(){var e="";if(a.roles&&a.roles.length){for(var t=0,t=0;t<a.roles.length-1;t++)e+=a.roles[t].name+", ";e+=a.roles[t].name}return e}var l=this;this.password="",this.confirmPassword="",this.isInvalid=!0,this.isSaving=!1,this.user=a,this.roles=r()||t("translate")("CORE.PROFILES.NO_ROLES"),this.authenticationStrategies=openVeoSettings.authenticationStrategies;var s=e.editFormContainer={};e.row=this.user,s.entityType=i,this.user.origin===openVeoSettings.authenticationStrategies.LOCAL&&(s.fields=[{key:"name",type:"horizontalEditableInput",templateOptions:{label:t("translate")("CORE.PROFILES.ATTR_NAME"),required:!0}},{key:"email",type:"emptyrow",templateOptions:{label:t("translate")("CORE.PROFILES.ATTR_EMAIL"),message:this.user.email}}],this.user.roles&&this.user.roles.length&&s.fields.push({noFormControl:!0,type:"emptyrow",templateOptions:{label:t("translate")("CORE.PROFILES.ATTR_ROLES"),message:r()}})),s.conditionEditDetail=function(e){return e.id!==openVeoSettings.superAdminId&&!e.locked},s.onSubmit=function(e){return(t=e).saving=!0,l.user.name=t.name,o.updateEntity(i,null,t.id,{name:t.name,email:t.email}).then(function(){n.setUserInfo(a)}).finally(function(){t.saving=!1});var t},this.updatePassword=function(){this.isSaving=!0,o.updateEntity(i,null,this.user.id,{password:this.password,passwordValidate:this.confirmPassword,email:this.email}).then(function(){l.isSaving=!1,l.resetForm(),e.$emit("setAlert","success",t("translate")("CORE.UI.SAVE_SUCCESS"),4e3)},function(e,t){l.isSaving=!1})},this.resetForm=function(){this.password="",this.confirmPassword="",this.isInvalid=!0},this.checkValid=function(){return this.isInvalid=!this.password||!this.confirmPassword||this.password!==this.confirmPassword,this.isInvalid},this.passwordEditable=function(){return this.user.id!=openVeoSettings.superAdminId&&!this.user.locked&&this.user.origin===openVeoSettings.authenticationStrategies.LOCAL}}angular.module("ov").controller("ProfileController",e),e.$inject=["$scope","$filter","authenticationService","entityService","user"]}(),function(i){function e(e,t,o){var a;function n(){if(a){var e,t=o.path();for(e in a)if(i.isArray(a[e].subMenu)){a[e].active=!1;for(var n=0;n<a[e].subMenu.length;n++)a[e].subMenu[n].active="/"+a[e].subMenu[n].path===t,a[e].active=a[e].active||a[e].subMenu[n].active}else a[e].active="/"+a[e].path===t}}return{loadMenu:function(){return a?t.when({data:a}):e.get("/be/getMenu").then(function(e){return a=e.data,n(),t.when(e)})},getMenu:function(){return a},destroyMenu:function(){a=null},setActiveMenuItem:n}}angular.module("ov").factory("menuService",e),e.$inject=["$http","$q","$location"]}(angular),function(){function e(e,t){var n;return{loadPermissions:function(){return n?t.when({data:n}):e.get("/be/permissions").then(function(e){return n=e.data,t.when(e)})},getPermissions:function(){return n},destroy:function(){n=null},cacheClear:function(e){(!e||"permissions"===e)&&(n=null)}}}angular.module("ov").factory("userService",e),e.$inject=["$http","$q"]}(),function(){function e(e,t){var n;return{destroy:function(){n=null},loadScopes:function(){return n?t.when({data:n}):e.get("/be/ws/scopes").then(function(e){return n=e.data,t.when(e)})},getScopes:function(){return n}}}angular.module("ov").factory("applicationService",e),e.$inject=["$http","$q"]}(),angular,angular.module("ov").filter("truncate",function(){return function(e){return e=e&&""!=e&&35<e.length?e.slice(0,35)+"...":e}}),angular.module("ov").directive("ovTags",function(){return{restrict:"E",templateUrl:"ov-core-tags.html",require:["?ngModel"],replace:!0,scope:{ovAvailableOptions:"=?",ovPlaceholder:"=?"},link:function(o,e,t,n){var a=n[0];function i(){o.ovAvailableOptions=o.availableOptions=void 0===o.ovAvailableOptions?null:o.ovAvailableOptions,o.ovPlaceholder=o.placeholder=void 0===o.ovPlaceholder?"":o.ovPlaceholder}function r(){if(!o.availableOptions)return angular.copy(o.tags);var n=[];return o.tags.forEach(function(e){for(var t=0;t<o.availableOptions.length;t++)if(o.availableOptions[t].name===e){n.push(o.availableOptions[t].value);break}}),n}o.editableTagsInput="",o.autoCompleteValues=[],a.$render=function(){o.availableOptions?(o.tags=[],(a.$viewValue||[]).forEach(function(e){for(var t=0;t<o.availableOptions.length;t++)if(o.availableOptions[t].value===e){o.tags.push(o.availableOptions[t].name);break}})):o.tags=angular.copy(a.$viewValue)||[]},o.addTag=function(e){if(!o.availableOptions&&e&&-1===o.tags.indexOf(e))return o.editableTagsInput="",o.tags.push(e),a.$setViewValue(r()),void a.$validate();if(o.availableOptions)for(var t=0;t<o.availableOptions.length;t++)if(o.availableOptions[t].name===e){e&&-1===o.tags.indexOf(o.availableOptions[t].name)&&(o.tags.push(e),a.$setViewValue(r()),a.$validate()),o.editableTagsInput="",o.autoComplete();break}},o.handleKeys=function(e){13===e.keyCode&&(o.addTag(o.editableTagsInput),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault())},o.removeTag=function(e,t){o.tags.splice(t,1),a.$setViewValue(r()),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),a.$validate()},o.autoComplete=function(){o.availableOptions&&(o.autoCompleteValues.splice(0,o.autoCompleteValues.length),o.editableTagsInput&&o.availableOptions.forEach(function(e){0===e.name.toLowerCase().indexOf(o.editableTagsInput.toLowerCase())&&o.autoCompleteValues.push(e)}))},a.$isEmpty=function(e){return!e||0===e.length},o.$watch("ovAvailableOptions",i),o.$watch("ovPlaceholder",i),i()}}}),angular.module("ov").directive("ovMultiCheckBox",function(){return{restrict:"E",templateUrl:"ov-core-mutli-check-box.html",require:["?ngModel"],replace:!0,scope:{options:"=",labelProperty:"=?",valueProperty:"=?",disabled:"=?"},link:function(o,e,t,n){var a,i=n[0],r=NaN;o.labelProperty=o.labelProperty||"name",o.valueProperty=o.valueProperty||"value",i.$render=function(){var e=angular.copy(i.$viewValue)||[];o.values=[];for(var t=0;t<e.length;t++){var n=function(e){for(var t=0;t<o.options.length;t++)if(o.options[t][o.valueProperty]===e)return t;return-1}(e[t]);0<=n&&(o.values[n]=!0)}},o.onChange=function(){for(var e=[],t=0;t<o.values.length;t++)o.values[t]&&e.push(o.options[t][o.valueProperty]);i.$setViewValue(e)},o.$watch(function(){r!==i.$viewValue||angular.equals(a,i.$viewValue)||(a=angular.copy(i.$viewValue),i.$render()),r=i.$viewValue}),i.$isEmpty=function(e){return!e||0===e.length}}}}),angular.module("ov").directive("ovMatch",function(){return{restrict:"E",templateUrl:"ov-core-match.html",require:["?ngModel"],replace:!0,scope:{ovMultiple:"=?",ovAvailableOptions:"=?",ovAddLabel:"=?",ovInputPlaceholder:"=?",ovTagsPlaceholder:"=?",ovInputProperty:"=?",ovTagsProperty:"=?"},link:function(t,e,n,o){var a=o[0];function i(){t.ovAddLabel=t.addLabel=void 0===t.ovAddLabel?"":t.ovAddLabel,t.ovMultiple=t.multiple=void 0===t.ovMultiple||t.ovMultiple,t.ovAvailableOptions=t.availableOptions=void 0===t.ovAvailableOptions?null:t.ovAvailableOptions,t.ovInputPlaceholder=t.inputPlaceholder=void 0===t.ovInputPlaceholder?"":t.ovInputPlaceholder,t.ovTagsPlaceholder=t.tagsPlaceholder=void 0===t.ovTagsPlaceholder?"":t.ovTagsPlaceholder,t.ovInputProperty=t.inputProperty=void 0===t.ovInputProperty?"value":t.ovInputProperty,t.ovTagsProperty=t.tagsProperty=void 0===t.ovTagsProperty?"values":t.ovTagsProperty}a.$render=function(){t.matches=angular.copy(a.$viewValue)||[]},t.addMatch=function(){t.matches.push({}),t.updateModel()},t.removeMatch=function(e){t.matches.splice(e,1),t.updateModel()},t.updateModel=function(){a.$setViewValue(angular.copy(t.matches)),a.$validate()},a.$isEmpty=function(e){return!(e&&0!==e.length&&(1!==e.length||e[0].value&&e[0].values&&e[0].values.length))},t.$watch("ovAddLabel",i),t.$watch("ovMultiple",i),t.$watch("ovAvailableOptions",i),t.$watch("ovInputPlaceholder",i),t.$watch("ovTagsPlaceholder",i),i()}}}),function(){function e(n,o,e,a,t,i,r){var l=openVeoSettings.authenticationStrategies;this.isSaving=!1,this.hasLdap=0<=openVeoSettings.authenticationMechanisms.indexOf(l.LDAP),this.hasCas=0<=openVeoSettings.authenticationMechanisms.indexOf(l.CAS),this.formValues={hasLdap:this.hasLdap,hasCas:this.hasCas,ldapMatches:t.data.entity&&t.data.entity.value,casMatches:i.data.entity&&i.data.entity.value};var s,i=(s=[],r.data.entities.forEach(function(e){s.push({name:e.name,value:e.id})}),s);this.formFields=[{type:"section",templateOptions:{title:o("translate")("CORE.SETTINGS.LDAP.TITLE")},hideExpression:"!model.hasLdap"},{key:"ldapMatches",type:"horizontalMatch",templateOptions:{label:o("translate")("CORE.SETTINGS.LDAP.GROUP_ASSOC_LABEL"),description:o("translate")("CORE.SETTINGS.LDAP.GROUP_ASSOC_DESC"),addLabel:o("translate")("CORE.SETTINGS.LDAP.GROUP_ASSOC_ADD"),multiple:!0,inputPlaceholder:o("translate")("CORE.SETTINGS.LDAP.GROUP_ASSOC_INPUT"),tagsPlaceholder:o("translate")("CORE.SETTINGS.LDAP.GROUP_ASSOC_TAGS"),availableOptions:i,inputProperty:"group",tagsProperty:"roles"},hideExpression:"!model.hasLdap"},{type:"section",templateOptions:{title:o("translate")("CORE.SETTINGS.CAS.TITLE")},hideExpression:"!model.hasCas"},{key:"casMatches",type:"horizontalMatch",templateOptions:{label:o("translate")("CORE.SETTINGS.CAS.GROUP_ASSOC_LABEL"),description:o("translate")("CORE.SETTINGS.CAS.GROUP_ASSOC_DESC"),addLabel:o("translate")("CORE.SETTINGS.CAS.GROUP_ASSOC_ADD"),multiple:!0,inputPlaceholder:o("translate")("CORE.SETTINGS.CAS.GROUP_ASSOC_INPUT"),tagsPlaceholder:o("translate")("CORE.SETTINGS.CAS.GROUP_ASSOC_TAGS"),availableOptions:i,inputProperty:"group",tagsProperty:"roles"},hideExpression:"!model.hasCas"}],this.save=function(){var e=this,t=[];this.hasLdap&&this.formValues.ldapMatches&&t.push({id:"core-"+l.LDAP,value:this.formValues.ldapMatches}),this.hasCas&&this.formValues.casMatches&&t.push({id:"core-"+l.CAS,value:this.formValues.casMatches}),t.length&&(this.isSaving=!0,a.addEntities("settings",null,t).then(function(){e.isSaving=!1,n.$emit("setAlert","success",o("translate")("CORE.SETTINGS.SAVE_SUCCESS"),4e3)}))}}angular.module("ov").controller("SettingsController",e),e.$inject=["$scope","$filter","$q","entityService","ldapSettings","casSettings","roles"]}(),angular.module("ov").directive("ovDateTimePicker",function(){return{restrict:"E",templateUrl:"ov-core-date-time-picker.html",require:["?ngModel"],replace:!0,scope:{currentText:"@?ovCurrentText",clearText:"@?ovClearText",closeText:"@?ovCloseText"},controller:"OvDateTimePickerController",controllerAs:"$ctrl"}}),function(){function e(i,e,t){var r,l,s=this,n=i.controller("ngModel");Object.defineProperties(s,{calendarIsOpened:{value:!1,writable:!0},date:{value:null,writable:!0},time:{value:null,writable:!0},$postLink:{value:function(){e(function(){for(var e=i[0].querySelectorAll(".ov-time-picker input"),t=angular.element(i[0].querySelector("input[uib-datepicker-popup]")),n=angular.element(i[0].querySelector("div[uib-timepicker]")),o=0;o<e.length;o++){var a=e[o];angular.element(a).on("blur",s.setAsTouched.bind(s))}r=t.controller("ngModel"),l=n.controller("ngModel")})}},openDatePicker:{value:function(){s.calendarIsOpened=!0}},updateModelValue:{value:function(){if(r&&l&&(n.$setValidity("dateTime",r.$valid&&l.$valid),!r.$invalid&&!l.$invalid)){if(!s.date)return n.$validate();var e=angular.copy(s.date);e.setHours(s.time?s.time.getHours():0),e.setMinutes(s.time?s.time.getMinutes():0),e.setSeconds(0),n.$setViewValue(e),n.$validate()}}},setAsTouched:{value:function(){n.$setTouched()}}}),n.$render=function(){s.date=angular.copy(n.$viewValue),s.time=angular.copy(n.$viewValue)},n.$isEmpty=function(e){return!s.date},n.$validators.dateTime=function(){return!r||!l||r.$valid&&l.$valid},t.$watch("$ctrl.date",s.updateModelValue.bind(s)),t.$watch("$ctrl.time",s.updateModelValue.bind(s))}angular.module("ov").controller("OvDateTimePickerController",e),e.$inject=["$element","$timeout","$scope"]}(),angular.module("ov").directive("ovAutoComplete",function(){return{restrict:"E",templateUrl:"ov-core-auto-complete.html",require:["?ngModel"],replace:!0,scope:{ovPlaceholder:"=?",ovGetSuggestions:"="},link:function(n,e,t,o){var a=o[0];function i(){n.ovPlaceholder=n.placeholder=void 0===n.ovPlaceholder?"":n.ovPlaceholder,n.getSuggestions=n.ovGetSuggestions}function r(){n.element.name&&n.element.value?a.$setViewValue({value:n.element.value,name:n.element.name}):a.$setViewValue(null),a.$validate()}n.element={},n.suggestions=[],a.$render=function(){n.element.name=a.$viewValue&&a.$viewValue.name,n.element.value=a.$viewValue&&a.$viewValue.value},n.validateValue=function(){if(!n.element.name)return n.updateSuggestions([]),r();n.getSuggestions(n.element.name).then(function(e){if(e.length){for(var t=0;t<e.length;t++)if(e[t].name.toLowerCase()===n.element.name.toLowerCase()){n.validateSuggestion(e[t]);break}n.updateSuggestions(e)}else n.updateSuggestions([]),n.element.value=null,r()})},n.validateSuggestion=function(e){n.element.name=e.name,n.element.value=e.value,n.updateSuggestions([]),r()},n.updateSuggestions=function(e){n.suggestions.splice(0,n.suggestions.length),e.forEach(function(e){e.name.toLowerCase()!==n.element.name.toLowerCase()&&n.suggestions.push({name:e.name,value:e.value})})},a.$isEmpty=function(e){return!e},n.$watch("ovPlaceholder",i),n.$watch("ovGetSuggestions",i),i()}}});