• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15import {copyToClipboard} from '../base/clipboard';
16import {Actions} from '../common/actions';
17import {QueryResponse} from '../common/queries';
18
19import {globals} from './globals';
20
21export function onClickCopy(url: string) {
22  return (e: Event) => {
23    e.preventDefault();
24    copyToClipboard(url);
25    globals.dispatch(
26      Actions.updateStatus({
27        msg: 'Link copied into the clipboard',
28        timestamp: Date.now() / 1000,
29      }),
30    );
31  };
32}
33
34export async function queryResponseToClipboard(
35  resp: QueryResponse,
36): Promise<void> {
37  const lines: string[][] = [];
38  lines.push(resp.columns);
39  for (const row of resp.rows) {
40    const line = [];
41    for (const col of resp.columns) {
42      const value = row[col];
43      line.push(value === null ? 'NULL' : `${value}`);
44    }
45    lines.push(line);
46  }
47  copyToClipboard(lines.map((line) => line.join('\t')).join('\n'));
48}
49