@posiwise/smart-crm 0.0.37 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-details/smart-crm-account-details.component.mjs +10 -10
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.mjs +8 -8
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.mjs +23 -23
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-invoices/smart-crm-account-invoices.component.mjs +10 -10
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.mjs +9 -9
- package/esm2022/lib/private/components/smart-crm-actions/smart-crm-actions.component.mjs +12 -12
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions-details/smart-crm-actions-details.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-configuration.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories-details/smart-crm-opportunity-categories-details.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.mjs +6 -6
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source-details/smart-crm-source-details.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.mjs +9 -9
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stage-details/smart-crm-stage-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.mjs +9 -9
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets-details/smart-crm-widgets-details.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.mjs +8 -8
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.mjs +8 -8
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.mjs +17 -17
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.mjs +11 -11
- package/esm2022/lib/private/components/smart-crm-customer/smart-crm-customer-success/smart-crm-customer-success.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-account-insight/smart-crm-account-insight.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-analysis-insight/smart-crm-analysis.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-contact-insight/smart-crm-contact-insight.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-insight.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-marketing-insight/smart-crm-marketing-insight.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-opportunities-insight/smart-crm-opportunities-insight.component.mjs +10 -10
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.mjs +6 -6
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads.component.mjs +7 -7
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-contacts/smart-crm-marketing-contacts.component.mjs +7 -7
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-details/smart-crm-marketing-details.component.mjs +6 -6
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.mjs +10 -10
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-view-details/smart-crm-marketing-view-details.component.mjs +3 -3
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.mjs +9 -9
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.mjs +17 -17
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-info/smart-crm-opportunities-info.component.mjs +13 -11
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.mjs +10 -10
- package/esm2022/lib/private/components/smart-crm-tabs/smart-crm-tabs.component.mjs +3 -3
- package/esm2022/lib/private/smart-crm-private.module.mjs +33 -33
- package/esm2022/lib/private/smart-crm-private.routing.module.mjs +8 -8
- package/esm2022/lib/public/components/smart-crm-newsletter-confirmation/smart-crm-newsletter-confirmation.component.mjs +1 -1
- package/esm2022/lib/public/components/smart-crm-newsletter-unsubscribe/smart-crm-newsletter-unsubscribe.component.mjs +3 -3
- package/esm2022/lib/public/components/smart-crm-signup/smart-crm-signup.component.mjs +2 -2
- package/esm2022/lib/public/smart-crm-public.module.mjs +4 -4
- package/esm2022/lib/public/smart-crm-public.routing.module.mjs +1 -1
- package/fesm2022/posiwise-smart-crm.mjs +155 -153
- package/fesm2022/posiwise-smart-crm.mjs.map +1 -1
- package/lib/private/components/smart-crm-accounts/smart-crm-account-details/smart-crm-account-details.component.d.ts +16 -16
- package/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.d.ts +12 -12
- package/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.d.ts +46 -47
- package/lib/private/components/smart-crm-accounts/smart-crm-account-invoices/smart-crm-account-invoices.component.d.ts +10 -10
- package/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.d.ts +12 -12
- package/lib/private/components/smart-crm-actions/smart-crm-actions.component.d.ts +15 -15
- package/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions-details/smart-crm-actions-details.component.d.ts +8 -8
- package/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.d.ts +5 -5
- package/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories-details/smart-crm-opportunity-categories-details.component.d.ts +4 -4
- package/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.d.ts +7 -7
- package/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source-details/smart-crm-source-details.component.d.ts +1 -1
- package/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.d.ts +6 -6
- package/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stage-details/smart-crm-stage-details.component.d.ts +5 -5
- package/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.d.ts +8 -8
- package/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets-details/smart-crm-widgets-details.component.d.ts +7 -7
- package/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.d.ts +9 -9
- package/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.d.ts +11 -11
- package/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.d.ts +27 -27
- package/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.d.ts +19 -19
- package/lib/private/components/smart-crm-insight/smart-crm-account-insight/smart-crm-account-insight.component.d.ts +19 -19
- package/lib/private/components/smart-crm-insight/smart-crm-analysis-insight/smart-crm-analysis.component.d.ts +7 -7
- package/lib/private/components/smart-crm-insight/smart-crm-contact-insight/smart-crm-contact-insight.component.d.ts +13 -13
- package/lib/private/components/smart-crm-insight/smart-crm-marketing-insight/smart-crm-marketing-insight.component.d.ts +8 -8
- package/lib/private/components/smart-crm-insight/smart-crm-opportunities-insight/smart-crm-opportunities-insight.component.d.ts +18 -18
- package/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.d.ts +6 -6
- package/lib/private/components/smart-crm-leads/smart-crm-leads.component.d.ts +9 -9
- package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-contacts/smart-crm-marketing-contacts.component.d.ts +7 -7
- package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-details/smart-crm-marketing-details.component.d.ts +10 -10
- package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.d.ts +8 -8
- package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-view-details/smart-crm-marketing-view-details.component.d.ts +3 -3
- package/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.d.ts +10 -10
- package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.d.ts +23 -23
- package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-info/smart-crm-opportunities-info.component.d.ts +27 -27
- package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.d.ts +12 -12
- package/lib/private/components/smart-crm-tabs/smart-crm-tabs.component.d.ts +1 -1
- package/lib/public/components/smart-crm-newsletter-unsubscribe/smart-crm-newsletter-unsubscribe.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, EventEmitter, Input, Inject, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
3
|
-
import * as i3 from '@angular/forms';
|
|
4
|
-
import { UntypedFormBuilder, Validators, UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import * as i1 from '@posiwise/smart-crm-shared';
|
|
6
|
-
import { CRM_ACCOUNT_FILES_PATH, CRM_PERMISSIONS, CRM_KEYS } from '@posiwise/smart-crm-shared';
|
|
7
|
-
import { PAGE_SIZE, DOCUMENT_TYPE_EXT, TOKEN_HEADER_KEY, POLL_TIMEOUT } from '@posiwise/common-utilities';
|
|
8
3
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
9
4
|
import * as i2 from '@posiwise/common-services';
|
|
10
5
|
import { PermissionService, FormHelperService } from '@posiwise/common-services';
|
|
6
|
+
import { PAGE_SIZE, DOCUMENT_TYPE_EXT, TOKEN_HEADER_KEY, POLL_TIMEOUT } from '@posiwise/common-utilities';
|
|
11
7
|
import { HelperService } from '@posiwise/helper-service';
|
|
8
|
+
import * as i1 from '@posiwise/smart-crm-shared';
|
|
9
|
+
import { CRM_ACCOUNT_FILES_PATH, CRM_PERMISSIONS, CRM_KEYS } from '@posiwise/smart-crm-shared';
|
|
10
|
+
import * as i3 from '@angular/forms';
|
|
11
|
+
import { UntypedFormBuilder, Validators, UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
12
12
|
import * as i2$1 from '@angular/common';
|
|
13
13
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
14
14
|
import * as i5 from '@posiwise/directives';
|
|
@@ -21,10 +21,10 @@ import * as i11 from '@posiwise/shared-components';
|
|
|
21
21
|
import { SharedComponentsModule } from '@posiwise/shared-components';
|
|
22
22
|
import * as i11$1 from '@jsverse/transloco';
|
|
23
23
|
import { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';
|
|
24
|
-
import * as i2$2 from '@ng-bootstrap/ng-bootstrap';
|
|
25
|
-
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
26
24
|
import * as i12 from 'ngx-uploader';
|
|
27
25
|
import { UploadStatus, NgxUploaderModule } from 'ngx-uploader';
|
|
26
|
+
import * as i2$2 from '@ng-bootstrap/ng-bootstrap';
|
|
27
|
+
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
28
28
|
import * as i4 from 'primeng/inputtext';
|
|
29
29
|
import { InputTextModule } from 'primeng/inputtext';
|
|
30
30
|
import * as i1$1 from '@angular/router';
|
|
@@ -33,8 +33,8 @@ import * as i8 from 'primeng/api';
|
|
|
33
33
|
import * as i10 from 'primeng/table';
|
|
34
34
|
import * as i14 from '@posiwise/pipes';
|
|
35
35
|
import { PipesModule } from '@posiwise/pipes';
|
|
36
|
-
import swal from 'sweetalert2';
|
|
37
36
|
import moment from 'moment';
|
|
37
|
+
import swal from 'sweetalert2';
|
|
38
38
|
import * as i4$1 from 'ngx-ui-switch';
|
|
39
39
|
import { UiSwitchModule } from 'ngx-ui-switch';
|
|
40
40
|
import * as i17 from 'ngx-infinite-scroll';
|
|
@@ -57,10 +57,10 @@ import uniqBy from 'lodash/uniqBy';
|
|
|
57
57
|
import * as i4$3 from 'ngx-pagination';
|
|
58
58
|
import { NgxPaginationModule } from 'ngx-pagination';
|
|
59
59
|
import { PageAccessGuard } from '@posiwise/core-guards';
|
|
60
|
-
import { CoreTranslocoModule } from '@posiwise/core-transloco';
|
|
61
|
-
import { Loader } from '@googlemaps/js-api-loader';
|
|
62
60
|
import { AppConfigService } from '@posiwise/app-config-service';
|
|
61
|
+
import { CoreTranslocoModule } from '@posiwise/core-transloco';
|
|
63
62
|
import { DropdownModule } from 'primeng/dropdown';
|
|
63
|
+
import { Loader } from '@googlemaps/js-api-loader';
|
|
64
64
|
import { StatusCodes } from 'http-status-codes';
|
|
65
65
|
import * as i3$1 from '@posiwise/layouts';
|
|
66
66
|
import { LayoutsModule } from '@posiwise/layouts';
|
|
@@ -284,15 +284,15 @@ class SmartCrmCompanyDetailsComponent extends AppBaseComponent {
|
|
|
284
284
|
this.crmService = crmService;
|
|
285
285
|
this.commonService = commonService;
|
|
286
286
|
this.geoService = geoService;
|
|
287
|
-
this.
|
|
288
|
-
this.buttonBusy = false;
|
|
289
|
-
this.isLoading = true;
|
|
290
|
-
this.onEdit = false;
|
|
287
|
+
this.countryNames = [];
|
|
291
288
|
this.subscriptionMembers = [];
|
|
292
289
|
this.status = [];
|
|
293
290
|
this.priority = [];
|
|
294
291
|
this.source = [];
|
|
295
|
-
this.
|
|
292
|
+
this.isLoading = true;
|
|
293
|
+
this.onEdit = false;
|
|
294
|
+
this.submitted = false;
|
|
295
|
+
this.buttonBusy = false;
|
|
296
296
|
this.form = AppSmartCrm.getAccountsForm();
|
|
297
297
|
}
|
|
298
298
|
onSearchOwner(event) {
|
|
@@ -474,11 +474,11 @@ class SmartCrmCompanyFilesComponent extends AppBaseComponent {
|
|
|
474
474
|
this.modalService = modalService;
|
|
475
475
|
this.authService = authService;
|
|
476
476
|
this.cdr = cdr;
|
|
477
|
+
this.page = 1;
|
|
477
478
|
this.isLoaded = false;
|
|
479
|
+
this.loading = true;
|
|
478
480
|
this.searchText = '';
|
|
479
481
|
this.totalRecordsUnFiltered = 0;
|
|
480
|
-
this.loading = true;
|
|
481
|
-
this.page = 1;
|
|
482
482
|
this.routers = ROUTERS;
|
|
483
483
|
this.options = { concurrency: 1, maxUploads: 3 };
|
|
484
484
|
this.uploadInput = new EventEmitter();
|
|
@@ -638,15 +638,15 @@ class SmartCrmCompanyAccountInvoiceComponent extends AppBaseComponent {
|
|
|
638
638
|
constructor(injector, crmService) {
|
|
639
639
|
super(injector);
|
|
640
640
|
this.crmService = crmService;
|
|
641
|
+
this.page = 0;
|
|
642
|
+
this.intervalTimer = interval(POLL_TIMEOUT * 60 * 1000);
|
|
641
643
|
this.invoices = [];
|
|
642
|
-
this.
|
|
643
|
-
this.totalRecordsUnFiltered = 0;
|
|
644
|
+
this.invoiceFrequency = ['week', 'month', 'year'];
|
|
644
645
|
this.searchText = '';
|
|
645
|
-
this.
|
|
646
|
-
this.isLoaded = false;
|
|
647
|
-
this.page = 0;
|
|
646
|
+
this.totalRecordsUnFiltered = 0;
|
|
648
647
|
this.totalRecords = 0;
|
|
649
|
-
this.
|
|
648
|
+
this.isLoaded = false;
|
|
649
|
+
this.buttonBusy = false;
|
|
650
650
|
this.subscriptionId = PermissionService.selectedSubscription.id;
|
|
651
651
|
}
|
|
652
652
|
onLazyLoad(event) {
|
|
@@ -699,29 +699,29 @@ class SmartCrmCompanyInfoComponent extends AppBaseComponent {
|
|
|
699
699
|
this.cdr = cdr;
|
|
700
700
|
this.logoCacheService = logoCacheService;
|
|
701
701
|
this.document = document;
|
|
702
|
-
this.
|
|
703
|
-
this.
|
|
704
|
-
this.
|
|
702
|
+
this.page = 1;
|
|
703
|
+
this.totalContacts = 0;
|
|
704
|
+
this.isContactValid = true;
|
|
705
705
|
this.accountComments = [];
|
|
706
|
+
this.potential = ['low', 'medium', 'high'];
|
|
707
|
+
this.selector = '.timeline-container';
|
|
708
|
+
this.searchText = '';
|
|
709
|
+
this.totalRecordsUnFiltered = 0;
|
|
710
|
+
this.currentPage = 1;
|
|
706
711
|
this.hasAccess = false;
|
|
707
|
-
this.
|
|
708
|
-
this.isContactValid = true;
|
|
712
|
+
this.isDataLoaded = false;
|
|
709
713
|
this.isLoaded = false;
|
|
710
|
-
this.totalRecordsUnFiltered = 0;
|
|
711
714
|
this.loading = true;
|
|
712
|
-
this.
|
|
713
|
-
this.
|
|
715
|
+
this.isFormEdit = true;
|
|
716
|
+
this.submitted = false;
|
|
717
|
+
this.editComment = false;
|
|
714
718
|
this.showFullComment = false;
|
|
719
|
+
this.submitAction = false;
|
|
715
720
|
this.isDisabled = false;
|
|
721
|
+
this.buttonBusy = false;
|
|
716
722
|
this.updating = false;
|
|
717
723
|
this.direction = '';
|
|
718
|
-
this.page = 1;
|
|
719
|
-
this.currentPage = 1;
|
|
720
|
-
this.totalContacts = 0;
|
|
721
|
-
this.selector = '.timeline-container';
|
|
722
|
-
this.submitAction = false;
|
|
723
724
|
this.routers = ROUTERS;
|
|
724
|
-
this.buttonBusy = false;
|
|
725
725
|
this.options = { concurrency: 1, maxUploads: 3 };
|
|
726
726
|
this.uploadInput = new EventEmitter();
|
|
727
727
|
this.token = btoa(this.authService.getToken());
|
|
@@ -1269,16 +1269,13 @@ class SmartCrmCompaniesComponent extends AppBaseComponent {
|
|
|
1269
1269
|
this.commonService = commonService;
|
|
1270
1270
|
this.logoCacheService = logoCacheService;
|
|
1271
1271
|
this.cdr = cdr;
|
|
1272
|
+
this.page = 1;
|
|
1272
1273
|
this.data = {
|
|
1273
1274
|
accounts: [],
|
|
1274
1275
|
object_count: 0,
|
|
1275
1276
|
unfiltered_count: 0
|
|
1276
1277
|
};
|
|
1277
|
-
this.searchText = '';
|
|
1278
|
-
this.loading = true;
|
|
1279
1278
|
this.organizationSizes = [];
|
|
1280
|
-
this.hasAccess = false;
|
|
1281
|
-
this.isLoaded = false;
|
|
1282
1279
|
this.searchOptions = [];
|
|
1283
1280
|
this.filterByIndustries = [];
|
|
1284
1281
|
this.status = [];
|
|
@@ -1288,8 +1285,11 @@ class SmartCrmCompaniesComponent extends AppBaseComponent {
|
|
|
1288
1285
|
this.filterByStatus = [];
|
|
1289
1286
|
this.filterByPriority = [];
|
|
1290
1287
|
this.filterBySizeId = [];
|
|
1288
|
+
this.searchText = '';
|
|
1291
1289
|
this.accountActivities = [];
|
|
1292
|
-
this.
|
|
1290
|
+
this.loading = true;
|
|
1291
|
+
this.hasAccess = false;
|
|
1292
|
+
this.isLoaded = false;
|
|
1293
1293
|
this.routers = ROUTERS;
|
|
1294
1294
|
this.actionNames = [];
|
|
1295
1295
|
}
|
|
@@ -1580,11 +1580,11 @@ class SmartCrmSettingsDetailsComponent extends AppBaseComponent {
|
|
|
1580
1580
|
constructor(crmService, injector) {
|
|
1581
1581
|
super(injector);
|
|
1582
1582
|
this.crmService = crmService;
|
|
1583
|
+
this.targetWeek = [];
|
|
1584
|
+
this.targetWeekMin = [];
|
|
1583
1585
|
this.submitted = false;
|
|
1584
1586
|
this.buttonBusy = false;
|
|
1585
1587
|
this.isLoading = true;
|
|
1586
|
-
this.targetWeek = [];
|
|
1587
|
-
this.targetWeekMin = [];
|
|
1588
1588
|
this.form = AppSmartCrm.getSettingsForm();
|
|
1589
1589
|
}
|
|
1590
1590
|
ngOnInit() {
|
|
@@ -1667,6 +1667,7 @@ class SmartCrmActionsComponent extends AppBaseComponent {
|
|
|
1667
1667
|
super(injector);
|
|
1668
1668
|
this.crmService = crmService;
|
|
1669
1669
|
this.cdr = cdr;
|
|
1670
|
+
this.page = 1;
|
|
1670
1671
|
this.data = {
|
|
1671
1672
|
crm_actions: [],
|
|
1672
1673
|
object_count: 0,
|
|
@@ -1676,7 +1677,6 @@ class SmartCrmActionsComponent extends AppBaseComponent {
|
|
|
1676
1677
|
this.loading = true;
|
|
1677
1678
|
this.hasAccess = false;
|
|
1678
1679
|
this.isLoaded = false;
|
|
1679
|
-
this.page = 1;
|
|
1680
1680
|
this.routers = ROUTERS;
|
|
1681
1681
|
}
|
|
1682
1682
|
ngOnInit() {
|
|
@@ -1766,16 +1766,16 @@ class SmartCrmCompanySourceComponent extends AppBaseComponent {
|
|
|
1766
1766
|
super(injector);
|
|
1767
1767
|
this.crmService = crmService;
|
|
1768
1768
|
this.cdr = cdr;
|
|
1769
|
-
this.
|
|
1770
|
-
this.loading = true;
|
|
1771
|
-
this.hasAccess = false;
|
|
1772
|
-
this.isLoaded = false;
|
|
1769
|
+
this.page = 1;
|
|
1773
1770
|
this.data = {
|
|
1774
1771
|
crm_sources: [],
|
|
1775
1772
|
object_count: 0,
|
|
1776
1773
|
unfiltered_count: 0
|
|
1777
1774
|
};
|
|
1778
|
-
this.
|
|
1775
|
+
this.searchText = '';
|
|
1776
|
+
this.loading = true;
|
|
1777
|
+
this.hasAccess = false;
|
|
1778
|
+
this.isLoaded = false;
|
|
1779
1779
|
this.routers = ROUTERS;
|
|
1780
1780
|
}
|
|
1781
1781
|
ngOnInit() {
|
|
@@ -1855,17 +1855,17 @@ class SmartCrmWidgetsComponent extends AppBaseComponent {
|
|
|
1855
1855
|
super(injector);
|
|
1856
1856
|
this.crmService = crmService;
|
|
1857
1857
|
this.cdr = cdr;
|
|
1858
|
-
this.
|
|
1859
|
-
this.loading = true;
|
|
1858
|
+
this.page = 1;
|
|
1860
1859
|
this.data = {
|
|
1861
1860
|
crm_widget_relationships: [],
|
|
1862
1861
|
object_count: 0,
|
|
1863
1862
|
unfiltered_count: 0
|
|
1864
1863
|
};
|
|
1864
|
+
this.positions = [];
|
|
1865
|
+
this.searchText = '';
|
|
1866
|
+
this.loading = true;
|
|
1865
1867
|
this.hasAccess = false;
|
|
1866
1868
|
this.isLoaded = false;
|
|
1867
|
-
this.positions = [];
|
|
1868
|
-
this.page = 1;
|
|
1869
1869
|
this.routers = ROUTERS;
|
|
1870
1870
|
}
|
|
1871
1871
|
ngOnInit() {
|
|
@@ -1961,20 +1961,20 @@ class SmartCrmStagesComponent extends AppBaseComponent {
|
|
|
1961
1961
|
super(injector);
|
|
1962
1962
|
this.crmService = crmService;
|
|
1963
1963
|
this.cdr = cdr;
|
|
1964
|
-
this.
|
|
1965
|
-
this.loading = true;
|
|
1964
|
+
this.page = 1;
|
|
1966
1965
|
this.data = {
|
|
1967
1966
|
crm_opportunity_stages: [],
|
|
1968
1967
|
object_count: 0,
|
|
1969
1968
|
unfiltered_count: 0
|
|
1970
1969
|
};
|
|
1971
|
-
this.hasAccess = false;
|
|
1972
|
-
this.isLoaded = false;
|
|
1973
|
-
this.page = 1;
|
|
1974
1970
|
this.filterByCategory = [];
|
|
1975
1971
|
this.stageNames = [];
|
|
1976
1972
|
this.categories = [];
|
|
1977
1973
|
this.availableCategories = [];
|
|
1974
|
+
this.searchText = '';
|
|
1975
|
+
this.loading = true;
|
|
1976
|
+
this.hasAccess = false;
|
|
1977
|
+
this.isLoaded = false;
|
|
1978
1978
|
this.routers = ROUTERS;
|
|
1979
1979
|
}
|
|
1980
1980
|
ngOnInit() {
|
|
@@ -2097,17 +2097,17 @@ class SmartCrmOpportunityCategoriesComponent extends AppBaseComponent {
|
|
|
2097
2097
|
super(injector);
|
|
2098
2098
|
this.crmService = crmService;
|
|
2099
2099
|
this.cdr = cdr;
|
|
2100
|
+
this.page = 1;
|
|
2100
2101
|
this.data = {
|
|
2101
2102
|
crm_opportunity_categories: [],
|
|
2102
2103
|
object_count: 0,
|
|
2103
2104
|
unfiltered_count: 0
|
|
2104
2105
|
};
|
|
2106
|
+
this.categoryNames = [];
|
|
2105
2107
|
this.searchText = '';
|
|
2106
2108
|
this.loading = true;
|
|
2107
2109
|
this.hasAccess = false;
|
|
2108
2110
|
this.isLoaded = false;
|
|
2109
|
-
this.page = 1;
|
|
2110
|
-
this.categoryNames = [];
|
|
2111
2111
|
this.routers = ROUTERS;
|
|
2112
2112
|
}
|
|
2113
2113
|
ngOnInit() {
|
|
@@ -2208,11 +2208,11 @@ class SmartCrmConfigurationComponent extends AppBaseComponent {
|
|
|
2208
2208
|
});
|
|
2209
2209
|
}
|
|
2210
2210
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmConfigurationComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2211
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmConfigurationComponent, selector: "pw-configuration", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'
|
|
2211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmConfigurationComponent, selector: "pw-configuration", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }, { kind: "component", type: SmartCrmCompanySourceComponent, selector: "pw-smart-crm-source" }, { kind: "component", type: SmartCrmWidgetsComponent, selector: "pw-smart-crm-widgets" }, { kind: "component", type: SmartCrmActionsComponent, selector: "pw-smart-crm-actions" }, { kind: "component", type: SmartCrmStagesComponent, selector: "pw-smart-crm-stages" }, { kind: "component", type: SmartCrmOpportunityCategoriesComponent, selector: "pw-smart-crm-opportunity-categories" }] }); }
|
|
2212
2212
|
}
|
|
2213
2213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmConfigurationComponent, decorators: [{
|
|
2214
2214
|
type: Component,
|
|
2215
|
-
args: [{ selector: 'pw-configuration', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'
|
|
2215
|
+
args: [{ selector: 'pw-configuration', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
|
|
2216
2216
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
2217
2217
|
|
|
2218
2218
|
class SmartCrmOpportunityCategoriesDetailsComponent extends AppBaseComponent {
|
|
@@ -2357,9 +2357,9 @@ class SmartCrmStageDetailsComponent extends AppBaseComponent {
|
|
|
2357
2357
|
constructor(injector, crmService) {
|
|
2358
2358
|
super(injector);
|
|
2359
2359
|
this.crmService = crmService;
|
|
2360
|
+
this.categories = [];
|
|
2360
2361
|
this.buttonBusy = false;
|
|
2361
2362
|
this.isLoading = true;
|
|
2362
|
-
this.categories = [];
|
|
2363
2363
|
this.form = AppSmartCrm.getStageForm();
|
|
2364
2364
|
}
|
|
2365
2365
|
ngOnInit() {
|
|
@@ -2530,12 +2530,12 @@ class SmartCrmContactDetailsComponent extends AppBaseComponent {
|
|
|
2530
2530
|
this.commonService = commonService;
|
|
2531
2531
|
this.crmService = crmService;
|
|
2532
2532
|
this.cdr = cdr;
|
|
2533
|
-
this.submitted = false;
|
|
2534
|
-
this.buttonBusy = false;
|
|
2535
|
-
this.isLoading = true;
|
|
2536
2533
|
this.filteredAccounts = [];
|
|
2537
2534
|
this.potentials = [];
|
|
2538
2535
|
this.labels = [];
|
|
2536
|
+
this.submitted = false;
|
|
2537
|
+
this.buttonBusy = false;
|
|
2538
|
+
this.isLoading = true;
|
|
2539
2539
|
this.form = AppSmartCrm.getContactsForm();
|
|
2540
2540
|
}
|
|
2541
2541
|
ngOnInit() {
|
|
@@ -2566,8 +2566,8 @@ class SmartCrmContactDetailsComponent extends AppBaseComponent {
|
|
|
2566
2566
|
this.getContactDetails(this.id);
|
|
2567
2567
|
}
|
|
2568
2568
|
else if (this.accountId) {
|
|
2569
|
-
const
|
|
2570
|
-
this.form.get('crm_account_id').patchValue(
|
|
2569
|
+
const accountData = this.accounts.find(x => x.id === this.accountId);
|
|
2570
|
+
this.form.get('crm_account_id').patchValue(accountData);
|
|
2571
2571
|
}
|
|
2572
2572
|
});
|
|
2573
2573
|
}
|
|
@@ -2666,22 +2666,22 @@ class SmartCrmContactInfoComponent extends AppBaseComponent {
|
|
|
2666
2666
|
this.modalService = modalService;
|
|
2667
2667
|
this.authService = authService;
|
|
2668
2668
|
this.document = document;
|
|
2669
|
-
this.isDisabled = false;
|
|
2670
2669
|
this.actions = [];
|
|
2671
|
-
this.
|
|
2670
|
+
this.filteredAccounts = [];
|
|
2672
2671
|
this.accounts = [];
|
|
2673
|
-
this.submitted = false;
|
|
2674
|
-
this.buttonBusy = false;
|
|
2675
2672
|
this.contactComments = [];
|
|
2676
|
-
this.hasAccess = false;
|
|
2677
2673
|
this.contactVersioning = [];
|
|
2678
|
-
this.isDataLoaded = false;
|
|
2679
|
-
this.updating = false;
|
|
2680
2674
|
this.potentials = ['low', 'medium', 'high'];
|
|
2681
2675
|
this.labels = [];
|
|
2682
|
-
this.
|
|
2683
|
-
this.
|
|
2676
|
+
this.submitted = false;
|
|
2677
|
+
this.buttonBusy = false;
|
|
2678
|
+
this.isDisabled = false;
|
|
2679
|
+
this.isFormEdit = true;
|
|
2684
2680
|
this.isLoaded = false;
|
|
2681
|
+
this.isDataLoaded = false;
|
|
2682
|
+
this.hasAccess = false;
|
|
2683
|
+
this.updating = false;
|
|
2684
|
+
this.showFullComment = false;
|
|
2685
2685
|
this.submitAction = false;
|
|
2686
2686
|
this.routers = ROUTERS;
|
|
2687
2687
|
this.options = { concurrency: 1, maxUploads: 3 };
|
|
@@ -3102,22 +3102,22 @@ class SmartCrmContactComponent extends AppBaseComponent {
|
|
|
3102
3102
|
super(injector);
|
|
3103
3103
|
this.crmService = crmService;
|
|
3104
3104
|
this.cdr = cdr;
|
|
3105
|
+
this.page = 1;
|
|
3105
3106
|
this.data = {
|
|
3106
3107
|
contacts: [],
|
|
3107
3108
|
object_count: 0,
|
|
3108
3109
|
unfiltered_count: 0
|
|
3109
3110
|
};
|
|
3110
|
-
this.searchText = '';
|
|
3111
|
-
this.loading = true;
|
|
3112
|
-
this.hasAccess = false;
|
|
3113
|
-
this.isLoaded = false;
|
|
3114
3111
|
this.potential = [];
|
|
3115
3112
|
this.labels = [];
|
|
3116
|
-
this.page = 1;
|
|
3117
|
-
this.routers = ROUTERS;
|
|
3118
3113
|
this.selectedLabels = [];
|
|
3119
3114
|
this.selectedAccount = [];
|
|
3120
3115
|
this.accountDropDown = [];
|
|
3116
|
+
this.searchText = '';
|
|
3117
|
+
this.loading = true;
|
|
3118
|
+
this.hasAccess = false;
|
|
3119
|
+
this.isLoaded = false;
|
|
3120
|
+
this.routers = ROUTERS;
|
|
3121
3121
|
}
|
|
3122
3122
|
ngOnInit() {
|
|
3123
3123
|
this.route.params.subscribe(data => {
|
|
@@ -3367,11 +3367,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
3367
3367
|
|
|
3368
3368
|
class SmartCrmCustomerSuccessComponent {
|
|
3369
3369
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCustomerSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3370
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCustomerSuccessComponent, selector: "pw-smart-crm-customer-success", ngImport: i0, template: "<pw-coming-soon message=\"
|
|
3370
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCustomerSuccessComponent, selector: "pw-smart-crm-customer-success", ngImport: i0, template: "<pw-coming-soon message=\"CX & Success\"></pw-coming-soon>\n", dependencies: [{ kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }] }); }
|
|
3371
3371
|
}
|
|
3372
3372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCustomerSuccessComponent, decorators: [{
|
|
3373
3373
|
type: Component,
|
|
3374
|
-
args: [{ selector: 'pw-smart-crm-customer-success', template: "<pw-coming-soon message=\"
|
|
3374
|
+
args: [{ selector: 'pw-smart-crm-customer-success', template: "<pw-coming-soon message=\"CX & Success\"></pw-coming-soon>\n" }]
|
|
3375
3375
|
}] });
|
|
3376
3376
|
|
|
3377
3377
|
class SmartCrmSocialMediaComponent {
|
|
@@ -3388,14 +3388,14 @@ class SmartCrmCommunicationsInsightComponent extends AppBaseComponent {
|
|
|
3388
3388
|
super(injector);
|
|
3389
3389
|
this.crmService = crmService;
|
|
3390
3390
|
this.cdr = cdr;
|
|
3391
|
-
this.searchText = '';
|
|
3392
3391
|
this.data = {
|
|
3393
3392
|
crm_newsletters: [],
|
|
3394
3393
|
object_count: 0,
|
|
3395
3394
|
unfiltered_count: 0
|
|
3396
3395
|
};
|
|
3397
|
-
this.
|
|
3396
|
+
this.searchText = '';
|
|
3398
3397
|
this.loading = true;
|
|
3398
|
+
this.isLoaded = false;
|
|
3399
3399
|
this.communicationsInsightLoaded = false;
|
|
3400
3400
|
this.geographyLoaded = false;
|
|
3401
3401
|
this.routers = ROUTERS;
|
|
@@ -3541,10 +3541,10 @@ class SmartCrmContactInsightComponent extends AppBaseComponent {
|
|
|
3541
3541
|
this.cdr = cdr;
|
|
3542
3542
|
this.adminService = adminService;
|
|
3543
3543
|
this.loading = true;
|
|
3544
|
-
this.routers = ROUTERS;
|
|
3545
3544
|
this.contactInsightLoaded = false;
|
|
3546
3545
|
this.geographyLoaded = false;
|
|
3547
3546
|
this.userBaseLoaded = false;
|
|
3547
|
+
this.routers = ROUTERS;
|
|
3548
3548
|
}
|
|
3549
3549
|
ngOnInit() {
|
|
3550
3550
|
this.getUserSubscription().subscribe(response => {
|
|
@@ -3620,29 +3620,29 @@ class SmartCrmOpportunitiesInsightComponent extends AppBaseComponent {
|
|
|
3620
3620
|
this.crmService = crmService;
|
|
3621
3621
|
this.cdr = cdr;
|
|
3622
3622
|
this.productService = productService;
|
|
3623
|
-
this.hasAccess = false;
|
|
3624
|
-
this.searchText = '';
|
|
3625
3623
|
this.data = {
|
|
3626
3624
|
crm_opportunities: [],
|
|
3627
3625
|
object_count: 0,
|
|
3628
3626
|
unfiltered_count: 0
|
|
3629
3627
|
};
|
|
3630
|
-
this.
|
|
3631
|
-
this.isLoaded = false;
|
|
3632
|
-
this.loading = true;
|
|
3628
|
+
this.searchText = '';
|
|
3633
3629
|
this.searchStages = [];
|
|
3630
|
+
this.searchCategories = [];
|
|
3634
3631
|
this.filterByStages = [];
|
|
3635
3632
|
this.filterByCategories = [];
|
|
3636
|
-
this.searchCategories = [];
|
|
3637
3633
|
this.page = 1;
|
|
3638
3634
|
this.stages = [];
|
|
3639
3635
|
this.categories = [];
|
|
3640
|
-
this.
|
|
3636
|
+
this.id = '';
|
|
3637
|
+
this.loading = true;
|
|
3638
|
+
this.isLoaded = false;
|
|
3639
|
+
this.hasAccess = false;
|
|
3641
3640
|
this.opportunitiesInsightLoaded = false;
|
|
3642
3641
|
this.opportunitiesGeographyLoaded = false;
|
|
3643
3642
|
this.opportunitiesCategoryLoaded = false;
|
|
3644
3643
|
this.opportunitiesStageLoaded = false;
|
|
3645
3644
|
this.opportunitiesGraphLoaded = false;
|
|
3645
|
+
this.routers = ROUTERS;
|
|
3646
3646
|
}
|
|
3647
3647
|
ngOnInit() {
|
|
3648
3648
|
this.getUserSubscription().subscribe(subscription => {
|
|
@@ -3756,7 +3756,6 @@ class SmartCrmAccountInsightComponent extends AppBaseComponent {
|
|
|
3756
3756
|
constructor(crmService, injector) {
|
|
3757
3757
|
super(injector);
|
|
3758
3758
|
this.crmService = crmService;
|
|
3759
|
-
this.routers = ROUTERS;
|
|
3760
3759
|
this.signUpLastNinetyDaysLoaded = false;
|
|
3761
3760
|
this.accountLastActivitiesLoaded = false;
|
|
3762
3761
|
this.churnedAccountLoaded = false;
|
|
@@ -3767,6 +3766,7 @@ class SmartCrmAccountInsightComponent extends AppBaseComponent {
|
|
|
3767
3766
|
this.accountGeographyLoaded = false;
|
|
3768
3767
|
this.accountInsightLoaded = false;
|
|
3769
3768
|
this.magicMomentLoaded = false;
|
|
3769
|
+
this.routers = ROUTERS;
|
|
3770
3770
|
}
|
|
3771
3771
|
ngOnInit() {
|
|
3772
3772
|
this.getUserSubscription().subscribe(response => {
|
|
@@ -3967,28 +3967,28 @@ class SmartCrmInsightComponent {
|
|
|
3967
3967
|
{ id: 1, title: 'Accounts' },
|
|
3968
3968
|
{ id: 2, title: 'Contacts' },
|
|
3969
3969
|
{ id: 3, title: 'Opportunities' },
|
|
3970
|
-
{ id: 4, title: '
|
|
3970
|
+
{ id: 4, title: 'E-Marketing' },
|
|
3971
3971
|
{ id: 5, title: 'Analysis' }
|
|
3972
3972
|
];
|
|
3973
3973
|
}
|
|
3974
3974
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmInsightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3975
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmInsightComponent, selector: "pw-smart-crm-insight", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === '
|
|
3975
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmInsightComponent, selector: "pw-smart-crm-insight", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'E-Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: SmartCrmCommunicationsInsightComponent, selector: "pw-smart-crm-communications-insight" }, { kind: "component", type: SmartCrmAnalysisComponent, selector: "pw-smart-crm-analysis" }, { kind: "component", type: SmartCrmContactInsightComponent, selector: "pw-smart-crm-contact-insight" }, { kind: "component", type: SmartCrmOpportunitiesInsightComponent, selector: "pw-smart-crm-opportunities-insight" }, { kind: "component", type: SmartCrmAccountInsightComponent, selector: "pw-smart-crm-account-insight" }] }); }
|
|
3976
3976
|
}
|
|
3977
3977
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmInsightComponent, decorators: [{
|
|
3978
3978
|
type: Component,
|
|
3979
|
-
args: [{ selector: 'pw-smart-crm-insight', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === '
|
|
3979
|
+
args: [{ selector: 'pw-smart-crm-insight', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'E-Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n" }]
|
|
3980
3980
|
}] });
|
|
3981
3981
|
|
|
3982
3982
|
class SmartCrmLeadsDetailsComponent extends AppBaseComponent {
|
|
3983
3983
|
constructor(injector, crmService) {
|
|
3984
3984
|
super(injector);
|
|
3985
3985
|
this.crmService = crmService;
|
|
3986
|
-
this.submitted = false;
|
|
3987
|
-
this.buttonBusy = false;
|
|
3988
|
-
this.isLoading = true;
|
|
3989
3986
|
this.filteredAccounts = [];
|
|
3990
3987
|
this.potentials = [];
|
|
3991
3988
|
this.labels = [];
|
|
3989
|
+
this.submitted = false;
|
|
3990
|
+
this.buttonBusy = false;
|
|
3991
|
+
this.isLoading = true;
|
|
3992
3992
|
this.form = AppSmartCrm.getLeadsForm();
|
|
3993
3993
|
}
|
|
3994
3994
|
ngOnInit() {
|
|
@@ -4157,13 +4157,13 @@ class SmartCrmLeadsComponent extends AppBaseComponent {
|
|
|
4157
4157
|
object_count: 0,
|
|
4158
4158
|
unfiltered_count: 0
|
|
4159
4159
|
};
|
|
4160
|
+
this.allSource = [];
|
|
4161
|
+
this.crmSources = [];
|
|
4160
4162
|
this.searchText = '';
|
|
4161
|
-
this.isLoaded = false;
|
|
4162
4163
|
this.loading = true;
|
|
4164
|
+
this.isLoaded = false;
|
|
4163
4165
|
this.page = 1;
|
|
4164
|
-
this.allSource = [];
|
|
4165
4166
|
this.routers = ROUTERS;
|
|
4166
|
-
this.crmSources = [];
|
|
4167
4167
|
}
|
|
4168
4168
|
ngOnInit() {
|
|
4169
4169
|
this.getUserSubscription().subscribe(response => {
|
|
@@ -4266,15 +4266,15 @@ class SmartCrmMarketingUsersListComponent extends AppBaseComponent {
|
|
|
4266
4266
|
super(injector);
|
|
4267
4267
|
this.crmService = crmService;
|
|
4268
4268
|
this.cdr = cdr;
|
|
4269
|
-
this.
|
|
4269
|
+
this.page = 1;
|
|
4270
4270
|
this.data = {
|
|
4271
4271
|
newsletter_contacts: [],
|
|
4272
4272
|
object_count: 0,
|
|
4273
4273
|
unfiltered_count: 0
|
|
4274
4274
|
};
|
|
4275
|
-
this.
|
|
4275
|
+
this.searchText = '';
|
|
4276
4276
|
this.loading = true;
|
|
4277
|
-
this.
|
|
4277
|
+
this.isLoaded = false;
|
|
4278
4278
|
this.routers = ROUTERS;
|
|
4279
4279
|
}
|
|
4280
4280
|
ngOnInit() {
|
|
@@ -4327,8 +4327,6 @@ class SmartCrmCommunicationsDetailsComponent extends AppBaseComponent {
|
|
|
4327
4327
|
super(injector);
|
|
4328
4328
|
this.crmService = crmService;
|
|
4329
4329
|
this.commonService = commonService;
|
|
4330
|
-
this.submitted = false;
|
|
4331
|
-
this.buttonBusy = false;
|
|
4332
4330
|
this.status = [];
|
|
4333
4331
|
this.priority = [];
|
|
4334
4332
|
this.source = [];
|
|
@@ -4342,8 +4340,10 @@ class SmartCrmCommunicationsDetailsComponent extends AppBaseComponent {
|
|
|
4342
4340
|
{ label: 'high', value: 'high' }
|
|
4343
4341
|
];
|
|
4344
4342
|
this.allCommunications = [];
|
|
4345
|
-
this.isLoading = true;
|
|
4346
4343
|
this.userNameSyntax = '{{ @user.share_name }}';
|
|
4344
|
+
this.submitted = false;
|
|
4345
|
+
this.buttonBusy = false;
|
|
4346
|
+
this.isLoading = true;
|
|
4347
4347
|
QuillHelper.init();
|
|
4348
4348
|
this.editorConfig = QuillHelper.getEditorConfig();
|
|
4349
4349
|
this.form = AppSmartCrm.getMarketingForm();
|
|
@@ -4573,15 +4573,15 @@ class SmartCrmCommunicationsComponent extends AppBaseComponent {
|
|
|
4573
4573
|
super(injector);
|
|
4574
4574
|
this.crmService = crmService;
|
|
4575
4575
|
this.cdr = cdr;
|
|
4576
|
-
this.
|
|
4576
|
+
this.page = 1;
|
|
4577
4577
|
this.data = {
|
|
4578
4578
|
crm_newsletters: [],
|
|
4579
4579
|
object_count: 0,
|
|
4580
4580
|
unfiltered_count: 0
|
|
4581
4581
|
};
|
|
4582
|
-
this.
|
|
4582
|
+
this.searchText = '';
|
|
4583
4583
|
this.loading = true;
|
|
4584
|
-
this.
|
|
4584
|
+
this.isLoaded = false;
|
|
4585
4585
|
this.routers = ROUTERS;
|
|
4586
4586
|
}
|
|
4587
4587
|
ngOnInit() {
|
|
@@ -4694,11 +4694,11 @@ class SmartCrmCommunicationsComponent extends AppBaseComponent {
|
|
|
4694
4694
|
super.ngOnDestroy();
|
|
4695
4695
|
}
|
|
4696
4696
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCommunicationsComponent, deps: [{ token: i0.Injector }, { token: i1.CrmService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4697
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCommunicationsComponent, selector: "pw-smart-crm-communications", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>Email Marketing</h2>\n <p>Plan, create, and optimize your email marketing strategy here.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i2$2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i10.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i10.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i14.TextTruncatePipe, name: "textTruncate" }, { kind: "pipe", type: i11$1.TranslocoPipe, name: "transloco" }] }); }
|
|
4697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCommunicationsComponent, selector: "pw-smart-crm-communications", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>E-Marketing</h2>\n <p>The <strong>E-Marketing</strong> module allows you to quickly launch and customize professional email marketing\n campaigns. <br /> You can <strong>precisely target recipients</strong> to boost deliverability and engagement.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i2$2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i10.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i10.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i14.TextTruncatePipe, name: "textTruncate" }, { kind: "pipe", type: i11$1.TranslocoPipe, name: "transloco" }] }); }
|
|
4698
4698
|
}
|
|
4699
4699
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCommunicationsComponent, decorators: [{
|
|
4700
4700
|
type: Component,
|
|
4701
|
-
args: [{ selector: 'pw-smart-crm-communications', template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>Email Marketing</h2>\n <p>Plan, create, and optimize your email marketing strategy here.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"] }]
|
|
4701
|
+
args: [{ selector: 'pw-smart-crm-communications', template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>E-Marketing</h2>\n <p>The <strong>E-Marketing</strong> module allows you to quickly launch and customize professional email marketing\n campaigns. <br /> You can <strong>precisely target recipients</strong> to boost deliverability and engagement.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"] }]
|
|
4702
4702
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CrmService }, { type: i0.ChangeDetectorRef }] });
|
|
4703
4703
|
|
|
4704
4704
|
class SmartCrmCommunicationViewDetailsComponent extends AppBaseComponent {
|
|
@@ -4767,14 +4767,14 @@ class SmartCrmBoardComponent extends AppBaseComponent {
|
|
|
4767
4767
|
constructor(crmService, injector) {
|
|
4768
4768
|
super(injector);
|
|
4769
4769
|
this.crmService = crmService;
|
|
4770
|
-
this.opportunitiesGroup = [];
|
|
4771
|
-
this.isLoaded = false;
|
|
4772
|
-
this.categories = [];
|
|
4773
4770
|
this.availableOpportunities = [];
|
|
4774
|
-
this.
|
|
4771
|
+
this.pageSize = 5; // Show 5 cards initially
|
|
4775
4772
|
this.masterStages = [];
|
|
4773
|
+
this.opportunitiesGroup = [];
|
|
4774
|
+
this.categories = [];
|
|
4776
4775
|
this.selectedCategoryId = 0;
|
|
4777
|
-
this.
|
|
4776
|
+
this.isLoaded = false;
|
|
4777
|
+
this.routers = ROUTERS;
|
|
4778
4778
|
}
|
|
4779
4779
|
ngOnInit() {
|
|
4780
4780
|
this.getUserSubscription().subscribe(response => {
|
|
@@ -4990,27 +4990,27 @@ class SmartCrmOpportunitiesDetailsComponent extends AppBaseComponent {
|
|
|
4990
4990
|
super(injector);
|
|
4991
4991
|
this.crmService = crmService;
|
|
4992
4992
|
this.productService = productService;
|
|
4993
|
-
this.
|
|
4994
|
-
this.submitted = false;
|
|
4995
|
-
this.buttonBusy = false;
|
|
4996
|
-
this.isLoading = true;
|
|
4997
|
-
this.searchText = '';
|
|
4993
|
+
this.isUserSubscriptionSuperAdmin = this.permissionService.isUserMasterSubscriptionSuperAdmin();
|
|
4998
4994
|
this.allContacts = [];
|
|
4999
4995
|
this.filteredUsers = [];
|
|
5000
|
-
this.winChance = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
|
|
5001
4996
|
this.opportunities = [];
|
|
5002
|
-
this.WonField = false;
|
|
5003
|
-
this.LostField = false;
|
|
5004
|
-
this.isContactChange = false;
|
|
5005
|
-
this.TrialStartField = false;
|
|
5006
4997
|
this.accounts = [];
|
|
5007
|
-
this.masterStages = [];
|
|
5008
|
-
this.isUserSubscriptionSuperAdmin = this.permissionService.isUserMasterSubscriptionSuperAdmin();
|
|
5009
4998
|
this.stages = [];
|
|
4999
|
+
this.masterStages = [];
|
|
5010
5000
|
this.categories = [];
|
|
5011
|
-
this.accountValueCount = 0;
|
|
5012
5001
|
this.featureKeys = [];
|
|
5013
5002
|
this.currencies = [];
|
|
5003
|
+
this.winChance = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
|
|
5004
|
+
this.accountValueCount = 0;
|
|
5005
|
+
this.searchText = '';
|
|
5006
|
+
this.onEdit = false;
|
|
5007
|
+
this.isContactChange = false;
|
|
5008
|
+
this.TrialStartField = false;
|
|
5009
|
+
this.WonField = false;
|
|
5010
|
+
this.LostField = false;
|
|
5011
|
+
this.submitted = false;
|
|
5012
|
+
this.buttonBusy = false;
|
|
5013
|
+
this.isLoading = true;
|
|
5014
5014
|
this.form = AppSmartCrm.getOpportunitiesInfoForm();
|
|
5015
5015
|
}
|
|
5016
5016
|
ngOnInit() {
|
|
@@ -5338,15 +5338,17 @@ class SmartCrmOpportunitiesInfoComponent extends AppBaseComponent {
|
|
|
5338
5338
|
this.modalService = modalService;
|
|
5339
5339
|
this.authService = authService;
|
|
5340
5340
|
this.document = document;
|
|
5341
|
+
this.filteredAccounts = [];
|
|
5341
5342
|
this.isLoaded = false;
|
|
5342
5343
|
this.isFormEdit = true;
|
|
5343
|
-
this.submitted = false;
|
|
5344
|
-
this.buttonBusy = false;
|
|
5345
|
-
this.filteredAccounts = [];
|
|
5346
5344
|
this.isDisabled = false;
|
|
5347
5345
|
this.updating = false;
|
|
5348
5346
|
this.showFullComment = false;
|
|
5349
5347
|
this.submitAction = false;
|
|
5348
|
+
this.buttonBusy = false;
|
|
5349
|
+
this.submitted = false;
|
|
5350
|
+
this.dangerColor = false;
|
|
5351
|
+
this.dragOver = false;
|
|
5350
5352
|
this.routers = ROUTERS;
|
|
5351
5353
|
this.options = { concurrency: 1, maxUploads: 3 };
|
|
5352
5354
|
this.uploadInput = new EventEmitter();
|
|
@@ -5786,23 +5788,23 @@ class SmartCrmOpportunitiesListComponent extends AppBaseComponent {
|
|
|
5786
5788
|
this.crmService = crmService;
|
|
5787
5789
|
this.cdr = cdr;
|
|
5788
5790
|
this.productService = productService;
|
|
5789
|
-
this.hasAccess = false;
|
|
5790
|
-
this.searchText = '';
|
|
5791
5791
|
this.data = {
|
|
5792
5792
|
crm_opportunities: [],
|
|
5793
5793
|
object_count: 0,
|
|
5794
5794
|
unfiltered_count: 0
|
|
5795
5795
|
};
|
|
5796
5796
|
this.id = '';
|
|
5797
|
-
this.
|
|
5798
|
-
this.loading = true;
|
|
5797
|
+
this.searchText = '';
|
|
5799
5798
|
this.searchStages = [];
|
|
5799
|
+
this.searchCategories = [];
|
|
5800
5800
|
this.filterByStages = [];
|
|
5801
5801
|
this.filterByCategories = [];
|
|
5802
|
-
this.searchCategories = [];
|
|
5803
5802
|
this.page = 1;
|
|
5804
5803
|
this.stages = [];
|
|
5805
5804
|
this.categories = [];
|
|
5805
|
+
this.loading = true;
|
|
5806
|
+
this.isLoaded = false;
|
|
5807
|
+
this.hasAccess = false;
|
|
5806
5808
|
this.routers = ROUTERS;
|
|
5807
5809
|
}
|
|
5808
5810
|
ngOnInit() {
|
|
@@ -5989,18 +5991,18 @@ class CrmActionsComponent extends AppBaseComponent {
|
|
|
5989
5991
|
super(injector);
|
|
5990
5992
|
this.crmService = crmService;
|
|
5991
5993
|
this.document = document;
|
|
5994
|
+
this.totalPendingActions = 0;
|
|
5995
|
+
this.currentPage = 1;
|
|
5992
5996
|
this.contactActions = [];
|
|
5993
|
-
this.
|
|
5997
|
+
this.contactActionsAll = [];
|
|
5994
5998
|
this.accountActionSuggested = [];
|
|
5995
|
-
this.
|
|
5999
|
+
this.selector = '.pending-actions-wrapper';
|
|
6000
|
+
this.suggestedActionsSelector = '.suggested-actions-wrapper';
|
|
6001
|
+
this.isLoaded = false;
|
|
5996
6002
|
this.isLoadedSuggested = false;
|
|
5997
6003
|
this.showFullComment = false;
|
|
5998
|
-
this.contactActionsAll = [];
|
|
5999
6004
|
this.showFilter = false;
|
|
6000
|
-
this.
|
|
6001
|
-
this.suggestedActionsSelector = '.suggested-actions-wrapper';
|
|
6002
|
-
this.totalPendingActions = 0;
|
|
6003
|
-
this.currentPage = 1;
|
|
6005
|
+
this.updating = false;
|
|
6004
6006
|
this.routers = ROUTERS;
|
|
6005
6007
|
}
|
|
6006
6008
|
ngOnInit() {
|
|
@@ -6264,14 +6266,14 @@ class SmartCrmTabsComponent extends AppBaseComponent {
|
|
|
6264
6266
|
},
|
|
6265
6267
|
{
|
|
6266
6268
|
id: 'marketing_tab',
|
|
6267
|
-
label: '
|
|
6269
|
+
label: 'E-Marketing',
|
|
6268
6270
|
icon: 'fas fa-bullhorn',
|
|
6269
6271
|
routerLink: ['/crm/marketing/emails'],
|
|
6270
6272
|
visible: this.permissionService.evaluatePermissions(`${CRM_PERMISSIONS.Marketing}`)
|
|
6271
6273
|
},
|
|
6272
6274
|
{
|
|
6273
6275
|
id: 'customer-success',
|
|
6274
|
-
label: '
|
|
6276
|
+
label: 'CX & Success',
|
|
6275
6277
|
icon: 'fa fa-check-circle',
|
|
6276
6278
|
routerLink: ['/crm/customer-success'],
|
|
6277
6279
|
visible: this.permissionService.evaluatePermissions(`${CRM_PERMISSIONS.CustomerSuccess}`)
|
|
@@ -6937,9 +6939,9 @@ class CrmNewsletterUnsubscribeComponent {
|
|
|
6937
6939
|
this.token = '';
|
|
6938
6940
|
this.message = '';
|
|
6939
6941
|
this.errorMsg = '';
|
|
6940
|
-
this.error = false;
|
|
6941
6942
|
this.success = "You've successfully been removed from our newsletter.";
|
|
6942
6943
|
this.failure = 'Something went wrong and we were not able to unsubscribe you. If the problem persists, please contact us.';
|
|
6944
|
+
this.error = false;
|
|
6943
6945
|
this.route.queryParams.subscribe(params => {
|
|
6944
6946
|
this.token = params['crm_newsletter_token'] || '';
|
|
6945
6947
|
if (this.token) {
|