/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

export const ADD_DASHBOARD_QUERY = 'ADD_DASHBOARD_QUERY';

// dashboard
export const SET_CURRENT_INDEX = 'SET_CURRENT_INDEX';
export const SET_GLOBAL = 'SET_GLOBAL';
export const CLEAR_GLOBAL = 'CLEAR_GLOBAL';
export const SET_SERVICES = 'SET_SERVICES';
export const SET_DATABASES = 'SET_DATABASES';
export const SET_DATABASE_INFO = 'SET_DATABASE_INFO';
export const SET_CURRENT_DATABASE = 'SET_CURRENT_DATABASE';
export const SET_CURRENT_SERVICE = 'SET_CURRENT_SERVICE';
export const SET_SERVICE_INFO = 'SET_SERVICE_INFO';
export const SET_ENDPOINTS = 'SET_ENDPOINTS';
export const SET_CURRENT_ENDPOINT = 'SET_CURRENT_ENDPOINT';
export const SET_ENDPOINT_INFO = 'SET_ENDPOINT_INFO';
export const SET_INSTANCES = 'SET_INSTANCES';
export const SET_CURRENT_INSTANCE = 'SET_CURRENT_INSTANCE';
export const SET_INSTANCE_INFO = 'SET_INSTANCE_INFO';
export const SET_KEYWORDSERVICE = 'SET_KEYWORDSERVICE';
export const SET_TEMPLATES = 'SET_TEMPLATES';

// comp
export const SET_CURRENT_GROUP = 'SET_CURRENT_GROUP';
export const SET_CURRENT_GROUP_WITH_CURRENT = 'SET_CURRENT_GROUP_WITH_CURRENT';
export const SET_CURRENT_COMPS = 'SET_CURRENT_COMPS';
export const ADD_COMPS_GROUP = 'ADD_COMPS_GROUP';
export const IMPORT_TREE = 'IMPORT_TREE';
export const IMPORT_COMPS_TREE = 'IMPORT_COMPS_TREE';
export const ADD_COMPS_TREE = 'ADD_COMPS_TREE';
export const DELETE_COMPS_GROUP = 'DELETE_COMPS_GROUP';
export const DELETE_COMPS_TREE = 'DELETE_COMPS_TREE';
export const ADD_COMP = 'ADD_COMP';
export const DELETE_COMP = 'DELETE_COMP';
export const SET_COMPS_TREE = 'SET_COMPS_TREE';
export const SWICH_CURRENTCOMP = 'SWICH_CURRENTCOMP';
export const SET_GROUP_QUERY = 'SET_GROUP_QUERY';
export const EDIT_COMP_CONFIG = 'EDIT_COMP_CONFIG';
export const SET_COMPS_ID = 'SET_COMPS_ID';
