You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/09/13 09:52:58 UTC
[06/69] [abbrv] ignite git commit: Web Console beta-3.
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/public/stylesheets/style.scss b/modules/web-console/src/main/js/public/stylesheets/style.scss
deleted file mode 100644
index 9f35637..0000000
--- a/modules/web-console/src/main/js/public/stylesheets/style.scss
+++ /dev/null
@@ -1,2156 +0,0 @@
-/*
- * 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.
- */
-
-@import "./font-awesome-custom";
-@import "./bootstrap-custom";
-@import "./variables";
-
-@import "./../../app/directives/information/information.scss";
-
-@font-face {
- font-family: 'Roboto Slab';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v6/y7lebkjgREBJK96VQi37ZiwlidHJgAgmTjOEEzwu1L8.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Roboto Slab';
- font-style: normal;
- font-weight: 700;
- src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJTdGNerWpg2Hn6A-BxWgZ_I.ttf) format('truetype');
-}
-
-hr {
- margin: 20px 0;
-}
-
-.theme-line a.active {
- font-weight: bold;
- font-size: 1.1em;
-}
-
-.theme-line a:focus {
- text-decoration: underline;
- outline: none;
-}
-
-.navbar-default .navbar-brand, .navbar-default .navbar-brand:hover {
- position: absolute;
- left: 0;
- text-align: center;
-}
-
-.navbar-brand {
- padding: 5px 0;
- margin: 10px 0;
-}
-
-.modal.center .modal-dialog {
- position: fixed;
- top: 50%;
- left: 50%;
- -webkit-transform: translateX(-50%) translateY(-50%);
- transform: translateX(-50%) translateY(-50%);
-}
-
-.border-left {
- box-shadow: 1px 0 0 0 $gray-lighter inset;
-}
-
-.border-right {
- box-shadow: 1px 0 0 0 $gray-lighter;
-}
-
-.theme-line header {
- background-color: $ignite-background-color;
-}
-
-.theme-line .docs-header h1 {
- color: $ignite-header-color;
- margin-top: 0;
- font-size: 22px;
-}
-
-.theme-line .footer {
- text-align: center;
-}
-
-.table.table-vertical-middle tbody > tr > td {
- vertical-align: middle;
-}
-
-ul.navbar-nav, .sidebar-nav {
- li.active > a {
- color: $link-color;
- }
-
- li.active > a:not(.dropdown-toggle) {
- cursor: default;
- pointer-events: none;
- }
-}
-
-.theme-line .sidebar-nav {
- padding-bottom: 30px;
-
- ul {
- padding: 0;
- list-style: none;
- margin: 3px 0 0;
-
- li {
- line-height: $input-height;
-
- a {
- font-size: 18px;
- color: $ignite-header-color;
- position: relative;
- white-space: nowrap;
- overflow: hidden;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
-
- span.fa-stack {
- margin-right: 5px;
- font-size: 12px;
- height: 26px;
- }
- }
-
- a:hover { color: $link-hover-color; }
-
- a.active {
- color: $link-color;
- }
- }
- }
-}
-
-.theme-line .sidebar-nav ul li a:hover {
- text-decoration: none;
-}
-
-.theme-line .select {
- li a.active {
- color: $dropdown-link-active-color;
- }
-
- li a:hover {
- color: $dropdown-link-hover-color;
- }
-}
-
-.theme-line .select,
-.theme-line .typeahead {
- .active {
- font-size: 1em;
- background-color: $gray-lighter;
- }
-}
-
-.theme-line button.form-control.placeholder {
- color: $input-color-placeholder;
-}
-
-.theme-line .summary-pojo-list > ul.dropdown-menu {
- width: 100%;
- max-width: none;
-}
-
-.tooltip {
- word-wrap: break-word;
-}
-
-.theme-line ul.dropdown-menu {
- min-width: 120px;
- max-width: 280px;
- max-height: 20em;
- overflow: auto;
- overflow-x: hidden;
- outline-style: none;
-
- li > a {
- display: block;
-
- //cursor: default;
- padding: 3px 10px;
-
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- i {
- float: right;
- color: $brand-primary;
- background-color: transparent;
- line-height: $line-height-base;
- margin-left: 5px;
- margin-right: 0;
- }
- }
-
- li.divider {
- margin: 3px 0;
- }
-}
-
-.theme-line .border-left .sidebar-nav {
- padding-left: 15px;
-}
-
-.theme-line .suggest {
- padding: 5px;
- display: inline-block;
- font-size: 12px;
-}
-
-.theme-line header {
- border-bottom: 8px solid $ignite-border-bottom-color;
-
- p {
- color: $ignite-header-color;
- }
-}
-
-.header .nav.navbar-nav.pull-right > li > a {
- padding-right: 0;
-}
-
-.header .title {
- margin: 20px 0 5px 0;
- padding: 0 15px;
-
- font-size: 1.4em;
-}
-
-.header .nav.navbar-nav .not-link {
- padding: 15px;
- display: inline-block;
-}
-
-.nav > li {
- > a {
- color: $navbar-default-link-color
- }
- > a:hover {
- color: $link-hover-color
- }
- > a.active {
- color: $link-color
- }
-}
-
-.theme-line header .navbar-nav a {
- line-height: 25px;
- font-size: 18px;
-}
-
-.theme-line .section-right {
- padding-left: 30px;
-}
-
-.body-overlap .main-content {
- margin-top: 30px;
-}
-
-.body-box .main-content,
-.body-overlap .main-content {
- padding: 30px;
- box-shadow: 0 0 0 1px $ignite-border-color;
- background-color: $ignite-background-color;
-}
-
-body {
- font-weight: 400;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-weight: 700;
- margin-bottom: 10px;
-}
-
-.container-footer {
- margin-top: 20px;
- margin-bottom: 20px;
-
- p {
- font-size: 12px;
- margin-bottom: 0;
- }
-}
-
-/* Modal */
-.modal {
- display: block;
- overflow: hidden;
-}
-
-.modal .close {
- position: absolute;
- top: 10px;
- right: 10px;
- float: none;
-}
-
-.modal-header {
- border-top-left-radius: 6px;
- border-top-right-radius: 6px;
-}
-
-// Close icon
-.modal-header .close {
- margin-right: -2px;
-}
-
-.modal .modal-dialog {
- width: 650px;
-}
-
-.modal .modal-content {
- background-color: $gray-lighter;
-
- .input-tip {
- padding-top: 1px;
- }
-}
-
-.modal .modal-content .modal-header {
- background-color: $ignite-background-color;
- text-align: center;
- color: $ignite-header-color;
- padding: 15px 25px 15px 15px;
-}
-
-.modal .modal-content .modal-header h4 {
- font-size: 22px;
-}
-
-.modal .modal-content .modal-footer {
- margin-top: 0;
-}
-
-.modal-footer {
- label {
- float: left;
- margin: 0;
- }
-
- .btn:last-child {
- margin-right: 0;
- }
-
- .checkbox {
- margin: 0;
- }
-}
-
-.login-header {
- margin-top: 0;
- margin-bottom: 20px;
- font-size: 2em;
-}
-
-.login-footer {
- @extend .modal-footer;
-
- padding-left: 0;
- padding-right: 0;
-
- .btn {
- margin-right: 0;
- }
-}
-
-.modal-body {
- margin-left: 20px;
- margin-right: 20px;
-}
-
-.modal-body-with-scroll {
- max-height: 420px;
- overflow-y: auto;
- margin: 0;
-}
-
-.greedy {
- min-height: 100%;
- height: #{"calc(100vh - 270px)"};
-}
-
-.signin-greedy {
- height: #{"calc(100vh - 300px)"};
-}
-
-@media (min-width: 768px) {
- .navbar-nav > li > a {
- padding: 0 15px;
- }
-}
-
-.details-row {
- padding: 0 5px;
-}
-
-.details-row, .settings-row {
- display: block;
- margin: 10px 0;
-
- [class*="col-"] {
- display: inline-block;
- vertical-align: middle;
- float: none;
- }
-
- input[type="checkbox"] {
- line-height: 20px;
- margin-right: 5px;
- }
-
- .checkbox label {
- line-height: 20px !important;
- vertical-align: middle;
- }
-}
-
-.group-section {
- margin-top: 20px;
-}
-
-.details-row:first-child {
- margin-top: 0;
-
- .group-section {
- margin-top: 10px;
- }
-}
-
-.details-row:last-child {
- margin-bottom: 0;
-}
-
-.settings-row:first-child {
- margin-top: 0;
-
- .group-section {
- margin-top: 0;
- }
-}
-
-.settings-row:last-child {
- margin-bottom: 0;
-}
-
-button, .btn {
- margin-right: 5px;
-}
-
-i.btn {
- margin-right: 0;
-}
-
-.btn {
- padding: 3px 6px;
-
- :focus {
- //outline: none;
- //border: 1px solid $btn-default-border;
- }
-}
-
-.btn-group.pull-right {
- margin-right: 0;
-}
-
-.btn-group {
- margin-right: 5px;
-
- > button, a.btn {
- margin-right: 0;
- }
-
- button.btn + .btn {
- margin-left: 0;
- }
-
- > .btn + .dropdown-toggle {
- margin-right: 0;
- padding: 3px 6px;
- border-left-width: 0;
- }
-}
-
-h1,
-h2,
-h3 {
- user-select: none;
- font-weight: normal;
- /* Makes the vertical size of the text the same for all fonts. */
- line-height: 1;
-}
-
-h3 {
- font-size: 1.2em;
- margin-top: 0;
- margin-bottom: 1.5em;
-}
-
-.base-control {
- text-align: left;
- padding: 3px 3px;
- height: $input-height;
-}
-
-.sql-name-input {
- @extend .form-control;
-
- width: auto;
-}
-
-.form-control {
- @extend .base-control;
-
- display: inline-block;
-
- button {
- text-align: left;
- }
-}
-
-button.form-control {
- display: block;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-
-.theme-line .notebook-header {
- border-color: $gray-lighter;
-
- h1 {
- padding: 0;
- margin: 0;
-
- height: 40px;
-
- label {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- margin-top: 5px;
- }
-
- .btn-group {
- margin-top: -5px;
- margin-left: 5px;
- }
-
- > i.btn {
- float: right;
- line-height: 30px;
- }
-
- input {
- font-size: 22px;
- height: 35px;
- }
-
- a.dropdown-toggle {
- font-size: $font-size-base;
- margin-right: 5px;
- }
- }
-}
-
-.theme-line .sql-notebooks {
- li.custom > a {
- color: $brand-info;
- font-weight: bold;
- }
-
- li.custom > a:hover {
- color: darken($brand-info, 15%);
- }
-}
-
-.theme-line .paragraphs {
- .panel-group .panel + .panel {
- margin-top: 30px;
- }
-
- .btn-group {
- margin-right: 0;
- }
-
- .sql-editor {
- padding: 5px 0;
-
- .ace_cursor {
- opacity: 1;
- }
-
- .ace_hidden-cursors {
- opacity: 1;
- }
-
- .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell {
- padding-right: 5px;
- }
- }
-
- .sql-controls {
- margin: 10px 0;
- padding: 0 10px;
- }
-
- .sql-table-total {
- padding: 0 10px;
-
- label, b {
- display: inline-block;
-
- padding-top: 5px;
-
- height: 27px;
- }
-
- margin-bottom: 10px;
- }
-
- .sql-table {
- height: 400px;
- }
-
- table thead {
- background-color: white;
- }
-
- .wrong-caches-filter {
- text-align: center;
- color: $ignite-placeholder-color;
- height: 65px;
- line-height: 65px;
- }
-
- .empty-caches {
- text-align: center;
- color: $ignite-placeholder-color;
- height: 55px;
- line-height: 55px;
- }
-
- .sql-error-result {
- padding: 10px 0;
-
- text-align: center;
- color: $brand-primary;
-
- border-top: 1px solid $ignite-border-color;
- }
-
- .sql-empty-result {
- margin-top: 10px;
- margin-bottom: 10px;
- text-align: center;
- color: $ignite-placeholder-color;
- }
-
- .sql-next {
- float: right;
-
- .disabled {
- cursor: default;
- text-decoration: none;
- }
-
- a {
- margin-right: 5px;
- margin-bottom: 5px;
- }
-
- i {
- margin-top: 3px;
- margin-right: 10px;
- }
- }
-}
-
-.theme-line .panel-heading {
- padding: 5px 10px;
- margin: 0;
- cursor: pointer;
- font-size: $font-size-large;
- line-height: 24px;
-
- label {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- max-width: calc(100% - 85px);
- cursor: pointer;
- }
-
- .btn-group {
- vertical-align:top;
- margin-left: 10px;
-
- i { line-height: 18px; }
- }
-
- > i {
- vertical-align: top;
- line-height: 26px;
- height: 26px;
- }
-
- .fa {
- line-height: 26px;
- }
-
- .fa-floppy-o {
- float: right;
- }
-
- .fa-chevron-circle-right, .fa-chevron-circle-down {
- font-size: $font-size-base;
- color: inherit;
- float: left;
- }
-
- .fa-undo {
- padding: 1px 6px;
-
- font-size: 16px;
- }
-
- .fa-undo:hover {
- padding: 0 5px;
-
- border-radius: 5px;
- border: thin dotted $ignite-darck-border-color;
- }
-}
-
-.theme-line .panel-heading:hover {
- text-decoration: underline;
-}
-
-.theme-line .panel-body {
- padding: 20px;
-}
-
-.theme-line .main-content a.customize {
- margin-left: 5px;
-}
-
-.theme-line .panel-collapse {
- margin: 0;
-}
-
-.theme-line table.links {
- table-layout: fixed;
- border-collapse: collapse;
-
- width: 100%;
-
- label.placeholder {
- text-align: center;
- color: $ignite-placeholder-color;
- width: 100%;
- }
-
- input[type="text"] {
- font-weight: normal;
- }
-
- input[type="radio"] {
- margin-left: 1px;
- margin-right: 5px;
- }
-
- tbody {
- border-left: 10px solid transparent;
- }
-
- tbody td:first-child {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- tfoot > tr > td {
- padding: 0;
-
- .pagination {
- margin: 10px 0;
-
- > .active > a {
- border-color: $table-border-color;
- background-color: $gray-lighter;
- }
- }
- }
-}
-
-.theme-line table.links-edit {
- @extend table.links;
-
- margin-top: 0;
- margin-bottom: 5px;
-
- label {
- line-height: $input-height;
- }
-
- td {
- padding-left: 0;
- }
-}
-
-.theme-line table.links-edit-sub {
- @extend table.links-edit;
-
- margin-top: 0;
- margin-bottom: 0;
-}
-
-.theme-line table.links-edit-details {
- @extend table.links;
-
- margin-bottom: 10px;
-
- label {
- line-height: $input-height;
- color: $ignite-header-color;
- }
-
- td {
- padding: 0;
-
- .input-tip {
- padding: 0;
- }
- }
-}
-
-.theme-line table.admin {
- tr:hover {
- cursor: default;
- }
-
- thead {
- .pagination {
- margin: 0;
- }
- }
-
- thead > tr th.header {
- padding: 0 0 10px;
-
- div {
- padding: 0;
- }
-
- input[type="text"] {
- font-weight: normal;
- }
- }
-
- margin-bottom: 10px;
-
- label {
- line-height: $input-height;
- color: $ignite-header-color;
- }
-
- thead > tr th, td {
- padding: 10px 10px;
-
- .input-tip {
- padding: 0;
- }
- }
-
- tfoot > tr > td {
- padding: 0;
- }
-
- .pagination {
- margin: 10px 0;
- font-weight: normal;
-
- > .active > a {
- border-color: $table-border-color;
- background-color: $gray-lighter;
- }
- }
-}
-
-.admin-summary {
- padding-bottom: 10px;
-}
-
-.import-domain-model-wizard-page {
- margin: 15px;
-}
-
-.scrollable-y {
- overflow-x: hidden;
- overflow-y: auto;
-}
-
-.theme-line table.metadata {
- margin-bottom: 10px;
-
- tr:hover {
- cursor: default;
- }
-
- thead > tr {
- label {
- font-weight: bold;
- }
-
- input[type="checkbox"] {
- cursor: pointer;
- }
- }
-
- thead > tr th.header {
- padding: 0 0 10px;
-
- .pull-right {
- padding: 0;
- }
-
- input[type="checkbox"] {
- cursor: pointer;
- }
-
- input[type="text"] {
- font-weight: normal;
- }
- }
-
- > thead > tr > th {
- padding: 5px 0 5px 5px !important;
- }
-
- tbody > tr > td {
- padding: 0;
- }
-}
-
-.td-ellipsis {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.table-modal-striped {
- width: 100%;
-
- > tbody > tr {
- border-bottom: 2px solid $ignite-border-color;
-
- input[type="checkbox"] {
- cursor: pointer;
- }
- }
-
- > tbody > tr > td {
- padding: 5px 0 5px 5px !important;
- }
-}
-
-.theme-line table.sql-results {
- margin: 0;
-
- td {
- padding: 3px 6px;
- }
-
- > thead > tr > td {
- padding: 3px 0;
- }
-
- thead > tr > th {
- padding: 3px 6px;
-
- line-height: $input-height;
- }
-
- tfoot > tr > td {
- padding: 0;
-
- .pagination {
- margin: 10px 0 0 0;
-
- > .active > a {
- border-color: $table-border-color;
- background-color: $gray-lighter;
- }
- }
- }
-}
-
-.affix {
- z-index: 910;
- background-color: white;
-
- hr {
- margin: 0;
- }
-}
-
-.affix.padding-top-dflt {
- hr {
- margin-top: 10px;
- }
-}
-
-.affix + .bs-affix-fix {
- height: 78px;
-}
-
-.panel-details {
- margin-top: 5px;
- padding: 10px 5px;
-
- border-radius: 5px;
- border: thin dotted $ignite-border-color;
-}
-
-.panel-details-noborder {
- margin-top: 5px;
- padding: 10px 5px;
-}
-
-.group {
- border-radius: 5px;
- border: thin dotted $ignite-border-color;
-
- text-align: left;
-
- hr {
- margin: 7px 0;
- }
-}
-
-.group-legend {
- margin: -10px 5px 0 10px;
- overflow: visible;
- position: relative;
-
- label {
- padding: 0 5px;
- background: white;
- }
-}
-
-.group-legend-btn {
- background: white;
- float: right;
- line-height: 20px;
- padding: 0 5px 0 5px;
-}
-
-.group-content {
- margin: 10px;
-
- table {
- width: 100%;
- }
-}
-
-.group-content-empty {
- color: $input-color-placeholder;
-
- padding: 10px 0;
- position: relative;
-
- text-align: center;
-}
-
-.content-not-available {
- min-height: 28px;
-
- margin-right: 20px;
-
- border-radius: 5px;
- border: thin dotted $ignite-border-color;
-
- padding: 0;
-
- color: $input-color-placeholder;
- display: table;
- width: 100%;
- height: 26px;
-
- label {
- display: table-cell;
- text-align: center;
- vertical-align: middle;
- }
-}
-
-.tooltip > .tooltip-inner {
- text-align: left;
- border: solid 1px #ccc;
-}
-
-.popover-footer {
- margin: 0; // reset heading margin
- padding: 8px 14px;
- font-size: $font-size-base;
- color: $input-color-placeholder;
- background-color: $popover-title-bg;
- border-top: 1px solid darken($popover-title-bg, 5%);
- border-radius: 0 0 ($border-radius-large - 1) ($border-radius-large - 1);
-}
-
-.popover-content {
- padding: 5px;
-}
-
-.popover:focus {
- outline: none;
- border: 1px solid $btn-default-border;
-}
-
-.theme-line .popover.settings {
- .close {
- position: absolute;
- top: 5px;
- right: 5px;
- }
-}
-
-.theme-line .popover.cache-metadata {
- @extend .popover.settings;
-
- z-index: 1030;
- min-width: 305px;
- max-width: 450px;
-
- .popover-title {
- color: black;
-
- line-height: 27px;
-
- padding: 3px 5px 3px 10px;
-
- white-space: nowrap;
- overflow: hidden;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
-
- .close {
- float: right;
- top: 0;
- right: 0;
- position: relative;
- margin-left: 10px;
- line-height: 27px;
- }
- }
-
- > .popover-content {
- overflow: auto;
-
- white-space: nowrap;
-
- min-height: 400px;
- max-height: 400px;
-
- .content-empty {
- display: block;
- text-align: center;
- line-height: 380px;
-
- color: $input-color-placeholder;
- }
- }
-
- .clickable { cursor: pointer; }
-}
-
-.theme-line .popover.summary-project-structure {
- @extend .popover.settings;
-
- z-index: 1030;
- min-width: 305px;
-
- .popover-title {
- color: black;
-
- line-height: 27px;
-
- padding: 3px 5px 3px 10px;
-
- white-space: nowrap;
- overflow: hidden;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
-
- .close {
- float: right;
- top: 0;
- right: 0;
- position: relative;
- margin-left: 10px;
- line-height: 27px;
- }
- }
-
- > .popover-content {
- overflow: auto;
-
- white-space: nowrap;
-
- min-height: 300px;
- max-height: 300px;
- }
-}
-
-.theme-line .popover.validation-error {
- max-width: 400px;
- color: $brand-primary;
- background: white;
- border: 1px solid $brand-primary;
-
- &.right > .arrow {
- border-right-color: $brand-primary;
- }
-
- .close {
- vertical-align: middle;
- }
-}
-
-label {
- font-weight: normal;
- margin-bottom: 0;
-}
-
-.form-horizontal .checkbox {
- padding-top: 0;
- min-height: 0;
-}
-
-.input-tip {
- display: block;
- overflow: hidden;
- position: relative;
-}
-
-.labelHeader {
- font-weight: bold;
- text-transform: capitalize;
-}
-
-.labelField {
- float: left;
- margin-right: 5px;
-}
-
-.labelFormField {
- float: left;
- line-height: $input-height;
-}
-
-.labelLogin {
- margin-right: 10px;
-}
-
-.form-horizontal .form-group {
- margin: 0;
-}
-
-.form-horizontal .has-feedback .form-control-feedback {
- right: 0;
-}
-
-.tipField {
- float: right;
- line-height: $input-height;
- margin-left: 5px;
-}
-
-.tipLabel {
- font-size: $font-size-base;
- margin-left: 5px;
-}
-
-.fieldSep {
- float: right;
- line-height: $input-height;
- margin: 0 5px;
-}
-
-.fieldButton {
- float: right;
- margin-left: 5px;
- margin-right: 0;
-}
-
-.fa {
- cursor: pointer;
-}
-
-.fa-cursor-default {
- cursor: default !important;
-}
-
-.fa-remove {
- color: $brand-primary;
-}
-
-.fa-chevron-circle-down {
- color: $brand-primary;
- margin-right: 5px;
-}
-
-.fa-chevron-circle-right {
- color: $brand-primary;
- margin-right: 5px;
-}
-
-.fa-question-circle {
- cursor: default;
-}
-
-label.required:after {
- color: $brand-primary;
- content: ' *';
- display: inline;
-}
-
-.blank {
- visibility: hidden;
-}
-
-.alert {
- outline: 0;
- padding: 10px;
- position: fixed;
- z-index: 1050;
- margin: 20px;
- max-width: 700px;
-
- &.top-right {
- top: 60px;
- right: 0;
-
- .close {
- padding-left: 10px;
- }
- }
-
- .alert-icon {
- padding-right: 10px;
- font-size: 16px;
- }
-
- .alert-title {
- color: $text-color;
- }
-
- .close {
- margin-right: 0;
- line-height: 19px;
- }
-}
-
-.summary-tabs {
- margin-top: 0.65em;
-}
-
-.summary-tab {
- img {
- margin-right: 5px;
- height: 16px;
- width: 16px;
- float: left;
- }
-}
-
-input[type="number"]::-webkit-outer-spin-button,
-input[type="number"]::-webkit-inner-spin-button {
- -webkit-appearance: none;
- margin: 0;
-}
-
-input[type="number"] {
- -moz-appearance: textfield;
-}
-
-input.ng-dirty.ng-invalid, button.ng-dirty.ng-invalid {
- border-color: $ignite-invalid-color;
-
- :focus {
- border-color: $ignite-invalid-color;
- }
-}
-
-.form-control-feedback {
- display: inline-block;
- color: $brand-primary;
- line-height: $input-height;
- pointer-events: initial;
-}
-
-.theme-line .nav-tabs > li > a {
- padding: 5px 5px;
- color: $ignite-header-color;
-}
-
-.viewedUser {
- text-align: center;
- background-color: $brand-warning;
-}
-
-a {
- cursor: pointer;
-}
-
-.st-sort-ascent:after {
- content: '\25B2';
-}
-
-.st-sort-descent:after {
- content: '\25BC';
-}
-
-th[st-sort] {
- cursor: pointer;
-}
-
-.panel {
- margin-bottom: 0;
-}
-
-.panel-group {
- margin-bottom: 0;
-}
-
-.panel-group .panel + .panel {
- margin-top: 20px;
-}
-
-.section {
- margin-top: 20px;
-}
-
-.section-top {
- width: 100%;
- margin-top: 10px;
- margin-bottom: 20px;
-}
-
-.advanced-options {
- @extend .section;
- margin-bottom: 20px;
-
- i {
- font-size: 16px;
- }
-}
-
-.modal-advanced-options {
- @extend .advanced-options;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.margin-left-dflt {
- margin-left: 10px;
-}
-
-.margin-top-dflt {
- margin-top: 10px;
-}
-
-.margin-top-dflt-2x {
- margin-top: 20px;
-}
-
-.margin-bottom-dflt {
- margin-bottom: 10px;
-}
-
-.margin-dflt {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.padding-top-dflt {
- padding-top: 10px;
-}
-
-.padding-left-dflt {
- padding-left: 10px;
-}
-
-.padding-bottom-dflt {
- padding-bottom: 10px;
-}
-
-.padding-dflt {
- padding-top: 10px;
- padding-bottom: 10px;
-}
-
-.agent-download {
- padding: 10px 10px 10px 20px;
-}
-
-.ace_content {
- padding-left: 5px;
-}
-
-.ace_hidden-cursors {
- opacity: 0;
-}
-
-.ace_cursor {
- opacity: 0;
-}
-
-.ace_editor {
- margin: 10px 5px 10px 0;
-
- .ace_gutter {
- background: transparent !important;
- border: 1px $ignite-border-color;
- border-right-style: solid;
- }
-
- .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell {
- padding-left: 0.65em;
- }
-}
-
-.preview-highlight-1 {
- position: absolute;
- background-color: #f7faff;
- z-index: 20;
-}
-
-.preview-highlight-2 {
- position: absolute;
- background-color: #f0f6ff;
- z-index: 21;
-}
-
-.preview-highlight-3 {
- position: absolute;
- background-color: #e8f2ff;
- z-index: 22;
-}
-
-.preview-highlight-4 {
- position: absolute;
- background-color: #e1eeff;
- z-index: 23;
-}
-
-.preview-highlight-5 {
- position: absolute;
- background-color: #DAEAFF;
- z-index: 24;
-}
-
-.preview-highlight-6 {
- position: absolute;
- background-color: #D2E5FF;
- z-index: 25;
-}
-
-.preview-highlight-7 {
- position: absolute;
- background-color: #CBE1FF;
- z-index: 26;
-}
-
-.preview-highlight-8 {
- position: absolute;
- background-color: #C3DDFF;
- z-index: 27;
-}
-
-.preview-highlight-9 {
- position: absolute;
- background-color: #BCD9FF;
- z-index: 28;
-}
-
-.preview-highlight-10 {
- position: absolute;
- background-color: #B5D5FF;
- z-index: 29;
-}
-
-.preview-panel {
- min-height: 28px;
-
- margin-left: 20px;
-
- border-radius: 5px;
- border: thin dotted $ignite-border-color;
-
- padding: 0;
-}
-
-.preview-legend {
- top: -10px;
- right: 20px;
- position: absolute;
- z-index: 900;
-
- a {
- background-color: white;
- margin-left: 5px;
- font-size: 0.9em;
- }
-
- .inactive {
- color: $input-color-placeholder;
- }
-}
-
-.preview-content-empty {
- color: $input-color-placeholder;
- display: table;
- width: 100%;
- height: 26px;
-
- label {
- display: table-cell;
- text-align: center;
- vertical-align: middle;
- }
-}
-
-.chart-settings-link {
- padding-left: 10px;
- line-height: $input-height;
-
- label, button {
- margin-left: 5px;
- margin-right: 0;
- }
-
- button.select-manual-caret {
- padding-right: 3px;
-
- .caret { margin-left: 3px; }
- }
-
- a, i {
- font-size: $font-size-base;
- color: $link-color !important;
- margin-right: 5px;
- }
-
- div {
- margin-left: 20px;
- display: inline-block;
- }
-}
-
-.chart-settings {
- margin: 10px 5px 5px 5px !important;
-}
-
-.chart-settings-columns-list {
- border: 1px solid $ignite-border-color;
- list-style: none;
- margin-bottom: 10px;
- min-height: 30px;
- max-height: 200px;
- padding: 5px;
-
- overflow: auto;
-
- & > li {
- float: left;
- }
-
- li:nth-child(even) {
- margin-right: 0;
- }
-
- .fa-close {
- margin-left: 10px;
- }
-}
-
-.btn-chart-column {
- border-radius: 3px;
- font-size: 12px;
- margin: 3px 3px;
- padding: 1px 5px;
- line-height: 1.5;
- cursor: default;
-}
-
-.btn-chart-column-movable {
- @extend .btn-chart-column;
- cursor: move;
-}
-
-.btn-chart-column-agg-fx {
- border: 0;
- margin: 0 0 0 10px;
-}
-
-.dw-loading {
- min-height: 100px;
-}
-
-.dw-loading > .dw-loading-body > .dw-loading-text {
- left: -50%;
-}
-
-.dw-loading.dw-loading-overlay {
- z-index: 1030;
-}
-
-.modal {
- .dw-loading.dw-loading-overlay {
- z-index: 9999;
- }
-
- .dw-loading-body {
- left: 10%;
- }
-}
-
-.panel-tip-container {
- display: inline-block;
-}
-
-button.dropdown-toggle {
- margin-right: 5px;
-}
-
-button.select-toggle {
- position: relative;
- padding-right: 15px;
-}
-
-button.select-toggle::after {
- content: "";
- border-top: 0.3em solid;
- border-right: 0.3em solid transparent;
- border-left: 0.3em solid transparent;
- position: absolute;
- right: 5px;
- top: 50%;
- vertical-align: middle;
-}
-
-// Prevent scroll bars from being hidden for OS X.
-::-webkit-scrollbar {
- -webkit-appearance: none;
-}
-
-::-webkit-scrollbar:vertical {
- width: 10px;
-}
-
-::-webkit-scrollbar:horizontal {
- height: 10px;
-}
-
-::-webkit-scrollbar-thumb {
- border-radius: 8px;
- border: 2px solid white; /* should match background, can't be transparent */
- background-color: rgba(0, 0, 0, .5);
-}
-
-::-webkit-scrollbar-track {
- background-color: white;
- border-radius: 8px;
-}
-
-treecontrol.tree-classic {
- > ul > li {
- padding: 0;
- }
-
- li {
- padding-left: 15px;
- }
-
- li.tree-expanded i.tree-branch-head.fa, li.tree-collapsed i.tree-branch-head.fa, li.tree-leaf i.tree-branch-head.fa, .tree-label i.fa {
- background: none no-repeat;
- padding: 1px 5px 1px 1px;
- }
-
- li.tree-leaf i.tree-leaf-head {
- background: none no-repeat !important;
- padding: 0 !important;
- }
-
- li .tree-selected {
- background-color: white;
- font-weight: normal;
- }
-
- span {
- margin-right: 10px;
- }
-}
-
-.docs-content {
- .affix {
- border-bottom: 1px solid $gray-lighter;
- }
-
- min-height: 100px;
-}
-
-.carousel-caption {
- position: relative;
- left: auto;
- right: auto;
-
- margin-top: 10px;
-
- h3 {
- margin-bottom: 10px;
- }
-}
-
-.carousel-control {
- font-size: 20px;
- z-index: 16;
-
- // Toggles
- .fa-chevron-left,.fa-chevron-right {
- position: absolute;
- bottom: 28px;
- margin-top: -10px;
- z-index: 16;
- display: inline-block;
- margin-left: -10px;
- }
-
- .fa-chevron-left {
- left: 90%;
- margin-left: -10px;
- }
-
- .fa-chevron-right {
- right: 90%;
- margin-right: -10px;
- }
-}
-
-.carousel-control.left {
- background-image: none;
-}
-
-.carousel-control.right {
- background-image: none;
-}
-
-.getting-started-puzzle {
- margin-left: 20px;
-}
-
-.getting-started {
- margin: 15px 15px 300px;
-}
-
-.getting-started-demo {
- color: $brand-info;
-}
-
-.home-panel {
- border-radius: 5px;
- border: thin dotted $panel-default-border;
- background-color: $panel-default-heading-bg;
-
- margin-top: 20px;
- padding: 10px;
-}
-
-.home {
- min-height: 880px;
- padding: 20px;
-
- @media(min-width: 992px) {
- min-height: 450px;
- }
-}
-
-.additional-filter {
- input[type="checkbox"] {
- position: absolute;
- margin-top: 8px;
- }
-
- a {
- font-weight: normal;
- padding-left: 20px;
- float: none;
- }
-}
-
-.grid {
- .ui-grid-header-cell .ui-grid-cell-contents {
- text-align: center;
-
- > span:not(.ui-grid-header-cell-label) {
- position: absolute;
- right: -3px;
- }
- }
-
- .ui-grid-cell .ui-grid-cell-contents {
- text-align: center;
- white-space: pre;
-
- > i.fa {
- cursor: default;
- }
- }
-
- .ui-grid-column-menu-button {
- right: -3px;
- }
-
- .ui-grid-menu-button {
- margin-top: -1px;
- }
-
- .ui-grid-column-menu-button-last-col {
- margin-right: 0
- }
-
- .no-rows {
- .center-container {
- background: white;
-
- .centered > div {
- display: inline-block;
- padding: 10px;
-
- opacity: 1;
-
- background-color: #f5f5f5;
- border-radius: 6px;
- border: 1px solid $ignite-darck-border-color;
- }
- }
- }
-}
-
-.cell-right .ui-grid-cell-contents {
- text-align: right !important;
-}
-
-.cell-left .ui-grid-cell-contents {
- text-align: left !important;
-}
-
-.grid.ui-grid {
- border-left-width: 0;
- border-right-width: 0;
- border-bottom-width: 0;
-}
-
-.summary-tabs {
- .nav-tabs > li:first-child,
- .nav-tabs > li:first-child.active {
- & > a,
- & > a:focus,
- & > a:hover {
- border-left: none;
- border-top-left-radius: 0;
- }
- }
-}
-
-.ribbon-wrapper {
- width: 150px;
- height: 150px;
- position: absolute;
- overflow: hidden;
- top: 0;
- z-index: 1001;
- pointer-events: none;
-}
-
-.ribbon-wrapper.right {
- right: 0;
-}
-
-.ribbon {
- position: absolute;
- top: 42px;
- width: 200px;
- padding: 1px 0;
- color: $btn-primary-color;
- background: $btn-primary-border;
-
- -moz-box-shadow: 0 0 10px rgba(0,0,0,0.5);
- -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.5);
- box-shadow: 0 0 10px rgba(0,0,0,0.5);
-
- right: -42px;
- -moz-transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- transform: rotate(45deg);
-
- > label {
- display: block;
- padding: 1px 0;
- height: 24px;
- line-height: 18px;
-
- text-align: center;
- text-decoration: none;
- font-family: 'Roboto Slab', sans-serif;
- font-size: 20px;
- font-weight: 500;
-
- border: 1px solid rgba(255,255,255,0.3);
-
- -moz-text-shadow: 0 0 10px rgba(0,0,0,0.31);
- -webkit-text-shadow: 0 0 10px rgba(0,0,0,0.31);
- text-shadow: 0 0 10px rgba(0,0,0,0.31);
- }
-}
-
-html,body,.splash-screen {
- width: 100%;
- height: 100%;
-}
-
-.splash {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- top: 0;
- opacity: 1;
- background-color: white;
- z-index: 99999;
-
- .splash-wrapper {
- display: inline-block;
- vertical-align: middle;
- position: relative;
- width: 100%;
- }
-
- .splash-wellcome {
- font-size: 18px;
- margin: 20px 0;
- text-align: center;
- }
-}
-
-.splash:before {
- content: '';
- display: inline-block;
- height: 100%;
- vertical-align: middle;
-}
-
-.spinner {
- margin: 0 auto;
- width: 100px;
- text-align: center;
-
- > div {
- width: 18px;
- height: 18px;
- margin: 0 5px;
- border-radius: 100%;
- display: inline-block;
- -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
- animation: sk-bouncedelay 1.4s infinite ease-in-out both;
- background-color: $brand-primary;
- }
-
- .bounce1 {
- -webkit-animation-delay: -0.32s;
- animation-delay: -0.32s;
- }
-
- .bounce2 {
- -webkit-animation-delay: -0.16s;
- animation-delay: -0.16s;
- }
-}
-
-@-webkit-keyframes sk-bouncedelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0)
- }
- 40% {
- -webkit-transform: scale(1.0)
- }
-}
-
-@keyframes sk-bouncedelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 40% {
- -webkit-transform: scale(1.0);
- transform: scale(1.0);
- }
-}
-
-[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
- display: none !important;
-}
-
-.nvd3 .nv-axis .nv-axisMaxMin text {
- font-weight: normal; /* Here the text can be modified*/
-}
-
-[ng-hide].ng-hide-add.ng-hide-animate {
- display: none;
-}
-
-[ng-show].ng-hide-add.ng-hide-animate {
- display: none;
-}
-
-@media only screen and (max-width: 767px) {
- .container{
- padding: 0 $padding-small-horizontal;
- }
-}
-
-.domains-import-dialog {
- .modal-body {
- height: 325px;
- margin: 0;
- padding: 0;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/public/stylesheets/variables.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/public/stylesheets/variables.scss b/modules/web-console/src/main/js/public/stylesheets/variables.scss
deleted file mode 100644
index 8500eac..0000000
--- a/modules/web-console/src/main/js/public/stylesheets/variables.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.
- */
-
-@import "bootstrap-variables";
-
-$logo-path: "/images/logo.png";
-$input-height: 28px;
-$ignite-placeholder-color: #999999;
-$ignite-border-color: #ddd;
-$ignite-darck-border-color: #aaa;
-$ignite-border-bottom-color: $brand-primary;
-$ignite-background-color: #fff;
-$ignite-header-color: #555;
-$ignite-invalid-color: $brand-primary;
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/serve.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve.js b/modules/web-console/src/main/js/serve.js
deleted file mode 100644
index 891855c..0000000
--- a/modules/web-console/src/main/js/serve.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.
- */
-
-'use strict';
-
-const http = require('http'),
- https = require('https'),
- path = require('path');
-
-/**
- * Event listener for HTTP server "error" event.
- */
-const _onError = (port, error) => {
- if (error.syscall !== 'listen')
- throw error;
-
- var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
-
- // Handle specific listen errors with friendly messages.
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
-
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
-
- break;
- default:
- throw error;
- }
-};
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-const _onListening = (addr) => {
- var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;
-
- console.log('Start listening on ' + bind);
-};
-
-const igniteModules = (process.env.IGNITE_MODULES && path.relative(__dirname, process.env.IGNITE_MODULES)) || './ignite_modules';
-
-const fireUp = require('fire-up').newInjector({
- basePath: __dirname,
- modules: [
- './serve/**/*.js',
- `${igniteModules}/**/*.js`
- ]
-});
-
-Promise.all([fireUp('settings'), fireUp('app'), fireUp('agent-manager'), fireUp('browser-manager')])
- .then((values) => {
- const settings = values[0];
- const app = values[1];
- const agentMgr = values[2];
- const browserMgr = values[3];
-
- // Start rest server.
- const server = settings.server.SSLOptions
- ? https.createServer(settings.server.SSLOptions) : http.createServer();
-
- server.listen(settings.server.port);
- server.on('error', _onError.bind(null, settings.server.port));
- server.on('listening', _onListening.bind(null, server.address()));
-
- app.listen(server);
- browserMgr.attach(server);
-
- // Start legacy agent server for reject connection with message.
- if (settings.agent.legacyPort) {
- const agentLegacySrv = settings.agent.SSLOptions
- ? https.createServer(settings.agent.SSLOptions) : http.createServer();
-
- agentLegacySrv.listen(settings.agent.legacyPort);
- agentLegacySrv.on('error', _onError.bind(null, settings.agent.legacyPort));
- agentLegacySrv.on('listening', _onListening.bind(null, agentLegacySrv.address()));
-
- agentMgr.attachLegacy(agentLegacySrv);
- }
-
- // Start agent server.
- const agentServer = settings.agent.SSLOptions
- ? https.createServer(settings.agent.SSLOptions) : http.createServer();
-
- agentServer.listen(settings.agent.port);
- agentServer.on('error', _onError.bind(null, settings.agent.port));
- agentServer.on('listening', _onListening.bind(null, agentServer.address()));
-
- agentMgr.attach(agentServer);
-
- // Used for automated test.
- if (process.send)
- process.send('running');
- }).catch((err) => {
- console.error(err);
-
- process.exit(1);
- });
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/serve/agent.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/agent.js b/modules/web-console/src/main/js/serve/agent.js
deleted file mode 100644
index a529e94..0000000
--- a/modules/web-console/src/main/js/serve/agent.js
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- * 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.
- */
-
-'use strict';
-
-// Fire me up!
-
-/**
- * Module interaction with agents.
- */
-module.exports = {
- implements: 'agent-manager',
- inject: ['require(lodash)', 'require(ws)', 'require(fs)', 'require(path)', 'require(jszip)', 'require(socket.io)', 'settings', 'mongo']
-};
-
-/**
- * @param _
- * @param fs
- * @param ws
- * @param path
- * @param JSZip
- * @param socketio
- * @param settings
- * @param mongo
- * @returns {AgentManager}
- */
-module.exports.factory = function(_, ws, fs, path, JSZip, socketio, settings, mongo) {
- /**
- *
- */
- class Command {
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} name Command name.
- */
- constructor(demo, name) {
- this._demo = demo;
-
- /**
- * Command name.
- * @type {String}
- */
- this._name = name;
-
- /**
- * Command parameters.
- * @type {Array.<String>}
- */
- this._params = [];
- }
-
- /**
- * Add parameter to command.
- * @param {string} key Parameter key.
- * @param {Object} value Parameter value.
- * @returns {Command}
- */
- addParam(key, value) {
- this._params.push({key, value});
-
- return this;
- }
- }
-
- /**
- * Connected agent descriptor.
- */
- class Agent {
- /**
- * @param {socketIo.Socket} socket - Agent socket for interaction.
- */
- constructor(socket) {
- /**
- * Agent socket for interaction.
- *
- * @type {socketIo.Socket}
- * @private
- */
- this._socket = socket;
- }
-
- /**
- * Send message to agent.
- *
- * @this {Agent}
- * @param {String} event Command name.
- * @param {Object} data Command params.
- * @param {Function} [callback] on finish
- */
- _emit(event, data, callback) {
- if (!this._socket.connected) {
- if (callback)
- callback('org.apache.ignite.agent.AgentException: Connection is closed');
-
- return;
- }
-
- this._socket.emit(event, data, callback);
- }
-
- /**
- * Send message to agent.
- *
- * @param {String} event - Event name.
- * @param {Object?} data - Transmitted data.
- * @returns {Promise}
- */
- executeAgent(event, data) {
- return new Promise((resolve, reject) =>
- this._emit(event, data, (error, res) => {
- if (error)
- return reject(error);
-
- resolve(res);
- })
- );
- }
-
- /**
- * Execute rest request on node.
- *
- * @param {Command} cmd - REST command.
- * @return {Promise}
- */
- executeRest(cmd) {
- const params = {cmd: cmd._name};
-
- for (const param of cmd._params)
- params[param.key] = param.value;
-
- return new Promise((resolve, reject) => {
- this._emit('node:rest', {uri: 'ignite', params, demo: cmd._demo, method: 'GET'}, (error, res) => {
- if (error)
- return reject(new Error(error));
-
- error = res.error;
-
- const code = res.code;
-
- if (code === 401)
- return reject(new Error('Agent failed to authenticate in grid. Please check agent\'s login and password or node port.'));
-
- if (code !== 200)
- return reject(new Error(error || 'Failed connect to node and execute REST command.'));
-
- try {
- const msg = JSON.parse(res.data);
-
- if (msg.successStatus === 0)
- return resolve(msg.response);
-
- if (msg.successStatus === 2)
- return reject(new Error('Agent failed to authenticate in grid. Please check agent\'s login and password or node port.'));
-
- reject(new Error(msg.error));
- }
- catch (e) {
- return reject(e);
- }
- });
- });
- }
-
- /**
- * @param {String} driverPath
- * @param {String} driverClass
- * @param {String} url
- * @param {Object} info
- * @returns {Promise} Promise on list of tables (see org.apache.ignite.schema.parser.DbTable java class)
- */
- metadataSchemas(driverPath, driverClass, url, info) {
- return this.executeAgent('schemaImport:schemas', {driverPath, driverClass, url, info});
- }
-
- /**
- * @param {String} driverPath
- * @param {String} driverClass
- * @param {String} url
- * @param {Object} info
- * @param {Array} schemas
- * @param {Boolean} tablesOnly
- * @returns {Promise} Promise on list of tables (see org.apache.ignite.schema.parser.DbTable java class)
- */
- metadataTables(driverPath, driverClass, url, info, schemas, tablesOnly) {
- return this.executeAgent('schemaImport:metadata', {driverPath, driverClass, url, info, schemas, tablesOnly});
- }
-
- /**
- * @returns {Promise} Promise on list of jars from driver folder.
- */
- availableDrivers() {
- return this.executeAgent('schemaImport:drivers');
- }
-
- /**
- *
- * @param {Boolean} demo Is need run command on demo node.
- * @param {Boolean} attr Get attributes, if this parameter has value true. Default value: true.
- * @param {Boolean} mtr Get metrics, if this parameter has value true. Default value: false.
- * @returns {Promise}
- */
- topology(demo, attr, mtr) {
- const cmd = new Command(demo, 'top')
- .addParam('attr', attr !== false)
- .addParam('mtr', !!mtr);
-
- return this.executeRest(cmd);
- }
-
- /**
- *
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} cacheName Cache name.
- * @param {String} query Query.
- * @param {int} pageSize Page size.
- * @returns {Promise}
- */
- fieldsQuery(demo, cacheName, query, pageSize) {
- const cmd = new Command(demo, 'qryfldexe')
- .addParam('cacheName', cacheName)
- .addParam('qry', query)
- .addParam('pageSize', pageSize);
-
- return this.executeRest(cmd);
- }
-
- /**
- *
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} cacheName Cache name.
- * @param {int} pageSize Page size.
- * @returns {Promise}
- */
- scan(demo, cacheName, pageSize) {
- const cmd = new Command(demo, 'qryscanexe')
- .addParam('cacheName', cacheName)
- .addParam('pageSize', pageSize);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {int} queryId Query Id.
- * @param {int} pageSize Page size.
- * @returns {Promise}
- */
- queryFetch(demo, queryId, pageSize) {
- const cmd = new Command(demo, 'qryfetch')
- .addParam('qryId', queryId)
- .addParam('pageSize', pageSize);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {int} queryId Query Id.
- * @returns {Promise}
- */
- queryClose(demo, queryId) {
- const cmd = new Command(demo, 'qrycls')
- .addParam('qryId', queryId);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} cacheName Cache name.
- * @returns {Promise}
- */
- metadata(demo, cacheName) {
- const cmd = new Command(demo, 'metadata')
- .addParam('cacheName', cacheName);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} evtOrderKey Event order key, unique for tab instance.
- * @param {String} evtThrottleCntrKey Event throttle counter key, unique for tab instance.
- * @returns {Promise}
- */
- collect(demo, evtOrderKey, evtThrottleCntrKey) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', '')
- .addParam('p2', 'org.apache.ignite.internal.visor.node.VisorNodeDataCollectorTask')
- .addParam('p3', 'org.apache.ignite.internal.visor.node.VisorNodeDataCollectorTaskArg')
- .addParam('p4', true)
- .addParam('p5', 'CONSOLE_' + evtOrderKey)
- .addParam('p6', evtThrottleCntrKey)
- .addParam('p7', 10)
- .addParam('p8', false);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nid Node id.
- * @param {String} cacheName Cache name.
- * @returns {Promise}
- */
- cacheClear(demo, nid, cacheName) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nid)
- .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheClearTask')
- .addParam('p3', 'java.lang.String')
- .addParam('p4', cacheName);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {Array.<String>} nids Node ids.
- * @param {Boolean} near true if near cache should be started.
- * @param {String} cacheName Name for near cache.
- * @param {String} cfg Cache XML configuration.
- * @returns {Promise}
- */
- cacheStart(demo, nids, near, cacheName, cfg) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nids)
- .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheStartTask')
- .addParam('p3', 'org.apache.ignite.internal.visor.cache.VisorCacheStartTask$VisorCacheStartArg')
- .addParam('p4', near)
- .addParam('p5', cacheName)
- .addParam('p6', cfg);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nid Node id.
- * @param {String} cacheName Cache name.
- * @returns {Promise}
- */
- cacheStop(demo, nid, cacheName) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nid)
- .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheStopTask')
- .addParam('p3', 'java.lang.String')
- .addParam('p4', cacheName);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nid Node id.
- * @param {String} cacheName Cache name.
- * @returns {Promise}
- */
- cacheResetMetrics(demo, nid, cacheName) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nid)
- .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask')
- .addParam('p3', 'java.lang.String')
- .addParam('p4', cacheName);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nid Node id.
- * @param {String} cacheNames Cache names separated by comma.
- * @returns {Promise}
- */
- cacheSwapBackups(demo, nid, cacheNames) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nid)
- .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheSwapBackupsTask')
- .addParam('p3', 'java.util.Set')
- .addParam('p4', 'java.lang.String')
- .addParam('p5', cacheNames);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nids Node ids.
- * @returns {Promise}
- */
- gc(demo, nids) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nids)
- .addParam('p2', 'org.apache.ignite.internal.visor.node.VisorNodeGcTask')
- .addParam('p3', 'java.lang.Void');
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} taskNid node that is not node we want to ping.
- * @param {String} nid Id of the node to ping.
- * @returns {Promise}
- */
- ping(demo, taskNid, nid) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', taskNid)
- .addParam('p2', 'org.apache.ignite.internal.visor.node.VisorNodePingTask')
- .addParam('p3', 'java.util.UUID')
- .addParam('p4', nid);
-
- return this.executeRest(cmd);
- }
-
- /**
- * @param {Boolean} demo Is need run command on demo node.
- * @param {String} nid Id of the node to get thread dump.
- * @returns {Promise}
- */
- threadDump(demo, nid) {
- const cmd = new Command(demo, 'exe')
- .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask')
- .addParam('p1', nid)
- .addParam('p2', 'org.apache.ignite.internal.visor.debug.VisorThreadDumpTask')
- .addParam('p3', 'java.lang.Void');
-
- return this.executeRest(cmd);
- }
- }
-
- /**
- * Connected agents manager.
- */
- class AgentManager {
- /**
- * @constructor
- */
- constructor() {
- /**
- * Connected agents by user id.
- * @type {Object.<ObjectId, Array.<Agent>>}
- */
- this._agents = {};
-
- /**
- * Connected browsers by user id.
- * @type {Object.<ObjectId, Array.<Socket>>}
- */
- this._browsers = {};
-
- const agentArchives = fs.readdirSync(settings.agent.dists)
- .filter((file) => path.extname(file) === '.zip');
-
- /**
- * Supported agents distribution.
- * @type {Object.<String, String>}
- */
- this.supportedAgents = {};
-
- const jarFilter = (file) => path.extname(file) === '.jar';
-
- const agentsPromises = _.map(agentArchives, (fileName) => {
- const filePath = path.join(settings.agent.dists, fileName);
-
- return JSZip.loadAsync(fs.readFileSync(filePath))
- .then((zip) => {
- const jarPath = _.find(_.keys(zip.files), jarFilter);
-
- return JSZip.loadAsync(zip.files[jarPath].async('nodebuffer'))
- .then((jar) => jar.files['META-INF/MANIFEST.MF'].async('string'))
- .then((lines) => lines.trim()
- .split(/\s*\n+\s*/)
- .map((line, r) => {
- r = line.split(/\s*:\s*/);
-
- this[r[0]] = r[1];
-
- return this;
- }, {})[0])
- .then((manifest) => {
- const ver = manifest['Implementation-Version'];
- const buildTime = manifest['Build-Time'];
-
- if (ver && buildTime)
- return { fileName, filePath, ver, buildTime };
- });
- });
- });
-
- Promise.all(agentsPromises)
- .then((agents) => {
- this.supportedAgents = _.keyBy(_.remove(agents, null), 'ver');
-
- const latest = _.head(Object.keys(this.supportedAgents).sort((a, b) => {
- const aParts = a.split('.');
- const bParts = b.split('.');
-
- for (let i = 0; i < aParts.length; ++i) {
- if (bParts.length === i)
- return 1;
-
- if (aParts[i] === aParts[i])
- continue;
-
- return aParts[i] > bParts[i] ? 1 : -1;
- }
- }));
-
- // Latest version of agent distribution.
- if (latest)
- this.supportedAgents.latest = this.supportedAgents[latest];
- });
- }
-
- attachLegacy(server) {
- const wsSrv = new ws.Server({server});
-
- wsSrv.on('connection', (_wsClient) => {
- _wsClient.send(JSON.stringify({
- method: 'authResult',
- args: ['You are using an older version of the agent. Please reload agent archive']
- }));
- });
- }
-
- /**
- * @param {http.Server|https.Server} srv Server instance that we want to attach agent handler.
- */
- attach(srv) {
- if (this._server)
- throw 'Agent server already started!';
-
- this._server = srv;
-
- /**
- * @type {socketIo.Server}
- */
- this._socket = socketio(this._server);
-
- this._socket.on('connection', (socket) => {
- socket.on('agent:auth', (data, cb) => {
- if (!_.isEmpty(this.supportedAgents)) {
- const ver = data.ver;
- const bt = data.bt;
-
- if (_.isEmpty(ver) || _.isEmpty(bt) || _.isEmpty(this.supportedAgents[ver]) ||
- this.supportedAgents[ver].buildTime > bt)
- return cb('You are using an older version of the agent. Please reload agent archive');
- }
-
- const tokens = data.tokens;
-
- mongo.Account.find({token: {$in: tokens}}, '_id token').lean().exec()
- .then((accounts) => {
- if (!accounts.length)
- return cb('Agent is failed to authenticate. Please check agent\'s token(s)');
-
- const agent = new Agent(socket);
-
- const accountIds = _.map(accounts, (account) => account._id);
-
- socket.on('disconnect', () => this._agentDisconnected(accountIds, agent));
-
- this._agentConnected(accountIds, agent);
-
- const missedTokens = _.difference(tokens, _.map(accounts, (account) => account.token));
-
- if (missedTokens.length) {
- agent._emit('agent:warning',
- `Failed to authenticate with token(s): ${missedTokens.join(', ')}.`);
- }
-
- cb();
- })
- // TODO IGNITE-1379 send error to web master.
- .catch((err) => cb('Agent is failed to authenticate. Please check agent\'s tokens'));
- });
- });
- }
-
- /**
- * @param {ObjectId} accountId
- * @param {Socket} socket
- * @returns {int} Connected agent count.
- */
- addAgentListener(accountId, socket) {
- let sockets = this._browsers[accountId];
-
- if (!sockets)
- this._browsers[accountId] = sockets = [];
-
- sockets.push(socket);
-
- const agents = this._agents[accountId];
-
- return agents ? agents.length : 0;
- }
-
- /**
- * @param {ObjectId} accountId.
- * @param {Socket} socket.
- * @returns {int} connected agent count.
- */
- removeAgentListener(accountId, socket) {
- const sockets = this._browsers[accountId];
-
- _.pull(sockets, socket);
- }
-
- /**
- * @param {ObjectId} accountId
- * @returns {Promise.<Agent>}
- */
- findAgent(accountId) {
- if (!this._server)
- return Promise.reject(new Error('Agent server not started yet!'));
-
- const agents = this._agents[accountId];
-
- if (!agents || agents.length === 0)
- return Promise.reject(new Error('Failed to connect to agent'));
-
- return Promise.resolve(agents[0]);
- }
-
- /**
- * Close connections for all user agents.
- * @param {ObjectId} accountId
- * @param {String} oldToken
- */
- close(accountId, oldToken) {
- if (!this._server)
- return;
-
- const agentsForClose = this._agents[accountId];
-
- const agentsForWarning = _.clone(agentsForClose);
-
- this._agents[accountId] = [];
-
- _.forEach(this._agents, (sockets) => _.pullAll(agentsForClose, sockets));
-
- _.pullAll(agentsForWarning, agentsForClose);
-
- const msg = `Security token has been reset: ${oldToken}`;
-
- _.forEach(agentsForWarning, (socket) => socket._emit('agent:warning', msg));
-
- _.forEach(agentsForClose, (socket) => socket._emit('agent:close', msg));
-
- _.forEach(this._browsers[accountId], (socket) => socket.emit('agent:count', {count: 0}));
- }
-
- /**
- * @param {ObjectId} accountIds
- * @param {Agent} agent
- */
- _agentConnected(accountIds, agent) {
- _.forEach(accountIds, (accountId) => {
- let agents = this._agents[accountId];
-
- if (!agents)
- this._agents[accountId] = agents = [];
-
- agents.push(agent);
-
- const sockets = this._browsers[accountId];
-
- _.forEach(sockets, (socket) => socket.emit('agent:count', {count: agents.length}));
- });
- }
-
- /**
- * @param {ObjectId} accountIds
- * @param {Agent} agent
- */
- _agentDisconnected(accountIds, agent) {
- _.forEach(accountIds, (accountId) => {
- const agents = this._agents[accountId];
-
- if (agents && agents.length)
- _.pull(agents, agent);
-
- const sockets = this._browsers[accountId];
-
- _.forEach(sockets, (socket) => socket.emit('agent:count', {count: agents.length}));
- });
- }
- }
-
- return new AgentManager();
-};
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/serve/agent_dists/README.txt
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/agent_dists/README.txt b/modules/web-console/src/main/js/serve/agent_dists/README.txt
deleted file mode 100644
index d51bdf9..0000000
--- a/modules/web-console/src/main/js/serve/agent_dists/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Ignite Web Console
-======================================
-
-This is default folder for agent distributives.
-
-Also, you could specify custom folder in `serve/config/settings.json`
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/6af6560a/modules/web-console/src/main/js/serve/app.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/app.js b/modules/web-console/src/main/js/serve/app.js
deleted file mode 100644
index 5d6b2cf..0000000
--- a/modules/web-console/src/main/js/serve/app.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-
-'use strict';
-
-// Fire me up!
-
-module.exports = {
- implements: 'app',
- inject: ['require(express)', 'configure', 'routes']
-};
-
-module.exports.factory = function(Express, configure, routes) {
- return {
- /**
- * @param {Server} srv
- */
- listen: (srv) => {
- const app = new Express();
-
- configure.express(app);
-
- routes.register(app);
-
- srv.addListener('request', app);
- }
- };
-};