|
399 | 399 | </router-link> |
400 | 400 | </lf-table-cell> |
401 | 401 |
|
402 | | - <!-- Headline --> |
403 | | - <lf-table-cell class="!py-4 pl-3"> |
404 | | - <router-link |
405 | | - :to="{ |
406 | | - name: 'organizationView', |
407 | | - params: { id: org.id }, |
408 | | - query: { |
409 | | - projectGroup: selectedProjectGroup?.id, |
410 | | - segmentId: org.segmentId, |
411 | | - }, |
412 | | - }" |
413 | | - class="block" |
414 | | - > |
415 | | - <div class="mr-4"> |
416 | | - <span |
417 | | - v-if="org.headline || org.description" |
418 | | - class="text-sm h-full flex items-center text-gray-900 line-clamp-3" |
419 | | - > |
420 | | - {{ org.headline || org.description }} |
421 | | - </span> |
422 | | - <span v-else class="text-gray-500">-</span> |
423 | | - </div> |
424 | | - </router-link> |
425 | | - </lf-table-cell> |
426 | | - |
427 | 402 | <!-- Identities --> |
428 | 403 | <lf-table-cell class="!py-4 pl-3"> |
429 | 404 | <router-link |
|
488 | 463 | </router-link> |
489 | 464 | </lf-table-cell> |
490 | 465 |
|
491 | | - <!-- Last Active --> |
492 | | - <lf-table-cell class="!py-4 pl-3"> |
493 | | - <router-link |
494 | | - :to="{ |
495 | | - name: 'organizationView', |
496 | | - params: { id: org.id }, |
497 | | - query: { |
498 | | - projectGroup: selectedProjectGroup?.id, |
499 | | - segmentId: org.segmentId, |
500 | | - }, |
501 | | - }" |
502 | | - class="block" |
503 | | - > |
504 | | - <span |
505 | | - v-if="org.lastActive" |
506 | | - class="text-gray-900 text-sm h-full flex items-center" |
507 | | - > |
508 | | - {{ formatDateToTimeAgo(org.lastActive) }} |
509 | | - </span> |
510 | | - <span v-else class="text-gray-900">-</span> |
511 | | - </router-link> |
512 | | - </lf-table-cell> |
513 | | - |
514 | | - <!-- Joined Date --> |
515 | | - <lf-table-cell class="!py-4 pl-3"> |
516 | | - <router-link |
517 | | - :to="{ |
518 | | - name: 'organizationView', |
519 | | - params: { id: org.id }, |
520 | | - query: { |
521 | | - projectGroup: selectedProjectGroup?.id, |
522 | | - segmentId: org.segmentId, |
523 | | - }, |
524 | | - }" |
525 | | - class="block" |
526 | | - > |
527 | | - <div |
528 | | - v-if="org.joinedAt" |
529 | | - class="text-gray-900 text-sm h-full flex items-center" |
530 | | - > |
531 | | - {{ formatDateToTimeAgo(org.joinedAt) }} |
532 | | - </div> |
533 | | - <span v-else class="text-gray-900">-</span> |
534 | | - </router-link> |
535 | | - </lf-table-cell> |
536 | | - |
537 | | - <!-- Location --> |
538 | | - <lf-table-cell class="!py-4 pl-3"> |
539 | | - <router-link |
540 | | - :to="{ |
541 | | - name: 'organizationView', |
542 | | - params: { id: org.id }, |
543 | | - query: { |
544 | | - projectGroup: selectedProjectGroup?.id, |
545 | | - segmentId: org.segmentId, |
546 | | - }, |
547 | | - }" |
548 | | - class="block" |
549 | | - > |
550 | | - <div class="text-sm h-full flex items-center"> |
551 | | - <span v-if="org.location" class="text-gray-900"> |
552 | | - {{ org.location }} |
553 | | - </span> |
554 | | - <span v-else class="text-gray-500">-</span> |
555 | | - </div> |
556 | | - </router-link> |
557 | | - </lf-table-cell> |
558 | | - |
559 | | - <!-- Industry --> |
560 | | - <lf-table-cell |
561 | | - class="!py-4 pl-3" |
562 | | - @mouseover="() => handleCellMouseEnter(org, 'industry')" |
563 | | - @mouseleave="closeEnrichmentPopover" |
564 | | - > |
565 | | - <router-link |
566 | | - :ref=" |
567 | | - (el) => |
568 | | - setEnrichmentAttributesRef(el, `${org.id}-industry`) |
569 | | - " |
570 | | - :to="{ |
571 | | - name: 'organizationView', |
572 | | - params: { id: org.id }, |
573 | | - query: { |
574 | | - projectGroup: selectedProjectGroup?.id, |
575 | | - segmentId: org.segmentId, |
576 | | - }, |
577 | | - }" |
578 | | - class="block h-full" |
579 | | - > |
580 | | - <div class="text-sm h-full flex items-center"> |
581 | | - <span v-if="org.industry" class="text-gray-900"> |
582 | | - {{ toSentenceCase(org.industry) }} |
583 | | - </span> |
584 | | - <span v-else class="text-gray-500">-</span> |
585 | | - </div> |
586 | | - </router-link> |
587 | | - </lf-table-cell> |
588 | | - |
589 | | - <!-- Headcount --> |
590 | | - <lf-table-cell |
591 | | - class="!py-4 pl-3" |
592 | | - @mouseover="() => handleCellMouseEnter(org, 'size')" |
593 | | - @mouseleave="closeEnrichmentPopover" |
594 | | - > |
595 | | - <router-link |
596 | | - :ref=" |
597 | | - (el) => |
598 | | - setEnrichmentAttributesRef(el, `${org.id}-size`) |
599 | | - " |
600 | | - :to="{ |
601 | | - name: 'organizationView', |
602 | | - params: { id: org.id }, |
603 | | - query: { |
604 | | - projectGroup: selectedProjectGroup?.id, |
605 | | - segmentId: org.segmentId, |
606 | | - }, |
607 | | - }" |
608 | | - class="block h-full" |
609 | | - > |
610 | | - <div class="text-sm h-full flex items-center"> |
611 | | - <span |
612 | | - v-if="org.size || org.employees" |
613 | | - class="text-gray-900" |
614 | | - > |
615 | | - {{ org.size || org.employees }} |
616 | | - </span> |
617 | | - <span v-else class="text-gray-500">-</span> |
618 | | - </div> |
619 | | - </router-link> |
620 | | - </lf-table-cell> |
621 | | - |
622 | 466 | <!-- Inferred Revenue --> |
623 | 467 | <lf-table-cell |
624 | 468 | v-if="showReach" |
|
655 | 499 | </router-link> |
656 | 500 | </lf-table-cell> |
657 | 501 |
|
658 | | - <!-- Founded --> |
659 | | - <lf-table-cell |
660 | | - class="!py-4 pl-3" |
661 | | - @mouseover="() => handleCellMouseEnter(org, 'founded')" |
662 | | - @mouseleave="closeEnrichmentPopover" |
663 | | - > |
664 | | - <router-link |
665 | | - :ref=" |
666 | | - (el) => |
667 | | - setEnrichmentAttributesRef(el, `${org.id}-founded`) |
668 | | - " |
669 | | - :to="{ |
670 | | - name: 'organizationView', |
671 | | - params: { id: org.id }, |
672 | | - query: { |
673 | | - projectGroup: selectedProjectGroup?.id, |
674 | | - segmentId: org.segmentId, |
675 | | - }, |
676 | | - }" |
677 | | - class="block h-full" |
678 | | - > |
679 | | - <div class="text-sm h-full flex items-center"> |
680 | | - <span v-if="org.founded" class="text-gray-900"> |
681 | | - {{ org.founded }} |
682 | | - </span> |
683 | | - <span v-else class="text-gray-500">-</span> |
684 | | - </div> |
685 | | - </router-link> |
686 | | - </lf-table-cell> |
687 | | - |
688 | | - <!-- Employee Growth Rate --> |
689 | | - <lf-table-cell |
690 | | - class="!py-4 pl-3" |
691 | | - @mouseover=" |
692 | | - () => handleCellMouseEnter(org, 'employeeGrowthRate') |
693 | | - " |
694 | | - @mouseleave="closeEnrichmentPopover" |
695 | | - > |
696 | | - <router-link |
697 | | - :ref=" |
698 | | - (el) => |
699 | | - setEnrichmentAttributesRef( |
700 | | - el, |
701 | | - `${org.id}-employeeGrowthRate`, |
702 | | - ) |
703 | | - " |
704 | | - :to="{ |
705 | | - name: 'organizationView', |
706 | | - params: { id: org.id }, |
707 | | - }" |
708 | | - class="block h-full" |
709 | | - > |
710 | | - <div class="text-sm h-full flex items-center"> |
711 | | - <span |
712 | | - v-if="org.employeeGrowthRate?.['12_month']" |
713 | | - class="text-gray-900" |
714 | | - > |
715 | | - {{ |
716 | | - Object.values( |
717 | | - employeeGrowthRate.formatValue( |
718 | | - org.employeeGrowthRate, |
719 | | - ), |
720 | | - )?.[0] |
721 | | - }} |
722 | | - </span> |
723 | | - <span v-else class="text-gray-500">-</span> |
724 | | - </div> |
725 | | - </router-link> |
726 | | - </lf-table-cell> |
727 | | - |
728 | | - <!-- Tags --> |
729 | | - <lf-table-cell |
730 | | - class="!py-4 pl-3" |
731 | | - @mouseover="() => handleCellMouseEnter(org, 'tags')" |
732 | | - @mouseleave="closeEnrichmentPopover" |
733 | | - > |
734 | | - <router-link |
735 | | - :ref=" |
736 | | - (el) => |
737 | | - setEnrichmentAttributesRef(el, `${org.id}-tags`) |
738 | | - " |
739 | | - :to="{ |
740 | | - name: 'organizationView', |
741 | | - params: { id: org.id }, |
742 | | - }" |
743 | | - class="block h-full" |
744 | | - > |
745 | | - <div> |
746 | | - <app-shared-tag-list |
747 | | - v-if="org.tags?.length" |
748 | | - :list="org.tags" |
749 | | - :slice-size="5" |
750 | | - > |
751 | | - <template #itemSlot="{ item }"> |
752 | | - <span |
753 | | - class="border border-gray-200 px-2 text-xs rounded-lg h-6 bg-white text-gray-900 inline-flex break-keep" |
754 | | - > |
755 | | - {{ item }} |
756 | | - </span> |
757 | | - </template> |
758 | | - </app-shared-tag-list> |
759 | | - <span v-else class="text-gray-500">-</span> |
760 | | - </div> |
761 | | - </router-link> |
762 | | - </lf-table-cell> |
763 | | - |
764 | 502 | <!-- Action button --> |
765 | 503 | <lf-table-cell |
766 | 504 | v-if="hasPermissions" |
|
850 | 588 | </template> |
851 | 589 |
|
852 | 590 | <script setup> |
853 | | -import { |
854 | | - computed, ref, watch, onUnmounted, |
855 | | -} from 'vue'; |
856 | | -import { useRouter } from 'vue-router'; |
857 | | -import { ClickOutside as vClickOutside } from 'element-plus'; |
858 | | -import { storeToRefs } from 'pinia'; |
859 | | -import { formatDateToTimeAgo } from '@/utils/date'; |
860 | | -import { formatNumberToCompact } from '@/utils/number'; |
861 | | -import { withHttp, toSentenceCase } from '@/utils/string'; |
862 | | -import { useOrganizationStore } from '@/modules/organization/store/pinia'; |
863 | | -import AppOrganizationMergeDialog from '@/modules/organization/components/organization-merge-dialog.vue'; |
864 | 591 | import { useLfSegmentsStore } from '@/modules/lf/segments/store'; |
865 | | -import employeeGrowthRate from '@/modules/organization/config/enrichment/employeeGrowthRate'; |
| 592 | +import AppOrganizationMergeDialog from '@/modules/organization/components/organization-merge-dialog.vue'; |
866 | 593 | import revenueRange from '@/modules/organization/config/enrichment/revenueRange'; |
867 | | -import AppSharedTagList from '@/shared/tag/tag-list.vue'; |
868 | | -import LfSvg from '@/shared/svg/svg.vue'; |
869 | | -import AppIdentitiesHorizontalListOrganizations from '@/shared/modules/identities/components/identities-horizontal-list-organizations.vue'; |
870 | 594 | import { OrganizationService } from '@/modules/organization/organization-service'; |
| 595 | +import { useOrganizationStore } from '@/modules/organization/store/pinia'; |
| 596 | +import AppEmptyStateCta from '@/shared/empty-state/empty-state-cta.vue'; |
871 | 597 | import LfDefaultFilters from '@/shared/modules/default-filters/components/default-filters.vue'; |
872 | | -import usePermissions from '@/shared/modules/permissions/helpers/usePermissions'; |
873 | | -import { LfPermission } from '@/shared/modules/permissions/types/Permissions'; |
| 598 | +import AppIdentitiesHorizontalListOrganizations from '@/shared/modules/identities/components/identities-horizontal-list-organizations.vue'; |
874 | 599 | import { |
875 | 600 | EventType, |
876 | 601 | FeatureEventKey, |
877 | 602 | } from '@/shared/modules/monitoring/types/event'; |
878 | 603 | import useProductTracking from '@/shared/modules/monitoring/useProductTracking'; |
879 | | -import { getOrganizationWebsite } from '@/utils/organization'; |
| 604 | +import usePermissions from '@/shared/modules/permissions/helpers/usePermissions'; |
| 605 | +import { LfPermission } from '@/shared/modules/permissions/types/Permissions'; |
| 606 | +import LfSvg from '@/shared/svg/svg.vue'; |
| 607 | +import LfCheckbox from '@/ui-kit/checkbox/Checkbox.vue'; |
880 | 608 | import LfIcon from '@/ui-kit/icon/Icon.vue'; |
881 | | -import AppEmptyStateCta from '@/shared/empty-state/empty-state-cta.vue'; |
882 | 609 | import LfTable from '@/ui-kit/table/Table.vue'; |
883 | 610 | import LfTableCell from '@/ui-kit/table/TableCell.vue'; |
884 | 611 | import LfTableHead from '@/ui-kit/table/TableHead.vue'; |
885 | | -import LfCheckbox from '@/ui-kit/checkbox/Checkbox.vue'; |
886 | | -import AppOrganizationListToolbar from './organization-list-toolbar.vue'; |
887 | | -import AppOrganizationName from '../organization-name.vue'; |
888 | | -import AppOrganizationDropdownContent from '../organization-dropdown-content.vue'; |
| 612 | +import { formatNumberToCompact } from '@/utils/number'; |
| 613 | +import { getOrganizationWebsite } from '@/utils/organization'; |
| 614 | +import { withHttp } from '@/utils/string'; |
| 615 | +import { ClickOutside as vClickOutside } from 'element-plus'; |
| 616 | +import { storeToRefs } from 'pinia'; |
| 617 | +import { |
| 618 | + computed, |
| 619 | + onUnmounted, |
| 620 | + ref, watch, |
| 621 | +} from 'vue'; |
| 622 | +import { useRouter } from 'vue-router'; |
889 | 623 | import { organizationSavedViews } from '../../config/saved-views/main'; |
| 624 | +import AppOrganizationDropdownContent from '../organization-dropdown-content.vue'; |
| 625 | +import AppOrganizationName from '../organization-name.vue'; |
| 626 | +import AppOrganizationListToolbar from './organization-list-toolbar.vue'; |
890 | 627 |
|
891 | 628 | const { trackEvent } = useProductTracking(); |
892 | 629 | const router = useRouter(); |
|
0 commit comments