From c7a7921739358f175b1b22ff75c774aceed6924d Mon Sep 17 00:00:00 2001 From: Dario De Pascalis Date: Fri, 23 Feb 2024 17:28:58 +0100 Subject: [PATCH 01/35] kb list width infinite scroll --- src/app/chatbot-design-studio/utils.ts | 1 + .../knowledge-bases.component.html | 6 +- .../knowledge-bases.component.ts | 67 ++++++-- .../knowledge-base-table.component.html | 135 ++++++++++----- .../knowledge-base-table.component.scss | 11 ++ .../knowledge-base-table.component.ts | 159 +++++++++++------- src/app/utils/util.ts | 10 +- 7 files changed, 265 insertions(+), 124 deletions(-) diff --git a/src/app/chatbot-design-studio/utils.ts b/src/app/chatbot-design-studio/utils.ts index 6df1db856a69..5f61285e0704 100644 --- a/src/app/chatbot-design-studio/utils.ts +++ b/src/app/chatbot-design-studio/utils.ts @@ -315,6 +315,7 @@ export function patchActionId(action) { return action; } + // export function retriveListOfVariables(intents: Array) { // variableList.userDefined = [] // intents.forEach(intent => { diff --git a/src/app/knowledge-bases/knowledge-bases.component.html b/src/app/knowledge-bases/knowledge-bases.component.html index cbe46161b11d..a99a9956f07f 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.html +++ b/src/app/knowledge-bases/knowledge-bases.component.html @@ -50,13 +50,15 @@ diff --git a/src/app/knowledge-bases/knowledge-bases.component.ts b/src/app/knowledge-bases/knowledge-bases.component.ts index 02388e8cf3a3..4e994e178197 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.ts +++ b/src/app/knowledge-bases/knowledge-bases.component.ts @@ -14,6 +14,8 @@ import { TranslateService } from '@ngx-translate/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { FaqKbService } from 'app/services/faq-kb.service'; +import { KB_DEFAULT_PARAMS } from 'app/utils/util'; + //import { Router } from '@angular/router'; @Component({ @@ -56,17 +58,12 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { kbFormContent: FormGroup; kbs: any; - kbsList = []; + kbsList: Array; kbsListCount: number = 0; refreshKbsList: boolean = true; + numberPage: number = 0; + - // PREVIEW - // question: string = ""; - // answer: string = ""; - // source_url: any; - // searching: boolean = false; - // error_answer: boolean = false; - // show_answer: boolean = false; kbid_selected: any; interval_id; ARE_NEW_KB: boolean @@ -105,11 +102,12 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { ) { } ngOnInit(): void { - + this.kbsList = []; this.getBrowserVersion(); this.getTranslations(); this.listenSidebarIsOpened(); - this.getListOfKb(); + let paramsDefault = "?limit="+KB_DEFAULT_PARAMS.LIMIT+"&page="+KB_DEFAULT_PARAMS.NUMBER_PAGE+"&sortField="+KB_DEFAULT_PARAMS.SORT_FIELD+"&direction="+KB_DEFAULT_PARAMS.DIRECTION; + this.getListOfKb(paramsDefault); this.kbFormUrl = this.createConditionGroupUrl(); this.kbFormContent = this.createConditionGroupContent(); this.trackPage(); @@ -407,17 +405,49 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { // }) // } + onLoadPage(searchParams){ + //console.log('onLoadNextPage:',this.kbsList); + this.numberPage = Math.floor(this.kbsList.length/KB_DEFAULT_PARAMS.LIMIT); + let params = "?limit="+KB_DEFAULT_PARAMS.LIMIT+"&page="+this.numberPage; + if(searchParams.status){ + params +="&status="+searchParams.status; + } + if(searchParams.search){ + params +="&search="+searchParams.search; + } + if(searchParams.sortField){ + params +="&sortField="+searchParams.sortField; + } else { + params +="&sortField="+KB_DEFAULT_PARAMS.SORT_FIELD; + } + if(searchParams.direction){ + params +="&direction="+searchParams.direction; + } else { + params +="&direction="+KB_DEFAULT_PARAMS.DIRECTION; + } + this.getListOfKb(params); + } + + onLoadByFilter(searchParams){ + //console.log('onLoadByFilter:',searchParams); + this.numberPage = 0; + this.kbsList = []; + this.onLoadPage(searchParams); + } + + getListOfKb(params?) { //this.showSpinner = true; this.logger.log("[KNOWLEDGE BASES COMP] getListOfKb "); - let paramsDefault = "?limit=10000&page=0"; - let urlParams = params?params:paramsDefault; - this.kbService.getListOfKb(urlParams).subscribe((kbResp:any) => { - this.logger.log("[KNOWLEDGE BASES COMP] get kbList: ", kbResp); - this.kbs = kbResp; - this.kbsList = kbResp.kbs; - //this.kbsListCount = kbList.count; - this.checkAllStatuses(); + this.kbService.getListOfKb(params).subscribe((resp:any) => { + this.logger.log("[KNOWLEDGE BASES COMP] get kbList: ", resp); + this.kbs = resp; + this.kbsListCount = resp.count; + resp.kbs.forEach(kb => { + this.kbsList.push(kb); + }); + console.log('[KNOWLEDGE BASES COMP] get kbList: ', this.kbs, this.kbsList); + // this.checkAllStatuses(); this.refreshKbsList = !this.refreshKbsList; //this.showSpinner = false; }, (error) => { @@ -679,6 +709,7 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { * */ checkAllStatuses() { + console.log('[KNOWLEDGE BASES COMP] checkAllStatuses: ', this.kbsList); this.kbsList.forEach(kb => { //if(kb.status == -1){ // this.onRunIndexing(kb); diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html index 5bcc5b7cd99c..3712cc60fec0 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html @@ -1,27 +1,4 @@ -
- - - +
@@ -30,7 +7,7 @@ {{ 'KbPage.TextSearch' | translate }}
- +
@@ -41,9 +18,10 @@
+ (ngModelChange)="onLoadByFilter($event, 'type')"> {{ 'KbPage.StatusAll' | translate }} {{ 'KbPage.StatusNotStarted' | translate }} {{ 'KbPage.StatusStarted' | translate }} @@ -56,9 +34,90 @@
+
+ + + + + + + + + + + + + + + + + + + + + + + + -
{{ 'KbPage.Type' | translate }}{{ 'KbPage.Status' | translate }} + {{'KbPage.CreatedAt' | translate }} + expand_more + expand_less + + {{'Name' | translate }} + expand_more + expand_less + + + +
+ description + link + lan + + + schedule + cached + check + error + + {{ kb.createdAt | amTimeAgo }} + +
{{ kb.name }}
+
{{getSubtitle(kb)}}
+
+
+ + + + + +
+
- + + +
+
Loading...
+ +
+ +
+ + + + + {{ 'KbPage.Status' | translate }} - + block - -> schedule cached check @@ -81,13 +140,13 @@ - + {{'KbPage.CreatedAt' | translate }} {{ kb.createdAt | amTimeAgo }} - + {{'Name' | translate }}
{{ kb.name }}
@@ -95,7 +154,7 @@
- + @@ -105,7 +164,7 @@ - +
- \ No newline at end of file + \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss index f54abea64378..919bd04083bf 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss @@ -128,4 +128,15 @@ table { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; +} + +.loading-indicator { + text-align: center; + margin: 50px auto 20px; + display: block; +} +.btn-more { + text-align: center; + margin: 50px auto 20px; + display: block; } \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts index 283aaf36c38e..358580bf48f8 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts @@ -1,9 +1,10 @@ -import { Component, Input, OnInit, ViewChild, Output, EventEmitter, SimpleChanges } from '@angular/core'; -import { MatTableDataSource } from '@angular/material/table'; -import { MatSort, Sort } from '@angular/material/sort'; -import { MatPaginator, MatPaginatorIntl } from '@angular/material/paginator'; +import { Component, Input, OnInit, ViewChild, Output, EventEmitter, SimpleChanges, ElementRef, HostListener } from '@angular/core'; +// import { MatTableDataSource } from '@angular/material/table'; +// import { MatSort, Sort } from '@angular/material/sort'; +// import { MatPaginator, MatPaginatorIntl } from '@angular/material/paginator'; import { KB, KbSettings } from 'app/models/kbsettings-model'; import {LiveAnnouncer} from '@angular/cdk/a11y'; +import { KB_DEFAULT_PARAMS } from 'app/utils/util'; @Component({ @@ -15,100 +16,130 @@ import {LiveAnnouncer} from '@angular/cdk/a11y'; export class KnowledgeBaseTableComponent implements OnInit { @Input() refresh: boolean; - @Input() kbs: any; + @Input() kbsList: KB[]; + @Input() kbsListCount: number; @Output() openBaseModalDetail = new EventEmitter(); @Output() openBaseModalDelete = new EventEmitter(); @Output() openBaseModalPreview = new EventEmitter(); @Output() runIndexing = new EventEmitter(); - - kbsList: KB[] = []; - kbsListfilterTypeFilter: KB[] = []; - dataSource: MatTableDataSource; - displayedColumns: string[] = ['type','status','createdAt','name','actions']; + @Output() loadPage = new EventEmitter(); + @Output() loadByFilter = new EventEmitter(); + + timeoutId: any; + // kbsListfilterTypeFilter: KB[] = []; filterType: string; filterText: string; + @ViewChild('tableBody') tableBody: ElementRef; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(MatPaginator) paginator: MatPaginator; + directionDesc: number = KB_DEFAULT_PARAMS.DIRECTION; + isLoading: boolean = false; + SHOW_MORE_BTN: boolean = true; + searchParams: any; constructor( - private _liveAnnouncer: LiveAnnouncer, - public pag: MatPaginatorIntl + private _liveAnnouncer: LiveAnnouncer ) { } ngOnInit(): void { this.filterType = ''; this.filterText = ''; - this.pag.firstPageLabel = 'first page:'; - this.pag.itemsPerPageLabel = 'items per page'; - this.pag.lastPageLabel = 'last page'; - this.pag.nextPageLabel = 'next page'; - this.pag.previousPageLabel = 'previous page'; + this.searchParams = { + "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, + "direction": KB_DEFAULT_PARAMS.DIRECTION, + "status": '', + "search": '', + } + } + + // @HostListener('window:scroll', ['$event']) + // onScroll(event) { + // if (this.isScrolledToBottom() && !this.isLoading && this.SHOW_MORE_BTN) { + // //this.loadData(); + // } + // } + + + // onTableScroll(e) { + // console.log('onTableScroll', e); + // const tableViewHeight = e.target.offsetHeight // viewport + // const tableScrollHeight = e.target.scrollHeight // length of all table + // const scrollLocation = e.target.scrollTop; // how far user scrolled + // } + + + + loadMoreData() { + this.isLoading = true; + this.loadPage.emit(this.searchParams); } + // isScrolledToBottom(): boolean { + // const tableBodyElement = this.tableBody.nativeElement; + // return tableBodyElement.scrollTop + tableBodyElement.clientHeight >= tableBodyElement.scrollHeight; + // } + ngOnChanges(changes: SimpleChanges){ - //console.log('ngOnChanges!!!', changes); - //let xx: MatPaginatorIntl; - //xx.itemsPerPageLabel = "xxx"; - if(this.kbs){ - this.kbsList = this.kbs.kbs; - this.dataSource = new MatTableDataSource(this.kbsList); + console.log('ngOnChanges!!!****** ', changes, changes.kbsListCount, this.kbsList.length); + if(changes.kbsListCount && changes.kbsListCount.currentValue) { + if(changes.kbsListCount.currentValue <= this.kbsList.length){ + this.SHOW_MORE_BTN = false; + } else { + this.SHOW_MORE_BTN = true; + } + } + if(changes.refresh){ + this.isLoading = false; } - // if(this.kbsList) { - // this.dataSource = new MatTableDataSource(this.kbsList); - // this.dataSource.sort = this.sort; - // this.dataSource.paginator = this.paginator; - // } } ngAfterViewInit() { //console.log('ngAfterViewInit!!!-->', this.kbsList); - this.dataSource = new MatTableDataSource(this.kbsList); - this.dataSource.sort = this.sort; - this.sort.active = "updatedAt"; - this.sort.direction = "desc" - this.dataSource.sortData(this.dataSource.data, this.sort); - this.dataSource.paginator = this.paginator; + // this.dataSource = new MatTableDataSource(this.kbsList); + // this.dataSource.sort = this.sort; + // this.sort.active = "updatedAt"; + // this.sort.direction = "desc" + // this.dataSource.sortData(this.dataSource.data, this.sort); + // this.dataSource.paginator = this.paginator; // this.paginator.length = this.dataSource.data.length; // this.paginator.pageSize = 20; } - - applyFilter(filterValue: string, column: string) { + onOrderBy(type){ + this.searchParams.sortField = type; + this.searchParams.direction = this.directionDesc; + this.directionDesc = this.directionDesc*-1; + this.isLoading = true; + this.loadByFilter.next(this.searchParams); + } + + onLoadByFilter(filterValue: string, column: string) { + let status = ''; + let search = ''; if( column == 'type'){ - this.filterType = filterValue; + status = filterValue; } else if(column == 'name'){ - this.filterText= filterValue; - } - //console.log('onOptionSelected:: ', filterValue, column, this.filterType, this.filterText); - this.dataSource.filterPredicate = (data: KB, filter: string) => { - if(this.filterType && this.filterText){ - return data.name.toLowerCase().includes(this.filterText) && data.status.toString() === this.filterType; - } - if(this.filterText && this.filterText != ""){ - return data.name.toLowerCase().includes(this.filterText); - } - if(this.filterType && this.filterType != ""){ - return data.status.toString() === this.filterType; - } - return true; - + search = filterValue; } - this.dataSource.filter = filterValue; - if (this.dataSource.paginator) { - this.dataSource.paginator.firstPage(); + this.searchParams.status = status; + this.searchParams.search = search; + if (this.timeoutId) { + clearTimeout(this.timeoutId); } + this.timeoutId = setTimeout(() => { + this.isLoading = true; + this.loadByFilter.next(this.searchParams); + }, 1000); } /** Announce the change in sort state for assistive technology. */ - announceSortChange(sortState: Sort) { - if (sortState.direction) { - this._liveAnnouncer.announce(`Sorted ${sortState.direction} ending`); - } else { - this._liveAnnouncer.announce('Sorting cleared'); - } - } + // announceSortChange(sortState: Sort) { + // if (sortState.direction) { + // this._liveAnnouncer.announce(`Sorted ${sortState.direction} ending`); + // } else { + // this._liveAnnouncer.announce('Sorting cleared'); + // } + // } onRunIndexing(kb){ diff --git a/src/app/utils/util.ts b/src/app/utils/util.ts index e370872971a9..6eb7e177ba9a 100755 --- a/src/app/utils/util.ts +++ b/src/app/utils/util.ts @@ -334,6 +334,14 @@ export enum KB_MAX_NUM { Custom = 3 }; + +export enum KB_DEFAULT_PARAMS { + LIMIT = 4, + NUMBER_PAGE = 0, + DIRECTION = -1, + SORT_FIELD = 'createdAt' +} + // Growth export const featuresPlanA = [ 'CRM', @@ -621,4 +629,4 @@ export const URL_install_tiledesk_on_prestashop = 'https://gethelp.tiledesk.com/ export const URL_install_tiledesk_on_joomla = 'https://gethelp.tiledesk.com/articles/install-tiledesk-on-joomla/' -export const URL_more_info_chatbot_forms = 'https://gethelp.tiledesk.com/articles/tiledesk-chatbot-forms/'; \ No newline at end of file +export const URL_more_info_chatbot_forms = 'https://gethelp.tiledesk.com/articles/tiledesk-chatbot-forms/'; From 09645efdb9f977392e4b20e6b880152dbe644e34 Mon Sep 17 00:00:00 2001 From: Giovanni Troisi Date: Mon, 26 Feb 2024 17:40:19 +0100 Subject: [PATCH 02/35] added customer.io integration restored checkKeyValidity function updated translations --- .../brevo-integration.component.ts | 29 ++--- .../customerio-integration.component.html | 12 +- .../customerio-integration.component.scss | 9 ++ .../customerio-integration.component.ts | 33 +++--- .../hubspot-integration.component.html | 5 +- .../hubspot-integration.component.scss | 3 +- .../hubspot-integration.component.ts | 28 ++--- .../make-integration.component.scss | 1 + .../openai-integration.component.html | 8 +- .../openai-integration.component.scss | 3 +- .../openai-integration.component.ts | 15 ++- .../qapla-integration.component.html | 9 +- .../qapla-integration.component.scss | 3 +- .../qapla-integration.component.ts | 20 ++-- src/app/integrations/utils.ts | 9 +- src/app/services/integration.service.ts | 43 ++----- src/assets/i18n/ar.json | 2 + src/assets/i18n/az.json | 2 + src/assets/i18n/de.json | 2 + src/assets/i18n/en.json | 2 + src/assets/i18n/es.json | 2 + src/assets/i18n/fr.json | 2 + src/assets/i18n/it.json | 3 +- src/assets/i18n/kk.json | 2 + src/assets/i18n/pt.json | 2 + src/assets/i18n/ru.json | 2 + src/assets/i18n/sr.json | 2 + src/assets/i18n/sv.json | 2 + src/assets/i18n/tr.json | 2 + src/assets/i18n/uk.json | 2 + src/assets/i18n/uz.json | 2 + src/environments/environment.ts | 109 +++++++++++++----- 32 files changed, 219 insertions(+), 151 deletions(-) diff --git a/src/app/integrations/list/brevo-integration/brevo-integration.component.ts b/src/app/integrations/list/brevo-integration/brevo-integration.component.ts index 7108cae8481e..ebd2641986f9 100644 --- a/src/app/integrations/list/brevo-integration/brevo-integration.component.ts +++ b/src/app/integrations/list/brevo-integration/brevo-integration.component.ts @@ -41,13 +41,13 @@ export class BrevoIntegrationComponent implements OnInit { } saveIntegration() { - this.checkKey(this.integration.value.apikey).then((status) => { - let data = { - integration: this.integration, - isVerified: status - } - this.onUpdateIntegration.emit(data); - }) + // this.checkKey(this.integration.value.apikey).then((status) => { + // let data = { + // integration: this.integration, + // isVerified: status + // } + // this.onUpdateIntegration.emit(data); + // }) } deleteIntegration() { @@ -56,21 +56,6 @@ export class BrevoIntegrationComponent implements OnInit { } checkKey(key: string) { - return new Promise((resolve, reject) => { - this.integrationService.checkKeyQapla(key).subscribe((resp: any) => { - if (resp.getCouriers.result === 'OK') { - this.isVerified = true; - resolve(true); - } else { - this.isVerified = false; - resolve(false); - } - }, (error) => { - this.logger.error("[INT-Qapla] Key verification failed: ", error); - this.isVerified = false; - resolve(false); - }) - }) } resetValues() { diff --git a/src/app/integrations/list/customerio-integration/customerio-integration.component.html b/src/app/integrations/list/customerio-integration/customerio-integration.component.html index 3dfac51cfe54..53614ed5d9fb 100644 --- a/src/app/integrations/list/customerio-integration/customerio-integration.component.html +++ b/src/app/integrations/list/customerio-integration/customerio-integration.component.html @@ -1,7 +1,11 @@
-

Start for free with Customer.io. Sign up now!

