Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
11 kB
0
Indexable
Never
/*******************************************************************************
*
*  Copyright (C) Capgemini Engineering ACT S.A.S. 2017-2023.  All rights reserved.
*
********************************************************************************/
/*******************************************************************************
*
*  Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021,2023.  All rights reserved.
*
********************************************************************************/

import { Component, Inject, OnInit } from '@angular/core';
import { DataTableV2, Modal } from 'carbon-components';
import { AppService } from '../../../app.service';
import { ConfigConstant } from '../../../app.constant';
import { OverflowMenuModel, CommonUtilitiesLib, StorageUtilityLib, AuthticationLib ,
    SearchModel, PaginationModel } from '../../../shared';
import { Router, ActivatedRoute } from '@angular/router';
import { AppCommonService } from '../../../app-common.service';
import { DeleteConfirmationModel } from '../../../shared/models';
import { TranslateService } from '@ngx-translate/core';
import { environment } from '../../../../environments/environment';
import { ToastrService } from 'ngx-toastr';
import { Trans } from '../../../translate-service.constant';

/**
 * Class contain the property and functions of list Nodes  component
 *
 * @export
 * @class AppAdminNodeListComponent
 */
@Component({
    templateUrl: './admin.listing.component.html',
    styleUrls: ['./admin.listing.component.scss']
})
export class AppAdminNodeListComponent implements OnInit {
    tableHeaderKeys = ['adminNodeName', 'nodeIpAddress', 'port', 'adminProtocol', 'nodeDescription'];
    tableData = [];
    nodeId:string;
    editDeleteOverFlowMenuConf: OverflowMenuModel;
    searchConf: SearchModel;
    deleteConfirmationTab: DeleteConfirmationModel;
    deleteAuthModal: Modal;
    rowNumbToDelete: any;
    textLimit: number = ConfigConstant.getData('grid').maxColumnText;
    paginationConf: PaginationModel;
    sourceData: any;
    exportData = [];
    showMoreRecordNotification: Boolean = false;
    headerListSearch = [];
    listlength = 0;
    keyListTemp: any[] = [];
    constructor(
        protected appService: AppService,
        private router: Router,
        private toastr: ToastrService,
        private commonUtilitiesLib: CommonUtilitiesLib,
        private appCommonService: AppCommonService,
        private translateService: TranslateService,
        private activeRoute: ActivatedRoute,
        private authticationLib: AuthticationLib,
        @Inject(Trans) private trans: Trans
    ) {


    }

    ngOnInit() {
        this.deleteAuthModal = Modal.create(document.querySelector('[data-modal].delete-confirm'));
        const that = this;
        this.getAllNodesAdmin();
        this.editDeleteOverFlowMenuConf = {
            menuImage: 'assets/source-images/menu_icon.svg',
            menuAltImage: 'assets/source-images/menu_colored_icon.svg',
            menuStyleConf: {
                parentClass: 'custom-datatable-menu',
                optionsClass: 'custom-datatable-menu-options'
            },
            menuOptions: [
                {
                    label: 'adminListing.edit',
                    actionType: 'edit'
                },
                {
                    label: 'adminListing.delete',
                    actionType: 'delete'
                },
                {
                    label: 'adminListing.duplicate',
                    actionType: 'duplicate'
                }
            ],
            actionsHandler: {
                doAction: (rowItem, actionType) => {
                    switch (actionType) {
                        case 'delete':
                        that.deleteAuthModal.show();
                        this.rowNumbToDelete = rowItem;
                            break;
                        case 'edit':
                            this.editNode(rowItem);
                            break;
                            case 'duplicate':
                                this.duplicateNode(rowItem);
                                break;
                    }
                }
            }
        };
        this.searchConf = {
            searchText: ''
        };

        this.deleteConfirmationTab = {
            primaryHeadingNormal: 'adminListing.deleteConfirmation',
            primaryHeadingBold: 'adminListing.deleteConfirmationLabel',
            primaryHeadingUrl: '',
            primarybutton: {
                label: 'adminListing.yesButton',
                url: [],
                activeUrl: '',
                customAction: false,
                actionType: 'primary',
                className: '',
                showActive: false,
                activeLogo: '',
                showAlert: false,
                alertClass: '',
                alertlogo: ''
            },
            secondarybutton: {
                label: 'adminListing.noButton',
                url: [],
                activeUrl: '',
                customAction: false,
                actionType: 'secondary',
                className: '',
                showActive: false,
                activeLogo: '',
                showAlert: false,
                alertClass: '',
                alertlogo: ''
            },
            actionsHandler: {
                decideAction: function (actionType) {
                    switch (actionType) {
                        case 'primary':
                        that.deleteNode(that.rowNumbToDelete);
                        break;
                        case 'secondary':
                            break;
                    }
                }
            }
        };
        this.paginationConf = {
            showTotalItems: false,
            showTotalPage: false,
            disablePreviousBtn: true,
            disableForwardBtn: true,
            itemLabel: 'adminListing.nodesPerPage',
            itemPerPageOption: [10, 20, 30, 40, 50],
            itemPerPage: 10,
            pageNumber: 1,
            actionsHandler: {
                doAction: (pageNo, itemPerPage) => {
                    this.displayData(pageNo, itemPerPage);
                }
            }
        };

    }

