All files / src/contracts field-action.ts

100% Statements 6/6
100% Branches 2/2
100% Functions 1/1
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105                                                                                                                                                  12x 12x 12x 12x 12x 12x                                                    
/*
    Copyright (C) 2017 Red Hat, Inc.
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
 
            http://www.apache.org/licenses/LICENSE-2.0
 
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/
 
import { CollectionType, FieldType } from './common';
 
/**
 * The field action Data model contracts between frontend and backend.
 */
 
/**
 * The root object that carries {@link IAActionDetails}
 * when it's received from backend.
 */
export interface IActionDetailsContainer {
  ActionDetails: IActionDetails;
}
 
/**
 * The container of serialized {@link IActionDetail}.
 */
export interface IActionDetails {
  actionDetail: IActionDetail[];
}
 
/**
 * The serialized field action detail.
 */
export interface IActionDetail {
  parameters?: IActionParameters;
  name: string;
  custom: boolean;
  className: string;
  method: string;
  sourceType: FieldType;
  targetType: FieldType;
  multiplicity: Multiplicity;
  actionSchema: IActionSchema;
}
 
/**
 * The container of serialized field action parameter in old style.
 */
export interface IActionParameters {
  actionParameter: IActionParameter[];
}
 
/**
 * The serialized field action parameter in old style.
 */
export interface IActionParameter {
  values: string[];
  name: string;
  displayName: string;
  description: string;
  fieldType: FieldType;
}
 
/**
 * The multiplicity of the field action.
 */
export enum Multiplicity {
  ONE_TO_ONE = 'ONE_TO_ONE',
  ONE_TO_MANY = 'ONE_TO_MANY',
  MANY_TO_ONE = 'MANY_TO_ONE',
  ZERO_TO_ONE = 'ZERO_TO_ONE',
  MANY_TO_MANY = 'MANY_TO_MANY',
}
 
/**
 * The newer style of field action metadata.
 */
export interface IActionSchema {
  type: string;
  id: string;
  properties: IActionSchemaProperties;
}
 
/**
 * The newer style of field action parameter metadata.
 */
export interface IActionSchemaProperties {
  [key: string]: {
    type: string;
    const: string;
    description: string;
    title: string;
    enum?: string[];
    'atlas-field-type'?: FieldType;
    'atlas-collection-type'?: CollectionType;
  };
}