name: reports
label: Report
icon: report
enable_space_global: true
hidden: true
version: 2
fields:
  name:
    label: Name
    type: text
    required: true
    searchable: true
    index: true
    name: name
  report_type:
    label: Report Type
    type: select
    defaultValue: tabular
    options: 
      - label: Tabular
        value: tabular
      - label: Summary
        value: summary
      - label: Matrix
        value: matrix
    name: report_type
    filterable: true
  # data_source:
  #   label: Data Source
  #   type: select
  #   defaultValue: odata
  #   options:
  #     - label: OData
  #       value: odata
  #     - label: Graphql
  #       value: graphql
  #   name: data_source
  #   filterable: true
  object_name:
    label: Object
    type: lookup
    reference_to: objects
    reference_to_field: name
    required: true
    name: object_name
    filterable: true
  # filter_scope:
  #   label: Filter Scope
  #   type: select
  #   defaultValue: '"space"'
  #   hidden: true
  #   options:
  #     - label: All
  #       value: space
  #     - label: Mine
  #       value: mine
  #   name: filter_scope
  #   filterable: true
  # filters:
  #   label: Filters
  #   type: '[Object]'
  #   omit: true
  #   name: filters
  # filters.$:
  #   label: Filter
  #   blackbox: true
  #   omit: true
  #   hidden: true
  #   name: filters.$
  # filters.$.field:
  #   label: Field
  #   type: text
  #   name: filters.$.field
  # filters.$.operation:
  #   label: Operator
  #   type: select
  #   defaultValue: =
  #   options: !<tag:yaml.org,2002:js/function> |- 
  #     function () {
  #             return Creator.getFieldOperation();
  #         }
  #   name: filters.$.operation
  #   filterable: true
  # filters.$.value:
  #   label: Value
  #   blackbox: true
  #   name: filters.$.value
  # filter_logic:
  #   label: Filter Logic
  #   type: text
  #   omit: true
  #   name: filter_logic
  fields:
    label: Fields
    type: lookup
    multiple: true
    is_wide: true
    depend_on:
      - object_name
    defaultIcon: service_contract
    reference_to: object_fields
    reference_to_field: name
    enable_enhanced_lookup: false
    filtersFunction: !<tag:yaml.org,2002:js/function> |-
      function anonymous(filters,values
      ) {
        return ['object', '=', values.object_name]
      }
    name: fields
    filterable: true
  rows:
    label: Rows
    type: lookup
    multiple: true
    is_wide: true
    depend_on:
      - object_name
    defaultIcon: service_contract
    reference_to: object_fields
    reference_to_field: name
    enable_enhanced_lookup: false
    filtersFunction: !<tag:yaml.org,2002:js/function> |-
      function anonymous(filters,values
      ) {
        return ['object', '=', values.object_name]
      }
    name: rows
    filterable: true
  columns:
    label: Columns
    type: lookup
    multiple: true
    is_wide: true
    depend_on:
      - object_name
    defaultIcon: service_contract
    reference_to: object_fields
    reference_to_field: name
    enable_enhanced_lookup: false
    filtersFunction: !<tag:yaml.org,2002:js/function> |-
      function anonymous(filters,values
      ) {
        return ['object', '=', values.object_name]
      }
    name: columns
    filterable: true
  values:
    label: Statistical Values
    type: lookup
    multiple: true
    is_wide: true
    depend_on:
      - object_name
    defaultIcon: service_contract
    reference_to: object_fields
    reference_to_field: name
    enable_enhanced_lookup: false
    filtersFunction: !<tag:yaml.org,2002:js/function> |-
      function anonymous(filters,values
      ) {
        return ['object', '=', values.object_name]
      }
    name: values
    filterable: true
  # filter_fields:
  #   label: Filter Fields
  #   type: grid
  #   is_wide: true
  #   name: filter_fields
  #   depend_on:
  #     - object_name
  # filter_fields.$:
  #   label: Filter Field
  #   blackbox: true
  #   type: object
  #   name: filter_fields.$
  # filter_fields.$.field:
  #   label: Field
  #   type: lookup
  #   optionsFunction: !<tag:yaml.org,2002:js/function> |- 
  #     function (values) {
  #               return Creator.getObjectFilterFieldOptions(values != null ? values.object_name : void 0);
  #           }
  #   name: filter_fields.$.field
  #   filterable: true
  # filter_fields.$.required:
  #   label: Required
  #   type: boolean
  #   name: filter_fields.$.required
  options:
    label: Options
    omit: true
    blackbox: true
    name: options
  description:
    label: Description
    type: textarea
    is_wide: true
    name: description
  charting:
    label: Show Chart
    type: boolean
    defaultValue: true
    name: charting
  grouping:
    label: Show Group Subtotals
    type: boolean
    defaultValue: true
    name: grouping
  totaling:
    label: Show Total
    type: boolean
    defaultValue: true
    name: totaling
  counting:
    label: Show Record Count
    type: boolean
    defaultValue: true
    name: counting
  is_system:
    type: boolean
    label: System
    # omit: true
    readonly: true
    visible_on: "{{global.mode ==='read' ? true : false}}"
    disabled: true
list_views:
  all:
    label: All Reports
    filter_scope: space
    filter_fields:
      - report_type
      - created
    columns:
      - name
      - report_type
      - object_name
      - is_system
  mine:
    label: My Reports
    filter_scope: mine
    filter_fields:
      - report_type
      - created
permission_set:
  user:
    allowCreate: true
    allowDelete: true
    allowEdit: true
    allowRead: true
    modifyAllRecords: false
    viewAllRecords: true
    disabled_list_views:
      - all
  admin:
    allowCreate: true
    allowDelete: true
    allowEdit: true
    allowRead: true
    modifyAllRecords: true
    viewAllRecords: true