    getAllNodesAdmin() {
        const dummyGrpJson = {};
        dummyGrpJson['adminNodeName'] = '*ALL';

        this.appService.masterWrapperAdmin(
            this.appCommonService.designMaterRequest({
                'allparameters': this.commonUtilitiesLib.copy(dummyGrpJson),
                'verbtype': 'get',
                'apisname': ['ADMINUSERNODENAMES'],
                'responseformat': 'rest'
            })
        ).subscribe((success: any) => {
            const nodes = success.data[0].ADMINUSERNODENAMES;
            if(!nodes[0]['messageCode']) {
                this.exportData = this.commonUtilitiesLib.copy(nodes);
                this.exportData = nodes.map(node => {
                    return {
                        ...node,
                        nodeDescription: node.nodeDescription ? node.nodeDescription : '', // Change nodeDescription to empty string if it's null
                    };
                });
                for (let i = 0; i < nodes.length; i++) {
                    nodes[i].adminProtocol = nodes[i].adminProtocol.toUpperCase();
                    this.tableData[i] = nodes[i];
                    this.tableData[i]['highlight'] = false;
                }
            }
            else{
                this.exportData = [];
            }
            this.sourceData = this.tableData;
            this.paginationConf.pageNumber = 1;
            this.displayData( this.paginationConf.pageNumber, this.paginationConf.itemPerPage);
        }, error => {
            this.tableData = [];
        });
    }

    exportNode() {
        if (this.exportData.length == 0) {
            this.toastr.success('No data to be exported.', '', { easeTime: 3000 });
        } else {
            this.appCommonService.exportNodeList(this.exportData);
        }
    }
    
    duplicateNode(object) {
      // Create a deep copy of the node to duplicate
      const duplicatedNode: Node = JSON.parse(JSON.stringify(object));
    console.log(duplicatedNode);
      // Generate a unique identifier for the duplicated node (optional)
      const uniqueIdentifier = Date.now().toString();
    
      // Assign the new unique identifier to the duplicated node (optional)
     // duplicatedNode.nodeId = uniqueIdentifier;
     this.router.navigate(['/admin', 'new', object.item.adminNodeName, 'duplicate']);
      // Navigate to the new route for editing and creating a new node
    //   this.router.navigate(['/duplicate-and-edit-node'], {
    //     state: { duplicatedNodeData: duplicatedNode },
    //   });
    }
    

    editNode(object: any) {
        this.router.navigate(['/admin', 'new', object.item.adminNodeName, 'editAdminNode']);
    }

    deleteNode(objectID: any) {
        this.appService.masterWrapperAdmin(
            {
                params: {
                    'allparameters': this.commonUtilitiesLib.copy(objectID.item),
                    'allconfig': this.commonUtilitiesLib.copy({
                        'verbtype': 'delete',
                        'apiname': ['ADMINUSERNODENAMES;'],
                        'responseformat': {
                            'format': 'rest'
                        }
                    })
                }
            }
        ).subscribe((success: any) => {
            this.toastr.success(this.translateService.instant('adminListing.deleteSuccesssMessage'));
            this.getAllNodesAdmin();
            this.tableData = [];
            this.deleteAuthModal.hide();
        }, error => {
            this.toastr.error(this.translateService.instant('adminListing.deleteFailMessage'));
        });
    }

    displayData(page, itemPerPage) { 
        if (page === 1) {
            this.paginationConf.disablePreviousBtn = true;
        } else {
            this.paginationConf.disablePreviousBtn = false;
        }

        if (page * itemPerPage < this.sourceData.length) {
            this.paginationConf.disableForwardBtn = false;
        } else {
            this.paginationConf.disableForwardBtn = true;
        }

        if ((page - 1) * itemPerPage <= this.sourceData.length) {
            this.tableData = this.sourceData.slice((page - 1) * itemPerPage, page * itemPerPage);
            this.tableData = (this.tableData[0] && this.tableData[0].adminNodeName) ? this.tableData : [];
            this.listlength = this.tableData.length;
            this.keyListTemp = this.trans.getData('keyList').keyListAll;
            this.keyListTemp.forEach(element => {
                this.headerListSearch.push(element.key);
            });
       } else {
            if (this.sourceData.length > 500) {
                this.showMoreRecordNotification = true;
            }
        }
    }
}