summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/element-table-row.model.ts
blob: 250e2c1fa45005c8cd958d1859e80b9f04358e09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import {VnfMember} from "../../../models/VnfMember";
import {Observable} from "rxjs";
import {CustomTableColumnDefinition} from "./elements-table.component";

export class ElementTableRowModel extends VnfMember {
  isSelected: boolean = false;
}


/*******************************************************************************************************************************
                ModalInformation
 *  @type: popup type (VPN, NETWORK, VNFGROUP)
 *  @title: popup title
 *  @description: popup upper message
 *  @topButtonText: (optional)
 *    @text: button text
 *    @action: button action
 *  @backAction : arrow back button action (can close the modal/move to next step)
 *  @uniqObjectField: uniq object field that we can find in O(1)
 *  @maxSelectRow: max number of row that user can select (default = no limit)(optional)
 *  @getElements: function that should return Observable<any[]> of collection of elements to show in the table
 *  @noElementsMsg : when there are no element some message should shown
 *  @searchFields : extra information in the left section
 *  @criteria: extra criteria on table content (optional)
 *  @tableHeaders : table headers
 *  @tableContent: table td's information.

 ******************************************************************************************************************************/

export class  ModalInformation {
  type : string;
  currentCriteriaInfo? : Object;
  title ?: string;
  description ?: string;
  topButton?: {
    text ?: string,
    action ?: (...args) => any
  };
  searchButton?: {
    text ?: string,
    action ?: (...args)=> any
  };
  backAction? : (...args) => any;
  uniqObjectField : string;
  maxSelectRow ?: number;
  getElements : (...args) => Observable<any[]>;
  noElementsMsg : string;
  searchFields: ISearchField[];
  criteria ?: ICriteria[];
  tableHeaders : CustomTableColumnDefinition[];
  tableContent : ITableContent[];
  serviceModelId: string;
}


export interface ISearchField {
  title: string;
  value: any;
  dataTestId: string;
  type : string;
}


export interface ICriteria {
  label: string;
  defaultValue: any;
  onInit?: (...args) => Observable<string>;
  onChange? : (...arg) => void;
  type : string;
  dataTestId : string;
  isRequired ?: boolean;
  currentValue ?: any;
}


export interface ITableContent {
  id : string;
  contents : {id : string[], value : string[], prefix ?: string, type? : string}[];
}

export enum SearchFieldItemType {
  LABEL = 'LABEL',
  DROPDOWN = 'DROPDOWN'
}