<!--
Copyright (C) 2017 The Android Open Source Project

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.
-->

<script>
(function(window) {
  'use strict';

  window.Gerrit = window.Gerrit || {};

  const PROJECT_DASHBOARD_PATTERN = /\/p\/(.+)\/\+\/dashboard\/(.*)/;

  /** @polymerBehavior Gerrit.BaseUrlBehavior */
  Gerrit.BaseUrlBehavior = {
    /** @return {string} */
    getBaseUrl() {
      return window.CANONICAL_PATH || '';
    },

    computeGwtUrl(path) {
      const base = this.getBaseUrl();
      let clientPath = path.substring(base.length);
      const match = clientPath.match(PROJECT_DASHBOARD_PATTERN);
      if (match) {
        clientPath = `/projects/${match[1]},dashboards/${match[2]}`;
      }
      return base + '/?polygerrit=0#' + clientPath;
    },
  };
})(window);
</script>
