<link rel="import" href="gr-checks-view.html">
<link rel="import" href="gr-checks-item.html">
<link rel="import" href="gr-checks-status.html">
<link rel="import" href="gr-checks-chip-view.html">
<link rel="import" href="gr-checks-change-list-item-cell-view.html">
<link rel="import" href="gr-checks-change-list-header-view.html">
<link rel="import" href="gr-checks-change-view-tab-header-view.html">

<dom-module id="gr-checks">
  <script>
    Gerrit.install(plugin => {
      const getChecks = (change, revision) => {
        return plugin.restApi().get(
            '/changes/' + change + '/revisions/' + revision + '/checks?o=CHECKER');
      };

      // TODO(brohlfs): Enable this dashboard column when search queries start
      // returning checks.
      // plugin.registerDynamicCustomComponent(
      //     'change-list-header',
      //     'gr-checks-change-list-header-view');
      // plugin.registerDynamicCustomComponent(
      //     'change-list-item-cell',
      //     'gr-checks-change-list-item-cell-view');
      plugin.registerCustomComponent(
          'commit-container',
          'gr-checks-chip-view').onAttached(
          view => {
            view['getChecks'] = getChecks;
          }
      );
      plugin.registerDynamicCustomComponent(
          'change-view-tab-header',
          'gr-checks-change-view-tab-header-view'
      );
      plugin.registerDynamicCustomComponent(
          'change-view-tab-content',
          'gr-checks-view').onAttached(
          view => {
            view['isConfigured'] = repository => Promise.resolve(true);
            view['getChecks'] = getChecks;
          });
    });
  </script>
</dom-module>
