/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2014-2020 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * 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.
 */

(function () {
  'use strict';

  angular.module('pnc.products').component('pncProductsList', {
    bindings: {
      /**
       * Array<ProductResource>: The products to display in the table.
       */
      products: '<',
      /**
       * Array<string>: Names of table columns to display, possible values are:
       *     name, abbreviation, description
       * Default fields will be used if omitted.
       */
      displayFields: '<?'
    },
    templateUrl: 'products/components/pnc-products-data-table/pnc-products-list.html',
    controller: [Controller]
  });

  function Controller() {
    const $ctrl = this;
    const DEFAULT_FIELDS = ['name', 'abbreviation'];

    let fields;

    // -- Controller API --

    $ctrl.showTable = showTable;
    $ctrl.showColumn = showColumn;

    // --------------------


    $ctrl.$onInit = () => {
      fields = $ctrl.displayFields || DEFAULT_FIELDS;
    };

    function showTable() {
      return $ctrl.products && $ctrl.products.length;
    }

    function showColumn(name) {
      return fields.includes(name);
    }
  }

})();