+ - +
@@ -36,7 +40,7 @@
+ [(ngModel)]="integration.value.key">
visibility diff --git a/src/app/integrations/list/customerio-integration/customerio-integration.component.scss b/src/app/integrations/list/customerio-integration/customerio-integration.component.scss index 47308f735c85..2d4bec11b8d7 100644 --- a/src/app/integrations/list/customerio-integration/customerio-integration.component.scss +++ b/src/app/integrations/list/customerio-integration/customerio-integration.component.scss @@ -10,7 +10,16 @@ p { flex-direction: row; align-items: center; justify-content: space-between; + height: 50px; + + .signup { + display: flex; + p { + margin: 0 0 0 5px; + } + } + .status { display: flex; align-items: center; diff --git a/src/app/integrations/list/customerio-integration/customerio-integration.component.ts b/src/app/integrations/list/customerio-integration/customerio-integration.component.ts index acc9da0fc0e4..b9a64fdfe3a7 100644 --- a/src/app/integrations/list/customerio-integration/customerio-integration.component.ts +++ b/src/app/integrations/list/customerio-integration/customerio-integration.component.ts @@ -16,16 +16,18 @@ export class CustomerioIntegrationComponent implements OnInit { keyVisibile: boolean = false; isVerified: boolean; + translateparams: any; + constructor( private integrationService: IntegrationService, private logger: LoggerService ) { } ngOnInit(): void { - this.logger.log("[INT-Customer.io] integration ", this.integration) this.logger.debug("[INT-Customer.io] integration ", this.integration) + this.translateparams = { intname: "Customer.io" }; if (this.integration.value.apikey) { - this.checkKey(this.integration.value.apikey); + this.checkKey(); } } @@ -41,7 +43,9 @@ export class CustomerioIntegrationComponent implements OnInit { } saveIntegration() { - this.checkKey(this.integration.value.apikey).then((status) => { + let apikey = btoa(this.integration.value.siteid + ":" + this.integration.value.key); + this.integration.value.apikey = apikey; + this.checkKey().then((status) => { let data = { integration: this.integration, isVerified: status @@ -55,16 +59,14 @@ export class CustomerioIntegrationComponent implements OnInit { this.onDeleteIntegration.emit(this.integration); } - checkKey(key: string) { - return new Promise((resolve, reject) => { - this.integrationService.checkKeyQapla(key).subscribe((resp: any) => { - if (resp.getCouriers.result === 'OK') { - this.isVerified = true; - resolve(true); - } else { - this.isVerified = false; - resolve(false); - } + checkKey() { + return new Promise((resolve) => { + let url = "https://track.customer.io/api/v1/accounts/region"; + console.log("apikey: ", this.integration.value.apikey); + let apikey = 'Basic ' + this.integration.value.apikey; + this.integrationService.checkIntegrationKeyValidity(url, apikey).subscribe((resp: any) => { + this.isVerified = true; + resolve(true); }, (error) => { this.logger.error("[INT-Customer.io] Key verification failed: ", error); this.isVerified = false; @@ -75,8 +77,9 @@ export class CustomerioIntegrationComponent implements OnInit { resetValues() { this.integration.value = { - apikey: null, - siteid: null + siteid: null, + key: null, + apikey: null } } diff --git a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.html b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.html index 489947e62447..feab5e11230f 100644 --- a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.html +++ b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.html @@ -3,8 +3,7 @@ {{ 'Integration.Signup' | translate }}

- - +
diff --git a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.scss b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.scss index 02d294f6d6a1..d99fe05cb4b6 100644 --- a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.scss +++ b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.scss @@ -10,7 +10,8 @@ p { flex-direction: row; align-items: center; justify-content: space-between; - + height: 50px; + .signup { display: flex; diff --git a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.ts b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.ts index 1a71e0a9860a..6316dcf3e2bc 100644 --- a/src/app/integrations/list/hubspot-integration/hubspot-integration.component.ts +++ b/src/app/integrations/list/hubspot-integration/hubspot-integration.component.ts @@ -28,7 +28,7 @@ export class HubspotIntegrationComponent implements OnInit { this.logger.debug("[INT-Hubspot] integration ", this.integration) this.translateparams = { intname: 'Hubspot' }; if (this.integration.value.apikey) { - this.checkKey(this.integration.value.apikey); + this.checkKey(); } } @@ -44,7 +44,7 @@ export class HubspotIntegrationComponent implements OnInit { } saveIntegration() { - this.checkKey(this.integration.value.apikey).then((status) => { + this.checkKey().then((status) => { let data = { integration: this.integration, isVerified: status @@ -87,27 +87,29 @@ export class HubspotIntegrationComponent implements OnInit { // }) // } - checkKey(key: string) { - return new Promise((resolve, reject) => { - this.integrationService.checkKeyQapla(key).subscribe((resp: any) => { - if (resp.getCouriers.result === 'OK') { - this.isVerified = true; - resolve(true); + checkKey() { + return new Promise((resolve) => { + let url = "https://api.hubapi.com/crm/v3/objects/contacts?limit=10"; + let key = "Bearer " + this.integration.value.apikey; + this.integrationService.checkIntegrationKeyValidity(url, key).subscribe((resp: any) => { + this.isVerified = true; + resolve(true); + }, (error) => { + this.logger.error("[INT-Hubspot] Key verification failed: ", error); + if (error.status === 0) { + resolve(false); } else { this.isVerified = false; resolve(false); + } - }, (error) => { - this.logger.error("[INT-Qapla] Key verification failed: ", error); - this.isVerified = false; - resolve(false); }) }) } resetValues() { this.integration.value = { - apikey: null, + apikey: null } } diff --git a/src/app/integrations/list/make-integration/make-integration.component.scss b/src/app/integrations/list/make-integration/make-integration.component.scss index de09e7606063..ed107d983bb3 100644 --- a/src/app/integrations/list/make-integration/make-integration.component.scss +++ b/src/app/integrations/list/make-integration/make-integration.component.scss @@ -10,6 +10,7 @@ p { flex-direction: row; align-items: center; justify-content: space-between; + height: 50px; .signup { display: flex; diff --git a/src/app/integrations/list/openai-integration/openai-integration.component.html b/src/app/integrations/list/openai-integration/openai-integration.component.html index b1853778886e..f1a5ba980504 100644 --- a/src/app/integrations/list/openai-integration/openai-integration.component.html +++ b/src/app/integrations/list/openai-integration/openai-integration.component.html @@ -5,7 +5,7 @@
- +
- +
diff --git a/src/app/integrations/list/openai-integration/openai-integration.component.scss b/src/app/integrations/list/openai-integration/openai-integration.component.scss index c7d6a88ab4cb..ca63642ce4d1 100644 --- a/src/app/integrations/list/openai-integration/openai-integration.component.scss +++ b/src/app/integrations/list/openai-integration/openai-integration.component.scss @@ -10,7 +10,8 @@ p { flex-direction: row; align-items: center; justify-content: space-between; - + height: 50px; + .signup { display: flex; diff --git a/src/app/integrations/list/openai-integration/openai-integration.component.ts b/src/app/integrations/list/openai-integration/openai-integration.component.ts index d3d6eb245ef8..066f1445b607 100644 --- a/src/app/integrations/list/openai-integration/openai-integration.component.ts +++ b/src/app/integrations/list/openai-integration/openai-integration.component.ts @@ -1,4 +1,5 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { IntegrationService } from 'app/services/integration.service'; import { LoggerService } from 'app/services/logger/logger.service'; import { OpenaiService } from 'app/services/openai.service'; @@ -18,7 +19,7 @@ export class OpenaiIntegrationComponent implements OnInit { translateparams: any; constructor( - private openaiService: OpenaiService, + private integrationService: IntegrationService, private logger: LoggerService ) { } @@ -26,7 +27,7 @@ export class OpenaiIntegrationComponent implements OnInit { this.logger.debug("[INT-OpenAI] integration ", this.integration) this.translateparams = { intname: 'OpenAI' }; if (this.integration.value.apikey) { - this.checkKey(this.integration.value.apikey); + this.checkKey(); } } @@ -41,7 +42,7 @@ export class OpenaiIntegrationComponent implements OnInit { } saveIntegration() { - this.checkKey(this.integration.value.apikey).then((status) => { + this.checkKey().then((status) => { let data = { integration: this.integration, isVerified: status @@ -55,9 +56,11 @@ export class OpenaiIntegrationComponent implements OnInit { this.onDeleteIntegration.emit(this.integration); } - checkKey(key: string) { - return new Promise((resolve, reject) => { - this.openaiService.checkKeyValidity(key).subscribe((resp) => { + checkKey() { + return new Promise((resolve) => { + let url = "https://api.openai.com/v1/models"; + let key = "Bearer " + this.integration.value.apikey; + this.integrationService.checkIntegrationKeyValidity(url, key).subscribe((resp) => { this.isVerified = true; resolve(true); }, (error) => { diff --git a/src/app/integrations/list/qapla-integration/qapla-integration.component.html b/src/app/integrations/list/qapla-integration/qapla-integration.component.html index 69ee35733068..1aa2b0e09e2c 100644 --- a/src/app/integrations/list/qapla-integration/qapla-integration.component.html +++ b/src/app/integrations/list/qapla-integration/qapla-integration.component.html @@ -5,7 +5,7 @@
- + - + +
diff --git a/src/app/integrations/list/qapla-integration/qapla-integration.component.scss b/src/app/integrations/list/qapla-integration/qapla-integration.component.scss index 7b3b6d55a487..0b414e30778c 100644 --- a/src/app/integrations/list/qapla-integration/qapla-integration.component.scss +++ b/src/app/integrations/list/qapla-integration/qapla-integration.component.scss @@ -10,7 +10,8 @@ p { flex-direction: row; align-items: center; justify-content: space-between; - + height: 50px; + .signup { display: flex; diff --git a/src/app/integrations/list/qapla-integration/qapla-integration.component.ts b/src/app/integrations/list/qapla-integration/qapla-integration.component.ts index 801283d4c3cf..f2f90660ad32 100644 --- a/src/app/integrations/list/qapla-integration/qapla-integration.component.ts +++ b/src/app/integrations/list/qapla-integration/qapla-integration.component.ts @@ -27,7 +27,7 @@ export class QaplaIntegrationComponent implements OnInit { this.logger.debug("[INT-Qapla] integration ", this.integration) this.translateparams = { intname: "Qapla'" }; if (this.integration.value.apikey) { - this.checkKey(this.integration.value.apikey); + this.checkKey(); } } @@ -42,7 +42,7 @@ export class QaplaIntegrationComponent implements OnInit { } saveIntegration() { - this.checkKey(this.integration.value.apikey).then((status) => { + this.checkKey().then((status) => { let data = { integration: this.integration, isVerified: status @@ -56,9 +56,10 @@ export class QaplaIntegrationComponent implements OnInit { this.onDeleteIntegration.emit(this.integration); } - checkKey(key: string) { - return new Promise((resolve, reject) => { - this.integrationService.checkKeyQapla(key).subscribe((resp: any) => { + checkKey() { + return new Promise((resolve) => { + let url = "https://api.qapla.it/1.2/getCouriers/?apiKey=" + this.integration.value.apikey; + this.integrationService.checkIntegrationKeyValidity(url).subscribe((resp: any) => { if (resp.getCouriers.result === 'OK') { this.isVerified = true; resolve(true); @@ -68,8 +69,13 @@ export class QaplaIntegrationComponent implements OnInit { } }, (error) => { this.logger.error("[INT-Qapla] Key verification failed: ", error); - this.isVerified = false; - resolve(false); + // check for CORS policies errors + if (error.status == 0) { + resolve(false); + } else { + this.isVerified = false; + resolve(false); + } }) }) } diff --git a/src/app/integrations/utils.ts b/src/app/integrations/utils.ts index 6b472f938382..e51df2f2998d 100644 --- a/src/app/integrations/utils.ts +++ b/src/app/integrations/utils.ts @@ -55,7 +55,7 @@ export const CATEGORIES_LIST = [ export const INTEGRATIONS_LIST: { [key: string]: { name: string, category: INTEGRATIONS_CATEGORIES, key: INTEGRATIONS_KEYS, src_icon: string, src_logo: string, pro?: boolean, plan: 'Sandbox' | 'Basic' | 'Premium' | 'Custom' } } = { //BREVO: { name: "Brevo", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.BREVO, src_icon: "assets/img/int/brevo.png", src_logo: "assets/img/int/brevo-logo.png", pro: true, plan: 'Premium' }, - //CUSTOMERIO: { name: "Customer.io", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.CUSTOMERIO, src_icon: "assets/img/int/customer-io-logo-color.svg", src_logo: "assets/img/int/customerio-logo.svg", pro: true, plan: 'Premium' }, + CUSTOMERIO: { name: "Customer.io", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.CUSTOMERIO, src_icon: "assets/img/int/customer-io-logo-color.svg", src_logo: "assets/img/int/customerio-logo.svg", pro: true, plan: 'Premium' }, HUBSPOT: { name: "HubSpot", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.HUBSPOT, src_icon: "assets/img/int/hubspot.png", src_logo: "assets/img/int/hubspot-logo.svg", pro: true, plan: 'Premium' }, OPENAI: { name: "OpenAI", category: INTEGRATIONS_CATEGORIES.AI, key: INTEGRATIONS_KEYS.OPENAI, src_icon: "assets/cds/images/actions/openai-icon.svg", src_logo: "assets/img/int/openai-logo.svg", pro: true, plan: 'Custom' }, QAPLA: { name: "Qapla'", category: INTEGRATIONS_CATEGORIES.ECOMMERCE, key: INTEGRATIONS_KEYS.QAPLA, src_icon: "assets/cds/images/actions/qapla.jpg", src_logo: "assets/img/int/qapla-logo.png", pro: true, plan: 'Premium' }, @@ -76,7 +76,7 @@ export const INTEGRATIONS_LIST: { [key: string]: { name: string, category: INTEG export const INTEGRATION_LIST_ARRAY = [ //{ name: "Brevo", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.BREVO, src_icon: "assets/img/int/brevo-icon.png", src_logo: "assets/img/int/brevo-logo.png", pro: true, plan: 'Premium' }, - //{ name: "Customer.io", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.CUSTOMERIO, src_icon: "assets/img/int/customerio-icon.png", src_logo: "assets/img/int/customerio-logo.svg", pro: true, plan: 'Premium' }, + { name: "Customer.io", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.CUSTOMERIO, src_icon: "assets/img/int/customerio-icon.png", src_logo: "assets/img/int/customerio-logo.svg", pro: true, plan: 'Premium' }, { name: "HubSpot", category: INTEGRATIONS_CATEGORIES.CRM, key: INTEGRATIONS_KEYS.HUBSPOT, src_icon: "assets/img/int/hubspot-icon.png", src_logo: "assets/img/int/hubspot-logo.svg", pro: true, plan: 'Premium' }, { name: "OpenAI", category: INTEGRATIONS_CATEGORIES.AI, key: INTEGRATIONS_KEYS.OPENAI, src_icon: "assets/img/int/openai-icon.svg", src_logo: "assets/img/int/openai-logo.svg", pro: true, plan: 'Custom' }, { name: "Qapla'", category: INTEGRATIONS_CATEGORIES.ECOMMERCE, key: INTEGRATIONS_KEYS.QAPLA, src_icon: "assets/img/int/qapla-icon.jpg", src_logo: "assets/img/int/qapla-logo.png", pro: true, plan: 'Premium' }, @@ -145,8 +145,9 @@ export class CustomerioIntegration extends Integration { super(); this.name = INTEGRATIONS_KEYS.CUSTOMERIO; this.value = { - apikey: null, - siteid: null + siteid: null, + key: null, + apikey: null //base64 format of siteid:key } } } diff --git a/src/app/services/integration.service.ts b/src/app/services/integration.service.ts index 651e7ce32a9b..87080368a78f 100644 --- a/src/app/services/integration.service.ts +++ b/src/app/services/integration.service.ts @@ -118,46 +118,21 @@ export class IntegrationService { return this.http.delete(url, httpOptions); } + checkIntegrationKeyValidity(url: string, key?: string) { + + let headers = new HttpHeaders({ + 'Content-Type': 'application/json', + }); - checkKeyQapla(key: string) { - const httpOptions = { - headers: new HttpHeaders({ - 'Content-Type': 'application/json', - 'Authorization': this.TOKEN - }) + if (key) { + headers = headers.append('Authorization', key) } - const url = "https://api.qapla.it/1.2/getCouriers/?apiKey=" + key; - this.logger.log('[INTEGRATION.SERV] - save integration URL: ', url); - - return this.http.get(url, httpOptions); - } - - checkKeyHubspot(key: string) { const httpOptions = { - headers: new HttpHeaders({ - 'Content-Type': 'application/json', - 'Authorization': this.TOKEN - }) + headers: headers } - //const url = // get endpoint url - // this.logger.debug('[INTEGRATION.SERV] - save integration URL: ', url); - // return this.http.get(url, httpOptions); - return true; + return this.http.get(url, httpOptions); } - checkKeyCustomerio(key: string) { - const httpOptions = { - headers: new HttpHeaders({ - 'Content-Type': 'application/json', - 'Authorization': this.TOKEN - }) - } - - //const url = // get endpoint url - // this.logger.debug('[INTEGRATION.SERV] - save integration URL: ', url); - // return this.http.get(url, httpOptions); - return true; - } } diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index 3111214c22eb..5f9e9845e928 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "تحديث الآن", "SelectToStart": "حدد التكامل للبدء", "Signup": "اشتراك", + "SignupNow": "أفتح حساب الأن!", + "StartForFree": "ابدأ مجانًا مع {{ intname }}.", "Join": "ينضم", "JoinNow": "{{ intname }} الآن!", "FreeAccount": "مجانا {{ intname }} حساب!", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index 5692410a0a85..0e79376c1e8a 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "İndi yenilə", "SelectToStart": "Başlamaq üçün inteqrasiya seçin", "Signup": "Abunə olun", + "SignupNow": "İndi qeydiyyatdan keçin!", + "StartForFree": "ilə pulsuz başlayın {{ intname }}.", "Join": "Qoşulun", "JoinNow": "{{ intname }} İndi!", "FreeAccount": "pulsuz üçün {{ intname }} hesab!", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 9a40a11fe76f..70cbca3e2153 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1908,6 +1908,8 @@ "UpgradeNow": "Jetzt upgraden", "SelectToStart": "Wählen Sie eine Integration aus, um zu starten", "Signup": "Melden Sie sich an", + "SignupNow": "Jetzt registrieren!", + "StartForFree": "Starten Sie kostenlos mit {{ intname }}.", "Join": "Verbinden", "JoinNow": "{{ intname }} Jetzt!", "FreeAccount": "kostenlos {{ intname }} Konto!", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 18220335d18a..5489f4994ec1 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Upgrade now", "SelectToStart": "Select an integration to start", "Signup": "Sign up", + "SignupNow": "Sign up now!", + "StartForFree": "Start for free with {{ intname }}.", "Join": "Join", "JoinNow": "{{ intname }} now!", "FreeAccount": "for a free {{ intname }} account!", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 9c3cc9f06a84..bf8a9db7a450 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Actualizar ahora", "SelectToStart": "Seleccione una integración para comenzar", "Signup": "Inscribirse", + "SignupNow": "¡Regístrate ahora!", + "StartForFree": "Empieza gratis con {{ intname }}.", "Join": "Unirse", "JoinNow": "{{ intname }} ¡ahora!", "FreeAccount": "gratis {{ intname }} ¡cuenta!", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index f6faabcf7720..1b86ab3557ae 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Mettre à jour maintenant", "SelectToStart": "Sélectionnez une intégration pour démarrer", "Signup": "S'inscrire", + "SignupNow": "S'inscrire maintenant!", + "StartForFree": "Commencez gratuitement avec {{ intname }}.", "Join": "Rejoindre", "JoinNow": "{{ intname }} maintenant!", "FreeAccount": "gratuitement {{ intname }} compte!", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 6043d17b88af..508b259d4bdc 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1908,8 +1908,9 @@ "UpgradeNow": "Esegui l'upgrade adesso", "SelectToStart": "Seleziona un'integrazione per iniziare", "Signup": "Registrati", + "Signup now": "Registrati adesso!", + "StartForFree": "Inizia gratuitamente su {{ intname }}.", "Join": "Vai su", - "JoinNow": "{{ intname }} adesso!", "FreeAccount": "per un account {{ intname }} gratuito!", "YourApikey": "La tua key", "OrganizationOptional": "Organizzazione (opzionale)", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index fa65b5699264..0d9cad5ab459 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Қазір жаңарту", "SelectToStart": "Бастау үшін біріктіруді таңдаңыз", "Signup": "Тіркелу", + "SignupNow": "Қазір тіркеліңіз!", + "StartForFree": "тегін бастаңыз {{ intname }}.", "Join": "Қосылыңыз", "JoinNow": "{{ intname }} қазір!", "FreeAccount": "тегін {{ intname }} шот!", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 340a8fd87cd3..ef79cb196aa3 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Atualize agora", "SelectToStart": "Selecione uma integração para começar", "Signup": "Inscrever-se", + "SignupNow": "Inscreva-se agora!", + "StartForFree": "Comece gratuitamente com {{ intname }}.", "Join": "Juntar", "JoinNow": "{{ intname }} agora!", "FreeAccount": "de graça {{ intname }} conta!", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 826ee68eb149..0e4097d39abe 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Обнови сейчас", "SelectToStart": "Выберите интеграцию, чтобы начать", "Signup": "Зарегистрироваться", + "SignupNow": "Войти Сейчас!", + "StartForFree": "Начните бесплатно с {{ intname }}.", "Join": "Присоединиться", "JoinNow": "{{ intname }} сейчас!", "FreeAccount": "бесплатно {{ intname }} счет!", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index bcf71296a129..94319bd7d7c8 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Надоградите сада", "SelectToStart": "Изаберите интеграцију за почетак", "Signup": "Пријави се", + "SignupNow": "Пријавите се сада!", + "StartForFree": "Почните бесплатно са {{ intname }}.", "Join": "Придружити", "JoinNow": "{{ intname }} Сада!", "FreeAccount": "за бесплатно {{ intname }} рачун!", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index 4c314dfedf9a..e176b8871dbb 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Uppgradera nu", "SelectToStart": "Välj en integration att starta", "Signup": "Bli Medlem", + "SignupNow": "Anmäl dig nu!", + "StartForFree": "Börja gratis med {{ intname }}.", "Join": "Ansluta sig", "JoinNow": "{{ intname }} nu!", "FreeAccount": "för en gratis {{ intname }} konto!", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index 0fb1654783b1..392253c26f2d 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Hemen Yükselt", "SelectToStart": "Başlamak için bir entegrasyon seçin", "Signup": "Üye olmak", + "SignupNow": "Şimdi kayıt ol!", + "StartForFree": "Ücretsiz olarak başlayın {{ intname }}.", "Join": "Katılmak", "JoinNow": "{{ intname }} Şimdi!", "FreeAccount": "ücretsiz {{ intname }} hesap!", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index cdbca8246ba2..6230128c585c 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -1909,6 +1909,8 @@ "UpgradeNow": "Оновити зараз", "SelectToStart": "Виберіть інтеграцію, щоб почати", "Signup": "Зареєструватися", + "SignupNow": "Зареєструватися зараз!", + "StartForFree": "Почніть безкоштовно з {{ intname }}.", "Join": "Приєднуйтесь", "JoinNow": "{{ intname }} зараз!", "FreeAccount": "безкоштовно {{ intname }} рахунок!", diff --git a/src/assets/i18n/uz.json b/src/assets/i18n/uz.json index 0955f0a85270..77cc1833e249 100644 --- a/src/assets/i18n/uz.json +++ b/src/assets/i18n/uz.json @@ -1908,6 +1908,8 @@ "UpgradeNow": "Hozir yangilang", "SelectToStart": "Boshlash uchun integratsiyani tanlang", "Signup": "Ro'yxatdan o'tish", + "SignupNow": "Hozir roʻyxatdan oʻting!", + "StartForFree": "bilan bepul boshlang {{ intname }}.", "Join": "Qo'shilish", "JoinNow": "{{ intname }} hozir!", "FreeAccount": "bepul {{ intname }} hisob!", diff --git a/src/environments/environment.ts b/src/environments/environment.ts index e925cd501405..93461f7c798d 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,36 +1,83 @@ + +// export const environment = { +// production: true, +// t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', +// VERSION: require('../../package.json').version, +// widgetUrl: 'https://widget.tiledesk.com/v3/launch.js', +// botcredendialsURL:'CHANGEIT', +// remoteConfig: true, +// SERVER_BASE_URL:'https://tiledesk-server-pre.herokuapp.com/', +// CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat/', +// testsiteBaseUrl: 'https://widget-pre.tiledesk.com/v2/assets/test_widget_page/index.html', +// wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', +// chatEngine: 'mqtt', +// firebaseAuth: false, +// uploadEngine: 'native', +// baseImageUrl: 'CHANGEIT', +// pushEngine: 'none', +// logLevel: 'Info', +// templatesUrl: 'CHANGEIT', +// appsUrl: 'CHANGEIT', +// promoBannerUrl: 'CHANGEIT', +// chatStoragePrefix: "CHANGEIT", +// firebase: { +// apiKey: 'CHANGEIT', +// authDomain: 'CHANGEIT', +// databaseURL: 'CHANGEIT', +// projectId: 'CHANGEIT', +// storageBucket: 'CHANGEIT', +// messagingSenderId: 'CHANGEIT', +// appId: 'CHANGEIT', +// vapidKey: 'CHANGEIT' +// } +// }; + export const environment = { production: false, - remoteConfig: true, - remoteConfigUrl: './dashboard-config.json', + remoteConfig: false, + t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-IPS:T-ETK:T-RAS:T-PPB:T-PET:T-MTS:T-TIL:T-DGF:T-NAT:T-HPB:F-TOW:T-KNB:T-BAN:T-AST:T-MON:T-CNT:T-AUT:T-WUN:T-INT:T', VERSION: require('../../package.json').version, - t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', - botcredendialsURL: 'CHANGEIT', - WIDGET_BASE_URL: 'http://localhost:4200/', - SERVER_BASE_URL: 'http://localhost:3000/', - CHAT_BASE_URL: 'http://localhost:8080/', - wsUrl: 'ws://localhost:3000/', - chatEngine: 'mqtt', + botcredendialsURL: 'https://tiledesk-df-connector-pre.herokuapp.com/botcredendials/', //'https://dialogflow-proxy-tiledesk.herokuapp.com/botcredendials/', + rasaBotCredentialsURL: "https://tiledesk-server-pre.herokuapp.com/modules/rasa/botcredendials/", // "https://tiledesk-rasa-connector-pre.herokuapp.com/botcredendials/", + WIDGET_BASE_URL: 'https://widget-pre.tiledesk.com/v5/', + SERVER_BASE_URL: 'https://tiledesk-server-pre.herokuapp.com/', + CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat-ionic5/', // '/chat-ionic5/', //'https://support-pre.tiledesk.com/chat-ionic5/' // https://support-pre.tiledesk.com/chat-ionic5-notifcation-item// + wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', + reCaptchaSiteKey:"6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5", + globalRemoteJSSrc: "https://support-pre.tiledesk.com/script/custom_script.js, https://support-pre.tiledesk.com/script/dnpc.js", //https://www.google.com/recaptcha/api.js?render=6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5, firebaseAuth: false, - uploadEngine: 'native', - baseImageUrl: 'CHANGEIT', - pushEngine: 'none', - logLevel: 'Info', - communityTemplatesUrl: 'CHANGEIT', - templatesUrl: 'CHANGEIT', - appsUrl: 'CHANGEIT', - cdsBaseUrl: 'CHANGEIT', - promoBannerUrl: 'CHANGEIT', - whatsappApiUrl: "CHANGEIT", - ticketingEmail: "CHANGEIT", - tiledeskPhoneNumber: "CHANGEIT", + uploadEngine: 'firebase', + baseImageUrl: 'https://tiledesk-server-pre.herokuapp.com/', + pushEngine: 'firebase', + chatEngine: 'firebase', + logLevel: 'info', + communityTemplatesUrl: 'https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/community', + templatesUrl: "https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/templates", // "https://chatbot-templates.herokuapp.com/chatbots/public/templates/", + appsUrl: "https://cd3ff4b5-5a06-44e3-aff2-3ce2ff1b848b-00-3eppvhwsi6nym.janeway.replit.dev/", // "https://tiledesk-apps-server.giovannitroisi3.repl.co/",// "https://tiledesk-apps.herokuapp.com/", + cdsBaseUrl: '/cds/', + whatsappApiUrl: "https://tiledesk-whatsapp-connector-dev.glitch.me/", //"https://tiledesk-whatsapp-connector-c4ce07638b45.herokuapp.com/", //"https://tiledesk-whatsapp-connector.giovannitroisi3.repl.co/", // "https://tiledesk-whatsapp-app-pre.giovannitroisi3.repl.co", + // promoBannerUrl: "https://dashbordpromobanner.nicolan74.repl.co/get/dashboard_promo.json", + chatStoragePrefix: "chat_sv5", + tiledeskPhoneNumber: "393201352964", + ticketingEmail: "tickets.tiledesk.com", firebase: { - apiKey: 'CHANGEIT', - authDomain: 'CHANGEIT', - databaseURL: 'CHANGEIT', - projectId: 'CHANGEIT', - storageBucket: 'CHANGEIT', - messagingSenderId: 'CHANGEIT', - appId: 'CHANGEIT', - vapidKey: 'CHANGEIT' - } -}; \ No newline at end of file + apiKey: "AIzaSyCoWXHNvP1-qOllCpTshhC6VjPXeRTK0T4", + authDomain: "chat21-pre-01.firebaseapp.com", + databaseURL: "https://chat21-pre-01.firebaseio.com", + projectId: "chat21-pre-01", + storageBucket: "chat21-pre-01.appspot.com", + messagingSenderId: "269505353043", + appId: "1:269505353043:web:b82af070572669e3707da6", + vapidKey: "BOsgS2ADwspKdWAmiFDZXEYqY1HSYADVfJT3j67wsySh3NxaViJqoabPJH8WM02wb5r8cQIm5TgM0UK047Z1D1c" + }, +}; + + + + + + + + + + From 01b735e382fb574f17577b20529261d14ccf21ed Mon Sep 17 00:00:00 2001 From: Dario De Pascalis Date: Mon, 26 Feb 2024 17:51:34 +0100 Subject: [PATCH 03/35] bug fix on update when add, delete a kb content --- src/app/core/notify.service.ts | 2 + .../knowledge-bases.component.ts | 35 ++++-- .../knowledge-base-table.component.html | 111 ++++-------------- .../knowledge-base-table.component.scss | 52 +++++++- .../knowledge-base-table.component.ts | 19 +-- ...modal-detail-knowledge-base.component.html | 6 +- src/app/utils/util.ts | 2 +- src/assets/i18n/it.json | 1 + 8 files changed, 113 insertions(+), 115 deletions(-) diff --git a/src/app/core/notify.service.ts b/src/app/core/notify.service.ts index de5cf54bd9df..f6062e435d83 100755 --- a/src/app/core/notify.service.ts +++ b/src/app/core/notify.service.ts @@ -511,6 +511,8 @@ export class NotifyService { icon_bckgrnd_color = '#d2291c' } else if (notificationColor === 2) { icon_bckgrnd_color = '#449d48' + } else if(notificationColor === 3){ + icon_bckgrnd_color = '#ffecb5' } this.notify = $.notify({ // icon: 'glyphicon glyphicon-warning-sign', diff --git a/src/app/knowledge-bases/knowledge-bases.component.ts b/src/app/knowledge-bases/knowledge-bases.component.ts index 4e994e178197..70002a7abc41 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.ts +++ b/src/app/knowledge-bases/knowledge-bases.component.ts @@ -61,7 +61,7 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { kbsList: Array; kbsListCount: number = 0; refreshKbsList: boolean = true; - numberPage: number = 0; + // numberPage: number = 0; kbid_selected: any; @@ -407,8 +407,13 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { onLoadPage(searchParams){ //console.log('onLoadNextPage:',this.kbsList); - this.numberPage = Math.floor(this.kbsList.length/KB_DEFAULT_PARAMS.LIMIT); - let params = "?limit="+KB_DEFAULT_PARAMS.LIMIT+"&page="+this.numberPage; + // + let params = "?limit="+KB_DEFAULT_PARAMS.LIMIT + if(searchParams.page){ + params +="&page="+searchParams.page; + } else { + +"&page=0"; + } if(searchParams.status){ params +="&status="+searchParams.status; } @@ -430,7 +435,8 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { onLoadByFilter(searchParams){ //console.log('onLoadByFilter:',searchParams); - this.numberPage = 0; + // this.numberPage = 0; + searchParams.page = 0; this.kbsList = []; this.onLoadPage(searchParams); } @@ -483,20 +489,30 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.onCloseBaseModal(); let error = this.msgErrorAddUpdateKb; this.kbService.addKb(body).subscribe((resp: any) => { + this.logger.log("onAddKb:", resp); let kb = resp.value; - this.logger.log("onAddKb:", kb); - if(kb.lastErrorObject && kb.lastErrorObject.updatedExisting === true){ + if(resp.lastErrorObject && resp.lastErrorObject.updatedExisting === true){ + //console.log("updatedExisting true:"); const index = this.kbsList.findIndex(item => item._id === kb._id); if (index !== -1) { this.kbsList[index] = kb; - this.notify.showWidgetStyleUpdateNotification(this.msgSuccesUpdateKb, 2, 'done'); + this.notify.showWidgetStyleUpdateNotification(this.msgSuccesUpdateKb, 3, 'warning'); } } else { - this.kbsList.push(kb); + //this.kbsList.push(kb); + this.kbsList.unshift(kb); this.notify.showWidgetStyleUpdateNotification(this.msgSuccesAddKb, 2, 'done'); } this.updateStatusOfKb(kb._id, 0); this.refreshKbsList = !this.refreshKbsList; + + let searchParams = { + "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, + "direction": KB_DEFAULT_PARAMS.DIRECTION, + "status": '', + "search": '', + } + this.onLoadByFilter(searchParams); // this.logger.log("kbsList:",that.kbsList); // that.onRunIndexing(kb); setTimeout(() => { @@ -589,7 +605,8 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { } private removeKb(kb_id){ - this.kbs = this.kbs.filter(item => item._id !== kb_id); + //this.kbs = this.kbs.filter(item => item._id !== kb_id); + this.kbsList = this.kbsList.filter(item => item._id !== kb_id); // this.logger.log('AGGIORNO kbsList:', this.kbsList); this.refreshKbsList = !this.refreshKbsList; } diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html index 3712cc60fec0..ab2fa86877d7 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html @@ -1,4 +1,4 @@ -
+
@@ -34,23 +34,29 @@
-
+
- +
- - - + + - + - - - - - + + + - =20with=20the=20me?= =?UTF-8?q?ssage=20"No=20match=20for=20the=20specified=20parameters"=20if?= =?UTF-8?q?=20the=20search=20returns=20no=20results=20=E2=9C=85=20bug=20fi?= =?UTF-8?q?x:=20show=20welcome=20message,=20only=20if=20table=20is=20empty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../add-content-menu.component.ts | 10 +++++----- .../knowledge-base-table.component.html | 16 ++++++++++++--- .../knowledge-base-table.component.ts | 8 ++++---- .../modal-page-url.component.html | 2 +- ...odal-preview-knowledge-base.component.html | 2 +- .../modal-site-map.component.html | 2 +- .../modal-site-map.component.ts | 2 +- .../modal-text-file.component.html | 2 +- .../modal-urls-knowledge-base.component.html | 2 +- src/assets/i18n/ar.json | 12 ++++++----- src/assets/i18n/az.json | 10 ++++++---- src/assets/i18n/de.json | 12 ++++++----- src/assets/i18n/en.json | 10 ++++++---- src/assets/i18n/es.json | 20 ++++++++++--------- src/assets/i18n/fr.json | 12 ++++++----- src/assets/i18n/it.json | 8 +++++--- src/assets/i18n/kk.json | 10 ++++++---- src/assets/i18n/pt.json | 10 ++++++---- src/assets/i18n/ru.json | 10 ++++++---- src/assets/i18n/sr.json | 12 ++++++----- src/assets/i18n/sv.json | 12 ++++++----- src/assets/i18n/tr.json | 20 ++++++++++--------- src/assets/i18n/uk.json | 10 ++++++---- src/assets/i18n/uz.json | 10 ++++++---- 24 files changed, 132 insertions(+), 92 deletions(-) diff --git a/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts b/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts index ca57c8445f63..a50ceca3a2a8 100644 --- a/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts +++ b/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts @@ -38,11 +38,11 @@ export class AddContentMenuComponent implements OnInit { this.items.push(item); }); - // this.translate.get('KbPage.AddKbSitemap') - // .subscribe((text: any) => { - // let item = {"label": text, "type":"site-map"}; - // this.items.push(item); - // }); + this.translate.get('KbPage.AddKbSitemap') + .subscribe((text: any) => { + let item = {"label": text, "type":"site-map"}; + this.items.push(item); + }); //this.items = [{"label": "Single URL", "type":"url-page"},{"label": "URL(s)", "type":"urls"}, {"label": "Plain Text", "type":"text-file"}]; diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html index 3ff69a86e054..b96d2905ce52 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.html b/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.html index 2697aff81251..2b46a7ea5d2b 100644 --- a/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.html +++ b/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.html @@ -81,7 +81,7 @@
diff --git a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html index a5a2b32cd8bd..43352f165b89 100644 --- a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html +++ b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html @@ -101,7 +101,7 @@
diff --git a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts index 32acdf40a2c8..437206a01c17 100644 --- a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts +++ b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts @@ -35,7 +35,7 @@ export class ModalSiteMapComponent implements OnInit { const namePattern = /^[^&<>]{3,}$/; return this.formBuilder.group({ url: ['', [Validators.required, Validators.pattern('(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?')]], - name: ['', [Validators.required, Validators.pattern(namePattern)]] + // name: ['', [Validators.required, Validators.pattern(namePattern)]] }) } diff --git a/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.html b/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.html index c86ff1815630..8bae2250b50e 100644 --- a/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.html +++ b/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.html @@ -48,7 +48,7 @@
{{ 'KbPage.Type' | translate }}{{ 'KbPage.Status' | translate }} - {{'KbPage.CreatedAt' | translate }} + + {{ 'KbPage.Type' | translate }} + + {{ 'KbPage.Status' | translate }} + + {{'KbPage.UpdatedAt' | translate }} expand_more expand_less - {{'Name' | translate }} + + {{'Name' | translate }} expand_more expand_less +
+ description link lan + schedule cached @@ -77,16 +83,16 @@ error + {{ kb.createdAt | amTimeAgo }} +
{{ kb.name }}
{{getSubtitle(kb)}}
+
- - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss index 919bd04083bf..e6c0472d41b1 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss @@ -1,6 +1,4 @@ -td { - cursor: pointer; -} + select.select-status { height: 30px; @@ -123,7 +121,8 @@ table { } .ellipsis-text { - max-width: 400px; + max-width: calc(100% - 350px); + max-width: 500px; width: 100%; white-space: nowrap; overflow: hidden; @@ -139,4 +138,47 @@ table { text-align: center; margin: 50px auto 20px; display: block; -} \ No newline at end of file +} + + +th { + display: table-cell; +} + +td { + cursor: pointer; + max-width: 100%; + // display: inline-grid; +} + + + +.column-th-span { + justify-content: space-between; + align-items: center; + width: 100%; + cursor: pointer; + .th-label { + display: inline-block; + opacity: 0; + transition: opacity 0.5s ease-in-out; + } + &:hover { + .th-label { + display: inline-block;; + opacity: 1; + } + } +} + +.column-th-span span { + display: inline-block; + font-size: 14px; + font-weight: 500; + margin: auto 4px; + color: #353f45; + vertical-align: middle; +} + + + diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts index 358580bf48f8..5c048e210d2f 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts @@ -44,6 +44,7 @@ export class KnowledgeBaseTableComponent implements OnInit { this.filterType = ''; this.filterText = ''; this.searchParams = { + "page":0, "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, "direction": KB_DEFAULT_PARAMS.DIRECTION, "status": '', @@ -70,6 +71,8 @@ export class KnowledgeBaseTableComponent implements OnInit { loadMoreData() { this.isLoading = true; + + this.searchParams.page = Math.floor(this.kbsList.length/KB_DEFAULT_PARAMS.LIMIT); this.loadPage.emit(this.searchParams); } @@ -80,12 +83,14 @@ export class KnowledgeBaseTableComponent implements OnInit { ngOnChanges(changes: SimpleChanges){ console.log('ngOnChanges!!!****** ', changes, changes.kbsListCount, this.kbsList.length); - if(changes.kbsListCount && changes.kbsListCount.currentValue) { - if(changes.kbsListCount.currentValue <= this.kbsList.length){ - this.SHOW_MORE_BTN = false; - } else { - this.SHOW_MORE_BTN = true; - } + // if(changes.kbsListCount && changes.kbsListCount.currentValue) { + if(changes.kbsListCount && changes.kbsListCount.currentValue){ + this.kbsListCount = changes.kbsListCount.currentValue; + } + if(this.kbsListCount <= this.kbsList.length){ + this.SHOW_MORE_BTN = false; + } else { + this.SHOW_MORE_BTN = true; } if(changes.refresh){ this.isLoading = false; @@ -106,8 +111,8 @@ export class KnowledgeBaseTableComponent implements OnInit { onOrderBy(type){ this.searchParams.sortField = type; - this.searchParams.direction = this.directionDesc; this.directionDesc = this.directionDesc*-1; + this.searchParams.direction = this.directionDesc; this.isLoading = true; this.loadByFilter.next(this.searchParams); } diff --git a/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.html b/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.html index 592f7801d727..3bf3f654712a 100644 --- a/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.html +++ b/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.html @@ -27,16 +27,16 @@
{{'KbPage.noContent' | translate}}
description link diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index 5374f2d3092e..6948cee0d466 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "لا يمكن حذف قاعدة المعارف", "msgErrorIndexingKb": "فشلت الفهرسة", "msgSuccesIndexingKb": "تم إطلاق إعادة التدريب على المحتوى بنجاح", - "msgErrorAddUpdateKb": "لا يمكن إضافة قاعدة المعارف أو تحريرها" + "msgErrorAddUpdateKb": "لا يمكن إضافة قاعدة المعارف أو تحريرها", + "noContent": "لا يوجد محتوى" }, "AutomationsDemoPageDescription":"من خلال أتمتة واجهات برمجة التطبيقات لدينا، يمكنك إدارة رسائل البث الجماعية على Whatsapp باستخدام أتمتة المصمم جنبًا إلى جنب مع سهولة واجهات برمجة التطبيقات لدينا، وإرسال رسائل إلى جميع جهات الاتصال الخاصة بإدارة علاقات العملاء (CRM) المفضلة لديك، وتلقي حالة الرسائل المرسلة (المستلمة، المقروءة، وما إلى ذلك) و أكثر بكثير!", "Sunday": "الأحد", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index a4b6bae7f039..2612e72bdd24 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Bilik Bazasını silmək mümkün olmadı", "msgErrorIndexingKb": "İndeksləmə uğursuz oldu", "msgSuccesIndexingKb": "Uğurla işə salınan məzmunu yenidən hazırlayın", - "msgErrorAddUpdateKb": "Bilik Bazasını əlavə etmək və ya redaktə etmək mümkün olmadı" + "msgErrorAddUpdateKb": "Bilik Bazasını əlavə etmək və ya redaktə etmək mümkün olmadı", + "noContent": "məzmun yoxdur" }, "AutomationsDemoPageDescription":"Bizim “API avtomatlaşdırmalarımız” ilə siz API-lərimizin asanlığı ilə birləşdirilən dizayner avtomatlaşdırmalarından istifadə edərək Whatsapp-da kütləvi yayım mesajlarını idarə edə, sevimli CRM-nin bütün kontaktlarına mesaj göndərə, göndərilən mesajların statusunu (qəbul edildi, oxundu və s.) ala bilərsiniz. ) və daha çox!", "Sunday": "bazar günü", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 6d76a941e5d4..320c8756c550 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Die Wissensdatenbank konnte nicht gelöscht werden", "msgErrorIndexingKb": "Die Indizierung ist fehlgeschlagen", "msgSuccesIndexingKb": "Neuschulung für erfolgreich eingeführte Inhalte", - "msgErrorAddUpdateKb": "Die Wissensdatenbank konnte nicht hinzugefügt oder bearbeitet werden" + "msgErrorAddUpdateKb": "Die Wissensdatenbank konnte nicht hinzugefügt oder bearbeitet werden", + "noContent": "kein Inhalt" }, "AutomationsDemoPageDescription":"Mit unseren „APIs-Automatisierungen“ können Sie Massennachrichten auf WhatsApp verwalten, indem Sie die Automatisierungen des Designers in Kombination mit der Benutzerfreundlichkeit unserer APIs nutzen, Nachrichten an alle Kontakte Ihres bevorzugten CRM senden, den Status gesendeter Nachrichten (empfangen, gelesen usw.) erhalten. ) und vieles mehr!", "Sunday": "Sonntag", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index e1ca6789caac..9adfe5d0ff06 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "The Knowledge Base could not be deleted", "msgErrorIndexingKb": "Indexing failed", "msgSuccesIndexingKb": "Re-train on content launched successfully", - "msgErrorAddUpdateKb": "The Knowledge Base could not be added or edited" + "msgErrorAddUpdateKb": "The Knowledge Base could not be added or edited", + "noContent": "no content" }, "AutomationsDemoPageDescription": "With our “APIs automations” you can manage mass broadcast messages on Whatsapp using the designer's automations combined with the ease of our APIs, send messages to all the contacts of your favorite CRM, receive the status of sent messages (received, read, etc.) and much more!", "Sunday": "Sunday", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index d23a42d9962d..337fdd6e06f6 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "No se pudo eliminar la base de conocimientos", "msgErrorIndexingKb": "Falló la indexación", "msgSuccesIndexingKb": "Vuelva a capacitarse sobre el contenido lanzado exitosamente", - "msgErrorAddUpdateKb": "La base de conocimientos no se pudo agregar ni editar." + "msgErrorAddUpdateKb": "La base de conocimientos no se pudo agregar ni editar.", + "noContent": "sin contenido" }, "AutomationsDemoPageDescription":"Con nuestras “automatizaciones APIs” podrás gestionar mensajes de difusión masiva en Whatsapp utilizando las automatizaciones del diseñador combinadas con la facilidad de nuestras APIs, enviar mensajes a todos los contactos de tu CRM favorito, recibir el estado de los mensajes enviados (recibidos, leídos, etc.) ) ¡y mucho más!", "Sunday": "Domingo", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index e38a4a509ca3..6e30940bc902 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "La base de connaissances n'a pas pu être supprimée", "msgErrorIndexingKb": "Échec de l'indexation", "msgSuccesIndexingKb": "Recycler sur le contenu lancé avec succès", - "msgErrorAddUpdateKb": "La base de connaissances n'a pas pu être ajoutée ou modifiée" + "msgErrorAddUpdateKb": "La base de connaissances n'a pas pu être ajoutée ou modifiée", + "noContent": "Pas de contenu" }, "AutomationsDemoPageDescription":"Avec nos “Automatisations API” vous pouvez gérer les messages diffusés en masse sur Whatsapp grâce aux automatisations du concepteur combinées à la simplicité de nos API, envoyer des messages à tous les contacts de votre CRM préféré, recevoir le statut des messages envoyés (reçus, lus, etc. ) et beaucoup plus!", "Sunday": "Dimanche", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index ec89ea9e1180..2fb273bece50 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Impossibile eliminare la Knowledge Base", "msgErrorIndexingKb": "Indicizzazione non riuscita", "msgSuccesIndexingKb": "Riqualificazione sui contenuti avviata correttamente", - "msgErrorAddUpdateKb": "Impossibile aggiungere o modificare la Knowledge Base" + "msgErrorAddUpdateKb": "Impossibile aggiungere o modificare la Knowledge Base", + "noContent": "nessun contenuto" }, "AutomationsDemoPageDescription": "Con le nostre “APIs automations” puoi gestire messaggi broadcast massivi su Whatsapp utilizzando le automazioni del designer uniti alla facilità delle nostre API, inviare messaggi a tutti i contatti del tuo CRM preferito, ricevere lo stato dei messaggi inviati (ricevuto, letto etc.) e molto altro ancora!", "Sunday": "Domenica", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index d985cf2d190c..84ff9a9257e6 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Білім қорын жою мүмкін болмады", "msgErrorIndexingKb": "Индекстеу сәтсіз аяқталды", "msgSuccesIndexingKb": "Сәтті іске қосылған мазмұнды қайта оқытыңыз", - "msgErrorAddUpdateKb": "Білім қорын қосу немесе өңдеу мүмкін болмады" + "msgErrorAddUpdateKb": "Білім қорын қосу немесе өңдеу мүмкін болмады", + "noContent": "мазмұны жоқ" }, "AutomationsDemoPageDescription":"Біздің «API автоматикасының» көмегімен сіз WhatsApp желісіндегі жаппай хабарларды біздің API интерфейстеріміздің қарапайымдылығымен біріктірілген дизайнерлік автоматтандыруды пайдаланып басқара аласыз, сүйікті CRM-тің барлық контактілеріне хабарламалар жібере аласыз, жіберілген хабарламалардың күйін ала аласыз (қабылданған, оқылған және т. ) және тағы басқалар!", "Sunday": "Жексенбі", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 8e830a780d0b..4f9907261c97 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "A Base de Conhecimento não pôde ser excluída", "msgErrorIndexingKb": "Falha na indexação", "msgSuccesIndexingKb": "Treine novamente no conteúdo lançado com sucesso", - "msgErrorAddUpdateKb": "A base de conhecimento não pôde ser adicionada ou editada" + "msgErrorAddUpdateKb": "A base de conhecimento não pôde ser adicionada ou editada", + "noContent": "sem conteúdo" }, "AutomationsDemoPageDescription":"Com nossas “automações de APIs” você pode gerenciar mensagens de difusão em massa no Whatsapp utilizando as automações do designer aliadas à facilidade de nossas APIs, enviar mensagens para todos os contatos do seu CRM favorito, receber o status das mensagens enviadas (recebidas, lidas, etc. ) e muito mais!", "Sunday": "Domingo", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 843afa88b2cd..35edfe367d50 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Базу знаний не удалось удалить.", "msgErrorIndexingKb": "Индексирование не удалось", "msgSuccesIndexingKb": "Повторное обучение успешно запущенному контенту", - "msgErrorAddUpdateKb": "Базу знаний не удалось добавить или отредактировать." + "msgErrorAddUpdateKb": "Базу знаний не удалось добавить или отредактировать.", + "noContent": "без содержания" }, "AutomationsDemoPageDescription":"С помощью нашей «автоматизации API» вы можете управлять массовыми рассылками сообщений в Whatsapp, используя дизайнерскую автоматизацию в сочетании с простотой наших API, отправлять сообщения всем контактам вашей любимой CRM, получать статус отправленных сообщений (получено, прочитано и т. д.). ) и многое другое!", "Sunday": "Воскресенье", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index 1420a7499d79..0d5e54c69782 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Није могуће избрисати базу знања", "msgErrorIndexingKb": "Индексирање није успело", "msgSuccesIndexingKb": "Поново обука за садржај који је успешно покренут", - "msgErrorAddUpdateKb": "База знања није могла да се дода или уреди" + "msgErrorAddUpdateKb": "База знања није могла да се дода или уреди", + "noContent": "без садржаја" }, "AutomationsDemoPageDescription":"Са нашим „АПИ аутоматизацијама“ можете управљати масовним емитовањем порука на Вхатсапп-у користећи аутоматизацију дизајнера у комбинацији са лакоћом наших АПИ-ја, слати поруке свим контактима вашег омиљеног ЦРМ-а, примати статус послатих порука (примљено, прочитано, итд. ) и још много тога!", "Sunday": "недеља", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index 728363703c17..e2c890fd5f01 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Kunskapsbasen kunde inte raderas", "msgErrorIndexingKb": "Indexering misslyckades", "msgSuccesIndexingKb": "Utbilda om innehåll som har lanserats framgångsrikt", - "msgErrorAddUpdateKb": "Kunskapsbasen kunde inte läggas till eller redigeras" + "msgErrorAddUpdateKb": "Kunskapsbasen kunde inte läggas till eller redigeras", + "noContent": "inget innehåll" }, "AutomationsDemoPageDescription":"Med våra “API-automatiseringar” kan du hantera massutsändningsmeddelanden på Whatsapp med hjälp av designerns automatiseringar kombinerat med enkelheten hos våra API: er, skicka meddelanden till alla kontakter i din favorit-CRM, ta emot status för skickade meddelanden (mottagna, lästa, etc. ) och mycket mer!", "Sunday": "söndag", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index 4c4ef454e14f..b5f77a050123 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Bilgi Bankası silinemedi", "msgErrorIndexingKb": "Dizine ekleme başarısız oldu", "msgSuccesIndexingKb": "Başarıyla başlatılan içerikle ilgili yeniden eğitim", - "msgErrorAddUpdateKb": "Bilgi Bankası eklenemedi veya düzenlenemedi" + "msgErrorAddUpdateKb": "Bilgi Bankası eklenemedi veya düzenlenemedi", + "noContent": "içerik yok" }, "AutomationsDemoPageDescription":"“API otomasyonlarımız” ile, API'lerimizin kolaylığıyla birlikte tasarımcının otomasyonlarını kullanarak Whatsapp'taki toplu yayın mesajlarını yönetebilir, favori CRM'nizdeki tüm kişilere mesaj gönderebilir, gönderilen mesajların durumunu (alındı, okundu vb.) alabilirsiniz. ) ve daha fazlası!", "Sunday": "Pazar", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index 75c9adf68270..54f719cea8ba 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -1642,7 +1642,8 @@ "msgErrorDeleteKb": "Не вдалося видалити базу знань", "msgErrorIndexingKb": "Помилка індексації", "msgSuccesIndexingKb": "Повторне навчання вмісту успішно запущено", - "msgErrorAddUpdateKb": "Не вдалося додати або відредагувати базу знань" + "msgErrorAddUpdateKb": "Не вдалося додати або відредагувати базу знань", + "noContent": "немає вмісту" }, "AutomationsDemoPageDescription":"Завдяки нашій «автоматизації API» ви можете керувати масовими широкомовними повідомленнями в Whatsapp за допомогою автоматизації дизайнера в поєднанні з простотою наших API, надсилати повідомлення всім контактам вашої улюбленої CRM, отримувати статус надісланих повідомлень (отримано, прочитано тощо). ) і багато іншого!", "Sunday": "неділя", diff --git a/src/assets/i18n/uz.json b/src/assets/i18n/uz.json index 5a5744743624..5d631d95a57f 100644 --- a/src/assets/i18n/uz.json +++ b/src/assets/i18n/uz.json @@ -1641,7 +1641,8 @@ "msgErrorDeleteKb": "Bilimlar bazasini oʻchirib boʻlmadi", "msgErrorIndexingKb": "Indekslash amalga oshmadi", "msgSuccesIndexingKb": "Muvaffaqiyatli ishga tushirilgan kontentni qayta o'qitish", - "msgErrorAddUpdateKb": "Bilimlar bazasini qo‘shib bo‘lmadi yoki tahrirlab bo‘lmadi" + "msgErrorAddUpdateKb": "Bilimlar bazasini qo‘shib bo‘lmadi yoki tahrirlab bo‘lmadi", + "noContent": "tarkib yo'q" }, "AutomationsDemoPageDescription":"Bizning “API avtomatizatsiyamiz” yordamida siz Whatsapp-da ommaviy translyatsiya xabarlarini bizning API-larimiz qulayligi bilan birlashtirilgan dizayner avtomatizatsiyasidan foydalangan holda boshqarishingiz, sevimli CRM-ning barcha kontaktlariga xabarlar yuborishingiz, yuborilgan xabarlar holatini (qabul qilingan, o'qilgan va hokazo) olishingiz mumkin. ) va yana ko'p narsalar!", "Sunday": "yakshanba", From fc7294727c16f4ac7aad8704e2be0a080dcb23e1 Mon Sep 17 00:00:00 2001 From: Dario De Pascalis Date: Wed, 28 Feb 2024 10:53:06 +0100 Subject: [PATCH 08/35] set kb tab empty, added urls step1 --- src/app/app.module.ts | 4 +- .../knowledge-bases.component.html | 11 +- .../knowledge-bases.component.ts | 60 ++++- .../knowledge-base-table.component.html | 59 +++-- .../knowledge-base-table.component.scss | 39 ++++ .../knowledge-base-table.component.ts | 8 +- .../modal-urls-knowledge-base.component.html | 59 +++++ .../modal-urls-knowledge-base.component.scss | 208 ++++++++++++++++++ ...odal-urls-knowledge-base.component.spec.ts | 23 ++ .../modal-urls-knowledge-base.component.ts | 67 ++++++ src/app/services/knowledge-base.service.ts | 14 ++ 11 files changed, 530 insertions(+), 22 deletions(-) create mode 100644 src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html create mode 100644 src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss create mode 100644 src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.spec.ts create mode 100644 src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index a48dd0958c82..4aabfde82012 100755 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -393,6 +393,7 @@ import { ModalDetailKnowledgeBaseComponent } from './knowledge-bases/modals/moda import { KnowledgeBaseTableComponent } from './knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component'; import { ModalErrorComponent } from './knowledge-bases/modals/modal-error/modal-error.component'; import { KnowledgeBasesPreviousComponent } from './knowledge-bases-previous/knowledge-bases-previous.component'; +import { ModalUrlsKnowledgeBaseComponent } from './knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component'; @@ -696,7 +697,8 @@ const appInitializerFn = (appConfig: AppConfigService, brandService: BrandServic ModalDetailKnowledgeBaseComponent, KnowledgeBaseTableComponent, ModalErrorComponent, - KnowledgeBasesPreviousComponent + KnowledgeBasesPreviousComponent, + ModalUrlsKnowledgeBaseComponent ], imports: [ TooltipModule.forRoot(CutomTooltipOptions as TooltipOptions), diff --git a/src/app/knowledge-bases/knowledge-bases.component.html b/src/app/knowledge-bases/knowledge-bases.component.html index 9067f8bee4e5..248c9a7d83ee 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.html +++ b/src/app/knowledge-bases/knowledge-bases.component.html @@ -27,7 +27,7 @@
-
+
+ diff --git a/src/app/knowledge-bases/knowledge-bases.component.ts b/src/app/knowledge-bases/knowledge-bases.component.ts index 4d0618b00599..bf56ead5b0a5 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.ts +++ b/src/app/knowledge-bases/knowledge-bases.component.ts @@ -453,7 +453,7 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.kbsList.push(kb); }); this.logger.log('[KNOWLEDGE BASES COMP] get kbList: ', this.kbs, this.kbsList); - // this.checkAllStatuses(); + this.checkAllStatuses(); this.refreshKbsList = !this.refreshKbsList; //this.showSpinner = false; }, (error) => { @@ -528,6 +528,53 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { }) } + + + onAddMultiKb(body) { + // this.onCloseBaseModal(); + console.log("onAddMultiKb"); + let error = this.msgErrorAddUpdateKb; + this.kbService.addMultiKb(body).subscribe((resp: any) => { + this.logger.log("onAddMultiKb:", resp); + // let kb = resp.value; + if(resp.lastErrorObject && resp.lastErrorObject.updatedExisting === true){ + //console.log("updatedExisting true:"); + // const index = this.kbsList.findIndex(item => item._id === kb._id); + // if (index !== -1) { + // this.kbsList[index] = kb; + // this.notify.showWidgetStyleUpdateNotification(this.msgSuccesUpdateKb, 3, 'warning'); + // } + } else { + //this.kbsList.push(kb); + // this.kbsList.unshift(kb); + // this.notify.showWidgetStyleUpdateNotification(this.msgSuccesAddKb, 2, 'done'); + } + // this.updateStatusOfKb(kb._id, 0); + // this.refreshKbsList = !this.refreshKbsList; + + // let searchParams = { + // "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, + // "direction": KB_DEFAULT_PARAMS.DIRECTION, + // "status": '', + // "search": '', + // } + // this.onLoadByFilter(searchParams); + // this.logger.log("kbsList:",that.kbsList); + // that.onRunIndexing(kb); + // setTimeout(() => { + // this.checkStatusWithRetry(kb); + // }, 2000); + //that.onCloseBaseModal(); + }, (err) => { + this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR add new kb: ", err); + this.onOpenErrorModal(error); + }, () => { + this.logger.log("[KNOWLEDGE-BASES-COMP] add new kb *COMPLETED*"); + //this.trackUserActioOnKB('Added Knowledge Base', gptkey) + }) + } + + /** * onDeleteKb */ @@ -643,11 +690,12 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { } this.openaiService.checkScrapingStatus(data).subscribe((response: any) => { // this.logger.log('Risposta ricevuta:', response); - if(response.status_code && response.status_code == -1){ - // this.logger.log('risorsa non indicizzata'); - // this.onRunIndexing(kb); - // this.checkStatusWithRetry(kb); - } else if(response.status_code == -1 || response.status_code == 0 || response.status_code == 2){ + // if(response.status_code && response.status_code == -1){ + // // this.logger.log('risorsa non indicizzata'); + // // this.onRunIndexing(kb); + // this.checkStatusWithRetry(kb); + // } + if(response.status_code == -1 || response.status_code == 0 || response.status_code == 2){ // this.logger.log('riprova tra 10 secondi...'); this.updateStatusOfKb(kb._id, response.status_code); timer(10000).subscribe(() => { diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html index e5d3a104b872..cd946eebd42c 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html @@ -1,7 +1,50 @@ -
+
+ + +
-
+ +
+ +
-
-
- - - - +
@@ -65,19 +105,12 @@ -
{{'KbPage.noContent' | translate}}
description diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss index d4724f044511..24c0008c4d4d 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss @@ -209,3 +209,42 @@ td { margin-bottom: -40px; } + + +.lock-container { + width: 100%; + background-color: transparent; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + img { + width: 300px; + height: auto; + margin: 50px 0px; + } + p.upgrade-title { + font-size: 28px; + font-weight: 500; + margin-bottom: 20px; + } + p.upgrade-subtitle { + font-size: 16px; + margin-bottom: 30px; + max-width: 800px; + text-align: center; + } +} + + +.custom-upgrade-primary-button { + color: white; + min-width: 80px; + background: linear-gradient(45deg, #3167e2, #3167e2, #a736ff); + border: none; + border-radius: 6px; + height: 30px; + font-weight: 500; + padding: 0px 8px; + opacity: 0.8; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts index e9eb409e2be0..8cde7965ca4f 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts @@ -21,6 +21,8 @@ export class KnowledgeBaseTableComponent implements OnInit { @Output() openBaseModalDetail = new EventEmitter(); @Output() openBaseModalDelete = new EventEmitter(); @Output() openBaseModalPreview = new EventEmitter(); + @Output() openAddKnowledgeBaseModal = new EventEmitter(); + @Output() runIndexing = new EventEmitter(); @Output() loadPage = new EventEmitter(); @Output() loadByFilter = new EventEmitter(); @@ -82,7 +84,7 @@ export class KnowledgeBaseTableComponent implements OnInit { // } ngOnChanges(changes: SimpleChanges){ - // console.log('ngOnChanges!!!****** ', changes, changes.kbsListCount, this.kbsList.length); + console.log('ngOnChanges!!!****** ', changes); // if(changes.kbsListCount && changes.kbsListCount.currentValue) { if(changes.kbsListCount && changes.kbsListCount.currentValue){ this.kbsListCount = changes.kbsListCount.currentValue; @@ -179,6 +181,10 @@ export class KnowledgeBaseTableComponent implements OnInit { } return subtitle; } + + onOpenAddKnowledgeBaseModal(type){ + this.openAddKnowledgeBaseModal.emit(type); + } } diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html new file mode 100644 index 000000000000..bb24a70442ee --- /dev/null +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html @@ -0,0 +1,59 @@ + + + + + + + + + diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss new file mode 100644 index 000000000000..a4cea2930818 --- /dev/null +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss @@ -0,0 +1,208 @@ +.modal-header { + .modal-title { + font-weight: 400; + } + .close{ + opacity: 0.5; + } + .close:hover{ + opacity: 1; + } +} + +.modal-body { + display: inline-block; + width: 100%; +} + +.modal-state { + width: 40%; + text-align: right; + float: right; +} + +.fake-input { + height: 37px; + border-radius: 6px; + border: solid 2px #c6cdd4; + display: flex; + align-items: center; + padding: 12px; + cursor: text; + .fake-input-inner { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + } + input { + height: 32px; + width: 100%; + border: transparent; + } + .input-bold { + font-weight: 400; + } + .enter-button { + display: none; + transition: background-color 0.15s ease 0s, color 0.15s ease 0s; + cursor: pointer; + animation: 0.15s ease 0s 1 normal none running fadein, 0.15s ease 0s 1 normal none running moveinleft; + box-sizing: border-box; + min-width: 22px; + height: 22.4px; + margin-top: -4px; + margin-bottom: -4px; + padding-right: 8px; + padding-left: 8px; + font-weight: 600; + font-size: 12px; + line-height: 24px; + text-align: center; + border-radius: 5px; + // color: #61778c; + color: rgb(98, 119, 140); + background: linear-gradient(rgba(239, 245, 246, 0.64) 0%, rgb(238, 244, 246) 100%), rgb(255, 255, 255); + box-shadow: rgb(212, 217, 230) 0px 1px 0px; + } + @keyframes fadein { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + @keyframes moveinleft { + 0% { + transform: translate(16px); + } + + 100% { + transform: translate(0px); + } + } +} + +::ng-deep .custom-spinner { + .sk-fading-circle { + width: 20px; + height: 20px; + margin: 0px; + } + .sk-fading-circle .sk-circle:before { + background-color: rgb(98, 119, 140) !important; + } +} + +.answer { + min-height: 37px; + max-height: auto; + border-radius: 6px; + border: solid 2px #c6cdd4; + padding: 6px 12px 20px; + cursor: text; + overflow: hidden; + transition: max-height 0.5s ease-out; + .answer-title { + margin-bottom: 0px; + font-size: 12px; + font-weight: 600; + color: rgb(98, 119, 140) !important; + } +} + +.form-container { + margin-top: 12px; + margin-bottom: 12px; + display: inline-block; + width: 100%; + .input-container { + margin-bottom: 14px; + } + + .input-label { + font-weight: 400; + // letter-spacing: 0.5px; + } + + .custom-input { + width: 100%; + height: 37px; + border-radius: 6px; + border: 2px solid #c6cdd4; + padding: 0px 15px; + color: #22272d; + // line-height: 35px; + // font-weight: 400; + margin-bottom: 10px; + // letter-spacing: 0.5px; + &.invalid { + border: 2px solid red !important; + outline: 0px solid red !important; + transition: border 0.3s; + } + } + .custom-textarea { + width: 100%; + border-radius: 6px; + border: 2px solid #c6cdd4; + padding: 10px 15px; + color: #22272d; + // line-height: 35px; + // font-weight: 400; + &.invalid { + border: 2px solid red !important; + outline: 0px solid red !important; + transition: border 0.3s; + } + } +} + + +.kb-container { + width: fit-content; + display: flex; + flex-direction: row; + align-items: center; + border: solid 1px #c2c2c2; + border-radius: 12px; + padding: 2px 10px; + background: linear-gradient(rgba(239, 245, 246, 0.64) 0%, rgb(238, 244, 246) 100%), rgb(255, 255, 255); + box-shadow: rgb(212, 217, 230) 0px 1px 0px; + + p { + font-size: 12px; + margin-bottom: 0px; + color: rgb(98, 119, 140); + } + + .material-icons-round { + font-size: 20px; + margin-right: 8px; + color: rgb(98, 119, 140); + } +} + +.selectEngine { + ::ng-deep .ng-select-container { + border: 2px solid #c6cdd4; + } +} + +.info-container { + display: flex; + flex-direction: row; + padding: 12px 15px; + border-radius: 4px; + background-color: #d7ebfa6e; + .info-icon { + margin-right: 8px; + font-size: 20px; + } + p { + margin-bottom: 0px; + } +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.spec.ts b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.spec.ts new file mode 100644 index 000000000000..07a1372f0b1f --- /dev/null +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModalUrlsKnowledgeBaseComponent } from './modal-urls-knowledge-base.component'; + +describe('ModalUrlsKnowledgeBaseComponent', () => { + let component: ModalUrlsKnowledgeBaseComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ModalUrlsKnowledgeBaseComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ModalUrlsKnowledgeBaseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.ts b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.ts new file mode 100644 index 000000000000..aa8157a02862 --- /dev/null +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.ts @@ -0,0 +1,67 @@ +import { Component, OnInit, Output, EventEmitter } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { KB, KbSettings } from 'app/models/kbsettings-model'; + +@Component({ + selector: 'modal-urls-knowledge-base', + templateUrl: './modal-urls-knowledge-base.component.html', + styleUrls: ['./modal-urls-knowledge-base.component.scss'] +}) +export class ModalUrlsKnowledgeBaseComponent implements OnInit { + + @Output() saveKnowledgeBase = new EventEmitter(); + @Output() closeBaseModal = new EventEmitter(); + + kbForm: FormGroup; + buttonDisabled: boolean = false; + + list = []; + content: string; + + kb: KB = { + _id: null, + type: '', + name: '', + url: '', + content: '' + } + constructor( + private formBuilder: FormBuilder + ) { } + + ngOnInit(): void { + this.kbForm = this.createConditionGroup(); + } + + createConditionGroup(): FormGroup { + const contentPattern = /^[^&<>]{3,}$/; + const namePattern = /^[^&<>]{3,}$/; + return this.formBuilder.group({ + content: ['', [Validators.required]], + name: ['', [Validators.required, Validators.pattern(namePattern)]] + }) + } + + + onChangeInput(event): void { + // if (this.kbForm.valid) { + // this.buttonDisabled = false; + // } else { + // this.buttonDisabled = true; + // } + } + + onSaveKnowledgeBase(){ + console.log('onSaveKnowledgeBase: ',this.content); + const arrayURLS = this.content.split('\n'); + let body = { + 'list': arrayURLS + } + console.log(body); + this.saveKnowledgeBase.emit(body); + } + + onCloseBaseModal() { + this.closeBaseModal.emit(); + } +} diff --git a/src/app/services/knowledge-base.service.ts b/src/app/services/knowledge-base.service.ts index 186a01f08d47..b40f132d8a83 100644 --- a/src/app/services/knowledge-base.service.ts +++ b/src/app/services/knowledge-base.service.ts @@ -161,6 +161,20 @@ export class KnowledgeBaseService { return this.httpClient.post(url, JSON.stringify(body), httpOptions); } + addMultiKb(body: any) { + const httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + 'Authorization': this.TOKEN + }) + } + const url = this.SERVER_BASE_PATH + this.project_id + "/kb/multi"; + this.logger.log("[KNOWLEDGE BASE SERVICE] - add new kb URL ", url); + return this.httpClient.post(url, JSON.stringify(body), httpOptions); + } + + + deleteKb(data: any){ const httpOptions = { headers: new HttpHeaders({ From 5ec888f619c912103ec490424bca2e4711a424c7 Mon Sep 17 00:00:00 2001 From: Dario De Pascalis Date: Wed, 28 Feb 2024 17:29:30 +0100 Subject: [PATCH 09/35] bug fix paginator infinite scroll on add/delete content --- .../knowledge-bases.component.ts | 52 ++++++++++++------- .../knowledge-base-table.component.html | 4 +- .../knowledge-base-table.component.ts | 28 +++++++--- 3 files changed, 55 insertions(+), 29 deletions(-) diff --git a/src/app/knowledge-bases/knowledge-bases.component.ts b/src/app/knowledge-bases/knowledge-bases.component.ts index bf56ead5b0a5..329994ea485d 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.ts +++ b/src/app/knowledge-bases/knowledge-bases.component.ts @@ -406,26 +406,25 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { // } onLoadPage(searchParams){ - //console.log('onLoadNextPage:',this.kbsList); - // + console.log('onLoadNextPage:',searchParams); let params = "?limit="+KB_DEFAULT_PARAMS.LIMIT - if(searchParams.page){ + if(searchParams?.page){ params +="&page="+searchParams.page; } else { +"&page=0"; } - if(searchParams.status){ + if(searchParams?.status){ params +="&status="+searchParams.status; } - if(searchParams.search){ + if(searchParams?.search){ params +="&search="+searchParams.search; } - if(searchParams.sortField){ + if(searchParams?.sortField){ params +="&sortField="+searchParams.sortField; } else { params +="&sortField="+KB_DEFAULT_PARAMS.SORT_FIELD; } - if(searchParams.direction){ + if(searchParams?.direction){ params +="&direction="+searchParams.direction; } else { params +="&direction="+KB_DEFAULT_PARAMS.DIRECTION; @@ -449,6 +448,7 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.logger.log("[KNOWLEDGE BASES COMP] get kbList: ", resp); this.kbs = resp; this.kbsListCount = resp.count; + resp.kbs.forEach(kb => { this.kbsList.push(kb); }); @@ -500,24 +500,28 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { } } else { //this.kbsList.push(kb); - this.kbsList.unshift(kb); this.notify.showWidgetStyleUpdateNotification(this.msgSuccesAddKb, 2, 'done'); - } - this.updateStatusOfKb(kb._id, 0); - this.refreshKbsList = !this.refreshKbsList; + this.kbsListCount++; + this.kbsList.unshift(kb); + this.refreshKbsList = !this.refreshKbsList; - let searchParams = { - "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, - "direction": KB_DEFAULT_PARAMS.DIRECTION, - "status": '', - "search": '', + let searchParams = { + "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, + "direction": KB_DEFAULT_PARAMS.DIRECTION, + "status": '', + "search": '', + } + this.onLoadByFilter(searchParams); } + //this.updateStatusOfKb(kb._id, 0); + + // this.onLoadByFilter(searchParams); // this.logger.log("kbsList:",that.kbsList); // that.onRunIndexing(kb); - setTimeout(() => { - this.checkStatusWithRetry(kb); - }, 2000); + // setTimeout(() => { + // this.checkStatusWithRetry(kb); + // }, 2000); //that.onCloseBaseModal(); }, (err) => { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR add new kb: ", err); @@ -597,6 +601,16 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { // let error = response.error?response.error:"Errore generico"; // this.onOpenErrorModal(error); this.removeKb(kb._id); + this.kbsListCount--; + this.refreshKbsList = !this.refreshKbsList; + + let searchParams = { + "sortField": KB_DEFAULT_PARAMS.SORT_FIELD, + "direction": KB_DEFAULT_PARAMS.DIRECTION, + "status": '', + "search": '', + } + this.onLoadByFilter(searchParams); } }, (err) => { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR delete kb: ", err); diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html index cd946eebd42c..a436531f247d 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.html @@ -1,4 +1,4 @@ -
+
- -
Loading
- + +
{{'KbPage.Loading' | translate}}
+
{{'KbPage.LoadMore' | translate}}
diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss index f7606391f123..4a09f4b79818 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss @@ -1,5 +1,3 @@ - - select.select-status { height: 30px; background: #fff; @@ -139,10 +137,10 @@ table { display: block; width: fit-content; font-weight: normal; - font-family: monospace; + // font-family: monospace; font-size: 12px; line-height: 24px; - clip-path: inset(0 3ch 0 0); + clip-path: inset(0 1ch 0 0); animation: l4 1s steps(4) infinite; } @@ -155,6 +153,14 @@ table { text-align: center; margin: 20px auto 10px; display: block; + width: fit-content; + font-weight: normal; + font-size: 12px; + line-height: 24px; + cursor: pointer; + border-radius: 4px; + padding: 2px 12px; + min-width: auto; } @@ -256,7 +262,7 @@ td { margin-bottom: 0px; color: #353f45; font-weight: 400; - font-family: "Poppins"; + // font-family: "Poppins"; margin-top: 25px; text-align: center; } @@ -269,7 +275,12 @@ td { min-width: 64px; padding: 0 14px; text-transform: none; -} -.card{ +} + +.card { border: none!important; -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-delete-knowledge-base/modal-delete-knowledge-base.component.scss b/src/app/knowledge-bases/modals/modal-delete-knowledge-base/modal-delete-knowledge-base.component.scss index 2fa51e023f78..c6a121d23648 100644 --- a/src/app/knowledge-bases/modals/modal-delete-knowledge-base/modal-delete-knowledge-base.component.scss +++ b/src/app/knowledge-bases/modals/modal-delete-knowledge-base/modal-delete-knowledge-base.component.scss @@ -205,4 +205,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.scss b/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.scss index 00e879da2ebb..c08a0bfdf1b8 100644 --- a/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.scss +++ b/src/app/knowledge-bases/modals/modal-detail-knowledge-base/modal-detail-knowledge-base.component.scss @@ -220,4 +220,8 @@ display: inline-block; padding-top: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-error/modal-error.component.scss b/src/app/knowledge-bases/modals/modal-error/modal-error.component.scss index e69de29bb2d1..dd6f8d71db1a 100644 --- a/src/app/knowledge-bases/modals/modal-error/modal-error.component.scss +++ b/src/app/knowledge-bases/modals/modal-error/modal-error.component.scss @@ -0,0 +1,3 @@ +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-gpt-key/modal-gpt-key.component.scss b/src/app/knowledge-bases/modals/modal-gpt-key/modal-gpt-key.component.scss index e69de29bb2d1..dd6f8d71db1a 100644 --- a/src/app/knowledge-bases/modals/modal-gpt-key/modal-gpt-key.component.scss +++ b/src/app/knowledge-bases/modals/modal-gpt-key/modal-gpt-key.component.scss @@ -0,0 +1,3 @@ +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-page-url/modal-page-url.component.scss b/src/app/knowledge-bases/modals/modal-page-url/modal-page-url.component.scss index 2fa51e023f78..c6a121d23648 100644 --- a/src/app/knowledge-bases/modals/modal-page-url/modal-page-url.component.scss +++ b/src/app/knowledge-bases/modals/modal-page-url/modal-page-url.component.scss @@ -205,4 +205,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.scss b/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.scss index 4f042fc46091..7267bf43339e 100644 --- a/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.scss +++ b/src/app/knowledge-bases/modals/modal-preview-knowledge-base/modal-preview-knowledge-base.component.scss @@ -205,4 +205,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.scss b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.scss index 4f042fc46091..7267bf43339e 100644 --- a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.scss +++ b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.scss @@ -205,4 +205,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.scss b/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.scss index a4cea2930818..7d4a06a150d4 100644 --- a/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.scss +++ b/src/app/knowledge-bases/modals/modal-text-file/modal-text-file.component.scss @@ -205,4 +205,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html index 195086a25385..c041474fb8c8 100644 --- a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.html @@ -21,6 +21,7 @@
diff --git a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss index 6210fc174e83..b05bda4fd1c9 100644 --- a/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss +++ b/src/app/knowledge-bases/modals/modal-urls-knowledge-base/modal-urls-knowledge-base.component.scss @@ -206,4 +206,8 @@ p { margin-bottom: 0px; } -} \ No newline at end of file +} + +.btn { + text-transform: none; +} \ No newline at end of file diff --git a/src/app/utils/util.ts b/src/app/utils/util.ts index a60e4a663909..fae4e8145a45 100755 --- a/src/app/utils/util.ts +++ b/src/app/utils/util.ts @@ -336,7 +336,7 @@ export enum KB_MAX_NUM { export enum KB_DEFAULT_PARAMS { - LIMIT = 2, + LIMIT = 20, NUMBER_PAGE = 0, DIRECTION = -1, SORT_FIELD = 'updatedAt' diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index 08a4bbb1ce98..a00c4173e5ce 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "أسرار", - "Add": "يضيف", "Enter": "يدخل", - "NoKbAdded": "لم تقم بإضافة أي قاعدة معارف حتى الآن", "RunIndexing": "تشغيل الفهرسة", "CreationDate": "تاريخ الإنشاء", "KbCounterFooter": "{{ counter }} تمت إضافة 3 قواعد معرفية", - "AddKbURL": "أضف عنوان URL لصفحتك", - "AddKbText": "إضافة ملف نصي", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Knowledge Base limit reached for {{plan_name}}", @@ -1648,7 +1644,16 @@ "helpUrls": "قم بإدراج صفحات الويب من عناوين URL العامة في منطقة النص أدناه، مفصولة بإرجاع", "titleTextareaUrls": "قائمة عناوين URL", "placeholderUrls": "أدخل عناوين URL", - "infoUrls": "عنوان URL واحد لكل سطر." + "infoUrls": "عنوان URL واحد لكل سطر.", + "NoKbAdded": "لا توجد مصادر بيانات", + "NoKbAddedText": "أضف مصدر البيانات إلى مساعدك لبناء قاعدة معرفية.", + "Add": "إضافة مصادر البيانات", + "AddKbURL": "عناوين URL متعددة", + "AddKbText": "نص بسيط", + "AddKbSitemap": "خريطة الموقع", + "LoadMore": "تحميل المزيد", + "Loading": "تحميل", + "YouCanAddKBUrlsLimit": "يمكنك إضافة 300 عنوان URL كحد أقصى" }, "AutomationsDemoPageDescription":"من خلال أتمتة واجهات برمجة التطبيقات لدينا، يمكنك إدارة رسائل البث الجماعية على Whatsapp باستخدام أتمتة المصمم جنبًا إلى جنب مع سهولة واجهات برمجة التطبيقات لدينا، وإرسال رسائل إلى جميع جهات الاتصال الخاصة بإدارة علاقات العملاء (CRM) المفضلة لديك، وتلقي حالة الرسائل المرسلة (المستلمة، المقروءة، وما إلى ذلك) و أكثر بكثير!", "Sunday": "الأحد", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index 354f13f82382..3f74b857e5ec 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Sirlər", - "Add": "Əlavə et", "Enter": "Daxil edin", - "NoKbAdded": "Siz hələ heç bir Bilik Bazasını əlavə etməmisiniz", "RunIndexing": "İndeksləşdirməni işə salın", "CreationDate": "Yaradılma tarixi", "KbCounterFooter": "{{ counter }} 3 Bilik bazası əlavə edildi", - "AddKbURL": "Səhifə URL əlavə edin", - "AddKbText": "Mətn faylı əlavə edin", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "{{plan_name}} üçün Bilik Bazaları limitinə çatdı", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Bilik Bazasını əlavə etmək və ya redaktə etmək mümkün olmadı", "noContent": "məzmun yoxdur", "titleUrls": "URL-lərdən idxal", - "helpUrls": "İctimai URL-lərdən veb səhifələri geri dönüşlə ayrılaraq aşağıdakı mətn sahəsinə daxil edin", + "helpUrls": "İctimai URL-lərdən veb səhifələri geri dönüşlə ayrılaraq aşağıdakı mətn sahəsinə daxil edin.", "titleTextareaUrls": "URL-lərin siyahısı", "placeholderUrls": "URL-ləri daxil edin", - "infoUrls": "Hər sətir üçün bir url." + "infoUrls": "Hər sətir üçün bir url.", + "NoKbAdded": "Heç bir məlumat mənbəyi yoxdur", + "NoKbAddedText": "Bilik bazası yaratmaq üçün köməkçinizə məlumat mənbəyi əlavə edin.", + "Add": "Məlumat mənbələri əlavə edin", + "AddKbURL": "Birdən çox URL", + "AddKbText": "Sadə mətn", + "AddKbSitemap": "Saytın xəritəsi", + "LoadMore": "daha çox yükləyin", + "Loading": "yüklənir", + "YouCanAddKBUrlsLimit": "Siz maksimum 300 URL əlavə edə bilərsiniz" }, "AutomationsDemoPageDescription":"Bizim “API avtomatlaşdırmalarımız” ilə siz API-lərimizin asanlığı ilə birləşdirilən dizayner avtomatlaşdırmalarından istifadə edərək Whatsapp-da kütləvi yayım mesajlarını idarə edə, sevimli CRM-nin bütün kontaktlarına mesaj göndərə, göndərilən mesajların statusunu (qəbul edildi, oxundu və s.) ala bilərsiniz. ) və daha çox!", "Sunday": "bazar günü", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 0b676bc42ede..5c4c323c6432 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1577,14 +1577,10 @@ }, "KbPage": { "Secrets": "Geheimnisse", - "Add": "Hinzufügen", "Enter": "Eingeben", - "NoKbAdded": "Sie haben noch keine Wissensdatenbank hinzugefügt", "RunIndexing": "Führen Sie die Indizierung aus", "CreationDate": "Erstellungsdatum", "KbCounterFooter": "{{ counter }} von 3 Wissensdatenbanken hinzugefügt", - "AddKbURL": "Fügen Sie Ihre Seiten-URL hinzu", - "AddKbText": "Textdatei hinzufügen", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Das Wissensdatenbanklimit für {{plan_name}} wurde erreicht.", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Die Wissensdatenbank konnte nicht hinzugefügt oder bearbeitet werden", "noContent": "kein Inhalt", "titleUrls": "Von URLs importieren", - "helpUrls": "Fügen Sie Webseiten von öffentlichen URLs in den Textbereich unten ein, getrennt durch einen Zeilenumbruch", + "helpUrls": "Fügen Sie Webseiten von öffentlichen URLs in den Textbereich unten ein, getrennt durch einen Zeilenumbruch.", "titleTextareaUrls": "Liste der URLs", "placeholderUrls": "Geben Sie URLs ein", - "infoUrls": "Eine URL pro Zeile." + "infoUrls": "Eine URL pro Zeile.", + "NoKbAdded": "Es sind keine Datenquellen vorhanden", + "NoKbAddedText": "Fügen Sie Ihrem Assistenten eine Datenquelle hinzu, um eine Wissensdatenbank aufzubauen.", + "Add": "Datenquellen hinzufügen", + "AddKbURL": "Mehrere URLs", + "AddKbText": "Einfacher Text", + "AddKbSitemap": "Seitenverzeichnis", + "LoadMore": "Mehr laden", + "Loading": "Wird geladen", + "YouCanAddKBUrlsLimit": "Sie können maximal 300 URLs hinzufügen" }, "AutomationsDemoPageDescription":"Mit unseren „APIs-Automatisierungen“ können Sie Massennachrichten auf WhatsApp verwalten, indem Sie die Automatisierungen des Designers in Kombination mit der Benutzerfreundlichkeit unserer APIs nutzen, Nachrichten an alle Kontakte Ihres bevorzugten CRM senden, den Status gesendeter Nachrichten (empfangen, gelesen usw.) erhalten. ) und vieles mehr!", "Sunday": "Sonntag", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index c532c1303e5f..73a81c31fd36 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Secrets", - "Add": "Add Knowledge Base", "Enter": "Enter", - "NoKbAdded": "You have not added any Knowledge Base yet", "RunIndexing": "Re-train", "CreationDate": "Creation date", "KbCounterFooter": "{{counter}} of 3 Knowledge Bases added", - "AddKbURL": "Add your page URL", - "AddKbText": "Add Text File", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Knowledge Bases limit reached for {{plan_name}}", @@ -1601,7 +1597,7 @@ "TypeKbUrlPlaceholder": "Type Knowledge Base URL", "TypeKbKeyPlaceholder": "Type your GPT-Key", "AskQuestionPlaceholder": "Ask a question", - "DeleteKb": "Delete Knowledge Base", + "DeleteKb": "Delete KB", "DeleteKbInfoFirstText": "You will no longer be able to use AI on this knowledge base", "SureToDelete": "Are you sure you want to delete the Knowledge Base {{ name }} ?", "GptKeyInfo": "Enter your GPT-Key to use your Knowledge Bases", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "The Knowledge Base could not be added or edited", "noContent": "no content", "titleUrls": "Import from URLs", - "helpUrls": "Insert web pages from public URLs into the text area below, separated by a return", + "helpUrls": "Insert web pages from public URLs into the text area below, separated by a return.", "titleTextareaUrls": "List of URLs", "placeholderUrls": "Enter URLs", - "infoUrls": "One url per line." + "infoUrls": "One url per line.", + "NoKbAdded": "No data sources exist", + "NoKbAddedText": "Add data-sources into your assistant to build a 'knowledge base'.", + "Add": "Add data-source", + "AddKbURL": "Multiple URLs", + "AddKbText": "Simple text", + "AddKbSitemap": "Sitemap", + "LoadMore": "load more", + "Loading": "loading", + "YouCanAddKBUrlsLimit":"You can add a maximum of 300 URLs" }, "AutomationsDemoPageDescription": "With our “APIs automations” you can manage mass broadcast messages on Whatsapp using the designer's automations combined with the ease of our APIs, send messages to all the contacts of your favorite CRM, receive the status of sent messages (received, read, etc.) and much more!", "Sunday": "Sunday", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 7d3b4bb5a576..583bad253f2c 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Misterios", - "Add": "Agregar", "Enter": "Ingresar", - "NoKbAdded": "Aún no has agregado ninguna base de conocimientos", "RunIndexing": "Ejecutar indexación", "CreationDate": "Fecha de creación", "KbCounterFooter": "{{ counter }} de 3 Bases de Conocimiento añadidas", - "AddKbURL": "Añade la URL de tu página", - "AddKbText": "Agregar archivo de texto", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Límite de bases de conocimientos alcanzado para {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "La base de conocimientos no se pudo agregar ni editar.", "noContent": "sin contenido", "titleUrls": "Importar desde URL", - "helpUrls": "Inserte páginas web desde URL públicas en el área de texto a continuación, separadas por un retorno", + "helpUrls": "Inserte páginas web desde URL públicas en el área de texto a continuación, separadas por un retorno.", "titleTextareaUrls": "Lista de URL", "placeholderUrls": "Ingrese las URL", - "infoUrls": "Una URL por línea." + "infoUrls": "Una URL por línea.", + "NoKbAdded": "No existen fuentes de datos", + "NoKbAddedText": "Agregue una fuente de datos a su asistente para crear una base de conocimientos.", + "Add": "Agregar fuentes de datos", + "AddKbURL": "Múltiples URL", + "AddKbText": "texto sencillo", + "AddKbSitemap": "Mapa del sitio", + "LoadMore": "carga más", + "Loading": "cargando", + "YouCanAddKBUrlsLimit": "Puede agregar un máximo de 300 URL" }, "AutomationsDemoPageDescription":"Con nuestras “automatizaciones APIs” podrás gestionar mensajes de difusión masiva en Whatsapp utilizando las automatizaciones del diseñador combinadas con la facilidad de nuestras APIs, enviar mensajes a todos los contactos de tu CRM favorito, recibir el estado de los mensajes enviados (recibidos, leídos, etc.) ) ¡y mucho más!", "Sunday": "Domingo", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index e4049ffc753e..a29cfaa1d3b0 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Secrets", - "Add": "Ajouter", "Enter": "Entrer", - "NoKbAdded": "Vous n'avez pas encore ajouté de base de connaissances", "RunIndexing": "Exécuter l'indexation", "CreationDate": "Date de création", "KbCounterFooter": "{{ counter }} sur 3 bases de connaissances ajoutées", - "AddKbURL": "Ajoutez l'URL de votre page", - "AddKbText": "Ajouter un fichier texte", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Limite des bases de connaissances atteinte pour {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "La base de connaissances n'a pas pu être ajoutée ou modifiée", "noContent": "Pas de contenu", "titleUrls": "Importer à partir d'URL", - "helpUrls": "Insérez des pages Web à partir d'URL publiques dans la zone de texte ci-dessous, séparées par un retour", + "helpUrls": "Insérez des pages Web à partir d'URL publiques dans la zone de texte ci-dessous, séparées par un retour.", "titleTextareaUrls": "Liste des URL", "placeholderUrls": "Saisissez les URL", - "infoUrls": "Une URL par ligne." + "infoUrls": "Une URL par ligne.", + "NoKbAdded": "Aucune source de données n'existe", + "NoKbAddedText": "Ajoutez une source de données dans votre assistant pour créer une base de connaissances.", + "Add": "Ajouter des sources de données", + "AddKbURL": "Plusieurs URL", + "AddKbText": "Texte simple", + "AddKbSitemap": "Plan du site", + "LoadMore": "charger plus", + "Loading": "chargement", + "YouCanAddKBUrlsLimit": "Vous pouvez ajouter un maximum de 300 URL" }, "AutomationsDemoPageDescription":"Avec nos “Automatisations API” vous pouvez gérer les messages diffusés en masse sur Whatsapp grâce aux automatisations du concepteur combinées à la simplicité de nos API, envoyer des messages à tous les contacts de votre CRM préféré, recevoir le statut des messages envoyés (reçus, lus, etc. ) et beaucoup plus!", "Sunday": "Dimanche", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index bab3419d9b3f..5378b4487d3c 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1577,14 +1577,10 @@ }, "KbPage": { "Secrets": "Secrets", - "Add": "Aggiungi", "Enter": "Invia", - "NoKbAdded": "Non hai ancora aggiunto nessuna Knowledge Base", "RunIndexing": "Riaddestrare", "CreationDate": "Data creazione", "KbCounterFooter": "{{ counter }} di 3 Knowledge Base aggiunte", - "AddKbURL": "Aggiungi l'URL della tua pagina", - "AddKbText": "Aggiungi file di testo", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Limite di Knowledge Bases raggiunto per lo {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Impossibile aggiungere o modificare la Knowledge Base", "noContent": "nessun contenuto", "titleUrls": "Importa da URL", - "helpUrls": "Inserisci le pagine web dagli URL pubblici nell'area di testo sottostante, separate da un ritorno a capo", + "helpUrls": "Inserisci le pagine web dagli URL pubblici nell'area di testo sottostante, separate da un ritorno a capo.", "titleTextareaUrls": "Elenco degli URL", "placeholderUrls": "Inserisci gli URL", - "infoUrls": "Un URL per riga." + "infoUrls": "Un URL per riga.", + "NoKbAdded": "Non esistono origini dati", + "NoKbAddedText": "Aggiungi l'origine dati al tuo assistente per creare una knowledge base.", + "Add": "Aggiungi dati", + "AddKbURL": "URL multipli", + "AddKbText": "Testo semplice", + "AddKbSitemap": "Mappa del sito", + "LoadMore": "carica di più", + "Loading": "caricamento", + "YouCanAddKBUrlsLimit": "Puoi aggiungere un massimo di 300 URL" }, "AutomationsDemoPageDescription": "Con le nostre “APIs automations” puoi gestire messaggi broadcast massivi su Whatsapp utilizzando le automazioni del designer uniti alla facilità delle nostre API, inviare messaggi a tutti i contatti del tuo CRM preferito, ricevere lo stato dei messaggi inviati (ricevuto, letto etc.) e molto altro ancora!", "Sunday": "Domenica", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index b3ce54005689..a7021f8c7ed4 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Құпиялар", - "Add": "қосу", "Enter": "Енгізіңіз", - "NoKbAdded": "Сіз әлі ешқандай білім қорын қосқан жоқсыз", "RunIndexing": "Индекстеуді іске қосыңыз", "CreationDate": "Жасалу күні", "KbCounterFooter": "{{ counter }} 3 білім қоры қосылды", - "AddKbURL": "Беттің URL мекенжайын қосыңыз", - "AddKbText": "Мәтіндік файлды қосу", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "{{plan_name}} бойынша білім қорының шегіне жетті", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Білім қорын қосу немесе өңдеу мүмкін болмады", "noContent": "мазмұны жоқ", "titleUrls": "URL мекенжайларынан импорттау", - "helpUrls": "Жалпы URL мекенжайларынан веб-беттерді қайтару арқылы бөлінген төмендегі мәтін аймағына кірістіріңіз", + "helpUrls": "Жалпы URL мекенжайларынан веб-беттерді қайтару арқылы бөлінген төмендегі мәтін аймағына кірістіріңіз.", "titleTextareaUrls": "URL мекенжайларының тізімі", "placeholderUrls": "URL мекенжайларын енгізіңіз", - "infoUrls": "Әр жолға бір url." + "infoUrls": "Әр жолға бір url.", + "NoKbAdded": "Деректер көздері жоқ", + "NoKbAddedText": "Білім базасын құру үшін көмекшіге деректер көзін қосыңыз.", + "Add": "Деректер көздерін қосыңыз", + "AddKbURL": "Бірнеше URL мекенжайлары", + "AddKbText": "Қарапайым мәтін", + "AddKbSitemap": "Сайт картасы", + "LoadMore": "көбірек жүктеңіз", + "Loading": "жүктеу", + "YouCanAddKBUrlsLimit": "Ең көбі 300 URL қосуға болады" }, "AutomationsDemoPageDescription":"Біздің «API автоматикасының» көмегімен сіз WhatsApp желісіндегі жаппай хабарларды біздің API интерфейстеріміздің қарапайымдылығымен біріктірілген дизайнерлік автоматтандыруды пайдаланып басқара аласыз, сүйікті CRM-тің барлық контактілеріне хабарламалар жібере аласыз, жіберілген хабарламалардың күйін ала аласыз (қабылданған, оқылған және т. ) және тағы басқалар!", "Sunday": "Жексенбі", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 2c2fb5b4a6ec..f1bb67acdb65 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Segredos", - "Add": "Adicionar", "Enter": "Digitar", - "NoKbAdded": "Você ainda não adicionou nenhuma base de conhecimento", "RunIndexing": "Executar indexação", "CreationDate": "Data de criação", "KbCounterFooter": "{{ counter }} de 3 bases de conhecimento adicionadas", - "AddKbURL": "Adicione o URL da sua página", - "AddKbText": "Adicionar arquivo de texto", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Limite da Base de Conhecimento atingido para {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "A base de conhecimento não pôde ser adicionada ou editada", "noContent": "sem conteúdo", "titleUrls": "Importar de URLs", - "helpUrls": "Insira páginas da web de URLs públicos na área de texto abaixo, separadas por um retorno", + "helpUrls": "Insira páginas da web de URLs públicos na área de texto abaixo, separadas por um retorno.", "titleTextareaUrls": "Lista de URLs", "placeholderUrls": "Insira URLs", - "infoUrls": "Um URL por linha." + "infoUrls": "Um URL por linha.", + "NoKbAdded": "Não existem fontes de dados", + "NoKbAddedText": "Adicione fonte de dados ao seu assistente para construir uma base de conhecimento.", + "Add": "Adicionar fontes de dados", + "AddKbURL": "Vários URLs", + "AddKbText": "Texto simples", + "AddKbSitemap": "Mapa do site", + "LoadMore": "Carregue mais", + "Loading": "carregando", + "YouCanAddKBUrlsLimit": "Você pode adicionar no máximo 300 URLs" }, "AutomationsDemoPageDescription":"Com nossas “automações de APIs” você pode gerenciar mensagens de difusão em massa no Whatsapp utilizando as automações do designer aliadas à facilidade de nossas APIs, enviar mensagens para todos os contatos do seu CRM favorito, receber o status das mensagens enviadas (recebidas, lidas, etc. ) e muito mais!", "Sunday": "Domingo", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 355822d43a2c..ae93e176b849 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Секреты", - "Add": "Добавлять", "Enter": "Входить", - "NoKbAdded": "Вы еще не добавили ни одной базы знаний", "RunIndexing": "Запустить индексирование", "CreationDate": "Дата создания", "KbCounterFooter": "{{ counter }} добавлено из 3 баз знаний", - "AddKbURL": "Добавьте URL своей страницы", - "AddKbText": "Добавить текстовый файл", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Достигнут лимит баз знаний для {{plan_name}}", @@ -1648,7 +1644,16 @@ "helpUrls": "Вставьте веб-страницы с общедоступных URL-адресов в текстовую область ниже, разделив их возвратом.", "titleTextareaUrls": "Список URL-адресов", "placeholderUrls": "Введите URL-адреса", - "infoUrls": "Один URL в каждой строке." + "infoUrls": "Один URL в каждой строке.", + "NoKbAdded": "Источники данных отсутствуют", + "NoKbAddedText": "Добавьте источник данных в свой помощник, чтобы создать базу знаний.", + "Add": "Добавить источники данных", + "AddKbURL": "Несколько URL-адресов", + "AddKbText": "Простой текст", + "AddKbSitemap": "Карта сайта", + "LoadMore": "Загрузи больше", + "Loading": "загрузка", + "YouCanAddKBUrlsLimit": "Вы можете добавить максимум 300 URL-адресов." }, "AutomationsDemoPageDescription":"С помощью нашей «автоматизации API» вы можете управлять массовыми рассылками сообщений в Whatsapp, используя дизайнерскую автоматизацию в сочетании с простотой наших API, отправлять сообщения всем контактам вашей любимой CRM, получать статус отправленных сообщений (получено, прочитано и т. д.). ) и многое другое!", "Sunday": "Воскресенье", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index b8e73c784311..fb01e630c353 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Тајне", - "Add": "Додати", "Enter": "Ентер", - "NoKbAdded": "Још увек нисте додали ниједну базу знања", "RunIndexing": "Покрени индексирање", "CreationDate": "Датум израде", "KbCounterFooter": "{{ counter }} од 3 додане базе знања", - "AddKbURL": "Додајте УРЛ своје странице", - "AddKbText": "Додајте текстуалну датотеку", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Достигнуто је ограничење базе знања за {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "База знања није могла да се дода или уреди", "noContent": "без садржаја", "titleUrls": "Увоз са УРЛ адреса", - "helpUrls": "Уметните веб странице са јавних УРЛ-ова у текстуално подручје испод, раздвојене повратком", + "helpUrls": "Уметните веб странице са јавних УРЛ-ова у текстуално подручје испод, раздвојене повратком.", "titleTextareaUrls": "Листа УРЛ адреса", "placeholderUrls": "Унесите УРЛ адресе", - "infoUrls": "Један УРЛ по реду." + "infoUrls": "Један УРЛ по реду.", + "NoKbAdded": "Не постоје извори података", + "NoKbAddedText": "Додајте извор података свом помоћнику да бисте изградили базу знања.", + "Add": "Додајте изворе података", + "AddKbURL": "Више УРЛ адреса", + "AddKbText": "Једноставан текст", + "AddKbSitemap": "Мапа сајта", + "LoadMore": "Учитај више", + "Loading": "лоадинг", + "YouCanAddKBUrlsLimit": "Можете додати највише 300 УРЛ адреса" }, "AutomationsDemoPageDescription":"Са нашим „АПИ аутоматизацијама“ можете управљати масовним емитовањем порука на Вхатсапп-у користећи аутоматизацију дизајнера у комбинацији са лакоћом наших АПИ-ја, слати поруке свим контактима вашег омиљеног ЦРМ-а, примати статус послатих порука (примљено, прочитано, итд. ) и још много тога!", "Sunday": "недеља", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index 639a1b4ea695..f85d84e38455 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Hemligheter", - "Add": "Lägg till", "Enter": "Stiga på", - "NoKbAdded": "Du har inte lagt till någon kunskapsbas än", "RunIndexing": "Kör indexering", "CreationDate": "Skapelsedagen", "KbCounterFooter": "{{ counter }} av 3 kunskapsbaser tillagda", - "AddKbURL": "Lägg till din webbadress", - "AddKbText": "Lägg till textfil", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Kunskapsbasens gräns nådd för {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Kunskapsbasen kunde inte läggas till eller redigeras", "noContent": "inget innehåll", "titleUrls": "Importera från webbadresser", - "helpUrls": "Infoga webbsidor från offentliga webbadresser i textområdet nedan, åtskilda av en retur", + "helpUrls": "Infoga webbsidor från offentliga webbadresser i textområdet nedan, åtskilda av en retur.", "titleTextareaUrls": "Lista över webbadresser", "placeholderUrls": "Ange webbadresser", - "infoUrls": "En webbadress per rad." + "infoUrls": "En webbadress per rad.", + "NoKbAdded": "Det finns inga datakällor", + "NoKbAddedText": "Lägg till datakälla i din assistent för att bygga en kunskapsbas.", + "Add": "Lägg till datakällor", + "AddKbURL": "Flera webbadresser", + "AddKbText": "Enkel text", + "AddKbSitemap": "Webbplatskarta", + "LoadMore": "ladda mer", + "Loading": "läser in", + "YouCanAddKBUrlsLimit": "Du kan lägga till högst 300 webbadresser" }, "AutomationsDemoPageDescription":"Med våra “API-automatiseringar” kan du hantera massutsändningsmeddelanden på Whatsapp med hjälp av designerns automatiseringar kombinerat med enkelheten hos våra API: er, skicka meddelanden till alla kontakter i din favorit-CRM, ta emot status för skickade meddelanden (mottagna, lästa, etc. ) och mycket mer!", "Sunday": "söndag", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index 56c2fe97cac9..5b357694bfb2 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Sırlar", - "Add": "Eklemek", "Enter": "Girmek", - "NoKbAdded": "Henüz herhangi bir Bilgi Tabanı eklemediniz", "RunIndexing": "Dizin Oluşturmayı Çalıştır", "CreationDate": "Oluşturulma tarihi", "KbCounterFooter": "{{ counter }} / 3 Bilgi Tabanı eklendi", - "AddKbURL": "Sayfa URL'nizi ekleyin", - "AddKbText": "Metin Dosyası Ekle", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "{{plan_name}} için Bilgi Tabanı sınırına ulaşıldı", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Bilgi Bankası eklenemedi veya düzenlenemedi", "noContent": "içerik yok", "titleUrls": "URL'lerden içe aktar", - "helpUrls": "Genel URL'lerdeki web sayfalarını aşağıdaki metin alanına bir dönüş işaretiyle ayırarak ekleyin", + "helpUrls": "Genel URL'lerdeki web sayfalarını aşağıdaki metin alanına bir dönüş işaretiyle ayırarak ekleyin.", "titleTextareaUrls": "URL'lerin listesi", "placeholderUrls": "URL'leri girin", - "infoUrls": "Satır başına bir URL." + "infoUrls": "Satır başına bir URL.", + "NoKbAdded": "Hiçbir veri kaynağı mevcut değil", + "NoKbAddedText": "Bir bilgi tabanı oluşturmak için asistanınıza veri kaynağı ekleyin.", + "Add": "Veri kaynakları ekleyin", + "AddKbURL": "Birden çok URL", + "AddKbText": "Basit metin", + "AddKbSitemap": "Site haritası", + "LoadMore": "daha fazla yükle", + "Loading": "Yükleniyor", + "YouCanAddKBUrlsLimit": "Maksimum 300 URL ekleyebilirsiniz" }, "AutomationsDemoPageDescription":"“API otomasyonlarımız” ile, API'lerimizin kolaylığıyla birlikte tasarımcının otomasyonlarını kullanarak Whatsapp'taki toplu yayın mesajlarını yönetebilir, favori CRM'nizdeki tüm kişilere mesaj gönderebilir, gönderilen mesajların durumunu (alındı, okundu vb.) alabilirsiniz. ) ve daha fazlası!", "Sunday": "Pazar", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index 91fd53401610..016f47940cb8 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -1576,14 +1576,10 @@ }, "KbPage": { "Secrets": "Секрети", - "Add": "додати", "Enter": "Введіть", - "NoKbAdded": "Ви ще не додали жодної бази знань", "RunIndexing": "Запустіть індексацію", "CreationDate": "Дата створення", "KbCounterFooter": "{{ counter }} із 3 доданих баз знань", - "AddKbURL": "Додайте URL-адресу сторінки", - "AddKbText": "Додати текстовий файл", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "Досягнуто ліміту баз знань для {{plan_name}}", @@ -1645,10 +1641,19 @@ "msgErrorAddUpdateKb": "Не вдалося додати або відредагувати базу знань", "noContent": "немає вмісту", "titleUrls": "Імпортувати з URL-адрес", - "helpUrls": "Вставте веб-сторінки з загальнодоступних URL-адрес у текстову область нижче, розділивши їх символом повернення", + "helpUrls": "Вставте веб-сторінки з загальнодоступних URL-адрес у текстову область нижче, розділивши їх символом повернення.", "titleTextareaUrls": "Список URL-адрес", "placeholderUrls": "Введіть URL-адреси", - "infoUrls": "Одна URL-адреса на рядок." + "infoUrls": "Одна URL-адреса на рядок.", + "NoKbAdded": "Джерел даних немає", + "NoKbAddedText": "Додайте джерело даних у свій помічник, щоб створити базу знань.", + "Add": "Додайте джерела даних", + "AddKbURL": "Кілька URL-адрес", + "AddKbText": "Простий текст", + "AddKbSitemap": "Карта сайту", + "LoadMore": "завантажити ще", + "Loading": "завантаження", + "YouCanAddKBUrlsLimit": "Ви можете додати максимум 300 URL-адрес" }, "AutomationsDemoPageDescription":"Завдяки нашій «автоматизації API» ви можете керувати масовими широкомовними повідомленнями в Whatsapp за допомогою автоматизації дизайнера в поєднанні з простотою наших API, надсилати повідомлення всім контактам вашої улюбленої CRM, отримувати статус надісланих повідомлень (отримано, прочитано тощо). ) і багато іншого!", "Sunday": "неділя", diff --git a/src/assets/i18n/uz.json b/src/assets/i18n/uz.json index 45a0ea26b383..e89b485a813b 100644 --- a/src/assets/i18n/uz.json +++ b/src/assets/i18n/uz.json @@ -1575,14 +1575,10 @@ }, "KbPage": { "Secrets": "Sirlar", - "Add": "Qo'shish", "Enter": "Kirish", - "NoKbAdded": "Siz hali biror maʼlumot bazasini qoʻshmagansiz", "RunIndexing": "Indekslashni ishga tushiring", "CreationDate": "Yaratilgan sana", "KbCounterFooter": "{{ counter }} 3 ta bilim bazasi qo'shildi", - "AddKbURL": "Sahifa URL manzilini qo'shing", - "AddKbText": "Matn faylini qo'shish", "KbCounterFooter1": "Added {{counter}} Knowledge Bases", "KbCounterFooter2": "of {{allowed_kb_num}} available for {{plan_name}}", "KBLimitReached": "{{plan_name}} uchun maʼlumotlar bazasi chegarasiga yetdi", @@ -1644,10 +1640,19 @@ "msgErrorAddUpdateKb": "Bilimlar bazasini qo‘shib bo‘lmadi yoki tahrirlab bo‘lmadi", "noContent": "tarkib yo'q", "titleUrls": "URL manzillaridan import qilish", - "helpUrls": "Veb-sahifalarni umumiy URL manzillaridan qaytish bilan ajratilgan holda quyidagi matn maydoniga kiriting", + "helpUrls": "Veb-sahifalarni umumiy URL manzillaridan qaytish bilan ajratilgan holda quyidagi matn maydoniga kiriting.", "titleTextareaUrls": "URL manzillar ro'yxati", "placeholderUrls": "URL manzillarini kiriting", - "infoUrls": "Har bir satr uchun bitta url." + "infoUrls": "Har bir satr uchun bitta url.", + "NoKbAdded": "Hech qanday ma'lumot manbalari mavjud emas", + "NoKbAddedText": "Bilimlar bazasini yaratish uchun yordamchingizga maʼlumotlar manbasini qoʻshing.", + "Add": "Ma'lumotlar manbalarini qo'shing", + "AddKbURL": "Bir nechta URL manzillar", + "AddKbText": "Oddiy matn", + "AddKbSitemap": "Sayt xaritasi", + "LoadMore": "ko'proq yuklang", + "Loading": "yuklash", + "YouCanAddKBUrlsLimit": "Siz maksimal 300 ta URL qo'shishingiz mumkin" }, "AutomationsDemoPageDescription":"Bizning “API avtomatizatsiyamiz” yordamida siz Whatsapp-da ommaviy translyatsiya xabarlarini bizning API-larimiz qulayligi bilan birlashtirilgan dizayner avtomatizatsiyasidan foydalangan holda boshqarishingiz, sevimli CRM-ning barcha kontaktlariga xabarlar yuborishingiz, yuborilgan xabarlar holatini (qabul qilingan, o'qilgan va hokazo) olishingiz mumkin. ) va yana ko'p narsalar!", "Sunday": "yakshanba", From 6980bb4cac03dce6a79b7f4e23ede8dd377cc3a1 Mon Sep 17 00:00:00 2001 From: Dario De Pascalis Date: Tue, 5 Mar 2024 12:04:28 +0100 Subject: [PATCH 17/35] site-map integration step 1 --- .../add-content-menu.component.ts | 6 + .../knowledge-base-table.component.ts | 2 +- .../modal-site-map.component.html | 132 ++++++++++++++---- .../modal-site-map.component.ts | 63 ++------- 4 files changed, 117 insertions(+), 86 deletions(-) diff --git a/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts b/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts index 57ae114b4f7d..ca57c8445f63 100644 --- a/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts +++ b/src/app/knowledge-bases/menu/add-content-menu/add-content-menu.component.ts @@ -38,6 +38,12 @@ export class AddContentMenuComponent implements OnInit { this.items.push(item); }); + // this.translate.get('KbPage.AddKbSitemap') + // .subscribe((text: any) => { + // let item = {"label": text, "type":"site-map"}; + // this.items.push(item); + // }); + //this.items = [{"label": "Single URL", "type":"url-page"},{"label": "URL(s)", "type":"urls"}, {"label": "Plain Text", "type":"text-file"}]; diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts index 9a034cc014ee..ced16d248d2e 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts @@ -200,7 +200,7 @@ export class KnowledgeBaseTableComponent implements OnInit { } onOpenAddKnowledgeBaseModal(type){ - // console.log('onOpenAddKnowledgeBaseModal', type); + console.log('onOpenAddKnowledgeBaseModal', type); this.openAddKnowledgeBaseModal.emit(type); } diff --git a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html index 14ec332e2ebe..a5a2b32cd8bd 100644 --- a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html +++ b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.html @@ -1,38 +1,110 @@ +
@@ -116,11 +139,16 @@
- - schedule + + + done + done_all + cached + done_all + error @@ -160,9 +188,9 @@
-
{{'KbPage.Loading' | translate}}
-
{{'KbPage.LoadMore' | translate}}
+
{{'KbPage.Loading' | translate}}
+
{{'KbPage.LoadMore' | translate}}
\ No newline at end of file diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss index 4a09f4b79818..011ce9215d0f 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.scss @@ -22,6 +22,27 @@ select.select-status { } } +.preview-count { + display: flex; + width: calc(100% - 23px); + justify-content: space-between; + align-items: center; + padding: 8px 20px; + border-radius: 8px; + margin: 10px 16px 10px 10px; + box-shadow: 0px 0px 4px #c7c7c7; + + .preview-count-left { + display: flex; + align-items: baseline; + } +} + +.contents-count { + color: #8d8d8d; + margin-left: 16px; +} + .custom-input { background-color:#fff; color:#333333; @@ -48,6 +69,7 @@ table { margin: 0; font-size: 11px; line-height: 11px; + color: #b2b2b2; } .mat-elevation-z8{ @@ -99,14 +121,20 @@ th.mat-header-cell:last-of-type, td.mat-cell:last-of-type, td.mat-footer-cell:la padding-right: 0px; } +// .material-icons-outlined { +// color: #647491; +// } .material-icons-outlined { - color: #647491; + color: #adadad; } .material-icons-outlined.status-error{ color: #e50b0b; } +// .material-icons-outlined.status-done { +// color: green; +// } .material-icons-outlined.status-done { - color: green; + color: #00a8ff; } .material-icons-outlined.status-void{ color: gray; @@ -212,7 +240,7 @@ td { display: flex; flex-direction: row; justify-content: flex-end; - margin-bottom: -40px; + // margin-bottom: -40px; } @@ -279,6 +307,7 @@ td { .card { border: none!important; + padding: 0px 15px 20px; } .btn { diff --git a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts index 7ddc14b9426e..ffda89167135 100644 --- a/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts +++ b/src/app/knowledge-bases/modals/knowledge-base-table/knowledge-base-table.component.ts @@ -142,15 +142,14 @@ export class KnowledgeBaseTableComponent implements OnInit { } onLoadByFilter(filterValue: string, column: string) { - let status = ''; - let search = ''; + // let status = ''; + // let search = ''; if( column == 'type'){ - status = filterValue; + this.searchParams.status = filterValue; } else if(column == 'name'){ - search = filterValue; + this.searchParams.search = filterValue; } - this.searchParams.status = status; - this.searchParams.search = search; + console.log("this.searchParams ", this.searchParams); if (this.timeoutId) { clearTimeout(this.timeoutId); } diff --git a/src/app/services/openai.service.ts b/src/app/services/openai.service.ts index a93019a40040..7c943954450d 100644 --- a/src/app/services/openai.service.ts +++ b/src/app/services/openai.service.ts @@ -152,7 +152,7 @@ export class OpenaiService { } //const url = this.GPT_API_URL + "/scrape/status"; //const url = this.SERVER_BASE_PATH + this.project_id + "/kbsettings/checkstatus"; - const url = this.SERVER_BASE_PATH + this.project_id + "/kb/scrape/status"; + const url = this.SERVER_BASE_PATH + this.project_id + "/kb/scrape/status?returnObject=true"; this.logger.debug('[OPENAI.SERVICE] - check scraping URL: ', url); return this.httpClient.post(url, JSON.stringify(data), httpOptions); } diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index c6ce7a3f980a..cf4dfee244f4 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "انتبه، الحد الأقصى لعدد الأحرف المسموح به لكل محتوى نصي هو 32768.", "StatusAll": "الجميع", "StatusNotStarted": "لم يبدأ", + "StatusQueued": "في قائمة الانتظار", "StatusStarted": "بدأت", "StatusFinished": "انتهى", "StatusError": "خطأ", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index 130457fb210c..646a7d043548 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Diqqət, hər mətn məzmunu üçün icazə verilən simvolların maksimum sayı 32768-dir.", "StatusAll": "Hamısı", "StatusNotStarted": "Başlanmayıb", + "StatusQueued": "Növbədə", "StatusStarted": "başladı", "StatusFinished": "Bitdi", "StatusError": "Xəta", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 83f04719949d..eac72d9803da 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Achtung, die maximal zulässige Zeichenanzahl für jeden Textinhalt beträgt 32768.", "StatusAll": "Alle", "StatusNotStarted": "Nicht angefangen", + "StatusQueued": "In Warteschlange", "StatusStarted": "Gestartet", "StatusFinished": "Fertig", "StatusError": "Fehler", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 85a83130d306..b0138e70dbe1 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Attention, the maximum number of characters allowed for each text content is 32768", "StatusAll": "All", "StatusNotStarted": "Not started", + "StatusQueued": "Queued", "StatusStarted": "Started", "StatusFinished": "Finished", "StatusError": "Error", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 222232da2e29..26411311b5eb 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Atención, el número máximo de caracteres permitidos para cada contenido de texto es 32768.", "StatusAll": "Todo", "StatusNotStarted": "No empezado", + "StatusQueued": "Puesto en cola", "StatusStarted": "Comenzó", "StatusFinished": "Finalizado", "StatusError": "Error", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index fbfb8a51f632..b3eb0c51a8c9 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Attention, le nombre maximum de caractères autorisés pour chaque contenu textuel est de 32768.", "StatusAll": "Tous", "StatusNotStarted": "Pas commencé", + "StatusQueued": "En file d'attente", "StatusStarted": "Commencé", "StatusFinished": "Fini", "StatusError": "Erreur", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 31163c804c93..999508eafc30 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Attenzione, il numero massimo di caratteri consentiti per ciascun contenuto testuale è 32768.", "StatusAll": "Tutto", "StatusNotStarted": "Non iniziato", + "StatusQueued": "In coda", "StatusStarted": "Iniziato", "StatusFinished": "Finito", "StatusError": "Errore", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index a9ef4c362fa1..87132b7f3f07 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Назар аударыңыз, әрбір мәтін мазмұны үшін рұқсат етілген таңбалардың ең көп саны 32768.", "StatusAll": "Барлық", "StatusNotStarted": "Басталған жоқ", + "StatusQueued": "Кезекте", "StatusStarted": "Басталды", "StatusFinished": "Аяқталды", "StatusError": "Қате", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 8be3dc47e1a3..84e786ecd322 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Atenção, o número máximo de caracteres permitidos para cada conteúdo de texto é 32768.", "StatusAll": "Todos", "StatusNotStarted": "Não foi iniciado", + "StatusQueued": "Enfileiradas", "StatusStarted": "Iniciado", "StatusFinished": "Finalizado", "StatusError": "Erro", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 7d02a44b8f64..50e6da216200 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Внимание, максимальное количество символов, разрешенное для каждого текстового содержимого, составляет 32768.", "StatusAll": "Все", "StatusNotStarted": "Не начался", + "StatusQueued": "В очереди", "StatusStarted": "Начал", "StatusFinished": "Законченный", "StatusError": "Ошибка", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index d7281b79ea06..a0b4386dc7ed 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Пажња, максимални дозвољени број знакова за сваки текстуални садржај је 32768.", "StatusAll": "Све", "StatusNotStarted": "Није почео", + "StatusQueued": "У реду чекања", "StatusStarted": "Почело", "StatusFinished": "Готов", "StatusError": "Грешка", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index c3f9bd27209c..70e1d4ca2fd7 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Observera, det maximala antalet tillåtna tecken för varje textinnehåll är 32768.", "StatusAll": "Allt", "StatusNotStarted": "Ej påbörjad", + "StatusQueued": "I kö", "StatusStarted": "Satte igång", "StatusFinished": "Färdiga", "StatusError": "Fel", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index 2250cd740533..d7e802434897 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Dikkat, her metin içeriği için izin verilen maksimum karakter sayısı 32768'dir.", "StatusAll": "Tüm", "StatusNotStarted": "Başlatılmadı", + "StatusQueued": "Sıraya alındı", "StatusStarted": "Başlatıldı", "StatusFinished": "Bitti", "StatusError": "Hata", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index ab315d81ac23..19ab076d5cf9 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -1630,6 +1630,7 @@ "AddKbInfoTextContentMsg1": "Увага, максимальна кількість символів, дозволена для кожного текстового вмісту, становить 32768.", "StatusAll": "все", "StatusNotStarted": "Не розпочато", + "StatusQueued": "У черзі", "StatusStarted": "розпочато", "StatusFinished": "Готово", "StatusError": "Помилка", diff --git a/src/assets/i18n/uz.json b/src/assets/i18n/uz.json index 9f53e682cb8f..3f7ba260632f 100644 --- a/src/assets/i18n/uz.json +++ b/src/assets/i18n/uz.json @@ -1629,6 +1629,7 @@ "AddKbInfoTextContentMsg1": "Diqqat, har bir matn mazmuni uchun ruxsat etilgan belgilarning maksimal soni 32768 ni tashkil qiladi.", "StatusAll": "Hammasi", "StatusNotStarted": "Boshlanmagan", + "StatusQueued": "Navbatda", "StatusStarted": "Boshlandi", "StatusFinished": "Tugallandi", "StatusError": "Xato", diff --git a/src/environments/environment.ts b/src/environments/environment.ts index e925cd501405..75bdec522636 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,36 +1,83 @@ + +// export const environment = { +// production: true, +// t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', +// VERSION: require('../../package.json').version, +// widgetUrl: 'https://widget.tiledesk.com/v3/launch.js', +// botcredendialsURL:'CHANGEIT', +// remoteConfig: true, +// SERVER_BASE_URL:'https://tiledesk-server-pre.herokuapp.com/', +// CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat/', +// testsiteBaseUrl: 'https://widget-pre.tiledesk.com/v2/assets/test_widget_page/index.html', +// wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', +// chatEngine: 'mqtt', +// firebaseAuth: false, +// uploadEngine: 'native', +// baseImageUrl: 'CHANGEIT', +// pushEngine: 'none', +// logLevel: 'Info', +// templatesUrl: 'CHANGEIT', +// appsUrl: 'CHANGEIT', +// promoBannerUrl: 'CHANGEIT', +// chatStoragePrefix: "CHANGEIT", +// firebase: { +// apiKey: 'CHANGEIT', +// authDomain: 'CHANGEIT', +// databaseURL: 'CHANGEIT', +// projectId: 'CHANGEIT', +// storageBucket: 'CHANGEIT', +// messagingSenderId: 'CHANGEIT', +// appId: 'CHANGEIT', +// vapidKey: 'CHANGEIT' +// } +// }; + export const environment = { production: false, - remoteConfig: true, - remoteConfigUrl: './dashboard-config.json', + remoteConfig: false, + t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-IPS:T-ETK:T-RAS:T-PPB:T-PET:T-MTS:T-TIL:T-DGF:T-NAT:T-HPB:F-TOW:T-KNB:T-BAN:T-AST:T-MON:T-CNT:T-AUT:T-WUN:T-INT:T-DPA:T', VERSION: require('../../package.json').version, - t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', - botcredendialsURL: 'CHANGEIT', - WIDGET_BASE_URL: 'http://localhost:4200/', - SERVER_BASE_URL: 'http://localhost:3000/', - CHAT_BASE_URL: 'http://localhost:8080/', - wsUrl: 'ws://localhost:3000/', - chatEngine: 'mqtt', + botcredendialsURL: 'https://tiledesk-df-connector-pre.herokuapp.com/botcredendials/', //'https://dialogflow-proxy-tiledesk.herokuapp.com/botcredendials/', + rasaBotCredentialsURL: "https://tiledesk-server-pre.herokuapp.com/modules/rasa/botcredendials/", // "https://tiledesk-rasa-connector-pre.herokuapp.com/botcredendials/", + WIDGET_BASE_URL: 'https://widget-pre.tiledesk.com/v5/', + SERVER_BASE_URL: 'https://tiledesk-server-pre.herokuapp.com/', + CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat-ionic5/', // '/chat-ionic5/', //'https://support-pre.tiledesk.com/chat-ionic5/' // https://support-pre.tiledesk.com/chat-ionic5-notifcation-item// + wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', + reCaptchaSiteKey:"6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5", + globalRemoteJSSrc: "https://support-pre.tiledesk.com/script/custom_script.js, https://support-pre.tiledesk.com/script/dnpc.js", //https://www.google.com/recaptcha/api.js?render=6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5, firebaseAuth: false, - uploadEngine: 'native', - baseImageUrl: 'CHANGEIT', - pushEngine: 'none', - logLevel: 'Info', - communityTemplatesUrl: 'CHANGEIT', - templatesUrl: 'CHANGEIT', - appsUrl: 'CHANGEIT', - cdsBaseUrl: 'CHANGEIT', - promoBannerUrl: 'CHANGEIT', - whatsappApiUrl: "CHANGEIT", - ticketingEmail: "CHANGEIT", - tiledeskPhoneNumber: "CHANGEIT", + uploadEngine: 'firebase', + baseImageUrl: 'https://tiledesk-server-pre.herokuapp.com/', + pushEngine: 'firebase', + chatEngine: 'firebase', + logLevel: 'info', + communityTemplatesUrl: 'https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/community', + templatesUrl: "https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/templates", // "https://chatbot-templates.herokuapp.com/chatbots/public/templates/", + appsUrl: "https://cd3ff4b5-5a06-44e3-aff2-3ce2ff1b848b-00-3eppvhwsi6nym.janeway.replit.dev/", // "https://tiledesk-apps-server.giovannitroisi3.repl.co/",// "https://tiledesk-apps.herokuapp.com/", + cdsBaseUrl: '/cds/', + whatsappApiUrl: "https://tiledesk-whatsapp-connector-dev.glitch.me/", //"https://tiledesk-whatsapp-connector-c4ce07638b45.herokuapp.com/", //"https://tiledesk-whatsapp-connector.giovannitroisi3.repl.co/", // "https://tiledesk-whatsapp-app-pre.giovannitroisi3.repl.co", + // promoBannerUrl: "https://dashbordpromobanner.nicolan74.repl.co/get/dashboard_promo.json", + chatStoragePrefix: "chat_sv5", + tiledeskPhoneNumber: "393201352964", + ticketingEmail: "tickets.tiledesk.com", firebase: { - apiKey: 'CHANGEIT', - authDomain: 'CHANGEIT', - databaseURL: 'CHANGEIT', - projectId: 'CHANGEIT', - storageBucket: 'CHANGEIT', - messagingSenderId: 'CHANGEIT', - appId: 'CHANGEIT', - vapidKey: 'CHANGEIT' - } -}; \ No newline at end of file + apiKey: "AIzaSyCoWXHNvP1-qOllCpTshhC6VjPXeRTK0T4", + authDomain: "chat21-pre-01.firebaseapp.com", + databaseURL: "https://chat21-pre-01.firebaseio.com", + projectId: "chat21-pre-01", + storageBucket: "chat21-pre-01.appspot.com", + messagingSenderId: "269505353043", + appId: "1:269505353043:web:b82af070572669e3707da6", + vapidKey: "BOsgS2ADwspKdWAmiFDZXEYqY1HSYADVfJT3j67wsySh3NxaViJqoabPJH8WM02wb5r8cQIm5TgM0UK047Z1D1c" + }, +}; + + + + + + + + + + From d897ce197a6ab2b24354d800a00ee681d1164d96 Mon Sep 17 00:00:00 2001 From: Giovanni Troisi Date: Tue, 12 Mar 2024 18:45:15 +0100 Subject: [PATCH 29/35] restore environment --- src/environments/environment.ts | 109 +++++++++----------------------- 1 file changed, 31 insertions(+), 78 deletions(-) diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 75bdec522636..e925cd501405 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,83 +1,36 @@ - -// export const environment = { -// production: true, -// t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', -// VERSION: require('../../package.json').version, -// widgetUrl: 'https://widget.tiledesk.com/v3/launch.js', -// botcredendialsURL:'CHANGEIT', -// remoteConfig: true, -// SERVER_BASE_URL:'https://tiledesk-server-pre.herokuapp.com/', -// CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat/', -// testsiteBaseUrl: 'https://widget-pre.tiledesk.com/v2/assets/test_widget_page/index.html', -// wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', -// chatEngine: 'mqtt', -// firebaseAuth: false, -// uploadEngine: 'native', -// baseImageUrl: 'CHANGEIT', -// pushEngine: 'none', -// logLevel: 'Info', -// templatesUrl: 'CHANGEIT', -// appsUrl: 'CHANGEIT', -// promoBannerUrl: 'CHANGEIT', -// chatStoragePrefix: "CHANGEIT", -// firebase: { -// apiKey: 'CHANGEIT', -// authDomain: 'CHANGEIT', -// databaseURL: 'CHANGEIT', -// projectId: 'CHANGEIT', -// storageBucket: 'CHANGEIT', -// messagingSenderId: 'CHANGEIT', -// appId: 'CHANGEIT', -// vapidKey: 'CHANGEIT' -// } -// }; - export const environment = { production: false, - remoteConfig: false, - t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-IPS:T-ETK:T-RAS:T-PPB:T-PET:T-MTS:T-TIL:T-DGF:T-NAT:T-HPB:F-TOW:T-KNB:T-BAN:T-AST:T-MON:T-CNT:T-AUT:T-WUN:T-INT:T-DPA:T', + remoteConfig: true, + remoteConfigUrl: './dashboard-config.json', VERSION: require('../../package.json').version, - botcredendialsURL: 'https://tiledesk-df-connector-pre.herokuapp.com/botcredendials/', //'https://dialogflow-proxy-tiledesk.herokuapp.com/botcredendials/', - rasaBotCredentialsURL: "https://tiledesk-server-pre.herokuapp.com/modules/rasa/botcredendials/", // "https://tiledesk-rasa-connector-pre.herokuapp.com/botcredendials/", - WIDGET_BASE_URL: 'https://widget-pre.tiledesk.com/v5/', - SERVER_BASE_URL: 'https://tiledesk-server-pre.herokuapp.com/', - CHAT_BASE_URL: 'https://support-pre.tiledesk.com/chat-ionic5/', // '/chat-ionic5/', //'https://support-pre.tiledesk.com/chat-ionic5/' // https://support-pre.tiledesk.com/chat-ionic5-notifcation-item// - wsUrl: 'wss://tiledesk-server-pre.herokuapp.com/', - reCaptchaSiteKey:"6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5", - globalRemoteJSSrc: "https://support-pre.tiledesk.com/script/custom_script.js, https://support-pre.tiledesk.com/script/dnpc.js", //https://www.google.com/recaptcha/api.js?render=6Lf1khcpAAAAABMNHJfnJm43vVTxFzXM7ADqDAp5, + t2y12PruGU9wUtEGzBJfolMIgK: 'PAY:T-ANA:T-ACT:T-TRI:T-GRO:T-DEP:T-OPH:T-MTL:T-DGF:T-NAT:T-CAR:T-V1L:T-PSA:T-MTT:T-SUP:T-LBS:T-APP:T-DEV:T-NOT:T-RAS:T', + botcredendialsURL: 'CHANGEIT', + WIDGET_BASE_URL: 'http://localhost:4200/', + SERVER_BASE_URL: 'http://localhost:3000/', + CHAT_BASE_URL: 'http://localhost:8080/', + wsUrl: 'ws://localhost:3000/', + chatEngine: 'mqtt', firebaseAuth: false, - uploadEngine: 'firebase', - baseImageUrl: 'https://tiledesk-server-pre.herokuapp.com/', - pushEngine: 'firebase', - chatEngine: 'firebase', - logLevel: 'info', - communityTemplatesUrl: 'https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/community', - templatesUrl: "https://chatbot-templates-v2-pre.herokuapp.com/chatbots/public/templates", // "https://chatbot-templates.herokuapp.com/chatbots/public/templates/", - appsUrl: "https://cd3ff4b5-5a06-44e3-aff2-3ce2ff1b848b-00-3eppvhwsi6nym.janeway.replit.dev/", // "https://tiledesk-apps-server.giovannitroisi3.repl.co/",// "https://tiledesk-apps.herokuapp.com/", - cdsBaseUrl: '/cds/', - whatsappApiUrl: "https://tiledesk-whatsapp-connector-dev.glitch.me/", //"https://tiledesk-whatsapp-connector-c4ce07638b45.herokuapp.com/", //"https://tiledesk-whatsapp-connector.giovannitroisi3.repl.co/", // "https://tiledesk-whatsapp-app-pre.giovannitroisi3.repl.co", - // promoBannerUrl: "https://dashbordpromobanner.nicolan74.repl.co/get/dashboard_promo.json", - chatStoragePrefix: "chat_sv5", - tiledeskPhoneNumber: "393201352964", - ticketingEmail: "tickets.tiledesk.com", + uploadEngine: 'native', + baseImageUrl: 'CHANGEIT', + pushEngine: 'none', + logLevel: 'Info', + communityTemplatesUrl: 'CHANGEIT', + templatesUrl: 'CHANGEIT', + appsUrl: 'CHANGEIT', + cdsBaseUrl: 'CHANGEIT', + promoBannerUrl: 'CHANGEIT', + whatsappApiUrl: "CHANGEIT", + ticketingEmail: "CHANGEIT", + tiledeskPhoneNumber: "CHANGEIT", firebase: { - apiKey: "AIzaSyCoWXHNvP1-qOllCpTshhC6VjPXeRTK0T4", - authDomain: "chat21-pre-01.firebaseapp.com", - databaseURL: "https://chat21-pre-01.firebaseio.com", - projectId: "chat21-pre-01", - storageBucket: "chat21-pre-01.appspot.com", - messagingSenderId: "269505353043", - appId: "1:269505353043:web:b82af070572669e3707da6", - vapidKey: "BOsgS2ADwspKdWAmiFDZXEYqY1HSYADVfJT3j67wsySh3NxaViJqoabPJH8WM02wb5r8cQIm5TgM0UK047Z1D1c" - }, -}; - - - - - - - - - - + apiKey: 'CHANGEIT', + authDomain: 'CHANGEIT', + databaseURL: 'CHANGEIT', + projectId: 'CHANGEIT', + storageBucket: 'CHANGEIT', + messagingSenderId: 'CHANGEIT', + appId: 'CHANGEIT', + vapidKey: 'CHANGEIT' + } +}; \ No newline at end of file From 744dcb4f36f5a48ace0879f99f9bf45a5c3b2274 Mon Sep 17 00:00:00 2001 From: Nicola Lanzilotto Date: Wed, 13 Mar 2024 13:46:54 +0100 Subject: [PATCH 30/35] Updates version --- CHANGELOG.md | 6 ++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 918b064a94cc..fa4fc04d133f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # tiledesk-dashboard +### 2.6.0 +- Deploys in production +- Improves Knowledge Bases +- Adds the ability to create Knowledge Bases by adding a sitemap +- Adds the customer.io integration + ### 2.5.20 - Deploys in production - Refactors the teammates table diff --git a/package-lock.json b/package-lock.json index 8a380e7b2c9a..21eec17cbc81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@tiledesk/tiledesk-dashboard", - "version": "2.5.20", + "version": "2.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bd9e86bdad82..f398a84cd5bf 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tiledesk/tiledesk-dashboard", - "version": "2.5.20", + "version": "2.6.0", "scripts": { "ng": "ng", "start": "ng serve --aot", From dcca945449d46d1d319849dad271ea1bbd7f2a56 Mon Sep 17 00:00:00 2001 From: Nicola Lanzilotto Date: Wed, 13 Mar 2024 19:07:19 +0100 Subject: [PATCH 31/35] Improves chatbot images --- src/assets/css/cards-table.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/assets/css/cards-table.scss b/src/assets/css/cards-table.scss index 971266de6ab8..463387e9d1c4 100755 --- a/src/assets/css/cards-table.scss +++ b/src/assets/css/cards-table.scss @@ -125,6 +125,13 @@ // border: 1px solid #eee; } +.cl-card-img-wpr >img { + vertical-align: middle; + width: 64px; + height: 64px; + object-fit: cover; +} + .cl-card-img-wpr>.photo-profile-container>.avatar-no-profile-photo { vertical-align: middle; width: 64px; From b6649341839ce455bda731ebac2c7ac8c7815903 Mon Sep 17 00:00:00 2001 From: Nicola Lanzilotto Date: Fri, 15 Mar 2024 11:14:21 +0100 Subject: [PATCH 32/35] Fixes the bug: app cards are not all the same height --- CHANGELOG.md | 2 ++ src/assets/css/demo.scss | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa4fc04d133f..433758cf4b7b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,12 @@ # tiledesk-dashboard + ### 2.6.0 - Deploys in production - Improves Knowledge Bases - Adds the ability to create Knowledge Bases by adding a sitemap - Adds the customer.io integration +- Fixes the bug: app cards are not all the same height ### 2.5.20 - Deploys in production diff --git a/src/assets/css/demo.scss b/src/assets/css/demo.scss index 54ed21525352..729f2d17b7de 100755 --- a/src/assets/css/demo.scss +++ b/src/assets/css/demo.scss @@ -1763,9 +1763,9 @@ appdashboard-app-store>div>div>div>div>div>div.card-content>div.available-from-b margin-top: -25px; } -appdashboard-app-store>div>div>div>div>div>div.card-content>.app-store-card-no-badge { - height: 48px !important; -} +// appdashboard-app-store>div>div>div>div>div>div.card-content>.app-store-card-no-badge { +// height: 48px !important; +// } appdashboard-app-store>div>div>div>div>.card-app-store { height: 269px; From c3ad2857149ee510b9cf5a4fcfadc6df59f3a554 Mon Sep 17 00:00:00 2001 From: Nicola Lanzilotto Date: Fri, 15 Mar 2024 15:04:54 +0100 Subject: [PATCH 33/35] App store minor improvements --- src/app/app-store/app-store.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/app-store/app-store.component.html b/src/app/app-store/app-store.component.html index f2533823b3ce..d1ce91e2f514 100644 --- a/src/app/app-store/app-store.component.html +++ b/src/app/app-store/app-store.component.html @@ -520,7 +520,7 @@

-
+
External
From d3d70d957d552faaa0e9c17369c5e80a5c3f08d9 Mon Sep 17 00:00:00 2001 From: Nicola Lanzilotto Date: Mon, 18 Mar 2024 15:50:17 +0100 Subject: [PATCH 34/35] Adds the ability to sort chatbot by name --- CHANGELOG.md | 4 ++++ .../bots/bots-list/bots-list.component.html | 6 +++++ src/app/bots/bots-list/bots-list.component.ts | 22 ++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 433758cf4b7b..f5daf2f11998 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ - Adds the customer.io integration - Fixes the bug: app cards are not all the same height +### 2.5.21 +- Deploys in production +- Adds the ability to sort chatbot by name + ### 2.5.20 - Deploys in production - Refactors the teammates table diff --git a/src/app/bots/bots-list/bots-list.component.html b/src/app/bots/bots-list/bots-list.component.html index cdb244087d50..142275a6bee9 100755 --- a/src/app/bots/bots-list/bots-list.component.html +++ b/src/app/bots/bots-list/bots-list.component.html @@ -76,6 +76,7 @@ Last updates Creation date + Name @@ -90,6 +91,11 @@ Creation date +
  • + + Name + +
  • diff --git a/src/app/bots/bots-list/bots-list.component.ts b/src/app/bots/bots-list/bots-list.component.ts index f8d879a96af6..baf619506570 100755 --- a/src/app/bots/bots-list/bots-list.component.ts +++ b/src/app/bots/bots-list/bots-list.component.ts @@ -134,6 +134,7 @@ export class BotListComponent extends PricingBaseComponent implements OnInit, On orderBylastUpdated: boolean = true; orderByCreationDate: boolean = false; + orderByChatbotName: boolean = false; pageName: string; // editBotName: boolean = false; @@ -536,12 +537,18 @@ export class BotListComponent extends PricingBaseComponent implements OnInit, On if (sortfor === 'lastUpdates') { this.orderBylastUpdated = true; this.orderByCreationDate = false; + this.orderByChatbotName = false; this.getFaqKbByProjectId() } else if (sortfor === 'creationDate') { this.orderBylastUpdated = false; this.orderByCreationDate = true; + this.orderByChatbotName = false; + this.getFaqKbByProjectId() + } else if (sortfor === 'botname') { + this.orderBylastUpdated = false; + this.orderByCreationDate = false; + this.orderByChatbotName = true; this.getFaqKbByProjectId() - } } @@ -587,6 +594,19 @@ export class BotListComponent extends PricingBaseComponent implements OnInit, On }); } + if (this.orderByChatbotName) { + this.logger.log('[BOTS-LIST] - orderByChatbotName Here yes'); + this.faqkbList.sort(function compare(a: Chatbot, b: Chatbot) { + if (a['name'].toLowerCase() < b['name'].toLowerCase()) { + return -1; + } + if (a['name'].toLowerCase() > b['name'].toLowerCase()) { + return 1; + } + return 0; + }); + } + this.faqkbList.forEach(bot => { this.logger.log('[BOTS-LIST] getFaqKbByProjectId bot ', bot) if (bot && bot.url) { From 968670d2111bb0bc4a719ac030bc2ea606a99c4f Mon Sep 17 00:00:00 2001 From: Giovanni Troisi Date: Wed, 20 Mar 2024 13:02:59 +0100 Subject: [PATCH 35/35] replaced error modals with swal deleted form control from sitemap urls updated translations --- .../knowledge-bases.component.scss | 7 +- .../knowledge-bases.component.ts | 203 ++++++++++++++++-- .../modal-site-map.component.ts | 3 +- src/assets/css/demo.scss | 9 + src/assets/i18n/ar.json | 1 + src/assets/i18n/az.json | 1 + src/assets/i18n/de.json | 1 + src/assets/i18n/en.json | 1 + src/assets/i18n/es.json | 1 + src/assets/i18n/fr.json | 1 + src/assets/i18n/it.json | 1 + src/assets/i18n/kk.json | 1 + src/assets/i18n/pt.json | 1 + src/assets/i18n/ru.json | 1 + src/assets/i18n/sr.json | 1 + src/assets/i18n/sv.json | 1 + src/assets/i18n/tr.json | 1 + src/assets/i18n/uk.json | 1 + src/assets/i18n/uz.json | 1 + 19 files changed, 222 insertions(+), 15 deletions(-) diff --git a/src/app/knowledge-bases/knowledge-bases.component.scss b/src/app/knowledge-bases/knowledge-bases.component.scss index bea8ccc5b6cd..7fbc028ecac3 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.scss +++ b/src/app/knowledge-bases/knowledge-bases.component.scss @@ -470,4 +470,9 @@ table { .btn { text-transform: none; -} \ No newline at end of file +} + +.title-class { + color: black; + font-weight: 500; +} \ No newline at end of file diff --git a/src/app/knowledge-bases/knowledge-bases.component.ts b/src/app/knowledge-bases/knowledge-bases.component.ts index d9407eac5f66..55181e0ea1ff 100644 --- a/src/app/knowledge-bases/knowledge-bases.component.ts +++ b/src/app/knowledge-bases/knowledge-bases.component.ts @@ -1,6 +1,6 @@ import { Component, OnDestroy, OnInit, isDevMode } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { AuthService } from 'app/core/auth.service'; import { NotifyService } from 'app/core/notify.service'; import { KB, KbSettings } from 'app/models/kbsettings-model'; @@ -15,6 +15,8 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { FaqKbService } from 'app/services/faq-kb.service'; import { KB_DEFAULT_PARAMS } from 'app/utils/util'; +import { AppConfigService } from 'app/services/app-config.service'; +const swal = require('sweetalert'); //import { Router } from '@angular/router'; @@ -77,7 +79,8 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { msgErrorIndexingKb: string; // = 'Indicizzazione non riuscita'; msgSuccesIndexingKb: string; // = 'Indicizzazione terminata con successo'; msgErrorAddUpdateKb: string; // = 'Non è stato possibile aggiungere o modificare il kb'; - + msgErrorAddUpdateKbLimit: string // = "Non è possibile superare il numero di risorse previste nel piano corrente"; + warningTitle: string; allTemplatesCount: number; allCommunityTemplatesCount: number; @@ -88,6 +91,8 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { increaseSalesBotsCount: number; listSitesOfSitemap: any = []; + payIsVisible: boolean = false; + private unsubscribe$: Subject = new Subject(); constructor( private auth: AuthService, @@ -96,11 +101,13 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { private openaiService: OpenaiService, private kbService: KnowledgeBaseService, private projectService: ProjectService, + private router: Router, public route: ActivatedRoute, //private router: Router, private notify: NotifyService, private translate: TranslateService, private faqKbService: FaqKbService, + public appConfigService: AppConfigService, ) { } ngOnInit(): void { @@ -120,6 +127,7 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.getTemplates(); this.getCommunityTemplates() this.getFaqKbByProjectId(); + this.getOSCODE(); } @@ -272,6 +280,27 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { } + getOSCODE() { + + let public_Key = this.appConfigService.getConfig().t2y12PruGU9wUtEGzBJfolMIgK; + + let keys = public_Key.split("-"); + + keys.forEach(key => { + if (key.includes("PAY")) { + let pay = key.split(":"); + // this.logger.log('PUBLIC-KEY (Navbar) - pay key&value', pay); + if (pay[1] === "F") { + this.payIsVisible = false; + console.log("payIsVisible: ", this.payIsVisible) + } else { + this.payIsVisible = true; + console.log("payIsVisible: ", this.payIsVisible) + } + } + }) + } + // loadKbSettings(){ @@ -299,6 +328,18 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.msgSuccesIndexingKb = KbPage['msgSuccesIndexingKb']; this.msgErrorAddUpdateKb = KbPage['msgErrorAddUpdateKb']; }); + + this.translate.get('Warning') + .subscribe((text: string) => { + // this.deleteContact_msg = text; + // this.logger.log('+ + + BotsPage translation: ', text) + this.warningTitle = text; + }); + } + + getTranslatedStringKbLimitReached(max_num) { + this.translate.get('KbPage.msgErrorAddUpdateKbLimit', { max_number: max_num }) + .subscribe((text: string) => { this.msgErrorAddUpdateKbLimit = text; }); } @@ -503,12 +544,34 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { let error = this.msgErrorAddUpdateKb; this.kbService.addSitemap(body).subscribe((resp: any) => { this.logger.log("onSendSitemap:", resp); - // let error = resp.error; - // let url = resp.url; - this.listSitesOfSitemap = resp.sites; + console.log("onSendSitemap:", resp); + if (resp.errors && resp.errors[0]) { + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + } else { + this.listSitesOfSitemap = resp.sites; + } + }, (err) => { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR send sitemap: ", err); - this.onOpenErrorModal(error); + + //this.onOpenErrorModal(error); + + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + }, () => { this.logger.log("[KNOWLEDGE-BASES-COMP] send sitemap *COMPLETED*"); }) @@ -556,7 +619,37 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { //that.onCloseBaseModal(); }, (err) => { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR add new kb: ", err); - this.onOpenErrorModal(error); + // this.onOpenErrorModal(error); + if (err.error && err.error.plan_limit) { + this.getTranslatedStringKbLimitReached(err.error.plan_limit); + error = this.msgErrorAddUpdateKbLimit + } + + if (this.payIsVisible === true) { + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: ["Cancel", "Upgrade Plan"], + dangerMode: false + }).then((willUpgradePlan: any) => { + + if (willUpgradePlan) { + this.router.navigate(['project/' + this.id_project + '/pricing']); + } + }) + } else { + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + } + }, () => { this.logger.log("[KNOWLEDGE-BASES-COMP] add new kb *COMPLETED*"); //this.trackUserActioOnKB('Added Knowledge Base', gptkey) @@ -589,7 +682,40 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.refreshKbsList = !this.refreshKbsList; }, (err) => { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR add new kb: ", err); - this.onOpenErrorModal(error); + + //this.onOpenErrorModal(error); + if (err.error && err.error.plan_limit) { + this.getTranslatedStringKbLimitReached(err.error.plan_limit); + error = this.msgErrorAddUpdateKbLimit + } + + if (this.payIsVisible === true) { + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: ["Cancel", "Upgrade Plan"], + dangerMode: false + }).then((willUpgradePlan: any) => { + + if (willUpgradePlan) { + this.router.navigate(['project/' + this.id_project + '/pricing']); + } + }) + } else { + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + } + + + }, () => { this.logger.log("[KNOWLEDGE-BASES-COMP] add new kb *COMPLETED*"); //this.trackUserActioOnKB('Added Knowledge Base', gptkey) @@ -613,7 +739,18 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { kb.deleting = false; if(!response || (response.success && response.success === false)){ // this.updateStatusOfKb(kb._id, 0); - this.onOpenErrorModal(error); + + // this.onOpenErrorModal(error); + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + + } else { this.notify.showWidgetStyleUpdateNotification(this.msgSuccesDeleteKb, 2, 'done'); // let error = response.error?response.error:"Errore generico"; @@ -633,7 +770,17 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.logger.error("[KNOWLEDGE-BASES-COMP] ERROR delete kb: ", err); kb.deleting = false; //this.kbid_selected.deleting = false; - this.onOpenErrorModal(error); + + // this.onOpenErrorModal(error); + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + }, () => { this.logger.log("[KNOWLEDGE-BASES-COMP] delete kb *COMPLETE*"); //this.trackUserActioOnKB('Deleted Knowledge Base', gptkey) @@ -666,7 +813,17 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { this.kbService.deleteKb(dataDelete).subscribe((response:any) => { kb.deleting = false; if(!response || (response.success && response.success === false)){ - this.onOpenErrorModal(error); + + // this.onOpenErrorModal(error); + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + } else { this.kbService.addKb(dataAdd).subscribe((resp: any) => { let kbNew = resp.value; @@ -694,7 +851,17 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { // }, 2000); }, (err) => { this.logger.error("[KNOWLEDGE BASES COMP] ERROR add new kb: ", err); - this.onOpenErrorModal(error); + + //this.onOpenErrorModal(error); + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + }, () => { this.logger.log("[KNOWLEDGE BASES COMP] add new kb *COMPLETED*"); }) @@ -702,7 +869,17 @@ export class KnowledgeBasesComponent implements OnInit, OnDestroy { }, (err) => { this.logger.error("[KNOWLEDGE BASES COMP] ERROR delete kb: ", err); kb.deleting = false; - this.onOpenErrorModal(error); + + // this.onOpenErrorModal(error); + swal({ + title: this.warningTitle, + text: error, + icon: "warning", + className: "custom-swal", + buttons: [null, "Cancel"], + dangerMode: false + }) + }, () => { this.logger.log("[KNOWLEDGE BASES COMP] delete kb *COMPLETE*"); kb.deleting = false; diff --git a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts index 759ab8d4d38c..6949f502e96c 100644 --- a/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts +++ b/src/app/knowledge-bases/modals/modal-site-map/modal-site-map.component.ts @@ -57,7 +57,8 @@ export class ModalSiteMapComponent implements OnInit { createConditionGroup(): FormGroup { const namePattern = /^[^&<>]{3,}$/; return this.formBuilder.group({ - url: ['', [Validators.required, Validators.pattern('(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?')]], + //url: ['', [Validators.required, Validators.pattern('(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?')]], + url: ['', [Validators.required]], // name: ['', [Validators.required, Validators.pattern(namePattern)]] }) } diff --git a/src/assets/css/demo.scss b/src/assets/css/demo.scss index ff88799e620f..b39010637217 100755 --- a/src/assets/css/demo.scss +++ b/src/assets/css/demo.scss @@ -999,6 +999,15 @@ my-app .main-panel .main-content .card { font-size: 18px; } +.custom-swal>.swal-title { + color: black; + font-weight: 500; +} + +.custom-swal>.swal-text { + text-align: center; +} + .swal-size-sm { width: 260px !important; background-color: var(--card-background-color); diff --git a/src/assets/i18n/ar.json b/src/assets/i18n/ar.json index cf4dfee244f4..f6df64a67375 100644 --- a/src/assets/i18n/ar.json +++ b/src/assets/i18n/ar.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "فشلت الفهرسة", "msgSuccesIndexingKb": "تم إطلاق إعادة التدريب على المحتوى بنجاح", "msgErrorAddUpdateKb": "لا يمكن إضافة قاعدة المعارف أو تحريرها", + "msgErrorAddUpdateKbLimit": "لا يمكن تجاوز عدد الموارد المسموح بها في خطتك", "noContent": "لا يوجد محتوى", "titleUrls": "الاستيراد من عناوين URL", "helpUrls": "قم بإدراج صفحات الويب من عناوين URL العامة في منطقة النص أدناه، مفصولة بإرجاع", diff --git a/src/assets/i18n/az.json b/src/assets/i18n/az.json index 646a7d043548..343ebdd3230d 100644 --- a/src/assets/i18n/az.json +++ b/src/assets/i18n/az.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "İndeksləmə uğursuz oldu", "msgSuccesIndexingKb": "Uğurla işə salınan məzmunu yenidən hazırlayın", "msgErrorAddUpdateKb": "Bilik Bazasını əlavə etmək və ya redaktə etmək mümkün olmadı", + "msgErrorAddUpdateKbLimit": "Planınızda icazə verilən resursların sayını aşmaq mümkün deyil", "noContent": "məzmun yoxdur", "titleUrls": "URL-lərdən idxal", "helpUrls": "İctimai URL-lərdən veb səhifələri geri dönüşlə ayrılaraq aşağıdakı mətn sahəsinə daxil edin.", diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index eac72d9803da..01617de6cbcf 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Die Indizierung ist fehlgeschlagen", "msgSuccesIndexingKb": "Neuschulung für erfolgreich eingeführte Inhalte", "msgErrorAddUpdateKb": "Die Wissensdatenbank konnte nicht hinzugefügt oder bearbeitet werden", + "msgErrorAddUpdateKbLimit": "Es ist nicht möglich, die in Ihrem Plan zulässige Anzahl an Ressourcen zu überschreiten", "noContent": "kein Inhalt", "titleUrls": "Von URLs importieren", "helpUrls": "Fügen Sie Webseiten von öffentlichen URLs in den Textbereich unten ein, getrennt durch einen Zeilenumbruch.", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index b0138e70dbe1..75c8641774c5 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Indexing failed", "msgSuccesIndexingKb": "Re-train on content launched successfully", "msgErrorAddUpdateKb": "The Knowledge Base could not be added or edited", + "msgErrorAddUpdateKbLimit": "It is not possible to exceed the number of {{ max_number}} resources allowed in your plan", "noContent": "no content", "titleUrls": "Import from URLs", "helpUrls": "Insert web pages from public URLs into the text area below, separated by a return.", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 26411311b5eb..1c110cf7a4e4 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Falló la indexación", "msgSuccesIndexingKb": "Vuelva a capacitarse sobre el contenido lanzado exitosamente", "msgErrorAddUpdateKb": "La base de conocimientos no se pudo agregar ni editar.", + "msgErrorAddUpdateKbLimit": "No es posible exceder la cantidad de {{ max_number}} recursos permitidos en su plan", "noContent": "sin contenido", "titleUrls": "Importar desde URL", "helpUrls": "Inserte páginas web desde URL públicas en el área de texto a continuación, separadas por un retorno.", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index b3eb0c51a8c9..29f75513bec6 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Échec de l'indexation", "msgSuccesIndexingKb": "Recycler sur le contenu lancé avec succès", "msgErrorAddUpdateKb": "La base de connaissances n'a pas pu être ajoutée ou modifiée", + "msgErrorAddUpdateKbLimit": "Il n'est pas possible de dépasser le nombre de ressources autorisées dans votre forfait", "noContent": "Pas de contenu", "titleUrls": "Importer à partir d'URL", "helpUrls": "Insérez des pages Web à partir d'URL publiques dans la zone de texte ci-dessous, séparées par un retour.", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 999508eafc30..4f6b1b9a58f0 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Indicizzazione non riuscita", "msgSuccesIndexingKb": "Riqualificazione sui contenuti avviata correttamente", "msgErrorAddUpdateKb": "Impossibile aggiungere o modificare la Knowledge Base", + "msgErrorAddUpdateKbLimit": "Non è possibile superare il numero di {{ max_number}} risorse previste dal tuo piano attuale", "noContent": "nessun contenuto", "titleUrls": "Importa da URL", "helpUrls": "Inserisci le pagine web dagli URL pubblici nell'area di testo sottostante, separate da un ritorno a capo.", diff --git a/src/assets/i18n/kk.json b/src/assets/i18n/kk.json index 87132b7f3f07..b85f59bf315d 100644 --- a/src/assets/i18n/kk.json +++ b/src/assets/i18n/kk.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Индекстеу сәтсіз аяқталды", "msgSuccesIndexingKb": "Сәтті іске қосылған мазмұнды қайта оқытыңыз", "msgErrorAddUpdateKb": "Білім қорын қосу немесе өңдеу мүмкін болмады", + "msgErrorAddUpdateKbLimit": "Жоспарыңызда рұқсат етілген ресурстардың санынан асып кету мүмкін емес", "noContent": "мазмұны жоқ", "titleUrls": "URL мекенжайларынан импорттау", "helpUrls": "Жалпы URL мекенжайларынан веб-беттерді қайтару арқылы бөлінген төмендегі мәтін аймағына кірістіріңіз.", diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json index 84e786ecd322..1951bb83d0bc 100644 --- a/src/assets/i18n/pt.json +++ b/src/assets/i18n/pt.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Falha na indexação", "msgSuccesIndexingKb": "Treine novamente no conteúdo lançado com sucesso", "msgErrorAddUpdateKb": "A base de conhecimento não pôde ser adicionada ou editada", + "msgErrorAddUpdateKbLimit": "Não é possível ultrapassar o número de recursos permitidos no seu plano", "noContent": "sem conteúdo", "titleUrls": "Importar de URLs", "helpUrls": "Insira páginas da web de URLs públicos na área de texto abaixo, separadas por um retorno.", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 50e6da216200..4f5da4e5cd1f 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Индексирование не удалось", "msgSuccesIndexingKb": "Повторное обучение успешно запущенному контенту", "msgErrorAddUpdateKb": "Базу знаний не удалось добавить или отредактировать.", + "msgErrorAddUpdateKbLimit": "Невозможно превысить количество ресурсов, разрешенное в вашем плане.", "noContent": "без содержания", "titleUrls": "Импорт из URL-адресов", "helpUrls": "Вставьте веб-страницы с общедоступных URL-адресов в текстовую область ниже, разделив их возвратом.", diff --git a/src/assets/i18n/sr.json b/src/assets/i18n/sr.json index a0b4386dc7ed..be3078a40929 100644 --- a/src/assets/i18n/sr.json +++ b/src/assets/i18n/sr.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Индексирање није успело", "msgSuccesIndexingKb": "Поново обука за садржај који је успешно покренут", "msgErrorAddUpdateKb": "База знања није могла да се дода или уреди", + "msgErrorAddUpdateKbLimit": "Није могуће прекорачити број ресурса дозвољених у вашем плану", "noContent": "без садржаја", "titleUrls": "Увоз са УРЛ адреса", "helpUrls": "Уметните веб странице са јавних УРЛ-ова у текстуално подручје испод, раздвојене повратком.", diff --git a/src/assets/i18n/sv.json b/src/assets/i18n/sv.json index 70e1d4ca2fd7..fcab42e49282 100644 --- a/src/assets/i18n/sv.json +++ b/src/assets/i18n/sv.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Indexering misslyckades", "msgSuccesIndexingKb": "Utbilda om innehåll som har lanserats framgångsrikt", "msgErrorAddUpdateKb": "Kunskapsbasen kunde inte läggas till eller redigeras", + "msgErrorAddUpdateKbLimit": "Det är inte möjligt att överskrida antalet tillåtna resurser i din plan", "noContent": "inget innehåll", "titleUrls": "Importera från webbadresser", "helpUrls": "Infoga webbsidor från offentliga webbadresser i textområdet nedan, åtskilda av en retur.", diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index d7e802434897..1aaaeffe4866 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Dizine ekleme başarısız oldu", "msgSuccesIndexingKb": "Başarıyla başlatılan içerikle ilgili yeniden eğitim", "msgErrorAddUpdateKb": "Bilgi Bankası eklenemedi veya düzenlenemedi", + "msgErrorAddUpdateKbLimit": "Planınızda izin verilen kaynak sayısını aşmanız mümkün değildir", "noContent": "içerik yok", "titleUrls": "URL'lerden içe aktar", "helpUrls": "Genel URL'lerdeki web sayfalarını aşağıdaki metin alanına bir dönüş işaretiyle ayırarak ekleyin.", diff --git a/src/assets/i18n/uk.json b/src/assets/i18n/uk.json index 19ab076d5cf9..cdac77d50526 100644 --- a/src/assets/i18n/uk.json +++ b/src/assets/i18n/uk.json @@ -1641,6 +1641,7 @@ "msgErrorIndexingKb": "Помилка індексації", "msgSuccesIndexingKb": "Повторне навчання вмісту успішно запущено", "msgErrorAddUpdateKb": "Не вдалося додати або відредагувати базу знань", + "msgErrorAddUpdateKbLimit": "Неможливо перевищити кількість ресурсів, дозволену у вашому плані", "noContent": "немає вмісту", "titleUrls": "Імпортувати з URL-адрес", "helpUrls": "Вставте веб-сторінки з загальнодоступних URL-адрес у текстову область нижче, розділивши їх символом повернення.", diff --git a/src/assets/i18n/uz.json b/src/assets/i18n/uz.json index 3f7ba260632f..bd6ba6e7c1f7 100644 --- a/src/assets/i18n/uz.json +++ b/src/assets/i18n/uz.json @@ -1640,6 +1640,7 @@ "msgErrorIndexingKb": "Indekslash amalga oshmadi", "msgSuccesIndexingKb": "Muvaffaqiyatli ishga tushirilgan kontentni qayta o'qitish", "msgErrorAddUpdateKb": "Bilimlar bazasini qo‘shib bo‘lmadi yoki tahrirlab bo‘lmadi", + "msgErrorAddUpdateKbLimit": "Rejangizda ruxsat etilgan resurslar sonidan oshib ketish mumkin emas", "noContent": "tarkib yo'q", "titleUrls": "URL manzillaridan import qilish", "helpUrls": "Veb-sahifalarni umumiy URL manzillaridan qaytish bilan ajratilgan holda quyidagi matn maydoniga kiriting.",