blob: 31c6ad0853485f98b5d555af50e150e36d74c09c [file] [log] [blame]
<!--
Copyright 2016 The LUCI Authors. All rights reserved.
Use of this source code is governed under the Apache License, Version 2.0
that can be found in the LICENSE file.
-->
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import"
href="../bower_components/html5-history-anchor/html5-history-anchor.html">
<link rel="import" href="rpc-descriptor-util.html">
<!-- The `rpc-service-list` is a service list page -->
<dom-module id="rpc-service-list">
<template>
<p>Services:</p>
<ul>
<template is="dom-repeat" items="[[services]]" as="service">
<li>
<a is="html5-history-anchor" pushstate popstate
href="[[service.name]]/">[[service.name]]</a>
<span class="text-muted comment">[[_comment(service)]]</span>
</li>
</template>
</ul>
</template>
<script>
'use strict';
Polymer({
is: 'rpc-service-list',
properties: {
/** @type {FileDescriptorSet}
description: Object,
/** @type {Array.<string>} */
serviceNames: Array,
/** @type {Array.<{name: string, comment: string}>} */
services: {
type: Array,
computed: '_resolveServices(description, serviceNames)'
}
},
_resolveServices: function(desc, names) {
var result = [];
for (var i = 0; i < names.length; i++) {
var svc = rpcExplorer.descUtil.resolve(desc, names[i]);
if (svc && svc.type === 'service') {
var info = svc.desc.sourceCodeInfo;
result.push({
name: names[i],
comments: info && info.leadingComments
});
}
}
return result;
},
_comment: function(service) {
// A.B.C.D => D.
var name = service.name;
var idx = name.lastIndexOf('.');
if (idx != -1) {
name = name.substr(idx+1);
}
return rpcExplorer.descUtil.normalizeComment(service.comments, name);
}
});
</script>
</dom-module>