From 85879a701493a2562b9cd8bffb3fe1067ea36aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 20 Dec 2017 12:33:33 +0100 Subject: [PATCH] prettier: change to single quoting --- package.json | 4 +- public/app/app.ts | 92 +- public/app/core/app_events.ts | 2 +- .../components/code_editor/code_editor.ts | 78 +- .../components/colorpicker/spectrum_picker.ts | 10 +- .../app/core/components/dashboard_selector.ts | 14 +- .../components/form_dropdown/form_dropdown.ts | 64 +- public/app/core/components/gf_page.ts | 14 +- public/app/core/components/grafana_app.ts | 200 ++-- public/app/core/components/help/help.ts | 78 +- public/app/core/components/info_popover.ts | 44 +- .../core/components/json_explorer/helpers.ts | 28 +- .../components/json_explorer/json_explorer.ts | 74 +- .../app/core/components/jsontree/jsontree.ts | 20 +- .../layout_selector/layout_selector.ts | 40 +- .../manage_dashboards/manage_dashboards.ts | 94 +- public/app/core/components/navbar/navbar.ts | 28 +- public/app/core/components/org_switcher.ts | 18 +- .../core/components/query_part/query_part.ts | 34 +- .../query_part/query_part_editor.ts | 50 +- public/app/core/components/scroll/scroll.ts | 16 +- public/app/core/components/search/search.ts | 32 +- .../core/components/search/search_results.ts | 28 +- .../app/core/components/sidemenu/sidemenu.ts | 48 +- public/app/core/components/switch.ts | 22 +- public/app/core/components/team_picker.ts | 22 +- public/app/core/components/user_picker.ts | 24 +- public/app/core/config.ts | 10 +- public/app/core/constants.ts | 2 +- public/app/core/controllers/error_ctrl.ts | 14 +- public/app/core/controllers/inspect_ctrl.ts | 18 +- public/app/core/controllers/invited_ctrl.ts | 20 +- .../app/core/controllers/json_editor_ctrl.ts | 6 +- public/app/core/controllers/login_ctrl.ts | 36 +- .../core/controllers/reset_password_ctrl.ts | 30 +- public/app/core/controllers/signup_ctrl.ts | 24 +- public/app/core/core.ts | 118 +- public/app/core/directives/array_join.ts | 18 +- public/app/core/directives/diff-view.ts | 32 +- public/app/core/directives/give_focus.ts | 4 +- public/app/core/directives/misc.ts | 116 +- .../app/core/directives/ng_model_on_blur.ts | 36 +- .../app/core/directives/rebuild_on_change.ts | 12 +- public/app/core/directives/tags.ts | 166 +-- public/app/core/filters/filters.ts | 32 +- public/app/core/live/live_srv.ts | 36 +- public/app/core/mod_defs.d.ts | 6 +- public/app/core/nav_model_srv.ts | 18 +- public/app/core/profiler.ts | 36 +- public/app/core/routes/bundle_loader.ts | 8 +- public/app/core/routes/dashboard_loaders.ts | 24 +- public/app/core/routes/routes.ts | 438 +++---- public/app/core/services/alert_srv.ts | 70 +- public/app/core/services/analytics.ts | 18 +- public/app/core/services/backend_srv.ts | 81 +- public/app/core/services/context_srv.ts | 18 +- .../core/services/dynamic_directive_srv.ts | 18 +- public/app/core/services/global_event_srv.ts | 16 +- public/app/core/services/impression_srv.ts | 10 +- public/app/core/services/keybindingSrv.ts | 130 +-- public/app/core/services/ng_react.ts | 46 +- public/app/core/services/popover_srv.ts | 18 +- public/app/core/services/search_srv.ts | 64 +- public/app/core/services/timer.ts | 6 +- public/app/core/services/util_srv.ts | 14 +- public/app/core/specs/backend_srv_specs.ts | 20 +- public/app/core/specs/datemath.jest.ts | 92 +- public/app/core/specs/emitter.jest.ts | 34 +- public/app/core/specs/flatten.jest.ts | 22 +- .../app/core/specs/global_event_srv.jest.ts | 18 +- public/app/core/specs/kbn.jest.ts | 404 +++---- .../app/core/specs/manage_dashboards.jest.ts | 326 +++--- public/app/core/specs/org_switcher.jest.ts | 26 +- public/app/core/specs/rangeutil.jest.ts | 130 +-- public/app/core/specs/search.jest.ts | 108 +- public/app/core/specs/search_results.jest.ts | 60 +- public/app/core/specs/search_srv.jest.ts | 152 +-- public/app/core/specs/store.jest.ts | 42 +- public/app/core/specs/table_model.jest.ts | 16 +- public/app/core/specs/time_series.jest.ts | 198 ++-- .../core/specs/value_select_dropdown_specs.ts | 104 +- public/app/core/store.ts | 2 +- public/app/core/table_model.ts | 2 +- public/app/core/time_series2.ts | 14 +- public/app/core/utils/colors.ts | 128 +- public/app/core/utils/css_loader.ts | 22 +- public/app/core/utils/datemath.ts | 24 +- public/app/core/utils/file_export.ts | 46 +- public/app/core/utils/flatten.ts | 4 +- public/app/core/utils/kbn.ts | 796 ++++++------- public/app/core/utils/outline.ts | 16 +- public/app/core/utils/rangeutil.ts | 128 +- public/app/core/utils/react2angular.ts | 6 +- public/app/core/utils/ticks.ts | 2 +- public/app/core/utils/version.ts | 2 +- public/app/features/admin/admin.ts | 28 +- .../app/features/admin/admin_edit_org_ctrl.ts | 20 +- .../features/admin/admin_edit_user_ctrl.ts | 46 +- .../features/admin/admin_list_orgs_ctrl.ts | 26 +- .../features/admin/admin_list_users_ctrl.ts | 18 +- public/app/features/alerting/alert_def.ts | 128 +- .../app/features/alerting/alert_list_ctrl.ts | 40 +- .../app/features/alerting/alert_tab_ctrl.ts | 164 +-- public/app/features/alerting/all.ts | 6 +- .../alerting/notification_edit_ctrl.ts | 32 +- .../alerting/notifications_list_ctrl.ts | 6 +- .../alerting/specs/alert_tab_specs.ts | 12 +- .../alerting/specs/threshold_mapper_specs.ts | 64 +- .../app/features/alerting/threshold_mapper.ts | 34 +- public/app/features/annotations/all.ts | 12 +- .../annotations/annotation_tooltip.ts | 34 +- .../features/annotations/annotations_srv.ts | 38 +- .../app/features/annotations/editor_ctrl.ts | 34 +- .../app/features/annotations/event_editor.ts | 28 +- .../app/features/annotations/event_manager.ts | 54 +- .../features/annotations/events_processing.ts | 14 +- .../specs/annotations_srv_specs.jest.ts | 30 +- .../specs/annotations_srv_specs.ts | 32 +- public/app/features/dashboard/acl/acl.ts | 56 +- .../features/dashboard/acl/specs/acl_specs.ts | 84 +- .../app/features/dashboard/ad_hoc_filters.ts | 62 +- public/app/features/dashboard/alerting_srv.ts | 4 +- public/app/features/dashboard/all.ts | 26 +- .../features/dashboard/create_folder_ctrl.ts | 14 +- .../app/features/dashboard/dashboard_ctrl.ts | 34 +- .../dashboard/dashboard_import_ctrl.ts | 48 +- .../features/dashboard/dashboard_migration.ts | 96 +- .../app/features/dashboard/dashboard_model.ts | 73 +- .../app/features/dashboard/dashboard_srv.ts | 74 +- .../dashgrid/DashboardGridDirective.ts | 8 +- .../dashboard/dashgrid/PanelContainer.ts | 4 +- .../dashboard/dashgrid/PanelLoader.ts | 8 +- .../features/dashboard/dashgrid/RowOptions.ts | 18 +- .../app/features/dashboard/dashnav/dashnav.ts | 42 +- .../features/dashboard/export/export_modal.ts | 28 +- .../app/features/dashboard/export/exporter.ts | 62 +- .../export_data/export_data_modal.ts | 28 +- .../dashboard/folder_dashboards_ctrl.ts | 4 +- .../features/dashboard/folder_page_loader.ts | 70 +- .../dashboard/folder_permissions_ctrl.ts | 4 +- .../dashboard/folder_picker/folder_picker.ts | 66 +- .../dashboard/folder_settings_ctrl.ts | 52 +- .../app/features/dashboard/history/history.ts | 80 +- .../features/dashboard/history/history_srv.ts | 10 +- .../move_to_folder_modal/move_to_folder.ts | 32 +- public/app/features/dashboard/panel_model.ts | 14 +- .../dashboard/repeat_option/repeat_option.ts | 22 +- .../app/features/dashboard/save_as_modal.ts | 14 +- public/app/features/dashboard/save_modal.ts | 12 +- .../features/dashboard/settings/settings.ts | 104 +- .../app/features/dashboard/shareModalCtrl.ts | 42 +- .../specs/dashboard_import_ctrl.jest.ts | 69 +- .../specs/dashboard_migration.jest.ts | 202 ++-- .../dashboard/specs/dashboard_model.jest.ts | 250 ++-- .../dashboard/specs/dashboard_srv_specs.ts | 8 +- .../dashboard/specs/exporter_specs.ts | 194 +-- .../dashboard/specs/history_ctrl_specs.ts | 166 +-- .../features/dashboard/specs/history_mocks.ts | 150 +-- .../dashboard/specs/history_srv_specs.ts | 36 +- .../features/dashboard/specs/repeat.jest.ts | 334 +++--- .../dashboard/specs/save_as_modal.jest.ts | 38 +- .../dashboard/specs/share_modal_ctrl_specs.ts | 80 +- .../dashboard/specs/time_srv_specs.ts | 110 +- .../specs/unsaved_changes_srv_specs.ts | 46 +- .../dashboard/specs/viewstate_srv_specs.ts | 36 +- .../app/features/dashboard/submenu/submenu.ts | 20 +- public/app/features/dashboard/time_srv.ts | 40 +- .../dashboard/timepicker/timepicker.ts | 86 +- .../dashboard/unsaved_changes_modal.ts | 10 +- public/app/features/dashboard/upload.ts | 26 +- .../app/features/dashboard/validation_srv.ts | 20 +- .../app/features/dashboard/view_state_srv.ts | 30 +- public/app/features/dashlinks/editor.ts | 48 +- public/app/features/dashlinks/module.ts | 84 +- .../app/features/org/change_password_ctrl.ts | 16 +- public/app/features/org/create_team_modal.ts | 20 +- public/app/features/org/new_org_ctrl.ts | 16 +- public/app/features/org/org_api_keys_ctrl.ts | 24 +- public/app/features/org/org_details_ctrl.ts | 14 +- public/app/features/org/org_users_ctrl.ts | 38 +- public/app/features/org/prefs_control.ts | 28 +- public/app/features/org/profile_ctrl.ts | 20 +- public/app/features/org/select_org_ctrl.ts | 14 +- .../org/specs/team_details_ctrl_specs.ts | 32 +- public/app/features/org/team_details_ctrl.ts | 24 +- public/app/features/org/teams_ctrl.ts | 30 +- .../app/features/panel/metrics_panel_ctrl.ts | 80 +- public/app/features/panel/metrics_tab.ts | 18 +- public/app/features/panel/panel_ctrl.ts | 170 +-- public/app/features/panel/panel_directive.ts | 92 +- public/app/features/panel/panel_editor_tab.ts | 16 +- public/app/features/panel/panel_header.ts | 42 +- public/app/features/panel/query_ctrl.ts | 2 +- public/app/features/panel/query_editor_row.ts | 22 +- .../features/panel/query_troubleshooter.ts | 38 +- public/app/features/panel/solo_panel_ctrl.ts | 10 +- public/app/features/panellinks/link_srv.ts | 54 +- public/app/features/panellinks/module.ts | 24 +- .../panellinks/specs/link_srv.jest.ts | 48 +- .../features/playlist/playlist_edit_ctrl.ts | 40 +- .../app/features/playlist/playlist_search.ts | 26 +- public/app/features/playlist/playlist_srv.ts | 20 +- .../app/features/playlist/playlists_ctrl.ts | 28 +- .../specs/playlist_edit_ctrl_specs.ts | 40 +- .../app/features/plugins/built_in_plugins.ts | 84 +- public/app/features/plugins/ds_edit_ctrl.ts | 76 +- public/app/features/plugins/ds_list_ctrl.ts | 38 +- .../plugins/import_list/import_list.ts | 46 +- .../app/features/plugins/plugin_component.ts | 136 +-- .../app/features/plugins/plugin_edit_ctrl.ts | 86 +- .../app/features/plugins/plugin_list_ctrl.ts | 14 +- public/app/features/plugins/plugin_loader.ts | 160 +-- .../app/features/plugins/plugin_page_ctrl.ts | 20 +- public/app/features/plugins/row_ctrl.ts | 16 +- .../plugins/specs/datasource_srv_specs.ts | 62 +- public/app/features/snapshot/snapshot_ctrl.ts | 34 +- public/app/features/styleguide/styleguide.ts | 40 +- .../app/features/templating/adhoc_variable.ts | 28 +- .../features/templating/constant_variable.ts | 18 +- .../features/templating/custom_variable.ts | 28 +- .../templating/datasource_variable.ts | 28 +- public/app/features/templating/editor_ctrl.ts | 86 +- .../features/templating/interval_variable.ts | 36 +- .../app/features/templating/query_variable.ts | 44 +- .../templating/specs/adhoc_variable.jest.ts | 50 +- .../templating/specs/query_variable.jest.ts | 64 +- .../templating/specs/template_srv.jest.ts | 294 ++--- .../templating/specs/variable.jest.ts | 50 +- .../specs/variable_srv_init_specs.ts | 140 +-- .../templating/specs/variable_srv_specs.ts | 502 ++++---- .../app/features/templating/template_srv.ts | 52 +- public/app/features/templating/variable.ts | 12 +- .../app/features/templating/variable_srv.ts | 42 +- public/app/index.ts | 2 +- .../app/testdata/datasource/datasource.ts | 14 +- .../plugins/app/testdata/datasource/module.ts | 8 +- .../app/testdata/datasource/query_ctrl.ts | 22 +- public/app/plugins/app/testdata/module.ts | 16 +- .../datasource/cloudwatch/config_ctrl.ts | 24 +- .../plugins/datasource/cloudwatch/module.ts | 12 +- .../datasource/cloudwatch/query_ctrl.ts | 8 +- .../cloudwatch/query_parameter_ctrl.ts | 98 +- .../cloudwatch/specs/datasource_specs.ts | 366 +++--- .../datasource/elasticsearch/config_ctrl.ts | 28 +- .../datasource/elasticsearch/datasource.ts | 158 +-- .../elasticsearch/elastic_response.ts | 64 +- .../datasource/elasticsearch/index_pattern.ts | 12 +- .../datasource/elasticsearch/module.ts | 12 +- .../datasource/elasticsearch/query_builder.ts | 102 +- .../datasource/elasticsearch/query_ctrl.ts | 38 +- .../datasource/elasticsearch/query_def.ts | 170 +-- .../elasticsearch/specs/datasource_specs.ts | 270 ++--- .../specs/elastic_response_specs.ts | 628 +++++----- .../specs/index_pattern_specs.ts | 40 +- .../specs/query_builder_specs.ts | 350 +++--- .../elasticsearch/specs/query_def_specs.ts | 70 +- .../datasource/grafana-live/datasource.ts | 4 +- .../plugins/datasource/grafana-live/module.ts | 6 +- .../plugins/datasource/grafana/datasource.ts | 14 +- .../app/plugins/datasource/grafana/module.ts | 16 +- .../datasource/graphite/config_ctrl.ts | 10 +- .../plugins/datasource/graphite/datasource.ts | 160 +-- .../app/plugins/datasource/graphite/gfunc.ts | 1036 ++++++++--------- .../datasource/graphite/graphite_query.ts | 54 +- .../app/plugins/datasource/graphite/lexer.ts | 114 +- .../app/plugins/datasource/graphite/module.ts | 10 +- .../app/plugins/datasource/graphite/parser.ts | 116 +- .../plugins/datasource/graphite/query_ctrl.ts | 84 +- .../graphite/specs/datasource_specs.ts | 176 +-- .../datasource/graphite/specs/gfunc.jest.ts | 142 +-- .../datasource/graphite/specs/lexer.jest.ts | 148 +-- .../datasource/graphite/specs/parser.jest.ts | 180 +-- .../graphite/specs/query_ctrl_specs.ts | 190 +-- .../plugins/datasource/influxdb/datasource.ts | 102 +- .../datasource/influxdb/influx_query.ts | 98 +- .../datasource/influxdb/influx_series.ts | 34 +- .../app/plugins/datasource/influxdb/module.ts | 10 +- .../datasource/influxdb/query_builder.ts | 54 +- .../plugins/datasource/influxdb/query_ctrl.ts | 156 +-- .../plugins/datasource/influxdb/query_part.ts | 234 ++-- .../datasource/influxdb/response_parser.ts | 4 +- .../influxdb/specs/influx_query.jest.ts | 244 ++-- .../influxdb/specs/influx_series.jest.ts | 244 ++-- .../influxdb/specs/query_builder.jest.ts | 168 +-- .../influxdb/specs/query_ctrl_specs.ts | 158 +-- .../influxdb/specs/query_part.jest.ts | 44 +- .../influxdb/specs/response_parser.jest.ts | 128 +- .../plugins/datasource/mixed/datasource.ts | 10 +- public/app/plugins/datasource/mixed/module.ts | 2 +- .../plugins/datasource/mysql/datasource.ts | 76 +- public/app/plugins/datasource/mysql/module.ts | 10 +- .../plugins/datasource/mysql/query_ctrl.ts | 24 +- .../datasource/mysql/response_parser.ts | 26 +- .../mysql/specs/datasource_specs.ts | 198 ++-- .../datasource/opentsdb/config_ctrl.ts | 12 +- .../app/plugins/datasource/opentsdb/module.ts | 10 +- .../plugins/datasource/opentsdb/query_ctrl.ts | 68 +- .../opentsdb/specs/datasource-specs.ts | 88 +- .../opentsdb/specs/query-ctrl-specs.ts | 76 +- .../plugins/datasource/postgres/datasource.ts | 74 +- .../app/plugins/datasource/postgres/module.ts | 12 +- .../plugins/datasource/postgres/query_ctrl.ts | 24 +- .../datasource/postgres/response_parser.ts | 22 +- .../postgres/specs/datasource_specs.ts | 194 +-- 304 files changed, 10558 insertions(+), 10519 deletions(-) diff --git a/package.json b/package.json index 17817d60ef8..847f1738e45 100644 --- a/package.json +++ b/package.json @@ -107,11 +107,11 @@ }, "lint-staged": { "*.{ts,tsx}": [ - "prettier --write", + "prettier --single-quote --trailing-comma es5 --write", "git add" ], "*.scss": [ - "prettier --write", + "prettier --single-quote --write", "git add" ] }, diff --git a/public/app/app.ts b/public/app/app.ts index 8ddacc4ed04..f3e1fa5133e 100644 --- a/public/app/app.ts +++ b/public/app/app.ts @@ -1,24 +1,24 @@ -import "babel-polyfill"; -import "file-saver"; -import "lodash"; -import "jquery"; -import "angular"; -import "angular-route"; -import "angular-sanitize"; -import "angular-native-dragdrop"; -import "angular-bindonce"; -import "react"; -import "react-dom"; +import 'babel-polyfill'; +import 'file-saver'; +import 'lodash'; +import 'jquery'; +import 'angular'; +import 'angular-route'; +import 'angular-sanitize'; +import 'angular-native-dragdrop'; +import 'angular-bindonce'; +import 'react'; +import 'react-dom'; -import "vendor/bootstrap/bootstrap"; -import "vendor/angular-ui/ui-bootstrap-tpls"; -import "vendor/angular-other/angular-strap"; +import 'vendor/bootstrap/bootstrap'; +import 'vendor/angular-ui/ui-bootstrap-tpls'; +import 'vendor/angular-other/angular-strap'; -import $ from "jquery"; -import angular from "angular"; -import config from "app/core/config"; -import _ from "lodash"; -import moment from "moment"; +import $ from 'jquery'; +import angular from 'angular'; +import config from 'app/core/config'; +import _ from 'lodash'; +import moment from 'moment'; // add move to lodash for backward compatabiltiy _.move = function(array, fromIndex, toIndex) { @@ -26,7 +26,7 @@ _.move = function(array, fromIndex, toIndex) { return array; }; -import { coreModule, registerAngularDirectives } from "./core/core"; +import { coreModule, registerAngularDirectives } from './core/core'; export class GrafanaApp { registerFunctions: any; @@ -50,7 +50,7 @@ export class GrafanaApp { } init() { - var app = angular.module("grafana", []); + var app = angular.module('grafana', []); moment.locale(config.bootData.user.locale); @@ -66,7 +66,7 @@ export class GrafanaApp { // pre assing bindings before constructor calls $compileProvider.preAssignBindingsEnabled(true); - if (config.buildInfo.env !== "development") { + if (config.buildInfo.env !== 'development') { $compileProvider.debugInfoEnabled(false); } @@ -78,50 +78,50 @@ export class GrafanaApp { this.registerFunctions.service = $provide.service; this.registerFunctions.filter = $filterProvider.register; - $provide.decorator("$http", [ - "$delegate", - "$templateCache", + $provide.decorator('$http', [ + '$delegate', + '$templateCache', function($delegate, $templateCache) { var get = $delegate.get; $delegate.get = function(url, config) { if (url.match(/\.html$/)) { // some template's already exist in the cache if (!$templateCache.get(url)) { - url += "?v=" + new Date().getTime(); + url += '?v=' + new Date().getTime(); } } return get(url, config); }; return $delegate; - } + }, ]); } ); this.ngModuleDependencies = [ - "grafana.core", - "ngRoute", - "ngSanitize", - "$strap.directives", - "ang-drag-drop", - "grafana", - "pasvaz.bindonce", - "ui.bootstrap", - "ui.bootstrap.tpls", - "react" + 'grafana.core', + 'ngRoute', + 'ngSanitize', + '$strap.directives', + 'ang-drag-drop', + 'grafana', + 'pasvaz.bindonce', + 'ui.bootstrap', + 'ui.bootstrap.tpls', + 'react', ]; var module_types = [ - "controllers", - "directives", - "factories", - "services", - "filters", - "routes" + 'controllers', + 'directives', + 'factories', + 'services', + 'filters', + 'routes', ]; _.each(module_types, type => { - var moduleName = "grafana." + type; + var moduleName = 'grafana.' + type; this.useModule(angular.module(moduleName, [])); }); @@ -131,7 +131,7 @@ export class GrafanaApp { // register react angular wrappers registerAngularDirectives(); - var preBootRequires = [System.import("app/features/all")]; + var preBootRequires = [System.import('app/features/all')]; Promise.all(preBootRequires) .then(() => { @@ -147,7 +147,7 @@ export class GrafanaApp { }); }) .catch(function(err) { - console.log("Application boot failed:", err); + console.log('Application boot failed:', err); }); } } diff --git a/public/app/core/app_events.ts b/public/app/core/app_events.ts index 789e6e14209..26dd74bcb00 100644 --- a/public/app/core/app_events.ts +++ b/public/app/core/app_events.ts @@ -1,4 +1,4 @@ -import { Emitter } from "./utils/emitter"; +import { Emitter } from './utils/emitter'; var appEvents = new Emitter(); export default appEvents; diff --git a/public/app/core/components/code_editor/code_editor.ts b/public/app/core/components/code_editor/code_editor.ts index c8646020892..36d6c1b1020 100644 --- a/public/app/core/components/code_editor/code_editor.ts +++ b/public/app/core/components/code_editor/code_editor.ts @@ -26,24 +26,24 @@ * Ctrl-Enter (Command-Enter): run onChange() function */ -import coreModule from "app/core/core_module"; -import config from "app/core/config"; -import ace from "brace"; -import "./theme-grafana-dark"; -import "brace/ext/language_tools"; -import "brace/theme/textmate"; -import "brace/mode/text"; -import "brace/snippets/text"; -import "brace/mode/sql"; -import "brace/snippets/sql"; -import "brace/mode/markdown"; -import "brace/snippets/markdown"; -import "brace/mode/json"; -import "brace/snippets/json"; +import coreModule from 'app/core/core_module'; +import config from 'app/core/config'; +import ace from 'brace'; +import './theme-grafana-dark'; +import 'brace/ext/language_tools'; +import 'brace/theme/textmate'; +import 'brace/mode/text'; +import 'brace/snippets/text'; +import 'brace/mode/sql'; +import 'brace/snippets/sql'; +import 'brace/mode/markdown'; +import 'brace/snippets/markdown'; +import 'brace/mode/json'; +import 'brace/snippets/json'; -const DEFAULT_THEME_DARK = "ace/theme/grafana-dark"; -const DEFAULT_THEME_LIGHT = "ace/theme/textmate"; -const DEFAULT_MODE = "text"; +const DEFAULT_THEME_DARK = 'ace/theme/grafana-dark'; +const DEFAULT_THEME_LIGHT = 'ace/theme/textmate'; +const DEFAULT_MODE = 'text'; const DEFAULT_MAX_LINES = 10; const DEFAULT_TAB_SIZE = 2; const DEFAULT_BEHAVIOURS = true; @@ -57,7 +57,7 @@ function link(scope, elem, attrs) { let showGutter = attrs.showGutter !== undefined; let tabSize = attrs.tabSize || DEFAULT_TAB_SIZE; let behavioursEnabled = attrs.behavioursEnabled - ? attrs.behavioursEnabled === "true" + ? attrs.behavioursEnabled === 'true' : DEFAULT_BEHAVIOURS; // Initialize editor @@ -72,7 +72,7 @@ function link(scope, elem, attrs) { behavioursEnabled: behavioursEnabled, highlightActiveLine: false, showPrintMargin: false, - autoScrollEditorIntoView: true // this is needed if editor is inside scrollable page + autoScrollEditorIntoView: true, // this is needed if editor is inside scrollable page }; // Set options @@ -88,9 +88,9 @@ function link(scope, elem, attrs) { setEditorContent(scope.content); // Add classes - elem.addClass("gf-code-editor"); - let textarea = elem.find("textarea"); - textarea.addClass("gf-form-input"); + elem.addClass('gf-code-editor'); + let textarea = elem.find('textarea'); + textarea.addClass('gf-form-input'); if (scope.codeEditorFocus) { setTimeout(function() { @@ -104,7 +104,7 @@ function link(scope, elem, attrs) { } // Event handlers - editorSession.on("change", e => { + editorSession.on('change', e => { scope.$apply(() => { let newValue = codeEditor.getValue(); scope.content = newValue; @@ -112,7 +112,7 @@ function link(scope, elem, attrs) { }); // Sync with outer scope - update editor content if model has been changed from outside of directive. - scope.$watch("content", (newValue, oldValue) => { + scope.$watch('content', (newValue, oldValue) => { let editorValue = codeEditor.getValue(); if (newValue !== editorValue && newValue !== oldValue) { scope.$$postDigest(function() { @@ -121,29 +121,29 @@ function link(scope, elem, attrs) { } }); - codeEditor.on("blur", () => { + codeEditor.on('blur', () => { scope.onChange(); }); - scope.$on("$destroy", () => { + scope.$on('$destroy', () => { codeEditor.destroy(); }); // Keybindings codeEditor.commands.addCommand({ - name: "executeQuery", - bindKey: { win: "Ctrl-Enter", mac: "Command-Enter" }, + name: 'executeQuery', + bindKey: { win: 'Ctrl-Enter', mac: 'Command-Enter' }, exec: () => { scope.onChange(); - } + }, }); function setLangMode(lang) { - ace.acequire("ace/ext/language_tools"); + ace.acequire('ace/ext/language_tools'); codeEditor.setOptions({ enableBasicAutocompletion: true, enableLiveAutocompletion: true, - enableSnippets: true + enableSnippets: true, }); if (scope.getCompleter()) { @@ -174,17 +174,17 @@ function link(scope, elem, attrs) { export function codeEditorDirective() { return { - restrict: "E", + restrict: 'E', template: editorTemplate, scope: { - content: "=", - datasource: "=", - codeEditorFocus: "<", - onChange: "&", - getCompleter: "&" + content: '=', + datasource: '=', + codeEditorFocus: '<', + onChange: '&', + getCompleter: '&', }, - link: link + link: link, }; } -coreModule.directive("codeEditor", codeEditorDirective); +coreModule.directive('codeEditor', codeEditorDirective); diff --git a/public/app/core/components/colorpicker/spectrum_picker.ts b/public/app/core/components/colorpicker/spectrum_picker.ts index 8b46bc3fdc9..45d367bfbe8 100644 --- a/public/app/core/components/colorpicker/spectrum_picker.ts +++ b/public/app/core/components/colorpicker/spectrum_picker.ts @@ -3,13 +3,13 @@ * Allows remaining untouched in outdated plugins. * Technically, it's just a wrapper for react component with two-way data binding support. */ -import coreModule from "../../core_module"; +import coreModule from '../../core_module'; /** @ngInject */ export function spectrumPicker() { return { - restrict: "E", - require: "ngModel", + restrict: 'E', + require: 'ngModel', scope: true, replace: true, template: @@ -19,7 +19,7 @@ export function spectrumPicker() { scope.onColorChange = color => { ngModel.$setViewValue(color); }; - } + }, }; } -coreModule.directive("spectrumPicker", spectrumPicker); +coreModule.directive('spectrumPicker', spectrumPicker); diff --git a/public/app/core/components/dashboard_selector.ts b/public/app/core/components/dashboard_selector.ts index b52227cc9a6..379fd441a19 100644 --- a/public/app/core/components/dashboard_selector.ts +++ b/public/app/core/components/dashboard_selector.ts @@ -1,4 +1,4 @@ -import coreModule from "app/core/core_module"; +import coreModule from 'app/core/core_module'; var template = ` @@ -12,7 +12,7 @@ export class DashboardSelectorCtrl { constructor(private backendSrv) {} $onInit() { - this.options = [{ value: 0, text: "Default" }]; + this.options = [{ value: 0, text: 'Default' }]; return this.backendSrv.search({ starred: true }).then(res => { res.forEach(dash => { @@ -24,15 +24,15 @@ export class DashboardSelectorCtrl { export function dashboardSelector() { return { - restrict: "E", + restrict: 'E', controller: DashboardSelectorCtrl, bindToController: true, - controllerAs: "ctrl", + controllerAs: 'ctrl', template: template, scope: { - model: "=" - } + model: '=', + }, }; } -coreModule.directive("dashboardSelector", dashboardSelector); +coreModule.directive('dashboardSelector', dashboardSelector); diff --git a/public/app/core/components/form_dropdown/form_dropdown.ts b/public/app/core/components/form_dropdown/form_dropdown.ts index bdea18e6276..f8d715579a5 100644 --- a/public/app/core/components/form_dropdown/form_dropdown.ts +++ b/public/app/core/components/form_dropdown/form_dropdown.ts @@ -1,13 +1,13 @@ -import _ from "lodash"; -import $ from "jquery"; -import coreModule from "../../core_module"; +import _ from 'lodash'; +import $ from 'jquery'; +import coreModule from '../../core_module'; function typeaheadMatcher(item) { var str = this.query; - if (str[0] === "/") { + if (str[0] === '/') { str = str.substring(1); } - if (str[str.length - 1] === "/") { + if (str[str.length - 1] === '/') { str = str.substring(0, str.length - 1); } return item.toLowerCase().match(str.toLowerCase()); @@ -39,35 +39,35 @@ export class FormDropdownCtrl { private templateSrv, private $q ) { - this.inputElement = $element.find("input").first(); - this.linkElement = $element.find("a").first(); + this.inputElement = $element.find('input').first(); + this.linkElement = $element.find('a').first(); this.linkMode = true; this.cancelBlur = null; // listen to model changes - $scope.$watch("ctrl.model", this.modelChanged.bind(this)); + $scope.$watch('ctrl.model', this.modelChanged.bind(this)); if (this.labelMode) { - this.cssClasses = "gf-form-label " + this.cssClass; + this.cssClasses = 'gf-form-label ' + this.cssClass; } else { this.cssClasses = - "gf-form-input gf-form-input--dropdown " + this.cssClass; + 'gf-form-input gf-form-input--dropdown ' + this.cssClass; } - this.inputElement.attr("data-provide", "typeahead"); + this.inputElement.attr('data-provide', 'typeahead'); this.inputElement.typeahead({ source: this.typeaheadSource.bind(this), minLength: 0, items: 10000, updater: this.typeaheadUpdater.bind(this), - matcher: typeaheadMatcher + matcher: typeaheadMatcher, }); // modify typeahead lookup // this = typeahead - var typeahead = this.inputElement.data("typeahead"); + var typeahead = this.inputElement.data('typeahead'); typeahead.lookup = function() { - this.query = this.$element.val() || ""; + this.query = this.$element.val() || ''; var items = this.source(this.query, $.proxy(this.process, this)); return items ? this.process(items) : items; }; @@ -99,7 +99,7 @@ export class FormDropdownCtrl { } isPromiseLike(obj) { - return obj && typeof obj.then === "function"; + return obj && typeof obj.then === 'function'; } modelChanged() { @@ -108,7 +108,7 @@ export class FormDropdownCtrl { } else { // if we have text use it if (this.lookupText) { - this.getOptionsInternal("").then(options => { + this.getOptionsInternal('').then(options => { var item = _.find(options, { value: this.model }); this.updateDisplay(item ? item.text : this.model); }); @@ -172,7 +172,7 @@ export class FormDropdownCtrl { updateValue(text) { text = _.unescape(text); - if (text === "" || this.text === text) { + if (text === '' || this.text === text) { return; } @@ -214,8 +214,8 @@ export class FormDropdownCtrl { open() { this.inputElement.css( - "width", - Math.max(this.linkElement.width(), 80) + 16 + "px" + 'width', + Math.max(this.linkElement.width(), 80) + 16 + 'px' ); this.inputElement.show(); @@ -224,9 +224,9 @@ export class FormDropdownCtrl { this.linkElement.hide(); this.linkMode = false; - var typeahead = this.inputElement.data("typeahead"); + var typeahead = this.inputElement.data('typeahead'); if (typeahead) { - this.inputElement.val(""); + this.inputElement.val(''); typeahead.lookup(); } } @@ -249,21 +249,21 @@ const template = ` export function formDropdownDirective() { return { - restrict: "E", + restrict: 'E', template: template, controller: FormDropdownCtrl, bindToController: true, - controllerAs: "ctrl", + controllerAs: 'ctrl', scope: { - model: "=", - getOptions: "&", - onChange: "&", - cssClass: "@", - allowCustom: "@", - labelMode: "@", - lookupText: "@" - } + model: '=', + getOptions: '&', + onChange: '&', + cssClass: '@', + allowCustom: '@', + labelMode: '@', + lookupText: '@', + }, }; } -coreModule.directive("gfFormDropdown", formDropdownDirective); +coreModule.directive('gfFormDropdown', formDropdownDirective); diff --git a/public/app/core/components/gf_page.ts b/public/app/core/components/gf_page.ts index c8009f8c924..5df3bd89715 100644 --- a/public/app/core/components/gf_page.ts +++ b/public/app/core/components/gf_page.ts @@ -1,6 +1,6 @@ /// -import coreModule from "app/core/core_module"; +import coreModule from 'app/core/core_module'; const template = `
@@ -24,19 +24,19 @@ const template = ` export function gfPageDirective() { return { - restrict: "E", + restrict: 'E', template: template, scope: { - model: "=" + model: '=', }, transclude: { - header: "?gfPageHeader", - body: "gfPageBody" + header: '?gfPageHeader', + body: 'gfPageBody', }, link: function(scope, elem, attrs) { console.log(scope); - } + }, }; } -coreModule.directive("gfPage", gfPageDirective); +coreModule.directive('gfPage', gfPageDirective); diff --git a/public/app/core/components/grafana_app.ts b/public/app/core/components/grafana_app.ts index f8511d393e9..54685b5cf35 100644 --- a/public/app/core/components/grafana_app.ts +++ b/public/app/core/components/grafana_app.ts @@ -1,11 +1,11 @@ -import config from "app/core/config"; -import _ from "lodash"; -import $ from "jquery"; +import config from 'app/core/config'; +import _ from 'lodash'; +import $ from 'jquery'; -import coreModule from "app/core/core_module"; -import { profiler } from "app/core/profiler"; -import appEvents from "app/core/app_events"; -import Drop from "tether-drop"; +import coreModule from 'app/core/core_module'; +import { profiler } from 'app/core/profiler'; +import appEvents from 'app/core/app_events'; +import Drop from 'tether-drop'; export class GrafanaCtrl { /** @ngInject */ @@ -33,20 +33,20 @@ export class GrafanaCtrl { }; $scope.initDashboard = function(dashboardData, viewScope) { - $scope.appEvent("dashboard-fetch-end", dashboardData); - $controller("DashboardCtrl", { $scope: viewScope }).init(dashboardData); + $scope.appEvent('dashboard-fetch-end', dashboardData); + $controller('DashboardCtrl', { $scope: viewScope }).init(dashboardData); }; $rootScope.onAppEvent = function(name, callback, localScope) { var unbind = $rootScope.$on(name, callback); var callerScope = this; if (callerScope.$id === 1 && !localScope) { - console.log("warning rootScope onAppEvent called without localscope"); + console.log('warning rootScope onAppEvent called without localscope'); } if (localScope) { callerScope = localScope; } - callerScope.$on("$destroy", unbind); + callerScope.$on('$destroy', unbind); }; $rootScope.appEvent = function(name, payload) { @@ -55,62 +55,62 @@ export class GrafanaCtrl { }; $rootScope.colors = [ - "#7EB26D", - "#EAB839", - "#6ED0E0", - "#EF843C", - "#E24D42", - "#1F78C1", - "#BA43A9", - "#705DA0", - "#508642", - "#CCA300", - "#447EBC", - "#C15C17", - "#890F02", - "#0A437C", - "#6D1F62", - "#584477", - "#B7DBAB", - "#F4D598", - "#70DBED", - "#F9BA8F", - "#F29191", - "#82B5D8", - "#E5A8E2", - "#AEA2E0", - "#629E51", - "#E5AC0E", - "#64B0C8", - "#E0752D", - "#BF1B00", - "#0A50A1", - "#962D82", - "#614D93", - "#9AC48A", - "#F2C96D", - "#65C5DB", - "#F9934E", - "#EA6460", - "#5195CE", - "#D683CE", - "#806EB7", - "#3F6833", - "#967302", - "#2F575E", - "#99440A", - "#58140C", - "#052B51", - "#511749", - "#3F2B5B", - "#E0F9D7", - "#FCEACA", - "#CFFAFF", - "#F9E2D2", - "#FCE2DE", - "#BADFF4", - "#F9D9F9", - "#DEDAF7" + '#7EB26D', + '#EAB839', + '#6ED0E0', + '#EF843C', + '#E24D42', + '#1F78C1', + '#BA43A9', + '#705DA0', + '#508642', + '#CCA300', + '#447EBC', + '#C15C17', + '#890F02', + '#0A437C', + '#6D1F62', + '#584477', + '#B7DBAB', + '#F4D598', + '#70DBED', + '#F9BA8F', + '#F29191', + '#82B5D8', + '#E5A8E2', + '#AEA2E0', + '#629E51', + '#E5AC0E', + '#64B0C8', + '#E0752D', + '#BF1B00', + '#0A50A1', + '#962D82', + '#614D93', + '#9AC48A', + '#F2C96D', + '#65C5DB', + '#F9934E', + '#EA6460', + '#5195CE', + '#D683CE', + '#806EB7', + '#3F6833', + '#967302', + '#2F575E', + '#99440A', + '#58140C', + '#052B51', + '#511749', + '#3F2B5B', + '#E0F9D7', + '#FCEACA', + '#CFFAFF', + '#F9E2D2', + '#FCE2DE', + '#BADFF4', + '#F9D9F9', + '#DEDAF7', ]; $scope.init(); @@ -125,34 +125,34 @@ export function grafanaAppDirective( $rootScope ) { return { - restrict: "E", + restrict: 'E', controller: GrafanaCtrl, link: (scope, elem) => { var sidemenuOpen; - var body = $("body"); + var body = $('body'); // see https://github.com/zenorocha/clipboard.js/issues/155 $.fn.modal.Constructor.prototype.enforceFocus = function() {}; sidemenuOpen = scope.contextSrv.sidemenu; - body.toggleClass("sidemenu-open", sidemenuOpen); + body.toggleClass('sidemenu-open', sidemenuOpen); - appEvents.on("toggle-sidemenu", () => { - body.toggleClass("sidemenu-open"); + appEvents.on('toggle-sidemenu', () => { + body.toggleClass('sidemenu-open'); }); - appEvents.on("toggle-sidemenu-mobile", () => { - body.toggleClass("sidemenu-open--xs"); + appEvents.on('toggle-sidemenu-mobile', () => { + body.toggleClass('sidemenu-open--xs'); }); - appEvents.on("toggle-sidemenu-hidden", () => { - body.toggleClass("sidemenu-hidden"); + appEvents.on('toggle-sidemenu-hidden', () => { + body.toggleClass('sidemenu-hidden'); }); // tooltip removal fix // manage page classes var pageClass; - scope.$on("$routeChangeSuccess", function(evt, data) { + scope.$on('$routeChangeSuccess', function(evt, data) { if (pageClass) { body.removeClass(pageClass); } @@ -165,13 +165,13 @@ export function grafanaAppDirective( } // clear body class sidemenu states - body.removeClass("sidemenu-open--xs"); + body.removeClass('sidemenu-open--xs'); - $("#tooltip, .tooltip").remove(); + $('#tooltip, .tooltip').remove(); // check for kiosk url param if (data.params.kiosk) { - appEvents.emit("toggle-kiosk-mode"); + appEvents.emit('toggle-kiosk-mode'); } // close all drops @@ -181,8 +181,8 @@ export function grafanaAppDirective( }); // handle kiosk mode - appEvents.on("toggle-kiosk-mode", () => { - body.toggleClass("page-kiosk-mode"); + appEvents.on('toggle-kiosk-mode', () => { + body.toggleClass('page-kiosk-mode'); }); // handle in active view state class @@ -196,19 +196,19 @@ export function grafanaAppDirective( return; } // only go to activity low mode on dashboard page - if (!body.hasClass("page-dashboard")) { + if (!body.hasClass('page-dashboard')) { return; } if (new Date().getTime() - lastActivity > inActiveTimeLimit) { activeUser = false; - body.addClass("user-activity-low"); + body.addClass('user-activity-low'); // hide sidemenu if (sidemenuOpen) { sidemenuHidden = true; - body.removeClass("sidemenu-open"); + body.removeClass('sidemenu-open'); $timeout(function() { - $rootScope.$broadcast("render"); + $rootScope.$broadcast('render'); }, 100); } } @@ -218,14 +218,14 @@ export function grafanaAppDirective( lastActivity = new Date().getTime(); if (!activeUser) { activeUser = true; - body.removeClass("user-activity-low"); + body.removeClass('user-activity-low'); // restore sidemenu if (sidemenuHidden) { sidemenuHidden = false; - body.addClass("sidemenu-open"); + body.addClass('sidemenu-open'); $timeout(function() { - $rootScope.$broadcast("render"); + $rootScope.$broadcast('render'); }, 100); } } @@ -235,12 +235,12 @@ export function grafanaAppDirective( body.mousemove(userActivityDetected); body.keydown(userActivityDetected); // treat tab change as activity - document.addEventListener("visibilitychange", userActivityDetected); + document.addEventListener('visibilitychange', userActivityDetected); // check every 2 seconds setInterval(checkForInActiveUser, 2000); - appEvents.on("toggle-view-mode", () => { + appEvents.on('toggle-view-mode', () => { lastActivity = 0; checkForInActiveUser(); }); @@ -254,7 +254,7 @@ export function grafanaAppDirective( // for stuff that animates, slides out etc, clicking it needs to // hide it right away - var clickAutoHide = target.closest("[data-click-hide]"); + var clickAutoHide = target.closest('[data-click-hide]'); if (clickAutoHide.length) { var clickAutoHideParent = clickAutoHide.parent(); clickAutoHide.detach(); @@ -263,33 +263,33 @@ export function grafanaAppDirective( }, 100); } - if (target.parents(".navbar-buttons--playlist").length === 0) { + if (target.parents('.navbar-buttons--playlist').length === 0) { playlistSrv.stop(); } // hide search - if (body.find(".search-container").length > 0) { + if (body.find('.search-container').length > 0) { if ( - target.parents(".search-results-container, .search-field-wrapper") + target.parents('.search-results-container, .search-field-wrapper') .length === 0 ) { scope.$apply(function() { - scope.appEvent("hide-dash-search"); + scope.appEvent('hide-dash-search'); }); } } // hide popovers - var popover = elem.find(".popover"); + var popover = elem.find('.popover'); if ( popover.length > 0 && - target.parents(".graph-legend").length === 0 + target.parents('.graph-legend').length === 0 ) { popover.hide(); } }); - } + }, }; } -coreModule.directive("grafanaApp", grafanaAppDirective); +coreModule.directive('grafanaApp', grafanaAppDirective); diff --git a/public/app/core/components/help/help.ts b/public/app/core/components/help/help.ts index b59ebaaedf6..a594b95bb4d 100644 --- a/public/app/core/components/help/help.ts +++ b/public/app/core/components/help/help.ts @@ -1,7 +1,7 @@ /// -import coreModule from "../../core_module"; -import appEvents from "app/core/app_events"; +import coreModule from '../../core_module'; +import appEvents from 'app/core/app_events'; export class HelpCtrl { tabIndex: any; @@ -12,63 +12,63 @@ export class HelpCtrl { this.tabIndex = 0; this.shortcuts = { Global: [ - { keys: ["g", "h"], description: "Go to Home Dashboard" }, - { keys: ["g", "p"], description: "Go to Profile" }, - { keys: ["s", "o"], description: "Open search" }, - { keys: ["s", "s"], description: "Open search with starred filter" }, - { keys: ["s", "t"], description: "Open search in tags view" }, - { keys: ["esc"], description: "Exit edit/setting views" } + { keys: ['g', 'h'], description: 'Go to Home Dashboard' }, + { keys: ['g', 'p'], description: 'Go to Profile' }, + { keys: ['s', 'o'], description: 'Open search' }, + { keys: ['s', 's'], description: 'Open search with starred filter' }, + { keys: ['s', 't'], description: 'Open search in tags view' }, + { keys: ['esc'], description: 'Exit edit/setting views' }, ], Dashboard: [ - { keys: ["mod+s"], description: "Save dashboard" }, - { keys: ["mod+h"], description: "Hide row controls" }, - { keys: ["d", "r"], description: "Refresh all panels" }, - { keys: ["d", "s"], description: "Dashboard settings" }, - { keys: ["d", "v"], description: "Toggle in-active / view mode" }, - { keys: ["d", "k"], description: "Toggle kiosk mode (hides top nav)" }, - { keys: ["d", "E"], description: "Expand all rows" }, - { keys: ["d", "C"], description: "Collapse all rows" }, - { keys: ["mod+o"], description: "Toggle shared graph crosshair" } + { keys: ['mod+s'], description: 'Save dashboard' }, + { keys: ['mod+h'], description: 'Hide row controls' }, + { keys: ['d', 'r'], description: 'Refresh all panels' }, + { keys: ['d', 's'], description: 'Dashboard settings' }, + { keys: ['d', 'v'], description: 'Toggle in-active / view mode' }, + { keys: ['d', 'k'], description: 'Toggle kiosk mode (hides top nav)' }, + { keys: ['d', 'E'], description: 'Expand all rows' }, + { keys: ['d', 'C'], description: 'Collapse all rows' }, + { keys: ['mod+o'], description: 'Toggle shared graph crosshair' }, ], - "Focused Panel": [ - { keys: ["e"], description: "Toggle panel edit view" }, - { keys: ["v"], description: "Toggle panel fullscreen view" }, - { keys: ["p", "s"], description: "Open Panel Share Modal" }, - { keys: ["p", "r"], description: "Remove Panel" } + 'Focused Panel': [ + { keys: ['e'], description: 'Toggle panel edit view' }, + { keys: ['v'], description: 'Toggle panel fullscreen view' }, + { keys: ['p', 's'], description: 'Open Panel Share Modal' }, + { keys: ['p', 'r'], description: 'Remove Panel' }, ], - "Focused Row": [ - { keys: ["r", "c"], description: "Collapse Row" }, - { keys: ["r", "r"], description: "Remove Row" } + 'Focused Row': [ + { keys: ['r', 'c'], description: 'Collapse Row' }, + { keys: ['r', 'r'], description: 'Remove Row' }, ], - "Time Range": [ - { keys: ["t", "z"], description: "Zoom out time range" }, + 'Time Range': [ + { keys: ['t', 'z'], description: 'Zoom out time range' }, { - keys: ["t", ''], - description: "Move time range back" + keys: ['t', ''], + description: 'Move time range back', }, { - keys: ["t", ''], - description: "Move time range forward" - } - ] + keys: ['t', ''], + description: 'Move time range forward', + }, + ], }; } dismiss() { - appEvents.emit("hide-modal"); + appEvents.emit('hide-modal'); } } export function helpModal() { return { - restrict: "E", - templateUrl: "public/app/core/components/help/help.html", + restrict: 'E', + templateUrl: 'public/app/core/components/help/help.html', controller: HelpCtrl, bindToController: true, transclude: true, - controllerAs: "ctrl", - scope: {} + controllerAs: 'ctrl', + scope: {}, }; } -coreModule.directive("helpModal", helpModal); +coreModule.directive('helpModal', helpModal); diff --git a/public/app/core/components/info_popover.ts b/public/app/core/components/info_popover.ts index cac25b28b9d..9d2d13c9f01 100644 --- a/public/app/core/components/info_popover.ts +++ b/public/app/core/components/info_popover.ts @@ -1,33 +1,33 @@ /// -import _ from "lodash"; -import coreModule from "app/core/core_module"; -import Drop from "tether-drop"; +import _ from 'lodash'; +import coreModule from 'app/core/core_module'; +import Drop from 'tether-drop'; export function infoPopover() { return { - restrict: "E", + restrict: 'E', template: '', transclude: true, link: function(scope, elem, attrs, ctrl, transclude) { - var offset = attrs.offset || "0 -10px"; - var position = attrs.position || "right middle"; - var classes = "drop-help drop-hide-out-of-bounds"; - var openOn = "hover"; + var offset = attrs.offset || '0 -10px'; + var position = attrs.position || 'right middle'; + var classes = 'drop-help drop-hide-out-of-bounds'; + var openOn = 'hover'; - elem.addClass("gf-form-help-icon"); + elem.addClass('gf-form-help-icon'); if (attrs.wide) { - classes += " drop-wide"; + classes += ' drop-wide'; } if (attrs.mode) { - elem.addClass("gf-form-help-icon--" + attrs.mode); + elem.addClass('gf-form-help-icon--' + attrs.mode); } transclude(function(clone, newScope) { - var content = document.createElement("div"); - content.className = "markdown-html"; + var content = document.createElement('div'); + content.className = 'markdown-html'; _.each(clone, node => { content.appendChild(node); @@ -44,21 +44,21 @@ export function infoPopover() { offset: offset, constraints: [ { - to: "window", - attachment: "together", - pin: true - } - ] - } + to: 'window', + attachment: 'together', + pin: true, + }, + ], + }, }); - var unbind = scope.$on("$destroy", function() { + var unbind = scope.$on('$destroy', function() { drop.destroy(); unbind(); }); }); - } + }, }; } -coreModule.directive("infoPopover", infoPopover); +coreModule.directive('infoPopover', infoPopover); diff --git a/public/app/core/components/json_explorer/helpers.ts b/public/app/core/components/json_explorer/helpers.ts index c50fc5a0146..69fd422fff1 100644 --- a/public/app/core/components/json_explorer/helpers.ts +++ b/public/app/core/components/json_explorer/helpers.ts @@ -13,7 +13,7 @@ function escapeString(str: string): string { */ export function isObject(value: any): boolean { var type = typeof value; - return !!value && type === "object"; + return !!value && type === 'object'; } /* @@ -23,13 +23,13 @@ export function isObject(value: any): boolean { */ export function getObjectName(object: Object): string { if (object === undefined) { - return ""; + return ''; } if (object === null) { - return "Object"; + return 'Object'; } - if (typeof object === "object" && !object.constructor) { - return "Object"; + if (typeof object === 'object' && !object.constructor) { + return 'Object'; } const funcNameRegex = /function ([^(]*)/; @@ -37,7 +37,7 @@ export function getObjectName(object: Object): string { if (results && results.length > 1) { return results[1]; } else { - return ""; + return ''; } } @@ -46,7 +46,7 @@ export function getObjectName(object: Object): string { */ export function getType(object: Object): string { if (object === null) { - return "null"; + return 'null'; } return typeof object; } @@ -57,20 +57,20 @@ export function getType(object: Object): string { export function getValuePreview(object: Object, value: string): string { var type = getType(object); - if (type === "null" || type === "undefined") { + if (type === 'null' || type === 'undefined') { return type; } - if (type === "string") { + if (type === 'string') { value = '"' + escapeString(value) + '"'; } - if (type === "function") { + if (type === 'function') { // Remove content of the function return ( object .toString() - .replace(/[\r\n]/g, "") - .replace(/\{.*\}/, "") + "{…}" + .replace(/[\r\n]/g, '') + .replace(/\{.*\}/, '') + '{…}' ); } return value; @@ -80,11 +80,11 @@ export function getValuePreview(object: Object, value: string): string { * Generates inline preview for a JavaScript object */ export function getPreview(object: string): string { - let value = ""; + let value = ''; if (isObject(object)) { value = getObjectName(object); if (Array.isArray(object)) { - value += "[" + object.length + "]"; + value += '[' + object.length + ']'; } } else { value = getValuePreview(object, object); diff --git a/public/app/core/components/json_explorer/json_explorer.ts b/public/app/core/components/json_explorer/json_explorer.ts index 01c0099c178..5c879bcee0f 100644 --- a/public/app/core/components/json_explorer/json_explorer.ts +++ b/public/app/core/components/json_explorer/json_explorer.ts @@ -7,10 +7,10 @@ import { getType, getValuePreview, cssClass, - createElement -} from "./helpers"; + createElement, +} from './helpers'; -import _ from "lodash"; +import _ from 'lodash'; const DATE_STRING_REGEX = /(^\d{1,4}[\.|\\/|-]\d{1,2}[\.|\\/|-]\d{1,4})(\s*(?:0?[1-9]:[0-5]|1(?=[012])\d:[0-5])\d\s*[ap]m)?$/; const PARTIAL_DATE_REGEX = /\d{2}:\d{2}:\d{2} GMT-\d{4}/; @@ -35,7 +35,7 @@ export interface JsonExplorerConfig { const _defaultConfig: JsonExplorerConfig = { animateOpen: true, animateClose: true, - theme: null + theme: null, }; /** @@ -111,7 +111,7 @@ export class JsonExplorer { */ private get isDate(): boolean { return ( - this.type === "string" && + this.type === 'string' && (DATE_STRING_REGEX.test(this.json) || JSON_DATE_REGEX.test(this.json) || PARTIAL_DATE_REGEX.test(this.json)) @@ -122,7 +122,7 @@ export class JsonExplorer { * is this a URL string? */ private get isUrl(): boolean { - return this.type === "string" && this.json.indexOf("http") === 0; + return this.type === 'string' && this.json.indexOf('http') === 0; } /* @@ -161,7 +161,7 @@ export class JsonExplorer { * This means that the formatter was called as a sub formatter of a parent formatter */ private get hasKey(): boolean { - return typeof this.key !== "undefined"; + return typeof this.key !== 'undefined'; } /* @@ -204,7 +204,7 @@ export class JsonExplorer { } else { this.removeChildren(this.config.animateClose); } - this.element.classList.toggle(cssClass("open")); + this.element.classList.toggle(cssClass('open')); } } @@ -225,10 +225,10 @@ export class JsonExplorer { this.removeChildren(false); if (depth === 0) { - this.element.classList.remove(cssClass("open")); + this.element.classList.remove(cssClass('open')); } else { this.appendChildren(this.config.animateOpen); - this.element.classList.add(cssClass("open")); + this.element.classList.add(cssClass('open')); } } } @@ -242,27 +242,27 @@ export class JsonExplorer { } renderArray() { - const arrayWrapperSpan = createElement("span"); - arrayWrapperSpan.appendChild(createElement("span", "bracket", "[")); + const arrayWrapperSpan = createElement('span'); + arrayWrapperSpan.appendChild(createElement('span', 'bracket', '[')); // some pretty handling of number arrays if (this.isNumberArray()) { this.json.forEach((val, index) => { if (index > 0) { arrayWrapperSpan.appendChild( - createElement("span", "array-comma", ",") + createElement('span', 'array-comma', ',') ); } - arrayWrapperSpan.appendChild(createElement("span", "number", val)); + arrayWrapperSpan.appendChild(createElement('span', 'number', val)); }); this.skipChildren = true; } else { arrayWrapperSpan.appendChild( - createElement("span", "number", this.json.length) + createElement('span', 'number', this.json.length) ); } - arrayWrapperSpan.appendChild(createElement("span", "bracket", "]")); + arrayWrapperSpan.appendChild(createElement('span', 'bracket', ']')); return arrayWrapperSpan; } @@ -273,11 +273,11 @@ export class JsonExplorer { */ render(skipRoot = false): HTMLDivElement { // construct the root element and assign it to this.element - this.element = createElement("div", "row"); + this.element = createElement('div', 'row'); // construct the toggler link - const togglerLink = createElement("a", "toggler-link"); - const togglerIcon = createElement("span", "toggler"); + const togglerLink = createElement('a', 'toggler-link'); + const togglerIcon = createElement('span', 'toggler'); // if this is an object we need a wrapper span (toggler) if (this.isObject) { @@ -286,21 +286,21 @@ export class JsonExplorer { // if this is child of a parent formatter we need to append the key if (this.hasKey) { - togglerLink.appendChild(createElement("span", "key", `${this.key}:`)); + togglerLink.appendChild(createElement('span', 'key', `${this.key}:`)); } // Value for objects and arrays if (this.isObject) { // construct the value holder element - const value = createElement("span", "value"); + const value = createElement('span', 'value'); // we need a wrapper span for objects - const objectWrapperSpan = createElement("span"); + const objectWrapperSpan = createElement('span'); // get constructor name and append it to wrapper span var constructorName = createElement( - "span", - "constructor-name", + 'span', + 'constructor-name', this.constructorName ); objectWrapperSpan.appendChild(constructorName); @@ -317,16 +317,16 @@ export class JsonExplorer { // Primitive values } else { // make a value holder element - const value = this.isUrl ? createElement("a") : createElement("span"); + const value = this.isUrl ? createElement('a') : createElement('span'); // add type and other type related CSS classes value.classList.add(cssClass(this.type)); if (this.isDate) { - value.classList.add(cssClass("date")); + value.classList.add(cssClass('date')); } if (this.isUrl) { - value.classList.add(cssClass("url")); - value.setAttribute("href", this.json); + value.classList.add(cssClass('url')); + value.setAttribute('href', this.json); } // Append value content to value element @@ -338,17 +338,17 @@ export class JsonExplorer { } // construct a children element - const children = createElement("div", "children"); + const children = createElement('div', 'children'); // set CSS classes for children if (this.isObject) { - children.classList.add(cssClass("object")); + children.classList.add(cssClass('object')); } if (this.isArray) { - children.classList.add(cssClass("array")); + children.classList.add(cssClass('array')); } if (this.isEmpty) { - children.classList.add(cssClass("empty")); + children.classList.add(cssClass('empty')); } // set CSS classes for root element @@ -356,7 +356,7 @@ export class JsonExplorer { this.element.classList.add(cssClass(this.config.theme)); } if (this.isOpen) { - this.element.classList.add(cssClass("open")); + this.element.classList.add(cssClass('open')); } // append toggler and children elements to root element @@ -378,7 +378,7 @@ export class JsonExplorer { // add event listener for toggling if (this.isObject) { - togglerLink.addEventListener("click", this.toggleOpen.bind(this)); + togglerLink.addEventListener('click', this.toggleOpen.bind(this)); } return this.element as HTMLDivElement; @@ -389,7 +389,7 @@ export class JsonExplorer { * Animated option is used when user triggers this via a click */ appendChildren(animated = false) { - const children = this.element.querySelector(`div.${cssClass("children")}`); + const children = this.element.querySelector(`div.${cssClass('children')}`); if (!children || this.isEmpty) { return; @@ -438,7 +438,7 @@ export class JsonExplorer { */ removeChildren(animated = false) { const childrenElement = this.element.querySelector( - `div.${cssClass("children")}` + `div.${cssClass('children')}` ) as HTMLDivElement; if (animated) { @@ -457,7 +457,7 @@ export class JsonExplorer { requestAnimationFrame(removeAChild); } else { if (childrenElement) { - childrenElement.innerHTML = ""; + childrenElement.innerHTML = ''; } } } diff --git a/public/app/core/components/jsontree/jsontree.ts b/public/app/core/components/jsontree/jsontree.ts index 6fac66d32f8..e127d7b14a9 100644 --- a/public/app/core/components/jsontree/jsontree.ts +++ b/public/app/core/components/jsontree/jsontree.ts @@ -1,23 +1,23 @@ -import coreModule from "app/core/core_module"; -import { JsonExplorer } from "../json_explorer/json_explorer"; +import coreModule from 'app/core/core_module'; +import { JsonExplorer } from '../json_explorer/json_explorer'; -coreModule.directive("jsonTree", [ +coreModule.directive('jsonTree', [ function jsonTreeDirective() { return { - restrict: "E", + restrict: 'E', scope: { - object: "=", - startExpanded: "@", - rootName: "@" + object: '=', + startExpanded: '@', + rootName: '@', }, link: function(scope, elem) { var jsonExp = new JsonExplorer(scope.object, 3, { - animateOpen: true + animateOpen: true, }); const html = jsonExp.render(true); elem.html(html); - } + }, }; - } + }, ]); diff --git a/public/app/core/components/layout_selector/layout_selector.ts b/public/app/core/components/layout_selector/layout_selector.ts index d5dd105ddb9..91a3afea250 100644 --- a/public/app/core/components/layout_selector/layout_selector.ts +++ b/public/app/core/components/layout_selector/layout_selector.ts @@ -1,5 +1,5 @@ -import store from "app/core/store"; -import coreModule from "app/core/core_module"; +import store from 'app/core/store'; +import coreModule from 'app/core/core_module'; var template = `
@@ -17,56 +17,56 @@ export class LayoutSelectorCtrl { /** @ngInject **/ constructor(private $rootScope) { - this.mode = store.get("grafana.list.layout.mode") || "grid"; + this.mode = store.get('grafana.list.layout.mode') || 'grid'; } listView() { - this.mode = "list"; - store.set("grafana.list.layout.mode", "list"); - this.$rootScope.appEvent("layout-mode-changed", "list"); + this.mode = 'list'; + store.set('grafana.list.layout.mode', 'list'); + this.$rootScope.appEvent('layout-mode-changed', 'list'); } gridView() { - this.mode = "grid"; - store.set("grafana.list.layout.mode", "grid"); - this.$rootScope.appEvent("layout-mode-changed", "grid"); + this.mode = 'grid'; + store.set('grafana.list.layout.mode', 'grid'); + this.$rootScope.appEvent('layout-mode-changed', 'grid'); } } /** @ngInject **/ export function layoutSelector() { return { - restrict: "E", + restrict: 'E', controller: LayoutSelectorCtrl, bindToController: true, - controllerAs: "ctrl", + controllerAs: 'ctrl', scope: {}, - template: template + template: template, }; } /** @ngInject **/ export function layoutMode($rootScope) { return { - restrict: "A", + restrict: 'A', scope: {}, link: function(scope, elem) { - var layout = store.get("grafana.list.layout.mode") || "grid"; - var className = "card-list-layout-" + layout; + var layout = store.get('grafana.list.layout.mode') || 'grid'; + var className = 'card-list-layout-' + layout; elem.addClass(className); $rootScope.onAppEvent( - "layout-mode-changed", + 'layout-mode-changed', (evt, newLayout) => { elem.removeClass(className); - className = "card-list-layout-" + newLayout; + className = 'card-list-layout-' + newLayout; elem.addClass(className); }, scope ); - } + }, }; } -coreModule.directive("layoutSelector", layoutSelector); -coreModule.directive("layoutMode", layoutMode); +coreModule.directive('layoutSelector', layoutSelector); +coreModule.directive('layoutMode', layoutMode); diff --git a/public/app/core/components/manage_dashboards/manage_dashboards.ts b/public/app/core/components/manage_dashboards/manage_dashboards.ts index 5c53e2ece4b..b8132f6f643 100644 --- a/public/app/core/components/manage_dashboards/manage_dashboards.ts +++ b/public/app/core/components/manage_dashboards/manage_dashboards.ts @@ -1,7 +1,7 @@ -import _ from "lodash"; -import coreModule from "app/core/core_module"; -import appEvents from "app/core/app_events"; -import { SearchSrv } from "app/core/services/search_srv"; +import _ from 'lodash'; +import coreModule from 'app/core/core_module'; +import appEvents from 'app/core/app_events'; +import { SearchSrv } from 'app/core/services/search_srv'; export class ManageDashboardsCtrl { public sections: any[]; @@ -14,9 +14,9 @@ export class ManageDashboardsCtrl { hasFilters = false; selectAllChecked = false; starredFilterOptions = [ - { text: "Filter by Starred", disabled: true }, - { text: "Yes" }, - { text: "No" } + { text: 'Filter by Starred', disabled: true }, + { text: 'Yes' }, + { text: 'No' }, ]; selectedStarredFilter: any; folderId?: number; @@ -24,12 +24,12 @@ export class ManageDashboardsCtrl { /** @ngInject */ constructor(private backendSrv, navModelSrv, private searchSrv: SearchSrv) { this.query = { - query: "", - mode: "tree", + query: '', + mode: 'tree', tag: [], starred: false, skipRecent: true, - skipStarred: true + skipStarred: true, }; if (this.folderId) { @@ -93,7 +93,7 @@ export class ManageDashboardsCtrl { getFoldersAndDashboardsToDelete() { let selectedDashboards = { folders: [], - dashboards: [] + dashboards: [], }; for (const section of this.sections) { @@ -101,7 +101,7 @@ export class ManageDashboardsCtrl { selectedDashboards.folders.push(section.slug); } else { const selected = _.filter(section.items, { checked: true }); - selectedDashboards.dashboards.push(..._.map(selected, "slug")); + selectedDashboards.dashboards.push(..._.map(selected, 'slug')); } } @@ -122,34 +122,34 @@ export class ManageDashboardsCtrl { const data = this.getFoldersAndDashboardsToDelete(); const folderCount = data.folders.length; const dashCount = data.dashboards.length; - let text = "Do you want to delete the "; + let text = 'Do you want to delete the '; let text2; if (folderCount > 0 && dashCount > 0) { - text += `selected folder${folderCount === 1 ? "" : "s"} and dashboard${ - dashCount === 1 ? "" : "s" + text += `selected folder${folderCount === 1 ? '' : 's'} and dashboard${ + dashCount === 1 ? '' : 's' }?`; text2 = `All dashboards of the selected folder${ - folderCount === 1 ? "" : "s" + folderCount === 1 ? '' : 's' } will also be deleted`; } else if (folderCount > 0) { text += `selected folder${ - folderCount === 1 ? "" : "s" + folderCount === 1 ? '' : 's' } and all its dashboards?`; } else { - text += `selected dashboard${dashCount === 1 ? "" : "s"}?`; + text += `selected dashboard${dashCount === 1 ? '' : 's'}?`; } - appEvents.emit("confirm-modal", { - title: "Delete", + appEvents.emit('confirm-modal', { + title: 'Delete', text: text, text2: text2, - icon: "fa-trash", - yesText: "Delete", + icon: 'fa-trash', + yesText: 'Delete', onConfirm: () => { const foldersAndDashboards = data.folders.concat(data.dashboards); this.deleteFoldersAndDashboards(foldersAndDashboards); - } + }, }); } @@ -165,36 +165,36 @@ export class ManageDashboardsCtrl { let msg; if (folderCount > 0 && dashCount > 0) { - header = `Folder${folderCount === 1 ? "" : "s"} And Dashboard${ - dashCount === 1 ? "" : "s" + header = `Folder${folderCount === 1 ? '' : 's'} And Dashboard${ + dashCount === 1 ? '' : 's' } Deleted`; - msg = `${folderCount} folder${folderCount === 1 ? "" : "s"} `; + msg = `${folderCount} folder${folderCount === 1 ? '' : 's'} `; msg += `and ${dashCount} dashboard${ - dashCount === 1 ? "" : "s" + dashCount === 1 ? '' : 's' } has been deleted`; } else if (folderCount > 0) { - header = `Folder${folderCount === 1 ? "" : "s"} Deleted`; + header = `Folder${folderCount === 1 ? '' : 's'} Deleted`; if (folderCount === 1) { msg = `${folders[0].dashboard.title} has been deleted`; } else { msg = `${folderCount} folder${ - folderCount === 1 ? "" : "s" + folderCount === 1 ? '' : 's' } has been deleted`; } } else if (dashCount > 0) { - header = `Dashboard${dashCount === 1 ? "" : "s"} Deleted`; + header = `Dashboard${dashCount === 1 ? '' : 's'} Deleted`; if (dashCount === 1) { msg = `${dashboards[0].dashboard.title} has been deleted`; } else { msg = `${dashCount} dashboard${ - dashCount === 1 ? "" : "s" + dashCount === 1 ? '' : 's' } has been deleted`; } } - appEvents.emit("alert-success", [header, msg]); + appEvents.emit('alert-success', [header, msg]); } this.getDashboards(); @@ -206,7 +206,7 @@ export class ManageDashboardsCtrl { for (const section of this.sections) { const selected = _.filter(section.items, { checked: true }); - selectedDashboards.push(..._.map(selected, "slug")); + selectedDashboards.push(..._.map(selected, 'slug')); } return selectedDashboards; @@ -218,21 +218,21 @@ export class ManageDashboardsCtrl { const template = '' + - "`"; - appEvents.emit("show-modal", { + '`'; + appEvents.emit('show-modal', { templateHtml: template, - modalClass: "modal--narrow", + modalClass: 'modal--narrow', model: { dashboards: selectedDashboards, - afterSave: this.getDashboards.bind(this) - } + afterSave: this.getDashboards.bind(this), + }, }); } getTags() { return this.searchSrv.getDashboardTags().then(results => { this.tagFilterOptions = [ - { term: "Filter By Tag", disabled: true } + { term: 'Filter By Tag', disabled: true }, ].concat(results); this.selectedTagFilter = this.tagFilterOptions[0]; }); @@ -271,7 +271,7 @@ export class ManageDashboardsCtrl { } onStarredFilterChange() { - this.query.starred = this.selectedStarredFilter.text === "Yes"; + this.query.starred = this.selectedStarredFilter.text === 'Yes'; this.selectedStarredFilter = this.starredFilterOptions[0]; return this.getDashboards(); } @@ -292,7 +292,7 @@ export class ManageDashboardsCtrl { } clearFilters() { - this.query.query = ""; + this.query.query = ''; this.query.tag = []; this.query.starred = false; this.getDashboards(); @@ -301,16 +301,16 @@ export class ManageDashboardsCtrl { export function manageDashboardsDirective() { return { - restrict: "E", + restrict: 'E', templateUrl: - "public/app/core/components/manage_dashboards/manage_dashboards.html", + 'public/app/core/components/manage_dashboards/manage_dashboards.html', controller: ManageDashboardsCtrl, bindToController: true, - controllerAs: "ctrl", + controllerAs: 'ctrl', scope: { - folderId: "=" - } + folderId: '=', + }, }; } -coreModule.directive("manageDashboards", manageDashboardsDirective); +coreModule.directive('manageDashboards', manageDashboardsDirective); diff --git a/public/app/core/components/navbar/navbar.ts b/public/app/core/components/navbar/navbar.ts index 63534db01eb..7e95be72458 100644 --- a/public/app/core/components/navbar/navbar.ts +++ b/public/app/core/components/navbar/navbar.ts @@ -1,6 +1,6 @@ -import coreModule from "../../core_module"; -import { NavModel } from "../../nav_model_srv"; -import appEvents from "app/core/app_events"; +import coreModule from '../../core_module'; +import { NavModel } from '../../nav_model_srv'; +import appEvents from 'app/core/app_events'; export class NavbarCtrl { model: NavModel; @@ -9,7 +9,7 @@ export class NavbarCtrl { constructor() {} showSearch() { - appEvents.emit("show-dash-search"); + appEvents.emit('show-dash-search'); } navItemClicked(navItem, evt) { @@ -22,21 +22,21 @@ export class NavbarCtrl { export function navbarDirective() { return { - restrict: "E", - templateUrl: "public/app/core/components/navbar/navbar.html", + restrict: 'E', + templateUrl: 'public/app/core/components/navbar/navbar.html', controller: NavbarCtrl, bindToController: true, - controllerAs: "ctrl", + controllerAs: 'ctrl', scope: { - model: "=" + model: '=', }, - link: function(scope, elem) {} + link: function(scope, elem) {}, }; } export function pageH1() { return { - restrict: "E", + restrict: 'E', template: `

@@ -45,10 +45,10 @@ export function pageH1() {

`, scope: { - model: "=" - } + model: '=', + }, }; } -coreModule.directive("pageH1", pageH1); -coreModule.directive("navbar", navbarDirective); +coreModule.directive('pageH1', pageH1); +coreModule.directive('navbar', navbarDirective); diff --git a/public/app/core/components/org_switcher.ts b/public/app/core/components/org_switcher.ts index f3792f48c73..b682acfcad0 100644 --- a/public/app/core/components/org_switcher.ts +++ b/public/app/core/components/org_switcher.ts @@ -1,7 +1,7 @@ /// -import coreModule from "app/core/core_module"; -import { contextSrv } from "app/core/services/context_srv"; +import coreModule from 'app/core/core_module'; +import { contextSrv } from 'app/core/services/context_srv'; const template = `