graphdb-workbench 2.8.0-RC4 → 2.8.0-RC5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/182.78cd0ca67c114d4083b0.bundle.js +1 -1
  2. package/dist/22.13bcebaa12a3b6a7fc1f.bundle.js +1 -1
  3. package/dist/{23.698dec59afa5f43dcfea.bundle.js → 23.4d6fe6188090079288b3.bundle.js} +2 -2
  4. package/dist/{24.6abe7678c6b87b169f18.bundle.js → 24.1415927663d7b3630b0c.bundle.js} +1 -1
  5. package/dist/341.6eb6b427ced82f22560b.bundle.js +1 -1
  6. package/dist/347.118ca575ab87cb19ce76.bundle.js +1 -1
  7. package/dist/350.c8218ae833103bf52abf.bundle.js +1 -1
  8. package/dist/351.8a5f28a009ef04d0167d.bundle.js +1 -1
  9. package/dist/352.739323a4a0d80fa64a83.bundle.js +1 -1
  10. package/dist/353.e9821df37c8a8f529f2b.bundle.js +1 -1
  11. package/dist/354.5b2d83dbc08d59ece66c.bundle.js +1 -1
  12. package/dist/384.d092675a415f87c59ebb.bundle.js +1 -1
  13. package/dist/396.64e6e967b19be45aaf42.bundle.js +1 -1
  14. package/dist/397.fb643ad79378b15ce832.bundle.js +1 -1
  15. package/dist/398.86b51249d3390a580fc0.bundle.js +1 -1
  16. package/dist/399.313a67359a2156ac8034.bundle.js +1 -1
  17. package/dist/400.10fd33b06610a0992944.bundle.js +1 -1
  18. package/dist/402.5fd9fff1cbe21d970ebe.bundle.js +1 -1
  19. package/dist/403.3841f7aaaae7caf2255f.bundle.js +1 -1
  20. package/dist/404.4dc9ee7188b9d2893515.bundle.js +1 -1
  21. package/dist/405.676926ad412a22f2fbeb.bundle.js +1 -1
  22. package/dist/41.40c3d7b8512190b33ab8.bundle.js +1 -1
  23. package/dist/42.be35a3551bb3d2f3ea0d.bundle.js +1 -1
  24. package/dist/{53.627531dc1740b8db4a76.bundle.js → 53.482592db08b5d952a441.bundle.js} +1 -1
  25. package/dist/59.4be5c7e1550359c21a9f.bundle.js +1 -1
  26. package/dist/7.5bb100322bb46a0283b5.bundle.js +1 -0
  27. package/dist/70.8796413c83479a2d289a.bundle.js +1 -1
  28. package/dist/79.6a9dac3c4299fbea231e.bundle.js +1 -0
  29. package/dist/8.5945491c614f0a5ebdd3.bundle.js +1 -0
  30. package/dist/{bundle.954eb29a80feba4e229b.bundle.js → bundle.a7e07d5231025abafc4d.bundle.js} +2 -2
  31. package/dist/i18n/locale-en.json +2 -1
  32. package/dist/i18n/locale-fr.json +1 -0
  33. package/dist/index.html +3 -3
  34. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  35. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  36. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  37. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  38. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  39. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  40. package/dist/js/angular/security/templates/user.html +1 -1
  41. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  42. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  43. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  44. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  45. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  46. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  47. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +1 -1
  48. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  49. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  50. package/dist/license-checker.json +2 -2
  51. package/dist/pages/aclmanagement.html +2 -2
  52. package/dist/pages/autocomplete.html +1 -1
  53. package/dist/pages/choose-repository-type.html +1 -1
  54. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  55. package/dist/pages/create-index.html +1 -1
  56. package/dist/pages/dependencies.html +1 -1
  57. package/dist/pages/domainRangeInfo.html +2 -2
  58. package/dist/pages/edit.html +1 -1
  59. package/dist/pages/explore.html +1 -1
  60. package/dist/pages/export.html +1 -1
  61. package/dist/pages/find.html +1 -1
  62. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  63. package/dist/pages/graphs-visualizations.html +7 -7
  64. package/dist/pages/guides.html +1 -1
  65. package/dist/pages/import.html +2 -2
  66. package/dist/pages/jdbc-create.html +1 -1
  67. package/dist/pages/monitor/backup-and-restore.html +1 -1
  68. package/dist/pages/monitor/queries.html +1 -1
  69. package/dist/pages/monitor/resources.html +1 -1
  70. package/dist/pages/namespaces.html +2 -2
  71. package/dist/pages/plugins.html +1 -1
  72. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  73. package/dist/pages/rdfrank.html +2 -2
  74. package/dist/pages/repositories.html +1 -1
  75. package/dist/pages/repository.html +1 -1
  76. package/dist/pages/similarity-indexes.html +1 -1
  77. package/dist/pages/sparql-editor.html +1 -1
  78. package/dist/pages/sparql-template-create.html +1 -1
  79. package/dist/pages/ux-test1.html +2 -2
  80. package/dist/pages/webapi.html +2 -2
  81. package/dist/res/swagger5/index.html +12 -12
  82. package/package.json +1 -1
  83. package/dist/7.4eee720422b3fc5afff8.bundle.js +0 -1
  84. package/dist/79.a53b02dd026c5444d356.bundle.js +0 -1
  85. package/dist/8.c5cc2eb4e83affbbe4e0.bundle.js +0 -1
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[23,24,29,63,76,97,140,193,196,251,252,288,297,309,314],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"connectorTypesListMapper",(function(){return i})),n.d(t,"connectorsMapper",(function(){return s}));var o=n(94);const i=e=>{const t=new o.ConnectorTypesListModel;return e?(t.connectors=Object.keys(e).map(t=>new o.ConnectorTypeModel({name:t,prefix:e[t]})),t):t},s=e=>{const t=new o.ConnectorListModel;return e?(t.connectors=e.map(e=>new o.ConnectorModel(e)),t):t}},128:function(e,t){function n(e){return{restrict:"E",scope:{fieldName:"@",source:"=",onSave:"&",onCancel:"&",onClick:"&",onDblclick:"&",isEditing:"="},templateUrl:"js/angular/core/directives/inline-editable-text/templates/inline-editable-text.template.html",link:function(t,n){t.editableModel={};const o=[];let i;t.onKeydown=e=>{"Enter"===e.key?(a(),t.editableModel.text!==t.text&&t.onSave({newText:t.editableModel.text,source:t.source})):"Escape"===e.key&&s()},t.onCancelEditing=()=>{s()},t.onSelect=()=>{i?(a(),t.onDblclick({source:t.source})):i=e((function(){t.onClick({source:t.source}),a()}),250)};const s=()=>{a(),t.onCancel()},a=()=>{e.cancel(i),i=void 0};o.push(t.$watch("isEditing",o=>{o&&(t.editableModel.text=t.source[t.fieldName],e(()=>{const e=n.find("input")[0];e.focus(),e.select()},0))}));t.$on("$destroy",()=>{o.forEach(e=>e()),a()})}}}angular.module("graphdb.framework.core.directives.inline-editable-text",[]).directive("inlineEditableText",n),n.$inject=["$timeout"]},137:function(e,t,n){"use strict";n.r(t);n(97),n(96),n(105),n(19);function o(e,t,n,o,i){e.agentInstructionsExplain=i.agentInstructionsExplain,e.close=()=>{t.dismiss({})},e.onCloseAgentInstructionsExplainModal=()=>{t.dismiss({})};const s=[];e.$on("$destroy",()=>{s.forEach(e=>e())})}angular.module("graphdb.framework.ttyg.controllers.agent-instructions-explain-modal",[]).controller("AgentInstructionsExplainModalController",o),o.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},176:function(e,t,n){"use strict";n.r(t),n.d(t,"status",(function(){return o}));const o={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,CONFLICT:409,INTERNAL_SERVER_ERROR:500,SERVICE_UNAVAILABLE:503}},189:function(e,t,n){"use strict";n.r(t);n(128);var o=n(79),i=n(136),s=n(0);function a(e,t,n,a){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-list.html",link:r=>{r.selectedChat=void 0,r.renamedChat=void 0,r.deletingChat=void 0,r.onSelectChatForRenaming=e=>{r.renamedChat=e},r.onSelectChat=t=>{if(!r.selectedChat||r.selectedChat.id!==t.id){const n=e.getChats().getNonPersistedChat();n&&e.deleteChat(n),e.selectChat(t),r.renamedChat=void 0}},r.onDeleteChat=i=>{const a=n.instant("ttyg.dialog.delete.title"),r=Object(s.decodeHTML)(n.instant("ttyg.dialog.delete.body",{chatName:i.name}));t.openConfirmation(a,r,()=>e.emit(o.TTYGEventName.DELETE_CHAT,i))},r.onRenameChat=(t,n)=>{n.name=t,r.renamedChat=void 0,e.emit(o.TTYGEventName.RENAME_CHAT,n)},r.onExportChat=t=>{e.emit(o.TTYGEventName.CHAT_EXPORT,t)},r.onCancelChatRenaming=()=>{r.renamedChat=void 0},r.getHumanReadableChatGroupTimestamp=e=>Object(i.getHumanReadableTimestamp)(n,a,e);const c=e=>{r.selectedChat=e},l=[];l.push(e.onSelectedChatChanged(c)),l.push(e.onSelectedChatUpdated(c)),l.push(e.onChatsListChanged(e=>{r.chatList=e})),l.push(e.subscribe(o.TTYGEventName.DELETING_CHAT,e=>{r.deletingChat=e})),r.$on("$destroy",()=>{l.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.chat-list",["graphdb.framework.core.directives.inline-editable-text"]).directive("chatList",a),a.$inject=["TTYGContextService","ModalService","$translate","$filter"]},190:function(e,t,n){"use strict";n.r(t);n(199);var o=n(79),i=n(83),s=n(87),a=n(33),r=n(0),c=n(102);function l(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-panel.html",link:(e,l,d)=>{e.chat=void 0,e.selectedAgent=void 0,e.chatItem=void 0,e.askingChatItem=void 0,e.waitingForLastMessage=!1,e.loadingChat=!0,e.ask=()=>{e.chatItem.question.timestamp=Date.now(),e.askingChatItem=Object(a.cloneDeep)(e.chatItem),e.chatItem.chatId?u(e.chatItem):g(),e.chatItem=m(),T(),p()},e.regenerateQuestion=t=>{const n=m();n.setQuestionMessage(t.getQuestionMessage()),e.askingChatItem=n,u(n),T()},e.onKeypressOnInput=t=>{"Enter"!==t.key||t.shiftKey||t.ctrlKey||e.ask()},e.onAskHowDeliveredAnswer=()=>{const n=m();n.setQuestionMessage(t.instant("ttyg.chat_panel.btn.derive_answer.label")),e.askingChatItem=Object(a.cloneDeep)(n),u(n),T()},e.getAgentName=e=>{const o=n.getAgent(e);return o?o.name:Object(r.decodeHTML)(t.instant("ttyg.chat_panel.deleted_agent"))};const g=()=>{e.waitingForLastMessage=!0,n.emit(o.TTYGEventName.CREATE_CHAT,e.chatItem)},u=t=>{e.waitingForLastMessage=!0,n.emit(o.TTYGEventName.ASK_QUESTION,t)},h=()=>{e.chatItem=Object(a.cloneDeep)(e.askingChatItem),e.askingChatItem=void 0,e.waitingForLastMessage=!1},m=()=>{const t=new s.ChatItemModel;return t.question=new i.ChatMessageModel({role:i.CHAT_MESSAGE_ROLE.USER}),e.chat&&(t.chatId=e.chat.id),e.selectedAgent&&(t.agentId=e.selectedAgent.id),t},p=()=>{const e=l.find(".question-input");e.length&&e[0].focus()},T=()=>{setTimeout(()=>{const e=l.find(".chat-details")[0];e&&(e.scrollTop=e.scrollHeight)})},E=()=>{e.chat=c.ChatModel.getEmptyChat(),e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.waitingForLastMessage=!1,p()},y=[];y.push(e.$watchCollection("chat.chatHistory.items",T)),y.push(n.onSelectedChatUpdated(t=>{if(e.chat=t,t&&(t.id||!e.askingChatItem)){if(e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.chat){const t=e.chat.chatHistory.getLast();t&&t.agentId&&n.selectAgent(n.getAgent(t.agentId))}p()}})),y.push(n.onLastMessageReceived(()=>{e.waitingForLastMessage=!1})),y.push(n.onSelectedAgentChanged(t=>{e.selectedAgent=t,e.selectedAgent&&e.chatItem&&(e.chatItem.agentId=e.selectedAgent.id)})),y.push(n.onSelectedChatChanged(t=>{t?(e.loadingChat=t&&t.id,e.chatItem=m(),p()):E()})),y.push(n.subscribe(o.TTYGEventName.LOAD_CHAT_FAILURE,()=>{e.loadingChat=!1,e.chatItem=m(),p()})),y.push(n.subscribe(o.TTYGEventName.ASK_QUESTION_FAILURE,h)),y.push(n.subscribe(o.TTYGEventName.CREATE_CHAT_FAILURE,h)),y.push(n.subscribe(o.TTYGEventName.DELETE_CHAT_SUCCESSFUL,t=>{e.chat&&t.id===e.chat.id&&E()})),e.$on("$destroy",()=>{y.forEach(e=>e())}),e.chat=c.ChatModel.getEmptyChat(),e.chatItem=m(),p()}}}angular.module("graphdb.framework.ttyg.directives.chat-panel",["graphdb.framework.ttyg.directives.chat-item-detail"]).directive("chatPanel",l),l.$inject=["toastr","$translate","TTYGContextService"]},191:function(e,t,n){"use strict";n.r(t);var o=n(0),i=n(79);function s(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-list.html",scope:{agentList:"=",agentListFilterModel:"="},link:(s,a,r)=>{s.selectedAgent=void 0,s.selectedAgentsFilter=void 0,s.deletingAgent=void 0,s.onEditAgent=t=>{e.emit(i.TTYGEventName.EDIT_AGENT,t)},s.onCloneAgent=t=>{e.emit(i.TTYGEventName.CLONE_AGENT,t)},s.onDeleteAgent=s=>{const a=n.instant("ttyg.agent.delete_agent_modal.title"),r=Object(o.decodeHTML)(n.instant("ttyg.agent.delete_agent_modal.body",{agentName:s.name}));t.openConfirmation(a,r,()=>e.emit(i.TTYGEventName.DELETE_AGENT,s))},s.onAgentsFilterChange=e=>{s.selectedAgentsFilter=e,s.selectedAgentsFilter&&s.agentList.filterByRepository(s.selectedAgentsFilter.key)};const c=()=>{const e=s.agentListFilterModel.find(e=>e.selected);s.selectedAgentsFilter=e||s.agentListFilterModel[0],s.onAgentsFilterChange(s.selectedAgentsFilter)},l=[];l.push(s.$watch("agentListFilterModel",c)),l.push(e.subscribe(i.TTYGEventName.DELETING_AGENT,e=>{s.deletingAgent=e})),l.push(e.onSelectedAgentChanged(e=>{s.selectedAgent=e})),s.$on("$destroy",()=>{l.forEach(e=>e())}),c()}}}angular.module("graphdb.framework.ttyg.directives.agent-list",[]).directive("agentList",s),s.$inject=["TTYGContextService","ModalService","$translate"]},192:function(e,t,n){"use strict";n.r(t);var o=n(84),i=n(79);function s(e,t,n,s){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-select-menu.html",scope:{},link:n=>{n.agentOptionsList=[],n.selectedAgent=void 0,n.onAgentSelected=o=>{if(a(o),n.selectedAgent=o,e.selectAgent(o),o.isRepositoryDeleted){const n=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.title"),a=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.body");s.openConfirmation(n,a,()=>e.emit(i.TTYGEventName.EDIT_AGENT,o))}};const a=e=>{n.agentOptionsList.forEach(t=>{t.selected=t.data.agent===e})},r=e=>{n.agentOptionsList=e.agents.map(e=>new o.SelectMenuOptionsModel({value:e.id,label:e.name,data:{agent:e}}))},c=[];c.push(e.onAgentsListChanged(e=>{r(e)})),c.push(e.subscribe(i.TTYGEventName.AGENT_DELETED,t=>{n.selectedAgent&&n.selectedAgent.id===t.id&&(n.selectedAgent.isDeleted=!0,e.selectAgent(n.selectedAgent))})),c.push(e.onSelectedAgentChanged(e=>{a(e),n.selectedAgent=e})),n.$on("$destroy",()=>{c.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.agent-select-menu",[]).directive("agentSelectMenu",s),s.$inject=["TTYGContextService","$translate","$sce","ModalService"]},193:function(e,t,n){"use strict";n.r(t);var o=n(79),i=n(13);function s(e,t){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/no-agents-view.html",scope:{},link:n=>{n.canModifyAgent=!1,n.talkToGraphDocumentationLink=i.DocumentationUrlResolver.getDocumentationUrl(t.productShortVersion,"talk-to-graph.html"),n.onCreateAgent=()=>{e.emit(o.TTYGEventName.OPEN_AGENT_SETTINGS)};const s=[];s.push(e.onCanUpdateAgentUpdated(e=>{n.canModifyAgent=e})),n.$on("$destroy",()=>{s.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.no-agents-view",[]).directive("noAgentsView",s),s.$inject=["TTYGContextService","productInfo"]},194:function(e,t,n){"use strict";n.r(t);var o=n(0),i=n(106),s=(n(97),n(96),n(105),n(19),n(137),n(9)),a=n(79),r=n(98);function c(e,t,n,c,l,d,g,u,h,m,p,T,E,y){e.AGENT_OPERATION=r.AGENT_OPERATION,e.operation=T.operation,e.savingAgent=!1,e.agentFormModel=T.agentFormModel,e.activeRepositoryInfo=T.activeRepositoryInfo,e.extractionMethodLoaderFlags={[i.ExtractionMethod.SIMILARITY]:!1},e.activeRepositoryList=T.activeRepositoryList,e.extractionMethods=i.ExtractionMethod,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.similarityIndexes=[],e.retrievalConnectors=[],e.ftsEnabled=!1,e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),I(),L[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),L[e.method](e)},e.getModelHelpMessage=()=>{const e=Object(o.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.model.hint"));return u.trustAsHtml(e)},e.getFTSDisabledHelpMessage=()=>{const t=Object(o.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"#/repository/edit/"+e.agentFormModel.repositoryId}));return u.trustAsHtml(t)},e.goToCreateSimilarityView=()=>{E.emit(a.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=()=>{E.emit(a.TTYGEventName.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return f[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();n.selected&&(t&&(n.similarityIndex=null),R(n))},e.updateRetrievalConnectorPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();n.selected&&(t&&(n.retrievalConnectorInstance=null),N(n))},e.checkIfFTSEnabled=()=>{if(!e.agentFormModel.repositoryId)return void e.agentSettingsForm.$setValidity("FTSDisabled",!1);e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[i.ExtractionMethod.FTS_SEARCH]=!0,g.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(s.REPOSITORY_PARAMS.enableFtsIndex)}).catch(e=>{S(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[i.ExtractionMethod.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0)},e.onRepositoryChange=()=>{G(!0,!0)},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,n.openModalAlert({title:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then((function(){}))),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();y.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};c.open(t).result.then(()=>{})}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))})};const f={[r.AGENT_OPERATION.CREATE]:e=>C(e),[r.AGENT_OPERATION.EDIT]:e=>A(e),[r.AGENT_OPERATION.CLONE]:e=>v(e)},C=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),A=n=>(e.savingAgent=!0,y.editAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),v=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),S=(e,t)=>{console.error(e),h.error(p.instant(t))},I=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},_=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},R=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();l.getIndexesAsMenuModel(n.repositoryId,n.repositoryLocation).then(n=>{e.similarityIndexes=n,e.agentSettingsForm.$setValidity("missingIndex",!t.selected||!(!n||!n.length)),b(e.similarityIndexes,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingIndex",!1),S(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},b=(e,t)=>{if(0===e.length)return void(t.similarityIndex=null);const n=e.find(e=>e.value===t.similarityIndex);t.similarityIndex=n?n.value:e[0].value},N=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();d.getConnectorPrefixByName("ChatGPT Retrieval",n.repositoryId,n.repositoryLocation).then(e=>d.getConnectorsByTypeAsSelectMenuOptions(e,n.repositoryId,n.repositoryLocation)).then(n=>{e.retrievalConnectors=n,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!n||!n.length)),M(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),S(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},M=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const n=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=n?n.value:e[0].value},L={[i.ExtractionMethod.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[i.ExtractionMethod.SPARQL]:e=>{},[i.ExtractionMethod.SIMILARITY]:e=>R(e),[i.ExtractionMethod.RETRIEVAL]:e=>N(e)},G=(t=!1,n=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(n)},O=()=>{document.hidden||G()};document.addEventListener("visibilitychange",O),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",O)});setTimeout(I,0)}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal"]).controller("AgentSettingsModalController",c),c.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService"]},195:function(e,t){function n(e,t){const n={agent:{id:void 0},chat:{id:void 0}},o=()=>{let o=e.get(t.TTYG);return o||(o=n),o.agent||(o.agent={}),o.chat||(o.chat={}),o};return{saveAgent:function(n){const i=o();i.agent.id=n?n.id:void 0,e.set(t.TTYG,i)},getAgentId:function(){const e=o();if(e.agent)return e.agent.id},saveChat:function(n){const i=o();i.chat.id=n?n.id:void 0,e.set(t.TTYG,i)},getChatId:function(){const e=o();if(e.chat)return e.chat.id}}}angular.module("graphdb.framework.ttyg.services.ttygstorage",[]).factory("TTYGStorageService",n),n.$inject=["LocalStorageAdapter","LSKeys"]},196:function(e,t,n){"use strict";n.r(t),n.d(t,"AgentSettingsModal",(function(){return o}));class o{constructor(e,t,n,o){this.activeRepositoryInfo=e,this.activeRepositoryList=t,this.agentFormModel=n,this.operation=o}}},300:function(e,t,n){"use strict";n.r(t);n(189),n(190),n(191),n(192),n(193),n(194),n(105);var o=n(79),i=(n(195),n(98)),s=n(106),a=n(102),r=n(164),c=n(84),l=n(23),d=n(533),g=n(196),u=n(0),h=n(176),m=n(112);function p(e,t,n,p,T,E,y,f,C,A,v,S,I,_,R){const b=[],N={filter_all:y.instant("ttyg.agent.btn.filter.all")};p.helpTemplateUrl="js/angular/ttyg/templates/chatInfo.html",p.isHelpVisible=!1,p.showChats=!0,p.showAgents=!1,p.chats=void 0,p.loadingChats=!1,p.loadingChat=!1,p.initialized=!1,p.agents=void 0,p.selectedAgent=void 0,p.loadingAgents=!1,p.reloadingAgents=!1,p.connectorID=void 0,p.canModifyAgent=!1,p.agentListFilterModel=[],p.activeRepositoryList=[],p.onopen=p.onclose=()=>angular.noop(),p.startNewChat=()=>{_.deselectChat()},p.toggleChatsListSidebar=()=>{p.showChats=!p.showChats},p.toggleAgentsListSidebar=()=>{p.showAgents=!p.showAgents},p.onToggleHelp=()=>{p.isHelpVisible=!p.isHelpVisible},p.onExportSelectedChat=()=>{D(_.getSelectedChat())};const M=()=>{const e=_.getDefaultAgent();return e?Promise.resolve(e):I.getDefaultAgent().then(e=>(_.setDefaultAgent(e),e))};p.onOpenNewAgentSettings=()=>{M().then(e=>{const t=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());e.repositoryId=t.id;const n=Object(r.agentFormModelMapper)(new s.AgentModel({}),e,i.AGENT_OPERATION.CREATE);return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(t,p.activeRepositoryList,n,i.AGENT_OPERATION.CREATE)}},size:"lg"}}).then(e=>{f.open(e).result.then(G)}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})},p.onOpenAgentSettings=e=>{let t=e;t||(t=_.getSelectedAgent()),M().then(e=>{const n=Object(r.agentFormModelMapper)(t,e,i.AGENT_OPERATION.EDIT),o=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(o,p.activeRepositoryList,n,i.AGENT_OPERATION.EDIT)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})},p.onOpenCloneAgentSettings=e=>{M().then(t=>{const n=Object(r.agentFormModelMapper)(e,t,i.AGENT_OPERATION.CLONE);n.name="clone-"+n.name;const o=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(o,p.activeRepositoryList,n,i.AGENT_OPERATION.CLONE)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})};const L=()=>(p.loadingChats=!0,I.getConversations().then(e=>_.updateChats(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH)),F(new a.ChatsListModel)}).finally(()=>{p.loadingChats=!1})),G=()=>(p.reloadingAgents=!0,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.reloadingAgents=!1})),O=()=>{_.setCanModifyAgent(e.isRepoManager())},w=(e,t,n)=>{if(e.timestamp=n.timestamp,t.answers=t.answers||[],t.answers.push(...n.messages),_.updateSelectedChat(e),n.continueRunId)_.emit(o.TTYGEventName.CONTINUE_CHAT_RUN,new m.ContinueChatRun(t,n.continueRunId));else{const t=_.getChats();t.updateChatTimestamp(e.id,n.timestamp),t.updateChatName(e.id,n.chatName),e.name=n.name,_.updateChats(t),_.emit(o.TTYGEventName.LAST_MESSAGE_RECEIVED,e)}},x=(e,t,n)=>{e.chatHistory.appendItem(t),w(e,t,n)},F=e=>{e.isEmpty()?p.showChats=!1:(p.showChats=!0,_.getSelectedChat()||R.getChatId()||_.selectChat(p.chats.getFirstChat()))},D=e=>{I.exportConversation(e.id).then((function({data:t,filename:n}){Object(d.saveAs)(t,n),_.emit(o.TTYGEventName.CHAT_EXPORT_SUCCESSFUL,e)})).catch(()=>{_.emit(o.TTYGEventName.CHAT_EXPORT_FAILURE),A.error(y.instant("ttyg.chat.messages.export_failure"))})},Y=()=>{const e=C.getActiveRepository(),t=C.getLocalReadableGraphdbRepositories().map(t=>new s.AgentListFilterModel(t.id,t.id,t.id===e));p.agentListFilterModel=[new s.AgentListFilterModel(i.AGENTS_FILTER_ALL_KEY,N.filter_all),...t]},k=e=>{v.openModalAlert({title:y.instant("ttyg.chat.dialog.chat_is_missing.title"),message:y.instant("ttyg.chat.dialog.chat_is_missing.body")}).result.then((function(){_.deleteChat(e)}))},U=()=>{t.open("/similarity/index/create","_blank")},$=()=>{t.open("/connectors","_blank")},H=e=>{t.open(`/sparql?query=${encodeURIComponent(e)}&execute=true`,"_blank")},j=()=>{const e=R.getChatId(),t=_.getChats();e&&t.getChat(e)&&_.selectChat(_.getChats().getChat(e))};b.push(p.$watch(p.getActiveRepositoryObject,e=>{e&&(p.activeRepositoryList=C.getLocalReadableGraphdbRepositories().map(e=>new c.SelectMenuOptionsModel({value:e.id,label:e.id,data:{repository:e}})),((e=!0)=>(p.loadingAgents=e,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.loadingAgents=!1})))().then(()=>(p.initialized=!0,Y(),(()=>{const e=R.getAgentId();e&&I.getAgent(e).then(e=>{e&&_.selectAgent(e)}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})})(),L())).then(j),O())})),b.push(_.onSelectedChatChanged(e=>{e&&e.id?I.getConversation(e.id).then(t=>{_.updateSelectedChat(t),R.saveChat(e)}).catch(t=>{t.status===h.status.NOT_FOUND&&(k(e),_.emit(o.TTYGEventName.LOAD_CHAT_FAILURE,e))}):e&&_.updateSelectedChat(e)})),b.push(_.onChatsListChanged(e=>{p.chats=e,F(e)})),b.push(_.onCanUpdateAgentUpdated(e=>{p.canModifyAgent=e})),b.push(_.subscribe(_.onAgentsListChanged(e=>{p.agents=e}))),b.push(_.subscribe(o.TTYGEventName.CREATE_CHAT,e=>{let t=_.getChats().getNonPersistedChat();t||(t=a.ChatModel.getEmptyChat(),_.addChat(t)),_.selectChat(t),I.createConversation(e).then(t=>{_.emit(o.TTYGEventName.CREATE_CHAT_SUCCESSFUL);const n=_.getSelectedChat();if(n&&!n.id){n.id=t.chatId,e.chatId=t.chatId;const o=_.getChats().getNonPersistedChat();_.replaceChat(n,o),R.saveChat(n),x(n,e,t)}}).catch(()=>{_.emit(o.TTYGEventName.CREATE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.create_failure"))})})),b.push(_.subscribe(o.TTYGEventName.RENAME_CHAT,e=>{I.renameConversation(e).then(()=>{_.emit(o.TTYGEventName.RENAME_CHAT_SUCCESSFUL),_.emit(o.TTYGEventName.LOAD_CHATS)}).catch(()=>{_.emit(o.TTYGEventName.RENAME_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.rename_failure"))})})),b.push(_.subscribe(o.TTYGEventName.DELETE_CHAT,e=>{_.emit(o.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!0}),I.deleteConversation(e.id).then(()=>{_.emit(o.TTYGEventName.DELETE_CHAT_SUCCESSFUL,e);const t=_.getChats();t.deleteChat(e),_.updateChats(t)}).catch(()=>{_.emit(o.TTYGEventName.DELETE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.delete_failure"))}).finally(()=>_.emit(o.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!1}))})),b.push(_.subscribe(o.TTYGEventName.CHAT_EXPORT,D)),b.push(_.subscribe(o.TTYGEventName.ASK_QUESTION,e=>{I.askQuestion(e).then(t=>{const n=_.getSelectedChat();n&&n.id===e.chatId&&x(n,e,t)}).catch(e=>{_.emit(o.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(o.TTYGEventName.CONTINUE_CHAT_RUN,e=>{I.continueChatRun(e).then(t=>{const n=e.chatId,o=_.getSelectedChat();if(o&&o.id===n){const e=o.chatHistory.items,n=e[e.length-1];w(o,n,t)}}).catch(e=>{_.emit(o.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(o.TTYGEventName.LOAD_CHATS,L)),b.push(_.subscribe(o.TTYGEventName.OPEN_AGENT_SETTINGS,p.onOpenNewAgentSettings)),b.push(_.subscribe(o.TTYGEventName.EDIT_AGENT,p.onOpenAgentSettings)),b.push(_.subscribe(o.TTYGEventName.CLONE_AGENT,p.onOpenCloneAgentSettings)),b.push(_.subscribe(o.TTYGEventName.DELETE_AGENT,e=>{_.emit(o.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!0}),I.deleteAgent(e.id).then(()=>G()).then(()=>{_.emit(o.TTYGEventName.AGENT_DELETED,e),p.selectedAgent&&p.selectedAgent.id===e.id&&(p.selectedAgent=void 0)}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{_.emit(o.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!1})})})),b.push(_.subscribe(o.TTYGEventName.AGENT_SELECTED,e=>{p.selectedAgent=e,R.saveAgent(e)})),b.push(_.subscribe(o.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_similarity.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),U()})}else U()})),b.push(_.subscribe(o.TTYGEventName.GO_TO_CONNECTORS_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_connectors.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),$()})}else $()})),b.push(_.subscribe(o.TTYGEventName.GO_TO_SPARQL_EDITOR,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmation(y.instant("common.confirm"),Object(u.decodeHTML)(y.instant("ttyg.chat_panel.dialog.confirm_repository_change.body",{repositoryId:e.repositoryId})),()=>{C.setRepository(t),H(e.query)})}else H(e.query)})),b.push(n.$on("$translateChangeSuccess",()=>{N.filter_all=y.instant("ttyg.agent.btn.filter.all"),Y()})),b.push(n.$on("securityInit",O)),p.$on("$destroy",(function(){b.forEach(e=>e()),_.resetContext()}))}angular.module("graphdb.framework.ttyg.controllers.ttyg-view",["toastr","graphdb.framework.utils.localstorageadapter","graphdb.framework.core.services.ttyg-service","graphdb.framework.ttyg.services.ttygcontext","graphdb.framework.ttyg.services.ttygstorage","graphdb.framework.ttyg.directives.chat-list","graphdb.framework.ttyg.directives.chat-panel","graphdb.framework.ttyg.directives.agent-list","graphdb.framework.ttyg.directives.agent-select-menu","graphdb.framework.ttyg.directives.no-agents-view","graphdb.framework.ttyg.controllers.agent-settings-modal"]).controller("TTYGViewCtrl",p),p.$inject=["$jwtAuth","$window","$rootScope","$scope","$http","$timeout","$translate","$uibModal","$repositories","toastr","ModalService","LocalStorageAdapter","TTYGService","TTYGContextService","TTYGStorageService"]},392:function(e,t,n){"use strict";n.r(t);n(300);angular.module("graphdb.framework.ttyg",["ngRoute","graphdb.framework.ttyg.controllers.ttyg-view"])},532:function(e,t){(function(t){e.exports=t}).call(this,{})},533:function(e,t,n){var o,i=i||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),i=e.webkitRequestFileSystem,s=e.requestFileSystem||i||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},r=0,c=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,500)},l=function(e,t,n){for(var o=(t=[].concat(t)).length;o--;){var i=e["on"+t[o]];if("function"==typeof i)try{i.call(e,n||e)}catch(e){a(e)}}},d=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},g=function(t,a){t=d(t);var g,u,h,m=this,p=t.type,T=!1,E=function(){l(m,"writestart progress write writeend".split(" "))},y=function(){(!T&&g||(g=n().createObjectURL(t)),u)?u.location.href=g:null==e.open(g,"_blank")&&"undefined"!=typeof safari&&(e.location.href=g);m.readyState=m.DONE,E(),c(g)},f=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},C={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),o)return g=n().createObjectURL(t),o.href=g,o.download=a,void setTimeout((function(){var e,t;e=o,t=new MouseEvent("click"),e.dispatchEvent(t),E(),c(g),m.readyState=m.DONE}));e.chrome&&p&&"application/octet-stream"!==p&&(h=t.slice||t.webkitSlice,t=h.call(t,0,t.size,"application/octet-stream"),T=!0),i&&"download"!==a&&(a+=".download"),("application/octet-stream"===p||i)&&(u=e),s?(r+=t.size,s(e.TEMPORARY,r,f((function(e){e.root.getDirectory("saved",C,f((function(e){var n=function(){e.getFile(a,C,f((function(e){e.createWriter(f((function(n){n.onwriteend=function(t){u.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),y)})),y)};e.getFile(a,{create:!1},f((function(e){e.remove(),n()})),f((function(e){e.code===e.NOT_FOUND_ERR?n():y()})))})),y)})),y)):y()},u=g.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(d(e),t)}:(u.abort=function(){this.readyState=this.DONE,l(this,"abort")},u.readyState=u.INIT=0,u.WRITING=1,u.DONE=2,u.error=u.onwritestart=u.onprogress=u.onwrite=u.onabort=u.onerror=u.onwriteend=null,function(e,t){return new g(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
- /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=i:null!==n(537)&&null!=n(532)&&(void 0===(o=function(){return i}.apply(t,[]))||(e.exports=o))},537:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},82:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexType",(function(){return o}));const o={TEXT:"text",TEXT_LITERAL:"textLiteral",PREDICATION:"predication",isTextType:e=>o.TEXT===e,isTextLiteralType:e=>o.TEXT_LITERAL===e,isPredicationType:e=>o.PREDICATION===e}},85:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexStatus",(function(){return o}));const o={CREATING:"CREATING",BUILDING:"BUILDING",BUILT:"BUILT",REBUILDING:"REBUILDING",OUTDATED:"OUTDATED",INTERRUPTED:"INTERRUPTED",OBSOLETE:"OBSOLETE",FAILED:"FAILED",isCreatingStatus:e=>o.CREATING===e,isBuildingStatus:e=>o.BUILDING===e,isBuiltStatus:e=>o.BUILT===e,isRebuildingStatus:e=>o.REBUILDING===e,isOutdatedStatus:e=>o.OUTDATED===e,isInterruptedStatus:e=>o.INTERRUPTED===e,isObsoleteStatus:e=>o.OBSOLETE===e,isFailedStatus:e=>o.FAILED===e}},86:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndex",(function(){return s}));var o=n(82),i=n(85);class s{constructor(){this.analyzer="",this.infer=!0,this.options="",this.sameAs=!0,this.searchQuery="",this.selectQuery="",this.stopList=void 0,this.name="",this.type=o.SimilarityIndexType.TEXT,this.status=void 0,this.analogicalQuery=void 0,this.inputIndex=void 0,this.isLiteralIndex=""}isTextType(){return o.SimilarityIndexType.isTextType(this.type)}isTextLiteralType(){return o.SimilarityIndexType.isTextLiteralType(this.type)}isPredicationType(){return o.SimilarityIndexType.isPredicationType(this.type)}isCreatingStatus(){return i.SimilarityIndexStatus.isCreatingStatus(this.status)}isBuildingStatus(){return i.SimilarityIndexStatus.isBuildingStatus(this.status)}isBuiltStatus(){return i.SimilarityIndexStatus.isBuiltStatus(this.status)}isRebuildingStatus(){return i.SimilarityIndexStatus.isRebuildingStatus(this.status)}isOutdatedStatus(){return i.SimilarityIndexStatus.isOutdatedStatus(this.status)}isInterruptedStatus(){return i.SimilarityIndexStatus.isInterruptedStatus(this.status)}isObsoleteStatus(){return i.SimilarityIndexStatus.isObsoleteStatus(this.status)}isFailedStatus(){return i.SimilarityIndexStatus.isFailedStatus(this.status)}}},90:function(e,t,n){"use strict";n.r(t),n.d(t,"mapIndexesResponseToSimilarityIndex",(function(){return i}));var o=n(86);const i=e=>e.map(e=>{const t=new o.SimilarityIndex;return t.type=e.type,t.stopList=e.stopList,t.status=e.status,t.selectQuery=e.selectQuery,t.searchQuery=e.searchQuery,t.sameAs=e.sameAs,t.options=e.options,t.name=e.name,t.infer=e.infer,t.analyzer=e.analyzer,t.analogicalQuery=e.analogicalQuery,t})},91:function(e,t){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",n),n.$inject=["$http"];function n(e){return{getConnectors:function(t,n){if(t)return e.get("rest/connectors",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/connectors")},initConnector:function(t){return e.get("rest/connectors/options?prefix="+t)},hasConnector:function(t,n,o){if(n)return e.get("rest/connectors/existing?prefix="+t,{headers:{"X-GraphDB-Repository":n,"X-GraphDB-Repository-Location":o}});return e.get("rest/connectors/existing?prefix="+t)},checkConnector:function(t){return e.post("rest/connectors/check",t,{headers:{"Content-Type":"text/plain"}})}}}},94:function(e,t,n){"use strict";n.r(t),n.d(t,"ConnectorTypesListModel",(function(){return o})),n.d(t,"ConnectorTypeModel",(function(){return i})),n.d(t,"ConnectorListModel",(function(){return s})),n.d(t,"ConnectorModel",(function(){return a})),n.d(t,"ConnectorSettingsModel",(function(){return r}));class o{constructor(e={}){this._connectors=e.connectors||[]}getConnectorByName(e){return this._connectors.find(t=>t.name===e)}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class i{constructor(e){this._name=e.name,this._prefix=e.prefix}get name(){return this._name}set name(e){this._name=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}}class s{constructor(e=[]){this._connectors=e.connectors}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class a{constructor(e){this._name=e.name,this._settings=new r(e)}get settings(){return this._settings}set settings(e){this._settings=e}get name(){return this._name}set name(e){this._name=e}}class r{constructor(e){this._settings=e.values||{}}get settings(){return this._settings}set settings(e){this._settings=e}}},95:function(e,t){angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",n),n.$inject=["$http","$repositories"];function n(e){return{getIndexes:function(t,n){if(t)return e.get("rest/similarity",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/similarity")},getSearchQueries:function(){return e.get("rest/similarity/config")},rebuildIndex:function(e){return t("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(t){return e.delete("rest/similarity?name="+t.name)},createIndex:t,getSamples:function(){return e.get("rest/similarity/samples")},getQuery:function(t){return e.get("rest/similarity/query",{params:{name:t.indexName,options:t.indexOptions,stopList:t.indexStopList,selectQuery:t.query,infer:t.queryInference,sameAs:t.querySameAs,type:t.viewType,analyzer:t.indexAnalyzer}})},saveSearchQuery:function(t){return e({method:"put",url:"rest/similarity/search-query",data:t})}};function t(t,n,o,i,s,a,r,c,l,d,g){return e({method:t,url:"rest/similarity",noCancelOnRouteChange:!0,data:{name:n,options:o,selectQuery:i,stopList:r,infer:c,sameAs:l,type:d,analyzer:g,searchQuery:s,analogicalQuery:a}})}}},96:function(e,t,n){"use strict";n.r(t);n(91);var o=n(101),i=n(84);function s(e){const t=(t,n)=>e.getConnectors(t,n).then(e=>Object(o.connectorTypesListMapper)(e.data)),n=(t,n,i)=>e.hasConnector(encodeURIComponent(t),n,i).then(e=>Object(o.connectorsMapper)(e.data));return{getConnectorTypes:t,getConnectorsByType:n,getConnectorPrefixByName:(e,n,o)=>t(n,o).then(t=>{const n=t.getConnectorByName(e);return n?n.prefix:null}),getConnectorsByTypeAsSelectMenuOptions:(e,t,o)=>n(e,t,o).then(e=>e.connectors.map(e=>new i.SelectMenuOptionsModel({value:e.name,label:e.name})))}}angular.module("graphdb.framework.core.services.connectors",["graphdb.framework.rest.connectors.service"]).factory("ConnectorsService",s),s.$inject=["ConnectorsRestService"]},97:function(e,t,n){"use strict";n.r(t);n(95);var o=n(90),i=n(84);function s(e){const t=(t,n)=>e.getIndexes(t,n).then(e=>Object(o.mapIndexesResponseToSimilarityIndex)(e.data));return{getIndexes:t,getIndexesAsMenuModel:(e,n)=>t(e,n).then(e=>e.map(e=>new i.SelectMenuOptionsModel({label:e.name,value:e.name})))}}angular.module("graphdb.framework.core.services.similarity",["graphdb.framework.rest.similarity.service"]).factory("SimilarityService",s),s.$inject=["SimilarityRestService"]}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[23,24,29,63,76,97,140,193,196,251,252,288,297,309,314],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"connectorTypesListMapper",(function(){return i})),n.d(t,"connectorsMapper",(function(){return a}));var o=n(94);const i=e=>{const t=new o.ConnectorTypesListModel;return e?(t.connectors=Object.keys(e).map(t=>new o.ConnectorTypeModel({name:t,prefix:e[t]})),t):t},a=e=>{const t=new o.ConnectorListModel;return e?(t.connectors=e.map(e=>new o.ConnectorModel(e)),t):t}},128:function(e,t){function n(e){return{restrict:"E",scope:{fieldName:"@",source:"=",onSave:"&",onCancel:"&",onClick:"&",onDblclick:"&",isEditing:"="},templateUrl:"js/angular/core/directives/inline-editable-text/templates/inline-editable-text.template.html",link:function(t,n){t.editableModel={};const o=[];let i;t.onKeydown=e=>{"Enter"===e.key?(s(),t.editableModel.text!==t.text&&t.onSave({newText:t.editableModel.text,source:t.source})):"Escape"===e.key&&a()},t.onCancelEditing=()=>{a()},t.onSelect=()=>{i?(s(),t.onDblclick({source:t.source})):i=e((function(){t.onClick({source:t.source}),s()}),250)};const a=()=>{s(),t.onCancel()},s=()=>{e.cancel(i),i=void 0};o.push(t.$watch("isEditing",o=>{o&&(t.editableModel.text=t.source[t.fieldName],e(()=>{const e=n.find("input")[0];e.focus(),e.select()},0))}));t.$on("$destroy",()=>{o.forEach(e=>e()),s()})}}}angular.module("graphdb.framework.core.directives.inline-editable-text",[]).directive("inlineEditableText",n),n.$inject=["$timeout"]},137:function(e,t,n){"use strict";n.r(t);n(97),n(96),n(105),n(19);function o(e,t,n,o,i){e.agentInstructionsExplain=i.agentInstructionsExplain,e.close=()=>{t.dismiss({})},e.onCloseAgentInstructionsExplainModal=()=>{t.dismiss({})};const a=[];e.$on("$destroy",()=>{a.forEach(e=>e())})}angular.module("graphdb.framework.ttyg.controllers.agent-instructions-explain-modal",[]).controller("AgentInstructionsExplainModalController",o),o.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},176:function(e,t,n){"use strict";n.r(t),n.d(t,"status",(function(){return o}));const o={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,CONFLICT:409,INTERNAL_SERVER_ERROR:500,SERVICE_UNAVAILABLE:503}},189:function(e,t,n){"use strict";n.r(t);n(128);var o=n(79),i=n(136),a=n(0);function s(e,t,n,s){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-list.html",link:r=>{r.selectedChat=void 0,r.renamedChat=void 0,r.deletingChat=void 0,r.onSelectChatForRenaming=e=>{r.renamedChat=e},r.onSelectChat=t=>{if(!r.selectedChat||r.selectedChat.id!==t.id){const n=e.getChats().getNonPersistedChat();n&&e.deleteChat(n),e.selectChat(t),r.renamedChat=void 0}},r.onDeleteChat=i=>{const s=n.instant("ttyg.dialog.delete.title"),r=Object(a.decodeHTML)(n.instant("ttyg.dialog.delete.body",{chatName:i.name}));t.openConfirmation(s,r,()=>e.emit(o.TTYGEventName.DELETE_CHAT,i))},r.onRenameChat=(t,n)=>{n.name=t,r.renamedChat=void 0,e.emit(o.TTYGEventName.RENAME_CHAT,n)},r.onExportChat=t=>{e.emit(o.TTYGEventName.CHAT_EXPORT,t)},r.onCancelChatRenaming=()=>{r.renamedChat=void 0},r.getHumanReadableChatGroupTimestamp=e=>Object(i.getHumanReadableTimestamp)(n,s,e);const c=e=>{r.selectedChat=e},l=[];l.push(e.onSelectedChatChanged(c)),l.push(e.onSelectedChatUpdated(c)),l.push(e.onChatsListChanged(e=>{r.chatList=e})),l.push(e.subscribe(o.TTYGEventName.DELETING_CHAT,e=>{r.deletingChat=e})),r.$on("$destroy",()=>{l.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.chat-list",["graphdb.framework.core.directives.inline-editable-text"]).directive("chatList",s),s.$inject=["TTYGContextService","ModalService","$translate","$filter"]},190:function(e,t,n){"use strict";n.r(t);n(199);var o=n(79),i=n(83),a=n(87),s=n(33),r=n(0),c=n(102);function l(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-panel.html",link:(e,l,d)=>{e.chat=void 0,e.selectedAgent=void 0,e.chatItem=void 0,e.askingChatItem=void 0,e.waitingForLastMessage=!1,e.loadingChat=!0,e.ask=()=>{e.chatItem.question.timestamp=Date.now(),e.askingChatItem=Object(s.cloneDeep)(e.chatItem),e.chatItem.chatId?u(e.chatItem):g(),e.chatItem=m(),T(),p()},e.regenerateQuestion=t=>{const n=m();n.setQuestionMessage(t.getQuestionMessage()),n.question.timestamp=Date.now(),e.askingChatItem=n,u(n),T()},e.onKeypressOnInput=t=>{"Enter"!==t.key||t.shiftKey||t.ctrlKey||e.ask()},e.onAskHowDeliveredAnswer=()=>{const n=m();n.setQuestionMessage(t.instant("ttyg.chat_panel.btn.derive_answer.label")),n.question.timestamp=Date.now(),e.askingChatItem=Object(s.cloneDeep)(n),u(n),T()},e.getAgentName=e=>{const o=n.getAgent(e);return o?o.name:Object(r.decodeHTML)(t.instant("ttyg.chat_panel.deleted_agent"))};const g=()=>{e.waitingForLastMessage=!0,n.emit(o.TTYGEventName.CREATE_CHAT,e.chatItem)},u=t=>{e.waitingForLastMessage=!0,n.emit(o.TTYGEventName.ASK_QUESTION,t)},h=()=>{e.chatItem=Object(s.cloneDeep)(e.askingChatItem),e.askingChatItem=void 0,e.waitingForLastMessage=!1},m=()=>{const t=new a.ChatItemModel;return t.question=new i.ChatMessageModel({role:i.CHAT_MESSAGE_ROLE.USER}),e.chat&&(t.chatId=e.chat.id),e.selectedAgent&&(t.agentId=e.selectedAgent.id),t},p=()=>{const e=l.find(".question-input");e.length&&e[0].focus()},T=()=>{setTimeout(()=>{const e=l.find(".chat-details")[0];e&&(e.scrollTop=e.scrollHeight)})},E=()=>{e.chat=c.ChatModel.getEmptyChat(),e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.waitingForLastMessage=!1,p()},y=[];y.push(e.$watchCollection("chat.chatHistory.items",T)),y.push(n.onSelectedChatUpdated(t=>{if(e.chat=t,t&&(t.id||!e.askingChatItem)){if(e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.chat){const t=e.chat.chatHistory.getLast();t&&t.agentId&&n.selectAgent(n.getAgent(t.agentId))}p()}})),y.push(n.onLastMessageReceived(()=>{e.waitingForLastMessage=!1})),y.push(n.onSelectedAgentChanged(t=>{e.selectedAgent=t,e.selectedAgent&&e.chatItem&&(e.chatItem.agentId=e.selectedAgent.id)})),y.push(n.onSelectedChatChanged(t=>{t?(e.loadingChat=t&&t.id,e.chatItem=m(),p()):E()})),y.push(n.subscribe(o.TTYGEventName.LOAD_CHAT_FAILURE,()=>{e.loadingChat=!1,e.chatItem=m(),p()})),y.push(n.subscribe(o.TTYGEventName.ASK_QUESTION_FAILURE,h)),y.push(n.subscribe(o.TTYGEventName.CREATE_CHAT_FAILURE,h)),y.push(n.subscribe(o.TTYGEventName.DELETE_CHAT_SUCCESSFUL,t=>{e.chat&&t.id===e.chat.id&&E()})),e.$on("$destroy",()=>{y.forEach(e=>e())}),e.chat=c.ChatModel.getEmptyChat(),e.chatItem=m(),p()}}}angular.module("graphdb.framework.ttyg.directives.chat-panel",["graphdb.framework.ttyg.directives.chat-item-detail"]).directive("chatPanel",l),l.$inject=["toastr","$translate","TTYGContextService"]},191:function(e,t,n){"use strict";n.r(t);var o=n(0),i=n(79);function a(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-list.html",scope:{agentList:"=",agentListFilterModel:"="},link:(a,s,r)=>{a.selectedAgent=void 0,a.selectedAgentsFilter=void 0,a.deletingAgent=void 0,a.onEditAgent=t=>{e.emit(i.TTYGEventName.EDIT_AGENT,t)},a.onCloneAgent=t=>{e.emit(i.TTYGEventName.CLONE_AGENT,t)},a.onDeleteAgent=a=>{const s=n.instant("ttyg.agent.delete_agent_modal.title"),r=Object(o.decodeHTML)(n.instant("ttyg.agent.delete_agent_modal.body",{agentName:a.name}));t.openConfirmation(s,r,()=>e.emit(i.TTYGEventName.DELETE_AGENT,a))},a.onAgentsFilterChange=e=>{a.selectedAgentsFilter=e,a.selectedAgentsFilter&&a.agentList.filterByRepository(a.selectedAgentsFilter.key)};const c=()=>{const e=a.agentListFilterModel.find(e=>e.selected);a.selectedAgentsFilter=e||a.agentListFilterModel[0],a.onAgentsFilterChange(a.selectedAgentsFilter)},l=[];l.push(a.$watch("agentListFilterModel",c)),l.push(e.subscribe(i.TTYGEventName.DELETING_AGENT,e=>{a.deletingAgent=e})),l.push(e.onSelectedAgentChanged(e=>{a.selectedAgent=e})),a.$on("$destroy",()=>{l.forEach(e=>e())}),c()}}}angular.module("graphdb.framework.ttyg.directives.agent-list",[]).directive("agentList",a),a.$inject=["TTYGContextService","ModalService","$translate"]},192:function(e,t,n){"use strict";n.r(t);var o=n(84),i=n(79);function a(e,t,n,a){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-select-menu.html",scope:{},link:n=>{n.agentOptionsList=[],n.selectedAgent=void 0,n.onAgentSelected=o=>{if(s(o),n.selectedAgent=o,e.selectAgent(o),o.isRepositoryDeleted){const n=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.title"),s=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.body");a.openConfirmation(n,s,()=>e.emit(i.TTYGEventName.EDIT_AGENT,o))}};const s=e=>{n.agentOptionsList.forEach(t=>{t.selected=t.data.agent===e})},r=e=>{n.agentOptionsList=e.agents.map(e=>new o.SelectMenuOptionsModel({value:e.id,label:e.name,data:{agent:e}}))},c=[];c.push(e.onAgentsListChanged(e=>{r(e)})),c.push(e.subscribe(i.TTYGEventName.AGENT_DELETED,t=>{n.selectedAgent&&n.selectedAgent.id===t.id&&(n.selectedAgent.isDeleted=!0,e.selectAgent(n.selectedAgent))})),c.push(e.onSelectedAgentChanged(e=>{s(e),n.selectedAgent=e})),n.$on("$destroy",()=>{c.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.agent-select-menu",[]).directive("agentSelectMenu",a),a.$inject=["TTYGContextService","$translate","$sce","ModalService"]},193:function(e,t,n){"use strict";n.r(t);var o=n(79),i=n(13);function a(e,t){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/no-agents-view.html",scope:{},link:n=>{n.canModifyAgent=!1,n.talkToGraphDocumentationLink=i.DocumentationUrlResolver.getDocumentationUrl(t.productShortVersion,"talk-to-graph.html"),n.onCreateAgent=()=>{e.emit(o.TTYGEventName.OPEN_AGENT_SETTINGS)};const a=[];a.push(e.onCanUpdateAgentUpdated(e=>{n.canModifyAgent=e})),n.$on("$destroy",()=>{a.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.no-agents-view",[]).directive("noAgentsView",a),a.$inject=["TTYGContextService","productInfo"]},194:function(e,t,n){"use strict";n.r(t);var o=n(0),i=n(106),a=(n(97),n(96),n(105),n(19),n(137),n(9)),s=n(79),r=n(98);function c(e,t,n,c,l,d,g,u,h,m,p,T,E,y){e.AGENT_OPERATION=r.AGENT_OPERATION,e.operation=T.operation,e.savingAgent=!1,e.agentFormModel=T.agentFormModel,e.activeRepositoryInfo=T.activeRepositoryInfo,e.extractionMethodLoaderFlags={[i.ExtractionMethod.SIMILARITY]:!1},e.activeRepositoryList=T.activeRepositoryList,e.extractionMethods=i.ExtractionMethod,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.similarityIndexes=[],e.retrievalConnectors=[],e.ftsEnabled=!1,e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),I(),L[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),L[e.method](e)},e.getModelHelpMessage=()=>{const e=Object(o.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.model.hint"));return u.trustAsHtml(e)},e.getFTSDisabledHelpMessage=()=>{const t=Object(o.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"#/repository/edit/"+e.agentFormModel.repositoryId}));return u.trustAsHtml(t)},e.goToCreateSimilarityView=()=>{E.emit(s.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=()=>{E.emit(s.TTYGEventName.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return f[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();n.selected&&(t&&(n.similarityIndex=null),R(n))},e.updateRetrievalConnectorPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();n.selected&&(t&&(n.retrievalConnectorInstance=null),N(n))},e.checkIfFTSEnabled=()=>{if(!e.agentFormModel.repositoryId)return void e.agentSettingsForm.$setValidity("FTSDisabled",!1);e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[i.ExtractionMethod.FTS_SEARCH]=!0,g.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(a.REPOSITORY_PARAMS.enableFtsIndex)}).catch(e=>{S(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[i.ExtractionMethod.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0)},e.onRepositoryChange=()=>{G(!0,!0)},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,n.openModalAlert({title:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then((function(){}))),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();y.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};c.open(t).result.then(()=>{})}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))})};const f={[r.AGENT_OPERATION.CREATE]:e=>C(e),[r.AGENT_OPERATION.EDIT]:e=>A(e),[r.AGENT_OPERATION.CLONE]:e=>v(e)},C=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),A=n=>(e.savingAgent=!0,y.editAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),v=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),S=(e,t)=>{console.error(e),h.error(p.instant(t))},I=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},_=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},R=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();l.getIndexesAsMenuModel(n.repositoryId,n.repositoryLocation).then(n=>{e.similarityIndexes=n,e.agentSettingsForm.$setValidity("missingIndex",!t.selected||!(!n||!n.length)),b(e.similarityIndexes,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingIndex",!1),S(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},b=(e,t)=>{if(0===e.length)return void(t.similarityIndex=null);const n=e.find(e=>e.value===t.similarityIndex);t.similarityIndex=n?n.value:e[0].value},N=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();d.getConnectorPrefixByName("ChatGPT Retrieval",n.repositoryId,n.repositoryLocation).then(e=>d.getConnectorsByTypeAsSelectMenuOptions(e,n.repositoryId,n.repositoryLocation)).then(n=>{e.retrievalConnectors=n,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!n||!n.length)),M(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),S(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},M=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const n=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=n?n.value:e[0].value},L={[i.ExtractionMethod.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[i.ExtractionMethod.SPARQL]:e=>{},[i.ExtractionMethod.SIMILARITY]:e=>R(e),[i.ExtractionMethod.RETRIEVAL]:e=>N(e)},G=(t=!1,n=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(n)},O=()=>{document.hidden||G()};document.addEventListener("visibilitychange",O),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",O)});setTimeout(I,0)}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal"]).controller("AgentSettingsModalController",c),c.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService"]},195:function(e,t){function n(e,t){const n={agent:{id:void 0},chat:{id:void 0}},o=()=>{let o=e.get(t.TTYG);return o||(o=n),o.agent||(o.agent={}),o.chat||(o.chat={}),o};return{saveAgent:function(n){const i=o();i.agent.id=n?n.id:void 0,e.set(t.TTYG,i)},getAgentId:function(){const e=o();if(e.agent)return e.agent.id},saveChat:function(n){const i=o();i.chat.id=n?n.id:void 0,e.set(t.TTYG,i)},getChatId:function(){const e=o();if(e.chat)return e.chat.id}}}angular.module("graphdb.framework.ttyg.services.ttygstorage",[]).factory("TTYGStorageService",n),n.$inject=["LocalStorageAdapter","LSKeys"]},196:function(e,t,n){"use strict";n.r(t),n.d(t,"AgentSettingsModal",(function(){return o}));class o{constructor(e,t,n,o){this.activeRepositoryInfo=e,this.activeRepositoryList=t,this.agentFormModel=n,this.operation=o}}},300:function(e,t,n){"use strict";n.r(t);n(189),n(190),n(191),n(192),n(193),n(194),n(105);var o=n(79),i=(n(195),n(98)),a=n(106),s=n(102),r=n(164),c=n(84),l=n(23),d=n(533),g=n(196),u=n(0),h=n(176),m=n(112);function p(e,t,n,p,T,E,y,f,C,A,v,S,I,_,R){const b=[],N={filter_all:y.instant("ttyg.agent.btn.filter.all")};p.helpTemplateUrl="js/angular/ttyg/templates/chatInfo.html",p.isHelpVisible=!1,p.showChats=!0,p.showAgents=!1,p.chats=void 0,p.loadingChats=!1,p.loadingChat=!1,p.initialized=!1,p.agents=void 0,p.selectedAgent=void 0,p.loadingAgents=!1,p.reloadingAgents=!1,p.connectorID=void 0,p.canModifyAgent=!1,p.agentListFilterModel=[],p.activeRepositoryList=[],p.onopen=p.onclose=()=>angular.noop(),p.startNewChat=()=>{_.deselectChat()},p.toggleChatsListSidebar=()=>{p.showChats=!p.showChats},p.toggleAgentsListSidebar=()=>{p.showAgents=!p.showAgents},p.onToggleHelp=()=>{p.isHelpVisible=!p.isHelpVisible},p.onExportSelectedChat=()=>{D(_.getSelectedChat())};const M=()=>{const e=_.getDefaultAgent();return e?Promise.resolve(e):I.getDefaultAgent().then(e=>(_.setDefaultAgent(e),e))};p.onOpenNewAgentSettings=()=>{M().then(e=>{const t=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());e.repositoryId=t.id;const n=Object(r.agentFormModelMapper)(new a.AgentModel({}),e,i.AGENT_OPERATION.CREATE);return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(t,p.activeRepositoryList,n,i.AGENT_OPERATION.CREATE)}},size:"lg"}}).then(e=>{f.open(e).result.then(G)}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})},p.onOpenAgentSettings=e=>{let t=e;t||(t=_.getSelectedAgent()),M().then(e=>{const n=Object(r.agentFormModelMapper)(t,e,i.AGENT_OPERATION.EDIT),o=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(o,p.activeRepositoryList,n,i.AGENT_OPERATION.EDIT)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})},p.onOpenCloneAgentSettings=e=>{M().then(t=>{const n=Object(r.agentFormModelMapper)(e,t,i.AGENT_OPERATION.CLONE);n.name="clone-"+n.name;const o=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(o,p.activeRepositoryList,n,i.AGENT_OPERATION.CLONE)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})};const L=()=>(p.loadingChats=!0,I.getConversations().then(e=>_.updateChats(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH)),F(new s.ChatsListModel)}).finally(()=>{p.loadingChats=!1})),G=()=>(p.reloadingAgents=!0,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.reloadingAgents=!1})),O=()=>{_.setCanModifyAgent(e.isRepoManager())},w=(e,t,n)=>{if(e.timestamp=n.timestamp,t.answers=t.answers||[],t.answers.push(...n.messages),_.updateSelectedChat(e),n.continueRunId)_.emit(o.TTYGEventName.CONTINUE_CHAT_RUN,new m.ContinueChatRun(t,n.continueRunId));else{const t=_.getChats();t.updateChatTimestamp(e.id,n.timestamp),t.updateChatName(e.id,n.chatName),e.name=n.name,_.updateChats(t),_.emit(o.TTYGEventName.LAST_MESSAGE_RECEIVED,e)}},x=(e,t,n)=>{e.chatHistory.appendItem(t),w(e,t,n)},F=e=>{e.isEmpty()?p.showChats=!1:(p.showChats=!0,_.getSelectedChat()||R.getChatId()||_.selectChat(p.chats.getFirstChat()))},D=e=>{I.exportConversation(e.id).then((function({data:t,filename:n}){Object(d.saveAs)(t,n),_.emit(o.TTYGEventName.CHAT_EXPORT_SUCCESSFUL,e)})).catch(()=>{_.emit(o.TTYGEventName.CHAT_EXPORT_FAILURE),A.error(y.instant("ttyg.chat.messages.export_failure"))})},Y=()=>{const e=C.getActiveRepository(),t=C.getLocalReadableGraphdbRepositories().map(t=>new a.AgentListFilterModel(t.id,t.id,t.id===e));p.agentListFilterModel=[new a.AgentListFilterModel(i.AGENTS_FILTER_ALL_KEY,N.filter_all),...t]},k=e=>{v.openModalAlert({title:y.instant("ttyg.chat.dialog.chat_is_missing.title"),message:y.instant("ttyg.chat.dialog.chat_is_missing.body")}).result.then((function(){_.deleteChat(e)}))},U=()=>{t.open("/similarity/index/create","_blank")},$=()=>{t.open("/connectors","_blank")},H=e=>{t.open(`/sparql?query=${encodeURIComponent(e)}&execute=true`,"_blank")},j=()=>{const e=R.getChatId(),t=_.getChats();e&&t.getChat(e)&&_.selectChat(_.getChats().getChat(e))};b.push(p.$watch(p.getActiveRepositoryObject,e=>{e&&(p.activeRepositoryList=C.getLocalReadableGraphdbRepositories().map(e=>new c.SelectMenuOptionsModel({value:e.id,label:e.id,data:{repository:e}})),((e=!0)=>(p.loadingAgents=e,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.loadingAgents=!1})))().then(()=>(p.initialized=!0,Y(),L())).then(j),O())})),b.push(_.onSelectedChatChanged(e=>{e&&e.id?I.getConversation(e.id).then(t=>{_.updateSelectedChat(t),R.saveChat(e)}).catch(t=>{t.status===h.status.NOT_FOUND&&(k(e),_.emit(o.TTYGEventName.LOAD_CHAT_FAILURE,e))}):e&&_.updateSelectedChat(e)})),b.push(_.onChatsListChanged(e=>{p.chats=e,F(e)})),b.push(_.onCanUpdateAgentUpdated(e=>{p.canModifyAgent=e})),b.push(_.subscribe(_.onAgentsListChanged(e=>{p.agents=e}))),b.push(_.subscribe(o.TTYGEventName.CREATE_CHAT,e=>{let t=_.getChats().getNonPersistedChat();t||(t=s.ChatModel.getEmptyChat(),_.addChat(t)),_.selectChat(t),I.createConversation(e).then(t=>{_.emit(o.TTYGEventName.CREATE_CHAT_SUCCESSFUL);const n=_.getSelectedChat();if(n&&!n.id){n.id=t.chatId,e.chatId=t.chatId;const o=_.getChats().getNonPersistedChat();_.replaceChat(n,o),R.saveChat(n),x(n,e,t)}}).catch(()=>{_.emit(o.TTYGEventName.CREATE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.create_failure"))})})),b.push(_.subscribe(o.TTYGEventName.RENAME_CHAT,e=>{I.renameConversation(e).then(()=>{_.emit(o.TTYGEventName.RENAME_CHAT_SUCCESSFUL),_.emit(o.TTYGEventName.LOAD_CHATS)}).catch(()=>{_.emit(o.TTYGEventName.RENAME_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.rename_failure"))})})),b.push(_.subscribe(o.TTYGEventName.DELETE_CHAT,e=>{_.emit(o.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!0}),I.deleteConversation(e.id).then(()=>{_.emit(o.TTYGEventName.DELETE_CHAT_SUCCESSFUL,e);const t=_.getChats();t.deleteChat(e),_.updateChats(t)}).catch(()=>{_.emit(o.TTYGEventName.DELETE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.delete_failure"))}).finally(()=>_.emit(o.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!1}))})),b.push(_.subscribe(o.TTYGEventName.CHAT_EXPORT,D)),b.push(_.subscribe(o.TTYGEventName.ASK_QUESTION,e=>{I.askQuestion(e).then(t=>{const n=_.getSelectedChat();n&&n.id===e.chatId&&x(n,e,t)}).catch(e=>{_.emit(o.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(o.TTYGEventName.CONTINUE_CHAT_RUN,e=>{I.continueChatRun(e).then(t=>{const n=e.chatId,o=_.getSelectedChat();if(o&&o.id===n){const e=o.chatHistory.items,n=e[e.length-1];w(o,n,t)}}).catch(e=>{_.emit(o.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(o.TTYGEventName.LOAD_CHATS,L)),b.push(_.subscribe(o.TTYGEventName.OPEN_AGENT_SETTINGS,p.onOpenNewAgentSettings)),b.push(_.subscribe(o.TTYGEventName.EDIT_AGENT,p.onOpenAgentSettings)),b.push(_.subscribe(o.TTYGEventName.CLONE_AGENT,p.onOpenCloneAgentSettings)),b.push(_.subscribe(o.TTYGEventName.DELETE_AGENT,e=>{_.emit(o.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!0}),I.deleteAgent(e.id).then(()=>G()).then(()=>{_.emit(o.TTYGEventName.AGENT_DELETED,e),p.selectedAgent&&p.selectedAgent.id===e.id&&(p.selectedAgent=void 0)}).catch(e=>{A.error(getError(e,0,i.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{_.emit(o.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!1})})})),b.push(_.subscribe(o.TTYGEventName.AGENT_SELECTED,e=>{p.selectedAgent=e})),b.push(_.subscribe(o.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_similarity.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),U()})}else U()})),b.push(_.subscribe(o.TTYGEventName.GO_TO_CONNECTORS_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_connectors.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),$()})}else $()})),b.push(_.subscribe(o.TTYGEventName.GO_TO_SPARQL_EDITOR,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmation(y.instant("common.confirm"),Object(u.decodeHTML)(y.instant("ttyg.chat_panel.dialog.confirm_repository_change.body",{repositoryId:e.repositoryId})),()=>{C.setRepository(t),H(e.query)})}else H(e.query)})),b.push(n.$on("$translateChangeSuccess",()=>{N.filter_all=y.instant("ttyg.agent.btn.filter.all"),Y()})),b.push(n.$on("securityInit",O)),p.$on("$destroy",(function(){b.forEach(e=>e()),_.resetContext()}))}angular.module("graphdb.framework.ttyg.controllers.ttyg-view",["toastr","graphdb.framework.utils.localstorageadapter","graphdb.framework.core.services.ttyg-service","graphdb.framework.ttyg.services.ttygcontext","graphdb.framework.ttyg.services.ttygstorage","graphdb.framework.ttyg.directives.chat-list","graphdb.framework.ttyg.directives.chat-panel","graphdb.framework.ttyg.directives.agent-list","graphdb.framework.ttyg.directives.agent-select-menu","graphdb.framework.ttyg.directives.no-agents-view","graphdb.framework.ttyg.controllers.agent-settings-modal"]).controller("TTYGViewCtrl",p),p.$inject=["$jwtAuth","$window","$rootScope","$scope","$http","$timeout","$translate","$uibModal","$repositories","toastr","ModalService","LocalStorageAdapter","TTYGService","TTYGContextService","TTYGStorageService"]},392:function(e,t,n){"use strict";n.r(t);n(300);angular.module("graphdb.framework.ttyg",["ngRoute","graphdb.framework.ttyg.controllers.ttyg-view"])},532:function(e,t){(function(t){e.exports=t}).call(this,{})},533:function(e,t,n){var o,i=i||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),i=e.webkitRequestFileSystem,a=e.requestFileSystem||i||e.mozRequestFileSystem,s=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},r=0,c=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,500)},l=function(e,t,n){for(var o=(t=[].concat(t)).length;o--;){var i=e["on"+t[o]];if("function"==typeof i)try{i.call(e,n||e)}catch(e){s(e)}}},d=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},g=function(t,s){t=d(t);var g,u,h,m=this,p=t.type,T=!1,E=function(){l(m,"writestart progress write writeend".split(" "))},y=function(){(!T&&g||(g=n().createObjectURL(t)),u)?u.location.href=g:null==e.open(g,"_blank")&&"undefined"!=typeof safari&&(e.location.href=g);m.readyState=m.DONE,E(),c(g)},f=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},C={create:!0,exclusive:!1};if(m.readyState=m.INIT,s||(s="download"),o)return g=n().createObjectURL(t),o.href=g,o.download=s,void setTimeout((function(){var e,t;e=o,t=new MouseEvent("click"),e.dispatchEvent(t),E(),c(g),m.readyState=m.DONE}));e.chrome&&p&&"application/octet-stream"!==p&&(h=t.slice||t.webkitSlice,t=h.call(t,0,t.size,"application/octet-stream"),T=!0),i&&"download"!==s&&(s+=".download"),("application/octet-stream"===p||i)&&(u=e),a?(r+=t.size,a(e.TEMPORARY,r,f((function(e){e.root.getDirectory("saved",C,f((function(e){var n=function(){e.getFile(s,C,f((function(e){e.createWriter(f((function(n){n.onwriteend=function(t){u.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),y)})),y)};e.getFile(s,{create:!1},f((function(e){e.remove(),n()})),f((function(e){e.code===e.NOT_FOUND_ERR?n():y()})))})),y)})),y)):y()},u=g.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(d(e),t)}:(u.abort=function(){this.readyState=this.DONE,l(this,"abort")},u.readyState=u.INIT=0,u.WRITING=1,u.DONE=2,u.error=u.onwritestart=u.onprogress=u.onwrite=u.onabort=u.onerror=u.onwriteend=null,function(e,t){return new g(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
+ /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=i:null!==n(537)&&null!=n(532)&&(void 0===(o=function(){return i}.apply(t,[]))||(e.exports=o))},537:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},82:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexType",(function(){return o}));const o={TEXT:"text",TEXT_LITERAL:"textLiteral",PREDICATION:"predication",isTextType:e=>o.TEXT===e,isTextLiteralType:e=>o.TEXT_LITERAL===e,isPredicationType:e=>o.PREDICATION===e}},85:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexStatus",(function(){return o}));const o={CREATING:"CREATING",BUILDING:"BUILDING",BUILT:"BUILT",REBUILDING:"REBUILDING",OUTDATED:"OUTDATED",INTERRUPTED:"INTERRUPTED",OBSOLETE:"OBSOLETE",FAILED:"FAILED",isCreatingStatus:e=>o.CREATING===e,isBuildingStatus:e=>o.BUILDING===e,isBuiltStatus:e=>o.BUILT===e,isRebuildingStatus:e=>o.REBUILDING===e,isOutdatedStatus:e=>o.OUTDATED===e,isInterruptedStatus:e=>o.INTERRUPTED===e,isObsoleteStatus:e=>o.OBSOLETE===e,isFailedStatus:e=>o.FAILED===e}},86:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndex",(function(){return a}));var o=n(82),i=n(85);class a{constructor(){this.analyzer="",this.infer=!0,this.options="",this.sameAs=!0,this.searchQuery="",this.selectQuery="",this.stopList=void 0,this.name="",this.type=o.SimilarityIndexType.TEXT,this.status=void 0,this.analogicalQuery=void 0,this.inputIndex=void 0,this.isLiteralIndex=""}isTextType(){return o.SimilarityIndexType.isTextType(this.type)}isTextLiteralType(){return o.SimilarityIndexType.isTextLiteralType(this.type)}isPredicationType(){return o.SimilarityIndexType.isPredicationType(this.type)}isCreatingStatus(){return i.SimilarityIndexStatus.isCreatingStatus(this.status)}isBuildingStatus(){return i.SimilarityIndexStatus.isBuildingStatus(this.status)}isBuiltStatus(){return i.SimilarityIndexStatus.isBuiltStatus(this.status)}isRebuildingStatus(){return i.SimilarityIndexStatus.isRebuildingStatus(this.status)}isOutdatedStatus(){return i.SimilarityIndexStatus.isOutdatedStatus(this.status)}isInterruptedStatus(){return i.SimilarityIndexStatus.isInterruptedStatus(this.status)}isObsoleteStatus(){return i.SimilarityIndexStatus.isObsoleteStatus(this.status)}isFailedStatus(){return i.SimilarityIndexStatus.isFailedStatus(this.status)}}},90:function(e,t,n){"use strict";n.r(t),n.d(t,"mapIndexesResponseToSimilarityIndex",(function(){return i}));var o=n(86);const i=e=>e.map(e=>{const t=new o.SimilarityIndex;return t.type=e.type,t.stopList=e.stopList,t.status=e.status,t.selectQuery=e.selectQuery,t.searchQuery=e.searchQuery,t.sameAs=e.sameAs,t.options=e.options,t.name=e.name,t.infer=e.infer,t.analyzer=e.analyzer,t.analogicalQuery=e.analogicalQuery,t})},91:function(e,t){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",n),n.$inject=["$http"];function n(e){return{getConnectors:function(t,n){if(t)return e.get("rest/connectors",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/connectors")},initConnector:function(t){return e.get("rest/connectors/options?prefix="+t)},hasConnector:function(t,n,o){if(n)return e.get("rest/connectors/existing?prefix="+t,{headers:{"X-GraphDB-Repository":n,"X-GraphDB-Repository-Location":o}});return e.get("rest/connectors/existing?prefix="+t)},checkConnector:function(t){return e.post("rest/connectors/check",t,{headers:{"Content-Type":"text/plain"}})}}}},94:function(e,t,n){"use strict";n.r(t),n.d(t,"ConnectorTypesListModel",(function(){return o})),n.d(t,"ConnectorTypeModel",(function(){return i})),n.d(t,"ConnectorListModel",(function(){return a})),n.d(t,"ConnectorModel",(function(){return s})),n.d(t,"ConnectorSettingsModel",(function(){return r}));class o{constructor(e={}){this._connectors=e.connectors||[]}getConnectorByName(e){return this._connectors.find(t=>t.name===e)}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class i{constructor(e){this._name=e.name,this._prefix=e.prefix}get name(){return this._name}set name(e){this._name=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}}class a{constructor(e=[]){this._connectors=e.connectors}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class s{constructor(e){this._name=e.name,this._settings=new r(e)}get settings(){return this._settings}set settings(e){this._settings=e}get name(){return this._name}set name(e){this._name=e}}class r{constructor(e){this._settings=e.values||{}}get settings(){return this._settings}set settings(e){this._settings=e}}},95:function(e,t){angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",n),n.$inject=["$http","$repositories"];function n(e){return{getIndexes:function(t,n){if(t)return e.get("rest/similarity",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/similarity")},getSearchQueries:function(){return e.get("rest/similarity/config")},rebuildIndex:function(e){return t("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(t){return e.delete("rest/similarity?name="+t.name)},createIndex:t,getSamples:function(){return e.get("rest/similarity/samples")},getQuery:function(t){return e.get("rest/similarity/query",{params:{name:t.indexName,options:t.indexOptions,stopList:t.indexStopList,selectQuery:t.query,infer:t.queryInference,sameAs:t.querySameAs,type:t.viewType,analyzer:t.indexAnalyzer}})},saveSearchQuery:function(t){return e({method:"put",url:"rest/similarity/search-query",data:t})}};function t(t,n,o,i,a,s,r,c,l,d,g){return e({method:t,url:"rest/similarity",noCancelOnRouteChange:!0,data:{name:n,options:o,selectQuery:i,stopList:r,infer:c,sameAs:l,type:d,analyzer:g,searchQuery:a,analogicalQuery:s}})}}},96:function(e,t,n){"use strict";n.r(t);n(91);var o=n(101),i=n(84);function a(e){const t=(t,n)=>e.getConnectors(t,n).then(e=>Object(o.connectorTypesListMapper)(e.data)),n=(t,n,i)=>e.hasConnector(encodeURIComponent(t),n,i).then(e=>Object(o.connectorsMapper)(e.data));return{getConnectorTypes:t,getConnectorsByType:n,getConnectorPrefixByName:(e,n,o)=>t(n,o).then(t=>{const n=t.getConnectorByName(e);return n?n.prefix:null}),getConnectorsByTypeAsSelectMenuOptions:(e,t,o)=>n(e,t,o).then(e=>e.connectors.map(e=>new i.SelectMenuOptionsModel({value:e.name,label:e.name})))}}angular.module("graphdb.framework.core.services.connectors",["graphdb.framework.rest.connectors.service"]).factory("ConnectorsService",a),a.$inject=["ConnectorsRestService"]},97:function(e,t,n){"use strict";n.r(t);n(95);var o=n(90),i=n(84);function a(e){const t=(t,n)=>e.getIndexes(t,n).then(e=>Object(o.mapIndexesResponseToSimilarityIndex)(e.data));return{getIndexes:t,getIndexesAsMenuModel:(e,n)=>t(e,n).then(e=>e.map(e=>new i.SelectMenuOptionsModel({label:e.name,value:e.name})))}}angular.module("graphdb.framework.core.services.similarity",["graphdb.framework.rest.similarity.service"]).factory("SimilarityService",a),a.$inject=["SimilarityRestService"]}}]);
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[24,29,63,76,97,140,193,196,251,252,288,297,309,314],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"connectorTypesListMapper",(function(){return o})),n.d(t,"connectorsMapper",(function(){return s}));var i=n(94);const o=e=>{const t=new i.ConnectorTypesListModel;return e?(t.connectors=Object.keys(e).map(t=>new i.ConnectorTypeModel({name:t,prefix:e[t]})),t):t},s=e=>{const t=new i.ConnectorListModel;return e?(t.connectors=e.map(e=>new i.ConnectorModel(e)),t):t}},128:function(e,t){function n(e){return{restrict:"E",scope:{fieldName:"@",source:"=",onSave:"&",onCancel:"&",onClick:"&",onDblclick:"&",isEditing:"="},templateUrl:"js/angular/core/directives/inline-editable-text/templates/inline-editable-text.template.html",link:function(t,n){t.editableModel={};const i=[];let o;t.onKeydown=e=>{"Enter"===e.key?(a(),t.editableModel.text!==t.text&&t.onSave({newText:t.editableModel.text,source:t.source})):"Escape"===e.key&&s()},t.onCancelEditing=()=>{s()},t.onSelect=()=>{o?(a(),t.onDblclick({source:t.source})):o=e((function(){t.onClick({source:t.source}),a()}),250)};const s=()=>{a(),t.onCancel()},a=()=>{e.cancel(o),o=void 0};i.push(t.$watch("isEditing",i=>{i&&(t.editableModel.text=t.source[t.fieldName],e(()=>{const e=n.find("input")[0];e.focus(),e.select()},0))}));t.$on("$destroy",()=>{i.forEach(e=>e()),a()})}}}angular.module("graphdb.framework.core.directives.inline-editable-text",[]).directive("inlineEditableText",n),n.$inject=["$timeout"]},137:function(e,t,n){"use strict";n.r(t);n(97),n(96),n(105),n(19);function i(e,t,n,i,o){e.agentInstructionsExplain=o.agentInstructionsExplain,e.close=()=>{t.dismiss({})},e.onCloseAgentInstructionsExplainModal=()=>{t.dismiss({})};const s=[];e.$on("$destroy",()=>{s.forEach(e=>e())})}angular.module("graphdb.framework.ttyg.controllers.agent-instructions-explain-modal",[]).controller("AgentInstructionsExplainModalController",i),i.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},176:function(e,t,n){"use strict";n.r(t),n.d(t,"status",(function(){return i}));const i={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,CONFLICT:409,INTERNAL_SERVER_ERROR:500,SERVICE_UNAVAILABLE:503}},189:function(e,t,n){"use strict";n.r(t);n(128);var i=n(79),o=n(136),s=n(0);function a(e,t,n,a){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-list.html",link:r=>{r.selectedChat=void 0,r.renamedChat=void 0,r.deletingChat=void 0,r.onSelectChatForRenaming=e=>{r.renamedChat=e},r.onSelectChat=t=>{if(!r.selectedChat||r.selectedChat.id!==t.id){const n=e.getChats().getNonPersistedChat();n&&e.deleteChat(n),e.selectChat(t),r.renamedChat=void 0}},r.onDeleteChat=o=>{const a=n.instant("ttyg.dialog.delete.title"),r=Object(s.decodeHTML)(n.instant("ttyg.dialog.delete.body",{chatName:o.name}));t.openConfirmation(a,r,()=>e.emit(i.TTYGEventName.DELETE_CHAT,o))},r.onRenameChat=(t,n)=>{n.name=t,r.renamedChat=void 0,e.emit(i.TTYGEventName.RENAME_CHAT,n)},r.onExportChat=t=>{e.emit(i.TTYGEventName.CHAT_EXPORT,t)},r.onCancelChatRenaming=()=>{r.renamedChat=void 0},r.getHumanReadableChatGroupTimestamp=e=>Object(o.getHumanReadableTimestamp)(n,a,e);const c=e=>{r.selectedChat=e},l=[];l.push(e.onSelectedChatChanged(c)),l.push(e.onSelectedChatUpdated(c)),l.push(e.onChatsListChanged(e=>{r.chatList=e})),l.push(e.subscribe(i.TTYGEventName.DELETING_CHAT,e=>{r.deletingChat=e})),r.$on("$destroy",()=>{l.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.chat-list",["graphdb.framework.core.directives.inline-editable-text"]).directive("chatList",a),a.$inject=["TTYGContextService","ModalService","$translate","$filter"]},190:function(e,t,n){"use strict";n.r(t);n(199);var i=n(79),o=n(83),s=n(87),a=n(33),r=n(0),c=n(102);function l(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-panel.html",link:(e,l,d)=>{e.chat=void 0,e.selectedAgent=void 0,e.chatItem=void 0,e.askingChatItem=void 0,e.waitingForLastMessage=!1,e.loadingChat=!0,e.ask=()=>{e.chatItem.question.timestamp=Date.now(),e.askingChatItem=Object(a.cloneDeep)(e.chatItem),e.chatItem.chatId?u(e.chatItem):g(),e.chatItem=m(),T(),p()},e.regenerateQuestion=t=>{const n=m();n.setQuestionMessage(t.getQuestionMessage()),e.askingChatItem=n,u(n),T()},e.onKeypressOnInput=t=>{"Enter"!==t.key||t.shiftKey||t.ctrlKey||e.ask()},e.onAskHowDeliveredAnswer=()=>{const n=m();n.setQuestionMessage(t.instant("ttyg.chat_panel.btn.derive_answer.label")),e.askingChatItem=Object(a.cloneDeep)(n),u(n),T()},e.getAgentName=e=>{const i=n.getAgent(e);return i?i.name:Object(r.decodeHTML)(t.instant("ttyg.chat_panel.deleted_agent"))};const g=()=>{e.waitingForLastMessage=!0,n.emit(i.TTYGEventName.CREATE_CHAT,e.chatItem)},u=t=>{e.waitingForLastMessage=!0,n.emit(i.TTYGEventName.ASK_QUESTION,t)},h=()=>{e.chatItem=Object(a.cloneDeep)(e.askingChatItem),e.askingChatItem=void 0,e.waitingForLastMessage=!1},m=()=>{const t=new s.ChatItemModel;return t.question=new o.ChatMessageModel({role:o.CHAT_MESSAGE_ROLE.USER}),e.chat&&(t.chatId=e.chat.id),e.selectedAgent&&(t.agentId=e.selectedAgent.id),t},p=()=>{const e=l.find(".question-input");e.length&&e[0].focus()},T=()=>{setTimeout(()=>{const e=l.find(".chat-details")[0];e&&(e.scrollTop=e.scrollHeight)})},E=()=>{e.chat=c.ChatModel.getEmptyChat(),e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.waitingForLastMessage=!1,p()},y=[];y.push(e.$watchCollection("chat.chatHistory.items",T)),y.push(n.onSelectedChatUpdated(t=>{if(e.chat=t,t&&(t.id||!e.askingChatItem)){if(e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.chat){const t=e.chat.chatHistory.getLast();t&&t.agentId&&n.selectAgent(n.getAgent(t.agentId))}p()}})),y.push(n.onLastMessageReceived(()=>{e.waitingForLastMessage=!1})),y.push(n.onSelectedAgentChanged(t=>{e.selectedAgent=t,e.selectedAgent&&e.chatItem&&(e.chatItem.agentId=e.selectedAgent.id)})),y.push(n.onSelectedChatChanged(t=>{t?(e.loadingChat=t&&t.id,e.chatItem=m(),p()):E()})),y.push(n.subscribe(i.TTYGEventName.LOAD_CHAT_FAILURE,()=>{e.loadingChat=!1,e.chatItem=m(),p()})),y.push(n.subscribe(i.TTYGEventName.ASK_QUESTION_FAILURE,h)),y.push(n.subscribe(i.TTYGEventName.CREATE_CHAT_FAILURE,h)),y.push(n.subscribe(i.TTYGEventName.DELETE_CHAT_SUCCESSFUL,t=>{e.chat&&t.id===e.chat.id&&E()})),e.$on("$destroy",()=>{y.forEach(e=>e())}),e.chat=c.ChatModel.getEmptyChat(),e.chatItem=m(),p()}}}angular.module("graphdb.framework.ttyg.directives.chat-panel",["graphdb.framework.ttyg.directives.chat-item-detail"]).directive("chatPanel",l),l.$inject=["toastr","$translate","TTYGContextService"]},191:function(e,t,n){"use strict";n.r(t);var i=n(0),o=n(79);function s(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-list.html",scope:{agentList:"=",agentListFilterModel:"="},link:(s,a,r)=>{s.selectedAgent=void 0,s.selectedAgentsFilter=void 0,s.deletingAgent=void 0,s.onEditAgent=t=>{e.emit(o.TTYGEventName.EDIT_AGENT,t)},s.onCloneAgent=t=>{e.emit(o.TTYGEventName.CLONE_AGENT,t)},s.onDeleteAgent=s=>{const a=n.instant("ttyg.agent.delete_agent_modal.title"),r=Object(i.decodeHTML)(n.instant("ttyg.agent.delete_agent_modal.body",{agentName:s.name}));t.openConfirmation(a,r,()=>e.emit(o.TTYGEventName.DELETE_AGENT,s))},s.onAgentsFilterChange=e=>{s.selectedAgentsFilter=e,s.selectedAgentsFilter&&s.agentList.filterByRepository(s.selectedAgentsFilter.key)};const c=()=>{const e=s.agentListFilterModel.find(e=>e.selected);s.selectedAgentsFilter=e||s.agentListFilterModel[0],s.onAgentsFilterChange(s.selectedAgentsFilter)},l=[];l.push(s.$watch("agentListFilterModel",c)),l.push(e.subscribe(o.TTYGEventName.DELETING_AGENT,e=>{s.deletingAgent=e})),l.push(e.onSelectedAgentChanged(e=>{s.selectedAgent=e})),s.$on("$destroy",()=>{l.forEach(e=>e())}),c()}}}angular.module("graphdb.framework.ttyg.directives.agent-list",[]).directive("agentList",s),s.$inject=["TTYGContextService","ModalService","$translate"]},192:function(e,t,n){"use strict";n.r(t);var i=n(84),o=n(79);function s(e,t,n,s){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-select-menu.html",scope:{},link:n=>{n.agentOptionsList=[],n.selectedAgent=void 0,n.onAgentSelected=i=>{if(a(i),n.selectedAgent=i,e.selectAgent(i),i.isRepositoryDeleted){const n=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.title"),a=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.body");s.openConfirmation(n,a,()=>e.emit(o.TTYGEventName.EDIT_AGENT,i))}};const a=e=>{n.agentOptionsList.forEach(t=>{t.selected=t.data.agent===e})},r=e=>{n.agentOptionsList=e.agents.map(e=>new i.SelectMenuOptionsModel({value:e.id,label:e.name,data:{agent:e}}))},c=[];c.push(e.onAgentsListChanged(e=>{r(e)})),c.push(e.subscribe(o.TTYGEventName.AGENT_DELETED,t=>{n.selectedAgent&&n.selectedAgent.id===t.id&&(n.selectedAgent.isDeleted=!0,e.selectAgent(n.selectedAgent))})),c.push(e.onSelectedAgentChanged(e=>{a(e),n.selectedAgent=e})),n.$on("$destroy",()=>{c.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.agent-select-menu",[]).directive("agentSelectMenu",s),s.$inject=["TTYGContextService","$translate","$sce","ModalService"]},193:function(e,t,n){"use strict";n.r(t);var i=n(79),o=n(13);function s(e,t){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/no-agents-view.html",scope:{},link:n=>{n.canModifyAgent=!1,n.talkToGraphDocumentationLink=o.DocumentationUrlResolver.getDocumentationUrl(t.productShortVersion,"talk-to-graph.html"),n.onCreateAgent=()=>{e.emit(i.TTYGEventName.OPEN_AGENT_SETTINGS)};const s=[];s.push(e.onCanUpdateAgentUpdated(e=>{n.canModifyAgent=e})),n.$on("$destroy",()=>{s.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.no-agents-view",[]).directive("noAgentsView",s),s.$inject=["TTYGContextService","productInfo"]},194:function(e,t,n){"use strict";n.r(t);var i=n(0),o=n(106),s=(n(97),n(96),n(105),n(19),n(137),n(9)),a=n(79),r=n(98);function c(e,t,n,c,l,d,g,u,h,m,p,T,E,y){e.AGENT_OPERATION=r.AGENT_OPERATION,e.operation=T.operation,e.savingAgent=!1,e.agentFormModel=T.agentFormModel,e.activeRepositoryInfo=T.activeRepositoryInfo,e.extractionMethodLoaderFlags={[o.ExtractionMethod.SIMILARITY]:!1},e.activeRepositoryList=T.activeRepositoryList,e.extractionMethods=o.ExtractionMethod,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.similarityIndexes=[],e.retrievalConnectors=[],e.ftsEnabled=!1,e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),I(),L[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),L[e.method](e)},e.getModelHelpMessage=()=>{const e=Object(i.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.model.hint"));return u.trustAsHtml(e)},e.getFTSDisabledHelpMessage=()=>{const t=Object(i.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"#/repository/edit/"+e.agentFormModel.repositoryId}));return u.trustAsHtml(t)},e.goToCreateSimilarityView=()=>{E.emit(a.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=()=>{E.emit(a.TTYGEventName.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return f[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();n.selected&&(t&&(n.similarityIndex=null),R(n))},e.updateRetrievalConnectorPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();n.selected&&(t&&(n.retrievalConnectorInstance=null),N(n))},e.checkIfFTSEnabled=()=>{if(!e.agentFormModel.repositoryId)return void e.agentSettingsForm.$setValidity("FTSDisabled",!1);e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[o.ExtractionMethod.FTS_SEARCH]=!0,g.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(s.REPOSITORY_PARAMS.enableFtsIndex)}).catch(e=>{S(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[o.ExtractionMethod.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0)},e.onRepositoryChange=()=>{G(!0,!0)},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,n.openModalAlert({title:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then((function(){}))),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();y.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};c.open(t).result.then(()=>{})}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))})};const f={[r.AGENT_OPERATION.CREATE]:e=>C(e),[r.AGENT_OPERATION.EDIT]:e=>A(e),[r.AGENT_OPERATION.CLONE]:e=>v(e)},C=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),A=n=>(e.savingAgent=!0,y.editAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),v=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),S=(e,t)=>{console.error(e),h.error(p.instant(t))},I=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},_=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},R=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();l.getIndexesAsMenuModel(n.repositoryId,n.repositoryLocation).then(n=>{e.similarityIndexes=n,e.agentSettingsForm.$setValidity("missingIndex",!t.selected||!(!n||!n.length)),b(e.similarityIndexes,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingIndex",!1),S(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},b=(e,t)=>{if(0===e.length)return void(t.similarityIndex=null);const n=e.find(e=>e.value===t.similarityIndex);t.similarityIndex=n?n.value:e[0].value},N=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();d.getConnectorPrefixByName("ChatGPT Retrieval",n.repositoryId,n.repositoryLocation).then(e=>d.getConnectorsByTypeAsSelectMenuOptions(e,n.repositoryId,n.repositoryLocation)).then(n=>{e.retrievalConnectors=n,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!n||!n.length)),M(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),S(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},M=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const n=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=n?n.value:e[0].value},L={[o.ExtractionMethod.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[o.ExtractionMethod.SPARQL]:e=>{},[o.ExtractionMethod.SIMILARITY]:e=>R(e),[o.ExtractionMethod.RETRIEVAL]:e=>N(e)},G=(t=!1,n=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(n)},O=()=>{document.hidden||G()};document.addEventListener("visibilitychange",O),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",O)});setTimeout(I,0)}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal"]).controller("AgentSettingsModalController",c),c.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService"]},195:function(e,t){function n(e,t){const n={agent:{id:void 0},chat:{id:void 0}},i=()=>{let i=e.get(t.TTYG);return i||(i=n),i.agent||(i.agent={}),i.chat||(i.chat={}),i};return{saveAgent:function(n){const o=i();o.agent.id=n?n.id:void 0,e.set(t.TTYG,o)},getAgentId:function(){const e=i();if(e.agent)return e.agent.id},saveChat:function(n){const o=i();o.chat.id=n?n.id:void 0,e.set(t.TTYG,o)},getChatId:function(){const e=i();if(e.chat)return e.chat.id}}}angular.module("graphdb.framework.ttyg.services.ttygstorage",[]).factory("TTYGStorageService",n),n.$inject=["LocalStorageAdapter","LSKeys"]},196:function(e,t,n){"use strict";n.r(t),n.d(t,"AgentSettingsModal",(function(){return i}));class i{constructor(e,t,n,i){this.activeRepositoryInfo=e,this.activeRepositoryList=t,this.agentFormModel=n,this.operation=i}}},300:function(e,t,n){"use strict";n.r(t);n(189),n(190),n(191),n(192),n(193),n(194),n(105);var i=n(79),o=(n(195),n(98)),s=n(106),a=n(102),r=n(164),c=n(84),l=n(23),d=n(533),g=n(196),u=n(0),h=n(176),m=n(112);function p(e,t,n,p,T,E,y,f,C,A,v,S,I,_,R){const b=[],N={filter_all:y.instant("ttyg.agent.btn.filter.all")};p.helpTemplateUrl="js/angular/ttyg/templates/chatInfo.html",p.isHelpVisible=!1,p.showChats=!0,p.showAgents=!1,p.chats=void 0,p.loadingChats=!1,p.loadingChat=!1,p.initialized=!1,p.agents=void 0,p.selectedAgent=void 0,p.loadingAgents=!1,p.reloadingAgents=!1,p.connectorID=void 0,p.canModifyAgent=!1,p.agentListFilterModel=[],p.activeRepositoryList=[],p.onopen=p.onclose=()=>angular.noop(),p.startNewChat=()=>{_.deselectChat()},p.toggleChatsListSidebar=()=>{p.showChats=!p.showChats},p.toggleAgentsListSidebar=()=>{p.showAgents=!p.showAgents},p.onToggleHelp=()=>{p.isHelpVisible=!p.isHelpVisible},p.onExportSelectedChat=()=>{D(_.getSelectedChat())};const M=()=>{const e=_.getDefaultAgent();return e?Promise.resolve(e):I.getDefaultAgent().then(e=>(_.setDefaultAgent(e),e))};p.onOpenNewAgentSettings=()=>{M().then(e=>{const t=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());e.repositoryId=t.id;const n=Object(r.agentFormModelMapper)(new s.AgentModel({}),e,o.AGENT_OPERATION.CREATE);return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(t,p.activeRepositoryList,n,o.AGENT_OPERATION.CREATE)}},size:"lg"}}).then(e=>{f.open(e).result.then(G)}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})},p.onOpenAgentSettings=e=>{let t=e;t||(t=_.getSelectedAgent()),M().then(e=>{const n=Object(r.agentFormModelMapper)(t,e,o.AGENT_OPERATION.EDIT),i=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(i,p.activeRepositoryList,n,o.AGENT_OPERATION.EDIT)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})},p.onOpenCloneAgentSettings=e=>{M().then(t=>{const n=Object(r.agentFormModelMapper)(e,t,o.AGENT_OPERATION.CLONE);n.name="clone-"+n.name;const i=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(i,p.activeRepositoryList,n,o.AGENT_OPERATION.CLONE)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})};const L=()=>(p.loadingChats=!0,I.getConversations().then(e=>_.updateChats(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH)),F(new a.ChatsListModel)}).finally(()=>{p.loadingChats=!1})),G=()=>(p.reloadingAgents=!0,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.reloadingAgents=!1})),O=()=>{_.setCanModifyAgent(e.isRepoManager())},w=(e,t,n)=>{if(e.timestamp=n.timestamp,t.answers=t.answers||[],t.answers.push(...n.messages),_.updateSelectedChat(e),n.continueRunId)_.emit(i.TTYGEventName.CONTINUE_CHAT_RUN,new m.ContinueChatRun(t,n.continueRunId));else{const t=_.getChats();t.updateChatTimestamp(e.id,n.timestamp),t.updateChatName(e.id,n.chatName),e.name=n.name,_.updateChats(t),_.emit(i.TTYGEventName.LAST_MESSAGE_RECEIVED,e)}},x=(e,t,n)=>{e.chatHistory.appendItem(t),w(e,t,n)},F=e=>{e.isEmpty()?p.showChats=!1:(p.showChats=!0,_.getSelectedChat()||R.getChatId()||_.selectChat(p.chats.getFirstChat()))},D=e=>{I.exportConversation(e.id).then((function({data:t,filename:n}){Object(d.saveAs)(t,n),_.emit(i.TTYGEventName.CHAT_EXPORT_SUCCESSFUL,e)})).catch(()=>{_.emit(i.TTYGEventName.CHAT_EXPORT_FAILURE),A.error(y.instant("ttyg.chat.messages.export_failure"))})},Y=()=>{const e=C.getActiveRepository(),t=C.getLocalReadableGraphdbRepositories().map(t=>new s.AgentListFilterModel(t.id,t.id,t.id===e));p.agentListFilterModel=[new s.AgentListFilterModel(o.AGENTS_FILTER_ALL_KEY,N.filter_all),...t]},k=e=>{v.openModalAlert({title:y.instant("ttyg.chat.dialog.chat_is_missing.title"),message:y.instant("ttyg.chat.dialog.chat_is_missing.body")}).result.then((function(){_.deleteChat(e)}))},U=()=>{t.open("/similarity/index/create","_blank")},$=()=>{t.open("/connectors","_blank")},H=e=>{t.open(`/sparql?query=${encodeURIComponent(e)}&execute=true`,"_blank")},j=()=>{const e=R.getChatId(),t=_.getChats();e&&t.getChat(e)&&_.selectChat(_.getChats().getChat(e))};b.push(p.$watch(p.getActiveRepositoryObject,e=>{e&&(p.activeRepositoryList=C.getLocalReadableGraphdbRepositories().map(e=>new c.SelectMenuOptionsModel({value:e.id,label:e.id,data:{repository:e}})),((e=!0)=>(p.loadingAgents=e,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.loadingAgents=!1})))().then(()=>(p.initialized=!0,Y(),(()=>{const e=R.getAgentId();e&&I.getAgent(e).then(e=>{e&&_.selectAgent(e)}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})})(),L())).then(j),O())})),b.push(_.onSelectedChatChanged(e=>{e&&e.id?I.getConversation(e.id).then(t=>{_.updateSelectedChat(t),R.saveChat(e)}).catch(t=>{t.status===h.status.NOT_FOUND&&(k(e),_.emit(i.TTYGEventName.LOAD_CHAT_FAILURE,e))}):e&&_.updateSelectedChat(e)})),b.push(_.onChatsListChanged(e=>{p.chats=e,F(e)})),b.push(_.onCanUpdateAgentUpdated(e=>{p.canModifyAgent=e})),b.push(_.subscribe(_.onAgentsListChanged(e=>{p.agents=e}))),b.push(_.subscribe(i.TTYGEventName.CREATE_CHAT,e=>{let t=_.getChats().getNonPersistedChat();t||(t=a.ChatModel.getEmptyChat(),_.addChat(t)),_.selectChat(t),I.createConversation(e).then(t=>{_.emit(i.TTYGEventName.CREATE_CHAT_SUCCESSFUL);const n=_.getSelectedChat();if(n&&!n.id){n.id=t.chatId,e.chatId=t.chatId;const i=_.getChats().getNonPersistedChat();_.replaceChat(n,i),R.saveChat(n),x(n,e,t)}}).catch(()=>{_.emit(i.TTYGEventName.CREATE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.create_failure"))})})),b.push(_.subscribe(i.TTYGEventName.RENAME_CHAT,e=>{I.renameConversation(e).then(()=>{_.emit(i.TTYGEventName.RENAME_CHAT_SUCCESSFUL),_.emit(i.TTYGEventName.LOAD_CHATS)}).catch(()=>{_.emit(i.TTYGEventName.RENAME_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.rename_failure"))})})),b.push(_.subscribe(i.TTYGEventName.DELETE_CHAT,e=>{_.emit(i.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!0}),I.deleteConversation(e.id).then(()=>{_.emit(i.TTYGEventName.DELETE_CHAT_SUCCESSFUL,e);const t=_.getChats();t.deleteChat(e),_.updateChats(t)}).catch(()=>{_.emit(i.TTYGEventName.DELETE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.delete_failure"))}).finally(()=>_.emit(i.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!1}))})),b.push(_.subscribe(i.TTYGEventName.CHAT_EXPORT,D)),b.push(_.subscribe(i.TTYGEventName.ASK_QUESTION,e=>{I.askQuestion(e).then(t=>{const n=_.getSelectedChat();n&&n.id===e.chatId&&x(n,e,t)}).catch(e=>{_.emit(i.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(i.TTYGEventName.CONTINUE_CHAT_RUN,e=>{I.continueChatRun(e).then(t=>{const n=e.chatId,i=_.getSelectedChat();if(i&&i.id===n){const e=i.chatHistory.items,n=e[e.length-1];w(i,n,t)}}).catch(e=>{_.emit(i.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(i.TTYGEventName.LOAD_CHATS,L)),b.push(_.subscribe(i.TTYGEventName.OPEN_AGENT_SETTINGS,p.onOpenNewAgentSettings)),b.push(_.subscribe(i.TTYGEventName.EDIT_AGENT,p.onOpenAgentSettings)),b.push(_.subscribe(i.TTYGEventName.CLONE_AGENT,p.onOpenCloneAgentSettings)),b.push(_.subscribe(i.TTYGEventName.DELETE_AGENT,e=>{_.emit(i.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!0}),I.deleteAgent(e.id).then(()=>G()).then(()=>{_.emit(i.TTYGEventName.AGENT_DELETED,e),p.selectedAgent&&p.selectedAgent.id===e.id&&(p.selectedAgent=void 0)}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{_.emit(i.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!1})})})),b.push(_.subscribe(i.TTYGEventName.AGENT_SELECTED,e=>{p.selectedAgent=e,R.saveAgent(e)})),b.push(_.subscribe(i.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_similarity.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),U()})}else U()})),b.push(_.subscribe(i.TTYGEventName.GO_TO_CONNECTORS_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_connectors.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),$()})}else $()})),b.push(_.subscribe(i.TTYGEventName.GO_TO_SPARQL_EDITOR,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmation(y.instant("common.confirm"),Object(u.decodeHTML)(y.instant("ttyg.chat_panel.dialog.confirm_repository_change.body",{repositoryId:e.repositoryId})),()=>{C.setRepository(t),H(e.query)})}else H(e.query)})),b.push(n.$on("$translateChangeSuccess",()=>{N.filter_all=y.instant("ttyg.agent.btn.filter.all"),Y()})),b.push(n.$on("securityInit",O)),p.$on("$destroy",(function(){b.forEach(e=>e()),_.resetContext()}))}angular.module("graphdb.framework.ttyg.controllers.ttyg-view",["toastr","graphdb.framework.utils.localstorageadapter","graphdb.framework.core.services.ttyg-service","graphdb.framework.ttyg.services.ttygcontext","graphdb.framework.ttyg.services.ttygstorage","graphdb.framework.ttyg.directives.chat-list","graphdb.framework.ttyg.directives.chat-panel","graphdb.framework.ttyg.directives.agent-list","graphdb.framework.ttyg.directives.agent-select-menu","graphdb.framework.ttyg.directives.no-agents-view","graphdb.framework.ttyg.controllers.agent-settings-modal"]).controller("TTYGViewCtrl",p),p.$inject=["$jwtAuth","$window","$rootScope","$scope","$http","$timeout","$translate","$uibModal","$repositories","toastr","ModalService","LocalStorageAdapter","TTYGService","TTYGContextService","TTYGStorageService"]},532:function(e,t){(function(t){e.exports=t}).call(this,{})},533:function(e,t,n){var i,o=o||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o=e.webkitRequestFileSystem,s=e.requestFileSystem||o||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},r=0,c=function(t){var i=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?i():setTimeout(i,500)},l=function(e,t,n){for(var i=(t=[].concat(t)).length;i--;){var o=e["on"+t[i]];if("function"==typeof o)try{o.call(e,n||e)}catch(e){a(e)}}},d=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},g=function(t,a){t=d(t);var g,u,h,m=this,p=t.type,T=!1,E=function(){l(m,"writestart progress write writeend".split(" "))},y=function(){(!T&&g||(g=n().createObjectURL(t)),u)?u.location.href=g:null==e.open(g,"_blank")&&"undefined"!=typeof safari&&(e.location.href=g);m.readyState=m.DONE,E(),c(g)},f=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},C={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),i)return g=n().createObjectURL(t),i.href=g,i.download=a,void setTimeout((function(){var e,t;e=i,t=new MouseEvent("click"),e.dispatchEvent(t),E(),c(g),m.readyState=m.DONE}));e.chrome&&p&&"application/octet-stream"!==p&&(h=t.slice||t.webkitSlice,t=h.call(t,0,t.size,"application/octet-stream"),T=!0),o&&"download"!==a&&(a+=".download"),("application/octet-stream"===p||o)&&(u=e),s?(r+=t.size,s(e.TEMPORARY,r,f((function(e){e.root.getDirectory("saved",C,f((function(e){var n=function(){e.getFile(a,C,f((function(e){e.createWriter(f((function(n){n.onwriteend=function(t){u.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),y)})),y)};e.getFile(a,{create:!1},f((function(e){e.remove(),n()})),f((function(e){e.code===e.NOT_FOUND_ERR?n():y()})))})),y)})),y)):y()},u=g.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(d(e),t)}:(u.abort=function(){this.readyState=this.DONE,l(this,"abort")},u.readyState=u.INIT=0,u.WRITING=1,u.DONE=2,u.error=u.onwritestart=u.onprogress=u.onwrite=u.onabort=u.onerror=u.onwriteend=null,function(e,t){return new g(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[24,29,63,76,97,140,193,196,251,252,288,297,309,314],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"connectorTypesListMapper",(function(){return o})),n.d(t,"connectorsMapper",(function(){return s}));var i=n(94);const o=e=>{const t=new i.ConnectorTypesListModel;return e?(t.connectors=Object.keys(e).map(t=>new i.ConnectorTypeModel({name:t,prefix:e[t]})),t):t},s=e=>{const t=new i.ConnectorListModel;return e?(t.connectors=e.map(e=>new i.ConnectorModel(e)),t):t}},128:function(e,t){function n(e){return{restrict:"E",scope:{fieldName:"@",source:"=",onSave:"&",onCancel:"&",onClick:"&",onDblclick:"&",isEditing:"="},templateUrl:"js/angular/core/directives/inline-editable-text/templates/inline-editable-text.template.html",link:function(t,n){t.editableModel={};const i=[];let o;t.onKeydown=e=>{"Enter"===e.key?(a(),t.editableModel.text!==t.text&&t.onSave({newText:t.editableModel.text,source:t.source})):"Escape"===e.key&&s()},t.onCancelEditing=()=>{s()},t.onSelect=()=>{o?(a(),t.onDblclick({source:t.source})):o=e((function(){t.onClick({source:t.source}),a()}),250)};const s=()=>{a(),t.onCancel()},a=()=>{e.cancel(o),o=void 0};i.push(t.$watch("isEditing",i=>{i&&(t.editableModel.text=t.source[t.fieldName],e(()=>{const e=n.find("input")[0];e.focus(),e.select()},0))}));t.$on("$destroy",()=>{i.forEach(e=>e()),a()})}}}angular.module("graphdb.framework.core.directives.inline-editable-text",[]).directive("inlineEditableText",n),n.$inject=["$timeout"]},137:function(e,t,n){"use strict";n.r(t);n(97),n(96),n(105),n(19);function i(e,t,n,i,o){e.agentInstructionsExplain=o.agentInstructionsExplain,e.close=()=>{t.dismiss({})},e.onCloseAgentInstructionsExplainModal=()=>{t.dismiss({})};const s=[];e.$on("$destroy",()=>{s.forEach(e=>e())})}angular.module("graphdb.framework.ttyg.controllers.agent-instructions-explain-modal",[]).controller("AgentInstructionsExplainModalController",i),i.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},176:function(e,t,n){"use strict";n.r(t),n.d(t,"status",(function(){return i}));const i={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,CONFLICT:409,INTERNAL_SERVER_ERROR:500,SERVICE_UNAVAILABLE:503}},189:function(e,t,n){"use strict";n.r(t);n(128);var i=n(79),o=n(136),s=n(0);function a(e,t,n,a){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-list.html",link:r=>{r.selectedChat=void 0,r.renamedChat=void 0,r.deletingChat=void 0,r.onSelectChatForRenaming=e=>{r.renamedChat=e},r.onSelectChat=t=>{if(!r.selectedChat||r.selectedChat.id!==t.id){const n=e.getChats().getNonPersistedChat();n&&e.deleteChat(n),e.selectChat(t),r.renamedChat=void 0}},r.onDeleteChat=o=>{const a=n.instant("ttyg.dialog.delete.title"),r=Object(s.decodeHTML)(n.instant("ttyg.dialog.delete.body",{chatName:o.name}));t.openConfirmation(a,r,()=>e.emit(i.TTYGEventName.DELETE_CHAT,o))},r.onRenameChat=(t,n)=>{n.name=t,r.renamedChat=void 0,e.emit(i.TTYGEventName.RENAME_CHAT,n)},r.onExportChat=t=>{e.emit(i.TTYGEventName.CHAT_EXPORT,t)},r.onCancelChatRenaming=()=>{r.renamedChat=void 0},r.getHumanReadableChatGroupTimestamp=e=>Object(o.getHumanReadableTimestamp)(n,a,e);const c=e=>{r.selectedChat=e},l=[];l.push(e.onSelectedChatChanged(c)),l.push(e.onSelectedChatUpdated(c)),l.push(e.onChatsListChanged(e=>{r.chatList=e})),l.push(e.subscribe(i.TTYGEventName.DELETING_CHAT,e=>{r.deletingChat=e})),r.$on("$destroy",()=>{l.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.chat-list",["graphdb.framework.core.directives.inline-editable-text"]).directive("chatList",a),a.$inject=["TTYGContextService","ModalService","$translate","$filter"]},190:function(e,t,n){"use strict";n.r(t);n(199);var i=n(79),o=n(83),s=n(87),a=n(33),r=n(0),c=n(102);function l(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-panel.html",link:(e,l,d)=>{e.chat=void 0,e.selectedAgent=void 0,e.chatItem=void 0,e.askingChatItem=void 0,e.waitingForLastMessage=!1,e.loadingChat=!0,e.ask=()=>{e.chatItem.question.timestamp=Date.now(),e.askingChatItem=Object(a.cloneDeep)(e.chatItem),e.chatItem.chatId?u(e.chatItem):g(),e.chatItem=m(),T(),p()},e.regenerateQuestion=t=>{const n=m();n.setQuestionMessage(t.getQuestionMessage()),n.question.timestamp=Date.now(),e.askingChatItem=n,u(n),T()},e.onKeypressOnInput=t=>{"Enter"!==t.key||t.shiftKey||t.ctrlKey||e.ask()},e.onAskHowDeliveredAnswer=()=>{const n=m();n.setQuestionMessage(t.instant("ttyg.chat_panel.btn.derive_answer.label")),n.question.timestamp=Date.now(),e.askingChatItem=Object(a.cloneDeep)(n),u(n),T()},e.getAgentName=e=>{const i=n.getAgent(e);return i?i.name:Object(r.decodeHTML)(t.instant("ttyg.chat_panel.deleted_agent"))};const g=()=>{e.waitingForLastMessage=!0,n.emit(i.TTYGEventName.CREATE_CHAT,e.chatItem)},u=t=>{e.waitingForLastMessage=!0,n.emit(i.TTYGEventName.ASK_QUESTION,t)},h=()=>{e.chatItem=Object(a.cloneDeep)(e.askingChatItem),e.askingChatItem=void 0,e.waitingForLastMessage=!1},m=()=>{const t=new s.ChatItemModel;return t.question=new o.ChatMessageModel({role:o.CHAT_MESSAGE_ROLE.USER}),e.chat&&(t.chatId=e.chat.id),e.selectedAgent&&(t.agentId=e.selectedAgent.id),t},p=()=>{const e=l.find(".question-input");e.length&&e[0].focus()},T=()=>{setTimeout(()=>{const e=l.find(".chat-details")[0];e&&(e.scrollTop=e.scrollHeight)})},E=()=>{e.chat=c.ChatModel.getEmptyChat(),e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.waitingForLastMessage=!1,p()},y=[];y.push(e.$watchCollection("chat.chatHistory.items",T)),y.push(n.onSelectedChatUpdated(t=>{if(e.chat=t,t&&(t.id||!e.askingChatItem)){if(e.loadingChat=!1,e.chatItem=m(),e.askingChatItem=void 0,e.chat){const t=e.chat.chatHistory.getLast();t&&t.agentId&&n.selectAgent(n.getAgent(t.agentId))}p()}})),y.push(n.onLastMessageReceived(()=>{e.waitingForLastMessage=!1})),y.push(n.onSelectedAgentChanged(t=>{e.selectedAgent=t,e.selectedAgent&&e.chatItem&&(e.chatItem.agentId=e.selectedAgent.id)})),y.push(n.onSelectedChatChanged(t=>{t?(e.loadingChat=t&&t.id,e.chatItem=m(),p()):E()})),y.push(n.subscribe(i.TTYGEventName.LOAD_CHAT_FAILURE,()=>{e.loadingChat=!1,e.chatItem=m(),p()})),y.push(n.subscribe(i.TTYGEventName.ASK_QUESTION_FAILURE,h)),y.push(n.subscribe(i.TTYGEventName.CREATE_CHAT_FAILURE,h)),y.push(n.subscribe(i.TTYGEventName.DELETE_CHAT_SUCCESSFUL,t=>{e.chat&&t.id===e.chat.id&&E()})),e.$on("$destroy",()=>{y.forEach(e=>e())}),e.chat=c.ChatModel.getEmptyChat(),e.chatItem=m(),p()}}}angular.module("graphdb.framework.ttyg.directives.chat-panel",["graphdb.framework.ttyg.directives.chat-item-detail"]).directive("chatPanel",l),l.$inject=["toastr","$translate","TTYGContextService"]},191:function(e,t,n){"use strict";n.r(t);var i=n(0),o=n(79);function s(e,t,n){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-list.html",scope:{agentList:"=",agentListFilterModel:"="},link:(s,a,r)=>{s.selectedAgent=void 0,s.selectedAgentsFilter=void 0,s.deletingAgent=void 0,s.onEditAgent=t=>{e.emit(o.TTYGEventName.EDIT_AGENT,t)},s.onCloneAgent=t=>{e.emit(o.TTYGEventName.CLONE_AGENT,t)},s.onDeleteAgent=s=>{const a=n.instant("ttyg.agent.delete_agent_modal.title"),r=Object(i.decodeHTML)(n.instant("ttyg.agent.delete_agent_modal.body",{agentName:s.name}));t.openConfirmation(a,r,()=>e.emit(o.TTYGEventName.DELETE_AGENT,s))},s.onAgentsFilterChange=e=>{s.selectedAgentsFilter=e,s.selectedAgentsFilter&&s.agentList.filterByRepository(s.selectedAgentsFilter.key)};const c=()=>{const e=s.agentListFilterModel.find(e=>e.selected);s.selectedAgentsFilter=e||s.agentListFilterModel[0],s.onAgentsFilterChange(s.selectedAgentsFilter)},l=[];l.push(s.$watch("agentListFilterModel",c)),l.push(e.subscribe(o.TTYGEventName.DELETING_AGENT,e=>{s.deletingAgent=e})),l.push(e.onSelectedAgentChanged(e=>{s.selectedAgent=e})),s.$on("$destroy",()=>{l.forEach(e=>e())}),c()}}}angular.module("graphdb.framework.ttyg.directives.agent-list",[]).directive("agentList",s),s.$inject=["TTYGContextService","ModalService","$translate"]},192:function(e,t,n){"use strict";n.r(t);var i=n(84),o=n(79);function s(e,t,n,s){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/agent-select-menu.html",scope:{},link:n=>{n.agentOptionsList=[],n.selectedAgent=void 0,n.onAgentSelected=i=>{if(a(i),n.selectedAgent=i,e.selectAgent(i),i.isRepositoryDeleted){const n=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.title"),a=t.instant("ttyg.agent.agent_select_menu.configure_agent_modal.body");s.openConfirmation(n,a,()=>e.emit(o.TTYGEventName.EDIT_AGENT,i))}};const a=e=>{n.agentOptionsList.forEach(t=>{t.selected=t.data.agent===e})},r=e=>{n.agentOptionsList=e.agents.map(e=>new i.SelectMenuOptionsModel({value:e.id,label:e.name,data:{agent:e}}))},c=[];c.push(e.onAgentsListChanged(e=>{r(e)})),c.push(e.subscribe(o.TTYGEventName.AGENT_DELETED,t=>{n.selectedAgent&&n.selectedAgent.id===t.id&&(n.selectedAgent.isDeleted=!0,e.selectAgent(n.selectedAgent))})),c.push(e.onSelectedAgentChanged(e=>{a(e),n.selectedAgent=e})),n.$on("$destroy",()=>{c.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.agent-select-menu",[]).directive("agentSelectMenu",s),s.$inject=["TTYGContextService","$translate","$sce","ModalService"]},193:function(e,t,n){"use strict";n.r(t);var i=n(79),o=n(13);function s(e,t){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/no-agents-view.html",scope:{},link:n=>{n.canModifyAgent=!1,n.talkToGraphDocumentationLink=o.DocumentationUrlResolver.getDocumentationUrl(t.productShortVersion,"talk-to-graph.html"),n.onCreateAgent=()=>{e.emit(i.TTYGEventName.OPEN_AGENT_SETTINGS)};const s=[];s.push(e.onCanUpdateAgentUpdated(e=>{n.canModifyAgent=e})),n.$on("$destroy",()=>{s.forEach(e=>e())})}}}angular.module("graphdb.framework.ttyg.directives.no-agents-view",[]).directive("noAgentsView",s),s.$inject=["TTYGContextService","productInfo"]},194:function(e,t,n){"use strict";n.r(t);var i=n(0),o=n(106),s=(n(97),n(96),n(105),n(19),n(137),n(9)),a=n(79),r=n(98);function c(e,t,n,c,l,d,g,u,h,m,p,T,E,y){e.AGENT_OPERATION=r.AGENT_OPERATION,e.operation=T.operation,e.savingAgent=!1,e.agentFormModel=T.agentFormModel,e.activeRepositoryInfo=T.activeRepositoryInfo,e.extractionMethodLoaderFlags={[o.ExtractionMethod.SIMILARITY]:!1},e.activeRepositoryList=T.activeRepositoryList,e.extractionMethods=o.ExtractionMethod,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.similarityIndexes=[],e.retrievalConnectors=[],e.ftsEnabled=!1,e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),I(),L[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),L[e.method](e)},e.getModelHelpMessage=()=>{const e=Object(i.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.model.hint"));return u.trustAsHtml(e)},e.getFTSDisabledHelpMessage=()=>{const t=Object(i.decodeHTML)(p.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"#/repository/edit/"+e.agentFormModel.repositoryId}));return u.trustAsHtml(t)},e.goToCreateSimilarityView=()=>{E.emit(a.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=()=>{E.emit(a.TTYGEventName.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return f[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();n.selected&&(t&&(n.similarityIndex=null),R(n))},e.updateRetrievalConnectorPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();n.selected&&(t&&(n.retrievalConnectorInstance=null),N(n))},e.checkIfFTSEnabled=()=>{if(!e.agentFormModel.repositoryId)return void e.agentSettingsForm.$setValidity("FTSDisabled",!1);e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[o.ExtractionMethod.FTS_SEARCH]=!0,g.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(s.REPOSITORY_PARAMS.enableFtsIndex)}).catch(e=>{S(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[o.ExtractionMethod.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0)},e.onRepositoryChange=()=>{G(!0,!0)},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,n.openModalAlert({title:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:p.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then((function(){}))),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();y.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};c.open(t).result.then(()=>{})}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))})};const f={[r.AGENT_OPERATION.CREATE]:e=>C(e),[r.AGENT_OPERATION.EDIT]:e=>A(e),[r.AGENT_OPERATION.CLONE]:e=>v(e)},C=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),A=n=>(e.savingAgent=!0,y.editAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),v=n=>(e.savingAgent=!0,y.createAgent(n).then(e=>{t.close(e),h.success(p.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{h.error(getError(e,0,r.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),S=(e,t)=>{console.error(e),h.error(p.instant(t))},I=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},_=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},R=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();l.getIndexesAsMenuModel(n.repositoryId,n.repositoryLocation).then(n=>{e.similarityIndexes=n,e.agentSettingsForm.$setValidity("missingIndex",!t.selected||!(!n||!n.length)),b(e.similarityIndexes,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingIndex",!1),S(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},b=(e,t)=>{if(0===e.length)return void(t.similarityIndex=null);const n=e.find(e=>e.value===t.similarityIndex);t.similarityIndex=n?n.value:e[0].value},N=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=_();d.getConnectorPrefixByName("ChatGPT Retrieval",n.repositoryId,n.repositoryLocation).then(e=>d.getConnectorsByTypeAsSelectMenuOptions(e,n.repositoryId,n.repositoryLocation)).then(n=>{e.retrievalConnectors=n,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!n||!n.length)),M(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),S(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},M=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const n=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=n?n.value:e[0].value},L={[o.ExtractionMethod.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[o.ExtractionMethod.SPARQL]:e=>{},[o.ExtractionMethod.SIMILARITY]:e=>R(e),[o.ExtractionMethod.RETRIEVAL]:e=>N(e)},G=(t=!1,n=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(n)},O=()=>{document.hidden||G()};document.addEventListener("visibilitychange",O),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",O)});setTimeout(I,0)}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal"]).controller("AgentSettingsModalController",c),c.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService"]},195:function(e,t){function n(e,t){const n={agent:{id:void 0},chat:{id:void 0}},i=()=>{let i=e.get(t.TTYG);return i||(i=n),i.agent||(i.agent={}),i.chat||(i.chat={}),i};return{saveAgent:function(n){const o=i();o.agent.id=n?n.id:void 0,e.set(t.TTYG,o)},getAgentId:function(){const e=i();if(e.agent)return e.agent.id},saveChat:function(n){const o=i();o.chat.id=n?n.id:void 0,e.set(t.TTYG,o)},getChatId:function(){const e=i();if(e.chat)return e.chat.id}}}angular.module("graphdb.framework.ttyg.services.ttygstorage",[]).factory("TTYGStorageService",n),n.$inject=["LocalStorageAdapter","LSKeys"]},196:function(e,t,n){"use strict";n.r(t),n.d(t,"AgentSettingsModal",(function(){return i}));class i{constructor(e,t,n,i){this.activeRepositoryInfo=e,this.activeRepositoryList=t,this.agentFormModel=n,this.operation=i}}},300:function(e,t,n){"use strict";n.r(t);n(189),n(190),n(191),n(192),n(193),n(194),n(105);var i=n(79),o=(n(195),n(98)),s=n(106),a=n(102),r=n(164),c=n(84),l=n(23),d=n(533),g=n(196),u=n(0),h=n(176),m=n(112);function p(e,t,n,p,T,E,y,f,C,A,v,S,I,_,R){const b=[],N={filter_all:y.instant("ttyg.agent.btn.filter.all")};p.helpTemplateUrl="js/angular/ttyg/templates/chatInfo.html",p.isHelpVisible=!1,p.showChats=!0,p.showAgents=!1,p.chats=void 0,p.loadingChats=!1,p.loadingChat=!1,p.initialized=!1,p.agents=void 0,p.selectedAgent=void 0,p.loadingAgents=!1,p.reloadingAgents=!1,p.connectorID=void 0,p.canModifyAgent=!1,p.agentListFilterModel=[],p.activeRepositoryList=[],p.onopen=p.onclose=()=>angular.noop(),p.startNewChat=()=>{_.deselectChat()},p.toggleChatsListSidebar=()=>{p.showChats=!p.showChats},p.toggleAgentsListSidebar=()=>{p.showAgents=!p.showAgents},p.onToggleHelp=()=>{p.isHelpVisible=!p.isHelpVisible},p.onExportSelectedChat=()=>{D(_.getSelectedChat())};const M=()=>{const e=_.getDefaultAgent();return e?Promise.resolve(e):I.getDefaultAgent().then(e=>(_.setDefaultAgent(e),e))};p.onOpenNewAgentSettings=()=>{M().then(e=>{const t=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());e.repositoryId=t.id;const n=Object(r.agentFormModelMapper)(new s.AgentModel({}),e,o.AGENT_OPERATION.CREATE);return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(t,p.activeRepositoryList,n,o.AGENT_OPERATION.CREATE)}},size:"lg"}}).then(e=>{f.open(e).result.then(G)}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})},p.onOpenAgentSettings=e=>{let t=e;t||(t=_.getSelectedAgent()),M().then(e=>{const n=Object(r.agentFormModelMapper)(t,e,o.AGENT_OPERATION.EDIT),i=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(i,p.activeRepositoryList,n,o.AGENT_OPERATION.EDIT)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})},p.onOpenCloneAgentSettings=e=>{M().then(t=>{const n=Object(r.agentFormModelMapper)(e,t,o.AGENT_OPERATION.CLONE);n.name="clone-"+n.name;const i=Object(l.repositoryInfoMapper)(C.getActiveRepositoryObject());return{templateUrl:"js/angular/ttyg/templates/modal/agent-settings-modal.html",controller:"AgentSettingsModalController",windowClass:"agent-settings-modal",backdrop:"static",resolve:{dialogModel:function(){return new g.AgentSettingsModal(i,p.activeRepositoryList,n,o.AGENT_OPERATION.CLONE)}},size:"lg"}}).then(e=>{f.open(e).result.then(e=>{const t=_.getSelectedAgent();t&&e.id===t.id&&_.selectAgent(e),G()})}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})};const L=()=>(p.loadingChats=!0,I.getConversations().then(e=>_.updateChats(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH)),F(new a.ChatsListModel)}).finally(()=>{p.loadingChats=!1})),G=()=>(p.reloadingAgents=!0,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.reloadingAgents=!1})),O=()=>{_.setCanModifyAgent(e.isRepoManager())},w=(e,t,n)=>{if(e.timestamp=n.timestamp,t.answers=t.answers||[],t.answers.push(...n.messages),_.updateSelectedChat(e),n.continueRunId)_.emit(i.TTYGEventName.CONTINUE_CHAT_RUN,new m.ContinueChatRun(t,n.continueRunId));else{const t=_.getChats();t.updateChatTimestamp(e.id,n.timestamp),t.updateChatName(e.id,n.chatName),e.name=n.name,_.updateChats(t),_.emit(i.TTYGEventName.LAST_MESSAGE_RECEIVED,e)}},x=(e,t,n)=>{e.chatHistory.appendItem(t),w(e,t,n)},F=e=>{e.isEmpty()?p.showChats=!1:(p.showChats=!0,_.getSelectedChat()||R.getChatId()||_.selectChat(p.chats.getFirstChat()))},D=e=>{I.exportConversation(e.id).then((function({data:t,filename:n}){Object(d.saveAs)(t,n),_.emit(i.TTYGEventName.CHAT_EXPORT_SUCCESSFUL,e)})).catch(()=>{_.emit(i.TTYGEventName.CHAT_EXPORT_FAILURE),A.error(y.instant("ttyg.chat.messages.export_failure"))})},Y=()=>{const e=C.getActiveRepository(),t=C.getLocalReadableGraphdbRepositories().map(t=>new s.AgentListFilterModel(t.id,t.id,t.id===e));p.agentListFilterModel=[new s.AgentListFilterModel(o.AGENTS_FILTER_ALL_KEY,N.filter_all),...t]},k=e=>{v.openModalAlert({title:y.instant("ttyg.chat.dialog.chat_is_missing.title"),message:y.instant("ttyg.chat.dialog.chat_is_missing.body")}).result.then((function(){_.deleteChat(e)}))},U=()=>{t.open("/similarity/index/create","_blank")},$=()=>{t.open("/connectors","_blank")},H=e=>{t.open(`/sparql?query=${encodeURIComponent(e)}&execute=true`,"_blank")},j=()=>{const e=R.getChatId(),t=_.getChats();e&&t.getChat(e)&&_.selectChat(_.getChats().getChat(e))};b.push(p.$watch(p.getActiveRepositoryObject,e=>{e&&(p.activeRepositoryList=C.getLocalReadableGraphdbRepositories().map(e=>new c.SelectMenuOptionsModel({value:e.id,label:e.id,data:{repository:e}})),((e=!0)=>(p.loadingAgents=e,I.getAgents().then(e=>_.updateAgents(e)).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{p.loadingAgents=!1})))().then(()=>(p.initialized=!0,Y(),L())).then(j),O())})),b.push(_.onSelectedChatChanged(e=>{e&&e.id?I.getConversation(e.id).then(t=>{_.updateSelectedChat(t),R.saveChat(e)}).catch(t=>{t.status===h.status.NOT_FOUND&&(k(e),_.emit(i.TTYGEventName.LOAD_CHAT_FAILURE,e))}):e&&_.updateSelectedChat(e)})),b.push(_.onChatsListChanged(e=>{p.chats=e,F(e)})),b.push(_.onCanUpdateAgentUpdated(e=>{p.canModifyAgent=e})),b.push(_.subscribe(_.onAgentsListChanged(e=>{p.agents=e}))),b.push(_.subscribe(i.TTYGEventName.CREATE_CHAT,e=>{let t=_.getChats().getNonPersistedChat();t||(t=a.ChatModel.getEmptyChat(),_.addChat(t)),_.selectChat(t),I.createConversation(e).then(t=>{_.emit(i.TTYGEventName.CREATE_CHAT_SUCCESSFUL);const n=_.getSelectedChat();if(n&&!n.id){n.id=t.chatId,e.chatId=t.chatId;const i=_.getChats().getNonPersistedChat();_.replaceChat(n,i),R.saveChat(n),x(n,e,t)}}).catch(()=>{_.emit(i.TTYGEventName.CREATE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.create_failure"))})})),b.push(_.subscribe(i.TTYGEventName.RENAME_CHAT,e=>{I.renameConversation(e).then(()=>{_.emit(i.TTYGEventName.RENAME_CHAT_SUCCESSFUL),_.emit(i.TTYGEventName.LOAD_CHATS)}).catch(()=>{_.emit(i.TTYGEventName.RENAME_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.rename_failure"))})})),b.push(_.subscribe(i.TTYGEventName.DELETE_CHAT,e=>{_.emit(i.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!0}),I.deleteConversation(e.id).then(()=>{_.emit(i.TTYGEventName.DELETE_CHAT_SUCCESSFUL,e);const t=_.getChats();t.deleteChat(e),_.updateChats(t)}).catch(()=>{_.emit(i.TTYGEventName.DELETE_CHAT_FAILURE),A.error(y.instant("ttyg.chat.messages.delete_failure"))}).finally(()=>_.emit(i.TTYGEventName.DELETING_CHAT,{chatId:e.id,inProgress:!1}))})),b.push(_.subscribe(i.TTYGEventName.CHAT_EXPORT,D)),b.push(_.subscribe(i.TTYGEventName.ASK_QUESTION,e=>{I.askQuestion(e).then(t=>{const n=_.getSelectedChat();n&&n.id===e.chatId&&x(n,e,t)}).catch(e=>{_.emit(i.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(i.TTYGEventName.CONTINUE_CHAT_RUN,e=>{I.continueChatRun(e).then(t=>{const n=e.chatId,i=_.getSelectedChat();if(i&&i.id===n){const e=i.chatHistory.items,n=e[e.length-1];w(i,n,t)}}).catch(e=>{_.emit(i.TTYGEventName.ASK_QUESTION_FAILURE),A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})})),b.push(_.subscribe(i.TTYGEventName.LOAD_CHATS,L)),b.push(_.subscribe(i.TTYGEventName.OPEN_AGENT_SETTINGS,p.onOpenNewAgentSettings)),b.push(_.subscribe(i.TTYGEventName.EDIT_AGENT,p.onOpenAgentSettings)),b.push(_.subscribe(i.TTYGEventName.CLONE_AGENT,p.onOpenCloneAgentSettings)),b.push(_.subscribe(i.TTYGEventName.DELETE_AGENT,e=>{_.emit(i.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!0}),I.deleteAgent(e.id).then(()=>G()).then(()=>{_.emit(i.TTYGEventName.AGENT_DELETED,e),p.selectedAgent&&p.selectedAgent.id===e.id&&(p.selectedAgent=void 0)}).catch(e=>{A.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{_.emit(i.TTYGEventName.DELETING_AGENT,{agentId:e.id,inProgress:!1})})})),b.push(_.subscribe(i.TTYGEventName.AGENT_SELECTED,e=>{p.selectedAgent=e})),b.push(_.subscribe(i.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_similarity.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),U()})}else U()})),b.push(_.subscribe(i.TTYGEventName.GO_TO_CONNECTORS_VIEW,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmationModal({title:y.instant("common.confirm"),message:Object(u.decodeHTML)(y.instant("ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_connectors.body",{repositoryId:t.id})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{C.setRepository(t),$()})}else $()})),b.push(_.subscribe(i.TTYGEventName.GO_TO_SPARQL_EDITOR,e=>{if(e.repositoryId!==C.getActiveRepository()){const t=C.getRepository(e.repositoryId);t&&v.openConfirmation(y.instant("common.confirm"),Object(u.decodeHTML)(y.instant("ttyg.chat_panel.dialog.confirm_repository_change.body",{repositoryId:e.repositoryId})),()=>{C.setRepository(t),H(e.query)})}else H(e.query)})),b.push(n.$on("$translateChangeSuccess",()=>{N.filter_all=y.instant("ttyg.agent.btn.filter.all"),Y()})),b.push(n.$on("securityInit",O)),p.$on("$destroy",(function(){b.forEach(e=>e()),_.resetContext()}))}angular.module("graphdb.framework.ttyg.controllers.ttyg-view",["toastr","graphdb.framework.utils.localstorageadapter","graphdb.framework.core.services.ttyg-service","graphdb.framework.ttyg.services.ttygcontext","graphdb.framework.ttyg.services.ttygstorage","graphdb.framework.ttyg.directives.chat-list","graphdb.framework.ttyg.directives.chat-panel","graphdb.framework.ttyg.directives.agent-list","graphdb.framework.ttyg.directives.agent-select-menu","graphdb.framework.ttyg.directives.no-agents-view","graphdb.framework.ttyg.controllers.agent-settings-modal"]).controller("TTYGViewCtrl",p),p.$inject=["$jwtAuth","$window","$rootScope","$scope","$http","$timeout","$translate","$uibModal","$repositories","toastr","ModalService","LocalStorageAdapter","TTYGService","TTYGContextService","TTYGStorageService"]},532:function(e,t){(function(t){e.exports=t}).call(this,{})},533:function(e,t,n){var i,o=o||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o=e.webkitRequestFileSystem,s=e.requestFileSystem||o||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},r=0,c=function(t){var i=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?i():setTimeout(i,500)},l=function(e,t,n){for(var i=(t=[].concat(t)).length;i--;){var o=e["on"+t[i]];if("function"==typeof o)try{o.call(e,n||e)}catch(e){a(e)}}},d=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},g=function(t,a){t=d(t);var g,u,h,m=this,p=t.type,T=!1,E=function(){l(m,"writestart progress write writeend".split(" "))},y=function(){(!T&&g||(g=n().createObjectURL(t)),u)?u.location.href=g:null==e.open(g,"_blank")&&"undefined"!=typeof safari&&(e.location.href=g);m.readyState=m.DONE,E(),c(g)},f=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},C={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),i)return g=n().createObjectURL(t),i.href=g,i.download=a,void setTimeout((function(){var e,t;e=i,t=new MouseEvent("click"),e.dispatchEvent(t),E(),c(g),m.readyState=m.DONE}));e.chrome&&p&&"application/octet-stream"!==p&&(h=t.slice||t.webkitSlice,t=h.call(t,0,t.size,"application/octet-stream"),T=!0),o&&"download"!==a&&(a+=".download"),("application/octet-stream"===p||o)&&(u=e),s?(r+=t.size,s(e.TEMPORARY,r,f((function(e){e.root.getDirectory("saved",C,f((function(e){var n=function(){e.getFile(a,C,f((function(e){e.createWriter(f((function(n){n.onwriteend=function(t){u.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),y)})),y)};e.getFile(a,{create:!1},f((function(e){e.remove(),n()})),f((function(e){e.code===e.NOT_FOUND_ERR?n():y()})))})),y)})),y)):y()},u=g.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(d(e),t)}:(u.abort=function(){this.readyState=this.DONE,l(this,"abort")},u.readyState=u.INIT=0,u.WRITING=1,u.DONE=2,u.error=u.onwritestart=u.onprogress=u.onwrite=u.onabort=u.onerror=u.onwriteend=null,function(e,t){return new g(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
2
  /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=o:null!==n(537)&&null!=n(532)&&(void 0===(i=function(){return o}.apply(t,[]))||(e.exports=i))},537:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},82:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexType",(function(){return i}));const i={TEXT:"text",TEXT_LITERAL:"textLiteral",PREDICATION:"predication",isTextType:e=>i.TEXT===e,isTextLiteralType:e=>i.TEXT_LITERAL===e,isPredicationType:e=>i.PREDICATION===e}},85:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndexStatus",(function(){return i}));const i={CREATING:"CREATING",BUILDING:"BUILDING",BUILT:"BUILT",REBUILDING:"REBUILDING",OUTDATED:"OUTDATED",INTERRUPTED:"INTERRUPTED",OBSOLETE:"OBSOLETE",FAILED:"FAILED",isCreatingStatus:e=>i.CREATING===e,isBuildingStatus:e=>i.BUILDING===e,isBuiltStatus:e=>i.BUILT===e,isRebuildingStatus:e=>i.REBUILDING===e,isOutdatedStatus:e=>i.OUTDATED===e,isInterruptedStatus:e=>i.INTERRUPTED===e,isObsoleteStatus:e=>i.OBSOLETE===e,isFailedStatus:e=>i.FAILED===e}},86:function(e,t,n){"use strict";n.r(t),n.d(t,"SimilarityIndex",(function(){return s}));var i=n(82),o=n(85);class s{constructor(){this.analyzer="",this.infer=!0,this.options="",this.sameAs=!0,this.searchQuery="",this.selectQuery="",this.stopList=void 0,this.name="",this.type=i.SimilarityIndexType.TEXT,this.status=void 0,this.analogicalQuery=void 0,this.inputIndex=void 0,this.isLiteralIndex=""}isTextType(){return i.SimilarityIndexType.isTextType(this.type)}isTextLiteralType(){return i.SimilarityIndexType.isTextLiteralType(this.type)}isPredicationType(){return i.SimilarityIndexType.isPredicationType(this.type)}isCreatingStatus(){return o.SimilarityIndexStatus.isCreatingStatus(this.status)}isBuildingStatus(){return o.SimilarityIndexStatus.isBuildingStatus(this.status)}isBuiltStatus(){return o.SimilarityIndexStatus.isBuiltStatus(this.status)}isRebuildingStatus(){return o.SimilarityIndexStatus.isRebuildingStatus(this.status)}isOutdatedStatus(){return o.SimilarityIndexStatus.isOutdatedStatus(this.status)}isInterruptedStatus(){return o.SimilarityIndexStatus.isInterruptedStatus(this.status)}isObsoleteStatus(){return o.SimilarityIndexStatus.isObsoleteStatus(this.status)}isFailedStatus(){return o.SimilarityIndexStatus.isFailedStatus(this.status)}}},90:function(e,t,n){"use strict";n.r(t),n.d(t,"mapIndexesResponseToSimilarityIndex",(function(){return o}));var i=n(86);const o=e=>e.map(e=>{const t=new i.SimilarityIndex;return t.type=e.type,t.stopList=e.stopList,t.status=e.status,t.selectQuery=e.selectQuery,t.searchQuery=e.searchQuery,t.sameAs=e.sameAs,t.options=e.options,t.name=e.name,t.infer=e.infer,t.analyzer=e.analyzer,t.analogicalQuery=e.analogicalQuery,t})},91:function(e,t){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",n),n.$inject=["$http"];function n(e){return{getConnectors:function(t,n){if(t)return e.get("rest/connectors",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/connectors")},initConnector:function(t){return e.get("rest/connectors/options?prefix="+t)},hasConnector:function(t,n,i){if(n)return e.get("rest/connectors/existing?prefix="+t,{headers:{"X-GraphDB-Repository":n,"X-GraphDB-Repository-Location":i}});return e.get("rest/connectors/existing?prefix="+t)},checkConnector:function(t){return e.post("rest/connectors/check",t,{headers:{"Content-Type":"text/plain"}})}}}},94:function(e,t,n){"use strict";n.r(t),n.d(t,"ConnectorTypesListModel",(function(){return i})),n.d(t,"ConnectorTypeModel",(function(){return o})),n.d(t,"ConnectorListModel",(function(){return s})),n.d(t,"ConnectorModel",(function(){return a})),n.d(t,"ConnectorSettingsModel",(function(){return r}));class i{constructor(e={}){this._connectors=e.connectors||[]}getConnectorByName(e){return this._connectors.find(t=>t.name===e)}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class o{constructor(e){this._name=e.name,this._prefix=e.prefix}get name(){return this._name}set name(e){this._name=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}}class s{constructor(e=[]){this._connectors=e.connectors}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class a{constructor(e){this._name=e.name,this._settings=new r(e)}get settings(){return this._settings}set settings(e){this._settings=e}get name(){return this._name}set name(e){this._name=e}}class r{constructor(e){this._settings=e.values||{}}get settings(){return this._settings}set settings(e){this._settings=e}}},95:function(e,t){angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",n),n.$inject=["$http","$repositories"];function n(e){return{getIndexes:function(t,n){if(t)return e.get("rest/similarity",{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":n}});return e.get("rest/similarity")},getSearchQueries:function(){return e.get("rest/similarity/config")},rebuildIndex:function(e){return t("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(t){return e.delete("rest/similarity?name="+t.name)},createIndex:t,getSamples:function(){return e.get("rest/similarity/samples")},getQuery:function(t){return e.get("rest/similarity/query",{params:{name:t.indexName,options:t.indexOptions,stopList:t.indexStopList,selectQuery:t.query,infer:t.queryInference,sameAs:t.querySameAs,type:t.viewType,analyzer:t.indexAnalyzer}})},saveSearchQuery:function(t){return e({method:"put",url:"rest/similarity/search-query",data:t})}};function t(t,n,i,o,s,a,r,c,l,d,g){return e({method:t,url:"rest/similarity",noCancelOnRouteChange:!0,data:{name:n,options:i,selectQuery:o,stopList:r,infer:c,sameAs:l,type:d,analyzer:g,searchQuery:s,analogicalQuery:a}})}}},96:function(e,t,n){"use strict";n.r(t);n(91);var i=n(101),o=n(84);function s(e){const t=(t,n)=>e.getConnectors(t,n).then(e=>Object(i.connectorTypesListMapper)(e.data)),n=(t,n,o)=>e.hasConnector(encodeURIComponent(t),n,o).then(e=>Object(i.connectorsMapper)(e.data));return{getConnectorTypes:t,getConnectorsByType:n,getConnectorPrefixByName:(e,n,i)=>t(n,i).then(t=>{const n=t.getConnectorByName(e);return n?n.prefix:null}),getConnectorsByTypeAsSelectMenuOptions:(e,t,i)=>n(e,t,i).then(e=>e.connectors.map(e=>new o.SelectMenuOptionsModel({value:e.name,label:e.name})))}}angular.module("graphdb.framework.core.services.connectors",["graphdb.framework.rest.connectors.service"]).factory("ConnectorsService",s),s.$inject=["ConnectorsRestService"]},97:function(e,t,n){"use strict";n.r(t);n(95);var i=n(90),o=n(84);function s(e){const t=(t,n)=>e.getIndexes(t,n).then(e=>Object(i.mapIndexesResponseToSimilarityIndex)(e.data));return{getIndexes:t,getIndexesAsMenuModel:(e,n)=>t(e,n).then(e=>e.map(e=>new o.SelectMenuOptionsModel({label:e.name,value:e.name})))}}angular.module("graphdb.framework.core.services.similarity",["graphdb.framework.rest.similarity.service"]).factory("SimilarityService",s),s.$inject=["SimilarityRestService"]}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[341],{452:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/cluster-nodes-configuration.css?v=2.8.0-RC4" rel="stylesheet"/>\n\n<div onto-loader-new ng-if="loader" class="create-cluster-loader" message="getLoaderMessage" size="100"></div>\n<div class="add-node-wrapper pull-right mb-1">\n <button ng-click="addNode()" ng-disabled="editedNodeIndex !== undefined"\n class="btn btn-primary add-node-btn"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip\' | translate}}">\n <i class="fa fa-plus"></i> {{\'cluster_management.update_cluster_group_dialog.actions.add_node\' |\n translate}}\n </button>\n</div>\n<div class="table-responsive">\n <form name="form" id="updateClusterGroupForm">\n <table class="cluster-group table table-striped table-hover cluster-group-table" aria-describedby="cluster group table">\n <thead>\n <tr class="labels-row">\n <th scope="col" class="index-column">\n {{\'cluster_management.update_cluster_group_dialog.column.index\' | translate}}\n </th>\n <th scope="col" class="location-column">\n {{\'cluster_management.update_cluster_group_dialog.column.location\' | translate}}\n </th>\n <th scope="col" class="info-column">\n {{\'cluster_management.update_cluster_group_dialog.column.info\' | translate}}\n </th>\n <th scope="col" class="status-column">\n {{\'cluster_management.update_cluster_group_dialog.column.status\' | translate}}\n </th>\n <th scope="col" class="empty-column"></th>\n <th scope="col" class="actions-column"></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!viewModel.length">\n <td colspan="5" class="no-data">\n {{\'cluster_management.update_cluster_group_dialog.messages.no_cluster\' | translate}}\n </td>\n </tr>\n\n <tr ng-repeat-start="node in viewModel track by $index" ng-if="0"></tr>\n <tr ng-if="$index !== editedNodeIndex" class="node preview-node-row" data-endpoint="{{node.endpoint}}"\n capture-height="$index"\n ng-class="{\'selected\': $index === selectedNode || $index === editedNodeIndex}">\n <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td>\n <td class="location-cell data" ng-class="{\'deleting\': node.isDeleted, \'adding\': !node.item.address}">\n <div class="location-item">\n {{node.item.endpoint}}\n </div>\n </td>\n <td class="info-cell data">\n <span ng-if="node.isLocal">\n {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span>\n </span>\n\n <span ng-if="node.item.nodeState">\n {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) |\n translate }}\n </span>\n </td>\n <td class="status-cell data">\n <div ng-if="!node.item.address" class="adding">\n <i class="fa fa-circle-check status-icon"></i>\n {{\'cluster_management.update_cluster_group_dialog.new_node\' | translate}}\n </div>\n <div ng-if="node.isDeleted" class="deleting">\n <i class="fa fa-xmark status-icon"></i>\n {{\'cluster_management.update_cluster_group_dialog.deleted_node\' | translate}}\n </div>\n </td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div ng-if="editedNodeIndex === undefined && !node.isDeleted" class="actions-group">\n <button ng-click="deleteNode($index, node)" ng-disabled="!canDeleteNode"\n class="btn btn-link delete-node-btn secondary"\n gdb-tooltip="{{ canDeleteNode ? (\'cluster_management.update_cluster_group_dialog.actions.delete_node\' | translate) : (\'cluster_management.update_cluster_group_dialog.actions.cannot_delete_node\' | translate) }}"\n title-class="delete-node-tooltip">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="replaceNode($index, node)" class="btn btn-link replace-node-btn"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.replace_node\' | translate}}">\n <i class="fa fa-arrow-right-arrow-left"></i>\n </button>\n </div>\n <div ng-if="editedNodeIndex === undefined && node.isDeleted" class="actions-group">\n <button ng-click="restoreNode(node)"\n class="btn btn-link restore-node-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.restore_node\' | translate}}">\n <i class="fa fa-rotate-left"></i>\n </button>\n </div>\n </td>\n </tr>\n <tr ng-if="$index === editedNodeIndex" class="node edit-node-row" data-endpoint="{{node.endpoint}}"\n style="{{getRowHeight}}"\n ng-class="{\'selected table-info\': $index === editedNodeIndex}">\n <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td>\n <td class="data location-cell">\n <div class="autocomplete-container">\n <textarea type="text" name="location" required\n ng-model="node.endpoint"\n ng-change="filterSuggestions(node)"\n ng-blur="hideSuggestions(node)"\n ng-click="filterSuggestions(node)"\n auto-grow\n validate-url exclude="/repositories" exclude-protocol="ftp,ftps"\n validate-duplicate-url excluded-urls="clusterNodesEndpoints"\n allow-empty="false"\n autocomplete="off"\n class="form-control form-control-sm textarea-edit"\n uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}"\n tooltip-placement="top"\n placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}">\n </textarea>\n <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown">\n <li ng-repeat="suggestion in suggestions"\n ng-mouseup="selectSuggestion(node, suggestion)">\n {{ suggestion }}\n </li>\n </ul>\n </div>\n </td>\n <td class="info-cell data">\n <span ng-if="node.isLocal">\n {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span>\n </span>\n\n <span ng-if="node.item.nodeState">\n {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) |\n translate }}\n </span>\n </td>\n <td class="status-cell"></td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div class="crud-actions-group">\n <button ng-click="cancel()"\n class="btn btn-link cancel-node-replace-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="saveNode(node.endpoint)"\n class="btn btn-link save-rule-btn"\n ng-disabled="!form.location.$valid"\n gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}">\n <i class="fa fa-check"></i>\n </button>\n </div>\n </td>\n </tr>\n <tr ng-repeat-end ng-if="0"></tr>\n <tr ng-if="addNewLocation" class="node edit-node-row">\n <td class="index-cell"></td>\n <td class="data location-cell">\n <div class="autocomplete-container">\n <textarea type="text" name="location" required\n ng-model="newLocation.endpoint"\n ng-change="filterSuggestions(newLocation)"\n ng-blur="hideSuggestions(newLocation)"\n ng-click="filterSuggestions(newLocation)"\n auto-grow\n validate-url exclude="/repositories" exclude-protocol="ftp,ftps"\n validate-duplicate-url excluded-urls="clusterNodesEndpoints"\n allow-empty="false"\n autocomplete="off"\n class="form-control form-control-sm textarea-edit"\n uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}"\n tooltip-placement="top"\n placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}">\n </textarea>\n <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown">\n <li ng-repeat="suggestion in suggestions"\n ng-mouseup="selectSuggestion(newLocation, suggestion)">\n {{ suggestion }}\n </li>\n </ul>\n </div>\n </td>\n <td class="info-cell data"></td>\n <td class="status-cell"></td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div class="crud-actions-group">\n <button ng-click="cancel()"\n class="btn btn-link cancel-node-replace-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="saveNode(newLocation.endpoint)"\n class="btn btn-link save-rule-btn"\n ng-disabled="!form.location.$valid"\n gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}">\n <i class="fa fa-check"></i>\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n <div class="errors">\n <div class="error-message"\n ng-show="form.location.$error.validUrl && !form.location.$pristine">\n * {{\'valid.remote.location.warning\' | translate}} http://server.example.com:7200/.\n </div>\n <div class="error-message"\n ng-show="form.location.$error.duplicateUrl && !form.location.$pristine">\n * {{\'duplicate.remote.location.warning\' | translate}}\n </div>\n <div ng-repeat="error in errors" class="error-message">\n {{error}}\n </div>\n </div>\n <div class="form-horizontal" ng-if="!hasCluster">\n <div class="form-group">\n <div class="indented-div">\n <span class="padding-label wrapper-div"\n gdb-tooltip="{{\'cluster_management.cluster_page.advanced_options_tooltip\' | translate}}">\n <button type="button"\n class="text-btn advanced-options-btn text-left"\n data-toggle="collapse"\n data-target="#advancedOptions">\n <i class="{{getAdvancedOptionsClass()}} advanced-options-toggle" aria-hidden="true"></i>\n {{\'cluster_management.cluster_page.advanced_options\' | translate}}\n </button>\n </span>\n </div>\n\n <div id="advancedOptions" class="collapse pb-1 pl-2">\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.electionMinTimeout.$invalid}">\n <label for="election-minimum-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_min_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.electionMinTimeout"\n required id="election-minimum-timeout" min="0" pattern="[0-9]+"\n name="electionMinTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionMinTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionMinTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.electionRangeTimeout.$invalid}">\n <label for="election-range-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_range_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.electionRangeTimeout"\n required id="election-range-timeout" min="0" pattern="[0-9]+"\n name="electionRangeTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionRangeTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionRangeTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.heartbeatInterval.$invalid}">\n <label for="heartbeat-interval" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.heartbeat_interval\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.heartbeatInterval"\n required id="heartbeat-interval" min="0" pattern="[0-9]+"\n name="heartbeatInterval">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.heartbeatInterval.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.heartbeatInterval.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.messageSizeKB.$invalid}">\n <label for="message-size" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.message_size_kb\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.message_size_kb_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.messageSizeKB"\n required id="message-size" min="0" pattern="[0-9]+" name="messageSizeKB">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.messageSizeKB.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.messageSizeKB.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.verificationTimeout.$invalid}">\n <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.verification_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.verification_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.verificationTimeout"\n required id="verification-timeout" min="0" pattern="[0-9]+"\n name="verificationTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.verificationTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.verificationTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.transactionLogMaximumSizeGB.$invalid}">\n <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.transactionLogMaximumSizeGB"\n required id="transaction-log-maximum-size-gb"\n pattern="-?[1-9][0-9]*(\\.[0-9]+)?" name="transaction_log_maximum_size_gb">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.pattern">\n {{\'cluster_management.cluster_page.errors.small_transaction_log_max_size\' |\n translate}}\n </div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.batchUpdateInterval.$invalid}">\n <label for="batch-update-interval" class="col-xs-4 col-form-label">\n {{\'cluster_management.cluster_configuration_properties.batch_update_interval\' | translate}}*\n </label>\n <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip\' | translate}}">\n <input\n class="form-control"\n placeholder="{{\'required.field\' | translate}}"\n type="number"\n ng-model="clusterConfiguration.batchUpdateInterval"\n required\n id="batch-update-interval"\n min="0"\n name="batchUpdateInterval">\n <div class="form-control-feedback" ng-show="clusterConfigurationForm.batchUpdateInterval.$error.required">\n {{\'required.field\' | translate}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[341],{452:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/cluster-nodes-configuration.css?v=2.8.0-RC5" rel="stylesheet"/>\n\n<div onto-loader-new ng-if="loader" class="create-cluster-loader" message="getLoaderMessage" size="100"></div>\n<div class="add-node-wrapper pull-right mb-1">\n <button ng-click="addNode()" ng-disabled="editedNodeIndex !== undefined"\n class="btn btn-primary add-node-btn"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip\' | translate}}">\n <i class="fa fa-plus"></i> {{\'cluster_management.update_cluster_group_dialog.actions.add_node\' |\n translate}}\n </button>\n</div>\n<div class="table-responsive">\n <form name="form" id="updateClusterGroupForm">\n <table class="cluster-group table table-striped table-hover cluster-group-table" aria-describedby="cluster group table">\n <thead>\n <tr class="labels-row">\n <th scope="col" class="index-column">\n {{\'cluster_management.update_cluster_group_dialog.column.index\' | translate}}\n </th>\n <th scope="col" class="location-column">\n {{\'cluster_management.update_cluster_group_dialog.column.location\' | translate}}\n </th>\n <th scope="col" class="info-column">\n {{\'cluster_management.update_cluster_group_dialog.column.info\' | translate}}\n </th>\n <th scope="col" class="status-column">\n {{\'cluster_management.update_cluster_group_dialog.column.status\' | translate}}\n </th>\n <th scope="col" class="empty-column"></th>\n <th scope="col" class="actions-column"></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!viewModel.length">\n <td colspan="5" class="no-data">\n {{\'cluster_management.update_cluster_group_dialog.messages.no_cluster\' | translate}}\n </td>\n </tr>\n\n <tr ng-repeat-start="node in viewModel track by $index" ng-if="0"></tr>\n <tr ng-if="$index !== editedNodeIndex" class="node preview-node-row" data-endpoint="{{node.endpoint}}"\n capture-height="$index"\n ng-class="{\'selected\': $index === selectedNode || $index === editedNodeIndex}">\n <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td>\n <td class="location-cell data" ng-class="{\'deleting\': node.isDeleted, \'adding\': !node.item.address}">\n <div class="location-item">\n {{node.item.endpoint}}\n </div>\n </td>\n <td class="info-cell data">\n <span ng-if="node.isLocal">\n {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span>\n </span>\n\n <span ng-if="node.item.nodeState">\n {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) |\n translate }}\n </span>\n </td>\n <td class="status-cell data">\n <div ng-if="!node.item.address" class="adding">\n <i class="fa fa-circle-check status-icon"></i>\n {{\'cluster_management.update_cluster_group_dialog.new_node\' | translate}}\n </div>\n <div ng-if="node.isDeleted" class="deleting">\n <i class="fa fa-xmark status-icon"></i>\n {{\'cluster_management.update_cluster_group_dialog.deleted_node\' | translate}}\n </div>\n </td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div ng-if="editedNodeIndex === undefined && !node.isDeleted" class="actions-group">\n <button ng-click="deleteNode($index, node)" ng-disabled="!canDeleteNode"\n class="btn btn-link delete-node-btn secondary"\n gdb-tooltip="{{ canDeleteNode ? (\'cluster_management.update_cluster_group_dialog.actions.delete_node\' | translate) : (\'cluster_management.update_cluster_group_dialog.actions.cannot_delete_node\' | translate) }}"\n title-class="delete-node-tooltip">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="replaceNode($index, node)" class="btn btn-link replace-node-btn"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.replace_node\' | translate}}">\n <i class="fa fa-arrow-right-arrow-left"></i>\n </button>\n </div>\n <div ng-if="editedNodeIndex === undefined && node.isDeleted" class="actions-group">\n <button ng-click="restoreNode(node)"\n class="btn btn-link restore-node-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.restore_node\' | translate}}">\n <i class="fa fa-rotate-left"></i>\n </button>\n </div>\n </td>\n </tr>\n <tr ng-if="$index === editedNodeIndex" class="node edit-node-row" data-endpoint="{{node.endpoint}}"\n style="{{getRowHeight}}"\n ng-class="{\'selected table-info\': $index === editedNodeIndex}">\n <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td>\n <td class="data location-cell">\n <div class="autocomplete-container">\n <textarea type="text" name="location" required\n ng-model="node.endpoint"\n ng-change="filterSuggestions(node)"\n ng-blur="hideSuggestions(node)"\n ng-click="filterSuggestions(node)"\n auto-grow\n validate-url exclude="/repositories" exclude-protocol="ftp,ftps"\n validate-duplicate-url excluded-urls="clusterNodesEndpoints"\n allow-empty="false"\n autocomplete="off"\n class="form-control form-control-sm textarea-edit"\n uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}"\n tooltip-placement="top"\n placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}">\n </textarea>\n <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown">\n <li ng-repeat="suggestion in suggestions"\n ng-mouseup="selectSuggestion(node, suggestion)">\n {{ suggestion }}\n </li>\n </ul>\n </div>\n </td>\n <td class="info-cell data">\n <span ng-if="node.isLocal">\n {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span>\n </span>\n\n <span ng-if="node.item.nodeState">\n {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) |\n translate }}\n </span>\n </td>\n <td class="status-cell"></td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div class="crud-actions-group">\n <button ng-click="cancel()"\n class="btn btn-link cancel-node-replace-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="saveNode(node.endpoint)"\n class="btn btn-link save-rule-btn"\n ng-disabled="!form.location.$valid"\n gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}">\n <i class="fa fa-check"></i>\n </button>\n </div>\n </td>\n </tr>\n <tr ng-repeat-end ng-if="0"></tr>\n <tr ng-if="addNewLocation" class="node edit-node-row">\n <td class="index-cell"></td>\n <td class="data location-cell">\n <div class="autocomplete-container">\n <textarea type="text" name="location" required\n ng-model="newLocation.endpoint"\n ng-change="filterSuggestions(newLocation)"\n ng-blur="hideSuggestions(newLocation)"\n ng-click="filterSuggestions(newLocation)"\n auto-grow\n validate-url exclude="/repositories" exclude-protocol="ftp,ftps"\n validate-duplicate-url excluded-urls="clusterNodesEndpoints"\n allow-empty="false"\n autocomplete="off"\n class="form-control form-control-sm textarea-edit"\n uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}"\n tooltip-placement="top"\n placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}">\n </textarea>\n <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown">\n <li ng-repeat="suggestion in suggestions"\n ng-mouseup="selectSuggestion(newLocation, suggestion)">\n {{ suggestion }}\n </li>\n </ul>\n </div>\n </td>\n <td class="info-cell data"></td>\n <td class="status-cell"></td>\n <td class="empty-cell"></td>\n <td class="actions-cell">\n <div class="crud-actions-group">\n <button ng-click="cancel()"\n class="btn btn-link cancel-node-replace-btn secondary"\n gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}">\n <i class="fa fa-xmark"></i>\n </button>\n <button ng-click="saveNode(newLocation.endpoint)"\n class="btn btn-link save-rule-btn"\n ng-disabled="!form.location.$valid"\n gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}">\n <i class="fa fa-check"></i>\n </button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n <div class="errors">\n <div class="error-message"\n ng-show="form.location.$error.validUrl && !form.location.$pristine">\n * {{\'valid.remote.location.warning\' | translate}} http://server.example.com:7200/.\n </div>\n <div class="error-message"\n ng-show="form.location.$error.duplicateUrl && !form.location.$pristine">\n * {{\'duplicate.remote.location.warning\' | translate}}\n </div>\n <div ng-repeat="error in errors" class="error-message">\n {{error}}\n </div>\n </div>\n <div class="form-horizontal" ng-if="!hasCluster">\n <div class="form-group">\n <div class="indented-div">\n <span class="padding-label wrapper-div"\n gdb-tooltip="{{\'cluster_management.cluster_page.advanced_options_tooltip\' | translate}}">\n <button type="button"\n class="text-btn advanced-options-btn text-left"\n data-toggle="collapse"\n data-target="#advancedOptions">\n <i class="{{getAdvancedOptionsClass()}} advanced-options-toggle" aria-hidden="true"></i>\n {{\'cluster_management.cluster_page.advanced_options\' | translate}}\n </button>\n </span>\n </div>\n\n <div id="advancedOptions" class="collapse pb-1 pl-2">\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.electionMinTimeout.$invalid}">\n <label for="election-minimum-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_min_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.electionMinTimeout"\n required id="election-minimum-timeout" min="0" pattern="[0-9]+"\n name="electionMinTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionMinTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionMinTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.electionRangeTimeout.$invalid}">\n <label for="election-range-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_range_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.electionRangeTimeout"\n required id="election-range-timeout" min="0" pattern="[0-9]+"\n name="electionRangeTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionRangeTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.electionRangeTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.heartbeatInterval.$invalid}">\n <label for="heartbeat-interval" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.heartbeat_interval\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.heartbeatInterval"\n required id="heartbeat-interval" min="0" pattern="[0-9]+"\n name="heartbeatInterval">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.heartbeatInterval.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.heartbeatInterval.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.messageSizeKB.$invalid}">\n <label for="message-size" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.message_size_kb\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.message_size_kb_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.messageSizeKB"\n required id="message-size" min="0" pattern="[0-9]+" name="messageSizeKB">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.messageSizeKB.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.messageSizeKB.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.verificationTimeout.$invalid}">\n <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.verification_timeout\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.verification_timeout_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.verificationTimeout"\n required id="verification-timeout" min="0" pattern="[0-9]+"\n name="verificationTimeout">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.verificationTimeout.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.verificationTimeout.$error.pattern">\n {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}}\n </div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="input-group"\n ng-class="{\'has-danger\': clusterConfigurationForm.transactionLogMaximumSizeGB.$invalid}">\n <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb\'\n | translate}}*</label>\n <div class="col-xs-8"\n gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip\' | translate}}">\n <input class="form-control" placeholder="{{\'required.field\' | translate}}"\n type="number" ng-model="clusterConfiguration.transactionLogMaximumSizeGB"\n required id="transaction-log-maximum-size-gb"\n pattern="-?[1-9][0-9]*(\\.[0-9]+)?" name="transaction_log_maximum_size_gb">\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.required">\n {{\'required.field\' | translate}}\n </div>\n <div class="form-control-feedback"\n ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.pattern">\n {{\'cluster_management.cluster_page.errors.small_transaction_log_max_size\' |\n translate}}\n </div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.batchUpdateInterval.$invalid}">\n <label for="batch-update-interval" class="col-xs-4 col-form-label">\n {{\'cluster_management.cluster_configuration_properties.batch_update_interval\' | translate}}*\n </label>\n <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip\' | translate}}">\n <input\n class="form-control"\n placeholder="{{\'required.field\' | translate}}"\n type="number"\n ng-model="clusterConfiguration.batchUpdateInterval"\n required\n id="batch-update-interval"\n min="0"\n name="batchUpdateInterval">\n <div class="form-control-feedback" ng-show="clusterConfigurationForm.batchUpdateInterval.$error.required">\n {{\'required.field\' | translate}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>\n';return __p}}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[347],{458:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/autocomplete-select.css?v=2.8.0-RC4" rel="stylesheet"/>\n\n<div class="autocomplete-select-wrapper">\n <div class="autocomplete-select">\n <div ng-hide="isMultiline">\n <input type="text" ng-model="searchInput" ng-change="onChange()" ng-keydown="onKeyDown($event)"\n ng-blur="onBlur()" ng-required="required"\n class="autocomplete-input autocomplete-editable" ng-class="styleClass" placeholder="{{placeholder}}">\n </div>\n <div ng-show="isMultiline">\n <textarea\n ng-model="searchInput"\n ng-change="onChange()"\n ng-keydown="onKeyDown($event)"\n ng-blur="onBlur()"\n ng-required="required"\n class="autocomplete-textarea autocomplete-editable" ng-class="styleClass"\n placeholder="{{placeholder}}"\n rows="{{initialRows}}">\n </textarea>\n </div>\n </div>\n <div class="autocomplete-results-wrapper card">\n <div ng-repeat="autoCompleteUriResult in autoCompleteUriResults track by $index"\n ng-click="selectResource(autoCompleteUriResult)"\n ng-mousemove="setActiveItemIndex($index)"\n ng-class="{active: activeSearchElm === $index, selected: selectedElementIndex === $index}"\n class="result-item">\n <p ng-bind-html="getResultItemHtml(autoCompleteUriResult)"></p>\n </div>\n </div>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[347],{458:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/autocomplete-select.css?v=2.8.0-RC5" rel="stylesheet"/>\n\n<div class="autocomplete-select-wrapper">\n <div class="autocomplete-select">\n <div ng-hide="isMultiline">\n <input type="text" ng-model="searchInput" ng-change="onChange()" ng-keydown="onKeyDown($event)"\n ng-blur="onBlur()" ng-required="required"\n class="autocomplete-input autocomplete-editable" ng-class="styleClass" placeholder="{{placeholder}}">\n </div>\n <div ng-show="isMultiline">\n <textarea\n ng-model="searchInput"\n ng-change="onChange()"\n ng-keydown="onKeyDown($event)"\n ng-blur="onBlur()"\n ng-required="required"\n class="autocomplete-textarea autocomplete-editable" ng-class="styleClass"\n placeholder="{{placeholder}}"\n rows="{{initialRows}}">\n </textarea>\n </div>\n </div>\n <div class="autocomplete-results-wrapper card">\n <div ng-repeat="autoCompleteUriResult in autoCompleteUriResults track by $index"\n ng-click="selectResource(autoCompleteUriResult)"\n ng-mousemove="setActiveItemIndex($index)"\n ng-class="{active: activeSearchElm === $index, selected: selectedElementIndex === $index}"\n class="result-item">\n <p ng-bind-html="getResultItemHtml(autoCompleteUriResult)"></p>\n </div>\n </div>\n</div>\n';return __p}}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[350],{461:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/operations-statuses-monitor.css?v=2.8.0-RC4" rel="stylesheet"/>\n\n<div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0"\n class="operations-statuses btn-group">\n <button type="button"\n class="btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown"\n ng-if="operationsSummary && operationsSummary.length > 0"\n ng-class="{\n \'btn-fade-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'btn-fade-warning\': OPERATION_STATUS.WARNING === activeOperations.status\n }">\n <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary">\n <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationGroup.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationGroup.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationGroup.status}">\n </div>\n <span ng-if="operationGroup.runningOperations" class="running-operation-count">\n <sup class="tag-info">{{operationGroup.runningOperations}}</sup>\n </span>\n </div>\n <span class="caret"></span>\n </button>\n <ul role="menu" class="dropdown-menu dropdown-menu-right">\n <div class="operations-statuses-content">\n <li ng-repeat="operationStatus in activeOperations.operations">\n <a class="operation-status-content btn btn-secondary row" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}"\n ng-class="{\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationStatus.status\n }">\n <div class="operation-icon col-sm-1" ng-style="noPadding">\n <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}">\n </div>\n </div>\n <div class="col-sm-8 operation-status-label">\n {{ \'global.operations_statuses.\' + operationStatus.titleLabelKey + \'.title\' | translate }}\n </div>\n <div class="operation-number col-sm-3">\n <div ng-if="operationStatus.runningOperationCount" class="operation-status-running-operation-count tag-info">\n {{operationStatus.runningOperationCount}}\n </div>\n </div>\n </a>\n </li>\n </div>\n </ul>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[350],{461:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/operations-statuses-monitor.css?v=2.8.0-RC5" rel="stylesheet"/>\n\n<div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0"\n class="operations-statuses btn-group">\n <button type="button"\n class="btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown"\n ng-if="operationsSummary && operationsSummary.length > 0"\n ng-class="{\n \'btn-fade-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'btn-fade-warning\': OPERATION_STATUS.WARNING === activeOperations.status\n }">\n <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary">\n <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationGroup.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationGroup.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationGroup.status}">\n </div>\n <span ng-if="operationGroup.runningOperations" class="running-operation-count">\n <sup class="tag-info">{{operationGroup.runningOperations}}</sup>\n </span>\n </div>\n <span class="caret"></span>\n </button>\n <ul role="menu" class="dropdown-menu dropdown-menu-right">\n <div class="operations-statuses-content">\n <li ng-repeat="operationStatus in activeOperations.operations">\n <a class="operation-status-content btn btn-secondary row" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}"\n ng-class="{\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationStatus.status\n }">\n <div class="operation-icon col-sm-1" ng-style="noPadding">\n <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}">\n </div>\n </div>\n <div class="col-sm-8 operation-status-label">\n {{ \'global.operations_statuses.\' + operationStatus.titleLabelKey + \'.title\' | translate }}\n </div>\n <div class="operation-number col-sm-3">\n <div ng-if="operationStatus.runningOperationCount" class="operation-status-running-operation-count tag-info">\n {{operationStatus.runningOperationCount}}\n </div>\n </div>\n </a>\n </li>\n </div>\n </ul>\n</div>\n';return __p}}}]);