Repository: ignite Updated Branches: refs/heads/master 071e27e33 -> 19256745b
http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/page-signin/template.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-signin/template.pug b/modules/web-console/frontend/app/components/page-signin/template.pug new file mode 100644 index 0000000..ae9a0ca --- /dev/null +++ b/modules/web-console/frontend/app/components/page-signin/template.pug @@ -0,0 +1,161 @@ +//- + 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. + +include /app/helpers/jade/mixins + +web-console-header + web-console-header-left + ignite-header-title + +section + .container + .row + .col-lg-6.col-md-6.col-sm-6.col-xs-12 + .row + .col-xs-12.col-md-11 + -var form = 'form' + form(name='form' novalidate) + .settings-row + h3 Don't Have An Account? + .settings-row + +form-field__email({ + label: 'Email:', + model: 'ui_signup.email', + name: '"signupEmail"', + placeholder: 'Input email', + required: true + })( + ignite-on-enter-focus-move='passwordInput' + ) + .settings-row + +form-field__password({ + label: 'Password:', + model: 'ui_signup.password', + name: '"password"', + placeholder: 'Input password', + required: true + })( + ignite-on-enter-focus-move='confirmInput' + ) + .settings-row + +form-field__password({ + label: 'Confirm:', + model: 'ui_exclude.confirm', + name: '"confirm"', + placeholder: 'Confirm password', + required: true + })( + ignite-on-enter-focus-move='firstNameInput' + ignite-match='ui_signup.password' + ) + .settings-row + +form-field__text({ + label: 'First name:', + model: 'ui_signup.firstName', + name: '"firstName"', + placeholder: 'Input first name', + required: true + })( + ignite-on-enter-focus-move='lastNameInput' + ) + .settings-row + +form-field__text({ + label: 'Last name:', + model: 'ui_signup.lastName', + name: '"lastName"', + placeholder: 'Input last name', + required: true + })( + ignite-on-enter-focus-move='companyInput' + ) + .settings-row + +form-field__text({ + label: 'Company:', + model: 'ui_signup.company', + name: '"company"', + placeholder: 'Input company name', + required: true + })( + ignite-on-enter-focus-move='countryInput' + ) + .settings-row + +form-field__dropdown({ + label: 'Country:', + model: 'ui_signup.country', + name: '"country"', + required: true, + placeholder: 'Choose your country', + options: '$ctrl.countries' + })( + ignite-on-enter-focus-move='signup_submit' + ) + .login-footer + button#signup_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.auth("signup", ui_signup)' ng-disabled='form.$invalid') Sign Up + + .col-lg-6.col-md-6.col-sm-6.col-xs-12(ng-init='$ctrl.action = "signin"') + .row + .col-xs-12.col-md-11 + -var form = 'form_signin' + form.row(ng-show='$ctrl.action == "signin"' name='form_signin' novalidate) + .settings-row + h3 Sign In + .settings-row + +form-field__email({ + label: 'Email:', + model: 'ui.email', + name: '"signinEmail"', + placeholder: 'Input email', + required: true + })( + ignite-auto-focus + ignite-on-enter-focus-move='singinPasswordInput' + ) + .settings-row + +form-field__password({ + label: 'Password:', + model: 'ui.password', + name: '"signinPassword"', + placeholder: 'Input password', + required: true + })( + ignite-on-enter='form_signin.$valid && $ctrl.auth($ctrl.action, ui)' + ) + .login-footer + a.labelField#forgot_show(ng-click='$ctrl.action = "password/forgot"' ignite-on-click-focus='forgot_email') Forgot password? + button#signin_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.auth("signin", ui)' ng-disabled='form_signin.$invalid') Sign In + + - var form = 'form_forgot' + form.row(ng-show='$ctrl.action == "password/forgot"' name='form_forgot' novalidate) + .settings-row + h3 Forgot password? + .settings-row + p.col-xs-12.col-md-11 That's ok! Simply enter your email below and a reset password link will be sent to you via email. You can then follow that link and select a new password. + .settings-row + +form-field__email({ + label: 'Email:', + model: 'ui.email', + name: '"forgotEmail"', + placeholder: 'Input email', + required: true + })( + ignite-auto-focus + ignite-on-enter='form_forgot.$valid && $ctrl.forgotPassword(ui)' + ) + .login-footer + a.labelField#forgot_signin(ng-click='$ctrl.action = "signin"' ignite-on-click-focus='signin_email') Sign In + button#forgot_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.forgotPassword(ui)' ng-disabled='form_forgot.$invalid') Send it to me + +web-console-footer http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/web-console-header/style.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/web-console-header/style.scss b/modules/web-console/frontend/app/components/web-console-header/style.scss index db49c3e..71766c9 100644 --- a/modules/web-console/frontend/app/components/web-console-header/style.scss +++ b/modules/web-console/frontend/app/components/web-console-header/style.scss @@ -22,6 +22,7 @@ web-console-header { $bottom-border-width: 4px; display: block; + min-height: 85px; font-family: Roboto; font-size: 16px; border-bottom: $bottom-border-width solid red; http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/web-console-header/template.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/web-console-header/template.pug b/modules/web-console/frontend/app/components/web-console-header/template.pug index a5adbb1..a05e5f8 100644 --- a/modules/web-console/frontend/app/components/web-console-header/template.pug +++ b/modules/web-console/frontend/app/components/web-console-header/template.pug @@ -26,7 +26,7 @@ .wch-content.container connected-clusters(ng-if='$ctrl.$rootScope.user && !$ctrl.$rootScope.IgniteDemoMode && $ctrl.isConnectedClustersVisible && !$root.user.becomeUsed') - a(ui-sref='signin') + a(ui-sref='landing') img.wch-logo(ng-src='{{::$ctrl.branding.headerLogo}}') .wch-slot.wch-slot-left(ng-transclude='slotLeft') http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/controllers/auth.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/controllers/auth.controller.js b/modules/web-console/frontend/app/controllers/auth.controller.js deleted file mode 100644 index caa74dc..0000000 --- a/modules/web-console/frontend/app/controllers/auth.controller.js +++ /dev/null @@ -1,29 +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. - */ - -// Sign in controller. -export default [ - '$scope', '$uiRouterGlobals', 'IgniteFocus', 'IgniteCountries', 'Auth', - ($scope, $uiRouterGlobals, Focus, Countries, Auth) => { - $scope.auth = Auth.auth; - $scope.forgotPassword = Auth.forgotPassword; - $scope.action = 'signin'; - $scope.countries = Countries.getAll(); - - Focus.move('user_email'); - } -]; http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/data/countries.json ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/data/countries.json b/modules/web-console/frontend/app/data/countries.json index 18dbe64..b340f02 100644 --- a/modules/web-console/frontend/app/data/countries.json +++ b/modules/web-console/frontend/app/data/countries.json @@ -1,98 +1,122 @@ [ { - "name": "United States", + "label": "United States", + "value": "United States", "code": "USA" }, { - "name": "Canada", + "label": "Canada", + "value": "Canada", "code": "CAN" }, { - "name": "United Kingdom", + "label": "United Kingdom", + "value": "United Kingdom", "code": "GBR" }, { - "name": "Germany", + "label": "Germany", + "value": "Germany", "code": "DEU" }, { - "name": "France", + "label": "France", + "value": "France", "code": "FRA" }, { - "name": "Belgium", + "label": "Belgium", + "value": "Belgium", "code": "BEL" }, { - "name": "Switzerland", + "label": "Switzerland", + "value": "Switzerland", "code": "CHE" }, { - "name": "Netherlands", + "label": "Netherlands", + "value": "Netherlands", "code": "NLD" }, { - "name": "Israel", + "label": "Israel", + "value": "Israel", "code": "ISR" }, { - "name": "Sweden", + "label": "Sweden", + "value": "Sweden", "code": "SWE" }, { - "name": "Russia", + "label": "Russia", + "value": "Russia", "code": "RUS" }, { - "name": "Other Europe", + "label": "Other Europe", + "value": "Other Europe", "code": "Other Europe" }, { - "name": "China", + "label": "China", + "value": "China", "code": "CHN" }, { - "name": "India", + "label": "India", + "value": "India", "code": "IND" }, { - "name": "Japan", + "label": "Japan", + "value": "Japan", "code": "JPN" }, { - "name": "Other Asia", + "label": "Other Asia", + "value": "Other Asia", "code": "Other Asia" }, { - "name": "Australia", + "label": "Australia", + "value": "Australia", "code": "AUS" }, { - "name": "Brazil", + "label": "Brazil", + "value": "Brazil", "code": "BRA" }, { - "name": "Argentina", + "label": "Argentina", + "value": "Argentina", "code": "ARG" }, { - "name": "Other South America", + "label": "Other South America", + "value": "Other South America", "code": "Other South America" }, { - "name": "South Africa", + "label": "South Africa", + "value": "South Africa", "code": "ZAF" }, { - "name": "Nigeria", + "label": "Nigeria", + "value": "Nigeria", "code": "NGA" }, { - "name": "Other Africa", + "label": "Other Africa", + "value": "Other Africa", "code": "Other Africa" }, { - "name": "Rest of the World", + "label": "Rest of the World", + "value": "Rest of the World", "code": "Rest of the World" } ] http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/helpers/jade/mixins.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/helpers/jade/mixins.pug b/modules/web-console/frontend/app/helpers/jade/mixins.pug index 7eb4d89..1d3b161 100644 --- a/modules/web-console/frontend/app/helpers/jade/mixins.pug +++ b/modules/web-console/frontend/app/helpers/jade/mixins.pug @@ -22,6 +22,7 @@ include ../../primitives/dropdown/index include ../../primitives/tooltip/index include ../../primitives/radio/index include ../../primitives/switcher/index +include ../../primitives/form-field/index //- Mixin for advanced options toggle. mixin advanced-options-toggle(click, cond, showMessage, hideMessage) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/configuration.state.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration.state.js b/modules/web-console/frontend/app/modules/states/configuration.state.js index 8d05a45..0ce936c 100644 --- a/modules/web-console/frontend/app/modules/states/configuration.state.js +++ b/modules/web-console/frontend/app/modules/states/configuration.state.js @@ -71,6 +71,7 @@ angular.module('ignite-console.states.configuration', ['ui.router']) return PageConfigure.onStateEnterRedirect(trans.to()); }, + failState: 'signin', tfMetaTags: { title: 'Configuration' } http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/password.state.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/password.state.js b/modules/web-console/frontend/app/modules/states/password.state.js deleted file mode 100644 index 60d82b4..0000000 --- a/modules/web-console/frontend/app/modules/states/password.state.js +++ /dev/null @@ -1,50 +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 angular from 'angular'; - -import templateUrl from 'views/reset.tpl.pug'; - -angular -.module('ignite-console.states.password', [ - 'ui.router' -]) -.config(['$stateProvider', function($stateProvider) { - // set up the states - $stateProvider - .state('password', { - url: '/password', - abstract: true, - template: '<ui-view></ui-view>' - }) - .state('password.reset', { - url: '/reset?{token}', - templateUrl, - unsaved: true, - tfMetaTags: { - title: 'Reset password' - } - }) - .state('password.send', { - url: '/send', - templateUrl, - unsaved: true, - tfMetaTags: { - title: 'Password Send' - } - }); -}]); http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/signin.state.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/signin.state.js b/modules/web-console/frontend/app/modules/states/signin.state.js deleted file mode 100644 index 8afcaa3..0000000 --- a/modules/web-console/frontend/app/modules/states/signin.state.js +++ /dev/null @@ -1,53 +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 angular from 'angular'; -import templateUrl from 'views/signin.tpl.pug'; -import controller from 'app/controllers/auth.controller'; - -angular -.module('ignite-console.states.login', [ - 'ui.router', - // services - 'ignite-console.user' -]) -.config(['$stateProvider', function($stateProvider) { - // set up the states - $stateProvider - .state('signin', { - url: '/', - templateUrl, - redirectTo: (trans) => { - return trans.injector().get('User').read() - .then(() => { - try { - const {name, params} = JSON.parse(localStorage.getItem('lastStateChangeSuccess')); - - const restored = trans.router.stateService.target(name, params); - - return restored.valid() ? restored : 'base.configuration.tabs'; - } catch (ignored) { - return 'base.configuration.tabs'; - } - }) - .catch(() => true); - }, - controller, - controllerAs: '$ctrl', - unsaved: true - }); -}]); http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/user/Auth.service.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/user/Auth.service.js b/modules/web-console/frontend/app/modules/user/Auth.service.js index 10fad5e..88c844a 100644 --- a/modules/web-console/frontend/app/modules/user/Auth.service.js +++ b/modules/web-console/frontend/app/modules/user/Auth.service.js @@ -21,7 +21,7 @@ export default ['Auth', ['$http', '$rootScope', '$state', '$window', 'IgniteErro forgotPassword(userInfo) { $http.post('/api/v1/password/forgot', userInfo) .then(() => $state.go('password.send')) - .catch(({data}) => ErrorPopover.show('forgot_email', Messages.errorMessage(null, data))); + .catch(({data}) => ErrorPopover.show('forgotEmailInput', Messages.errorMessage(null, data))); }, auth(action, userInfo) { $http.post('/api/v1/' + action, userInfo) @@ -33,12 +33,12 @@ export default ['Auth', ['$http', '$rootScope', '$state', '$window', 'IgniteErro .then((user) => { $root.$broadcast('user', user); - $state.go('base.configuration.tabs'); + $state.go('default-state'); $root.gettingStarted.tryShow(); }); }) - .catch((res) => ErrorPopover.show(action + '_email', Messages.errorMessage(null, res))); + .catch((res) => ErrorPopover.show(action + 'EmailInput', Messages.errorMessage(null, res))); }, logout() { $http.post('/api/v1/logout') http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/checkbox.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/checkbox.pug b/modules/web-console/frontend/app/primitives/form-field/checkbox.pug new file mode 100644 index 0000000..09596d4 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/checkbox.pug @@ -0,0 +1,30 @@ +//- + 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. + +mixin form-field__checkbox({ label, model, name, disabled, required, tip }) + .form-field.form-field__checkbox + +form-field__label({ label, name, required }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type='checkbox' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/dropdown.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/dropdown.pug b/modules/web-console/frontend/app/primitives/form-field/dropdown.pug new file mode 100644 index 0000000..cb05829 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/dropdown.pug @@ -0,0 +1,51 @@ +//- + 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. + +mixin form-field__dropdown({ label, model, name, disabled, required, multiple, placeholder, placeholderEmpty, options, tip }) + mixin __form-field__input() + button.select-toggle( + id=`{{ ${name} }}Input` + name=`{{ ${name} }}` + + data-placeholder=placeholderEmpty ? `{{ ${options}.length > 0 ? '${placeholder}' : '${placeholderEmpty}' }}` : placeholder + + ng-model=model + ng-disabled=disabled && `${disabled}` + ng-required=required && `${required}` + + bs-select + bs-options=`item.value as item.label for item in ${options}` + + data-multiple=multiple ? '1' : false + + tabindex='0' + )&attributes(attributes.attributes) + + .form-field(id=`{{ ${name} }}Field`) + +form-field__label({ label, name, required }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + +__form-field__input(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ name, error: 'required', message: `${errLbl} could not be empty!` }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/email.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/email.pug b/modules/web-console/frontend/app/primitives/form-field/email.pug new file mode 100644 index 0000000..5fccdb2 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/email.pug @@ -0,0 +1,37 @@ +//- + 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. + +mixin form-field__email({ label, model, name, disabled, required, placeholder, tip }) + -var errLbl = label.substring(0, label.length - 1) + + .form-field + +form-field__label({ label, name, required, disabled }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type='email' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ name, error: 'required', message: `${errLbl} could not be empty!` }) + + +form-field__error({ name, error: 'email', message: `${errLbl} has invalid format!` }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/error.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/error.pug b/modules/web-console/frontend/app/primitives/form-field/error.pug new file mode 100644 index 0000000..34b03c2 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/error.pug @@ -0,0 +1,29 @@ +//- + 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. + +mixin form-field__error({ error, message }) + .form-field__error(ng-message=error) + div( + bs-tooltip='' + data-title=message + data-placement='top' + data-template=` + <div class="tooltip tooltip--error in" ng-show="title"> + <div class="tooltip-arrow"></div> + <div class="tooltip-inner" ng-bind-html="title"></div> + </div>` + ) + svg(ignite-icon='exclamation') http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/index.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/index.pug b/modules/web-console/frontend/app/primitives/form-field/index.pug new file mode 100644 index 0000000..9b67d6c --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/index.pug @@ -0,0 +1,27 @@ +//- + 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. + +include ./error +include ./label +include ./tooltip +include ./input +include ./text +include ./number +include ./email +include ./password +include ./phone +include ./dropdown +include ./checkbox http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/index.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/index.scss b/modules/web-console/frontend/app/primitives/form-field/index.scss index 01dd941..e6c0a58 100644 --- a/modules/web-console/frontend/app/primitives/form-field/index.scss +++ b/modules/web-console/frontend/app/primitives/form-field/index.scss @@ -1,4 +1,3 @@ - /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -89,3 +88,151 @@ } } } + +.form-field { + position: relative; + width: 100%; + font-family: Roboto; + + &__label { + display: flex; + margin: 0 0 4px; + + color: #424242; + font-size: 14px; + line-height: 1.25; + + .icon-help { + line-height: 14px; + } + + &.required:after { + content: ''; + } + + i { + font-style: normal; + color: $gray-light; + } + } + + &__control { + overflow: visible; + display: flex; + width: 100%; + + & > input::placeholder, + & > button.select-toggle.placeholder { + color: rgba(66, 66, 66, 0.5); + text-align: left; + } + + & > input, + & > button:not(.btn-ignite) { + outline: none; + overflow: visible; + + box-sizing: border-box; + width: 100%; + max-width: initial; + height: 36px; + padding: 9px 10px; + margin-right: 0; + + border: solid 1px #c5c5c5; + border-radius: 4px; + background-color: #ffffff; + box-shadow: none; + + color: $text-color; + text-align: left; + line-height: 16px; + + &.ng-invalid:not(.ng-pristine), + &.ng-invalid.ng-touched { + border-color: #c5c5c5; + box-shadow: none; + } + + &.ng-invalid:focus, + &:focus { + border-color: $ignite-brand-success; + box-shadow: none; + } + } + } + + &__errors { + position: absolute; + right: 0; + bottom: 0; + + [ng-message] { + // TODO: remove after replace all fields to new + overflow: visible !important; + animation: none !important; + } + } + + &__error { + z-index: 2; + position: relative; + width: 0; + height: 36px; + float: right; + + color: $brand-primary; + line-height: $input-height; + pointer-events: initial; + text-align: center; + + &:before { + position: absolute; + right: 0; + width: 38px; + } + + div { + z-index: 1; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + } + + svg { + position: absolute; + top: 10px; + right: 0; + width: 38px; + } + } + + [disabled] { + opacity: .5; + } +} + +.form-field__checkbox { + display: flex; + + .form-field { + &__label { + order: 1; + margin: 0; + } + + &__control { + width: auto; + margin-right: 10px; + padding: 3px 0; + + input { + width: auto; + height: auto; + margin: 0; + } + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/input.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/input.pug b/modules/web-console/frontend/app/primitives/form-field/input.pug new file mode 100644 index 0000000..0fee77b --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/input.pug @@ -0,0 +1,28 @@ +//- + 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. + +mixin form-field__input({ name, model, disabled, required, placeholder }) + input( + id=`{{ ${name} }}Input` + name=`{{ ${name} }}` + placeholder=placeholder + + ng-model=model + + ng-required=required && `${required}` + ng-disabled=disabled && `${disabled}` + ng-focus='tableReset()' + )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes : {}) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/label.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/label.pug b/modules/web-console/frontend/app/primitives/form-field/label.pug new file mode 100644 index 0000000..d725f9d --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/label.pug @@ -0,0 +1,30 @@ +//- + 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. + +mixin form-field__label({ label, name, required, optional, disabled }) + -var colon = label[label.length-1] === ':' ? ':' : ''; + - label = label[label.length-1] === ':' ? label.substring(0, label.length - 1) : label + - optional = optional ? ' <i>(optional)</i>' : ''; + + label.form-field__label( + id=name && `{{ ${name} }}Label` + for=name && `{{ ${name} }}Input` + class=`{{ ${required} ? 'required' : '' }}` + ng-disabled=disabled && `${disabled}` + ) + span !{label}!{optional}!{colon} + if block + block http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/number.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/number.pug b/modules/web-console/frontend/app/primitives/form-field/number.pug new file mode 100644 index 0000000..e5f1454 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/number.pug @@ -0,0 +1,46 @@ +//- + 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. + +mixin form-field__number({ label, model, name, disabled, required, placeholder, tip, min, max, step }) + -var errLbl = label.substring(0, label.length - 1) + + .form-field + +form-field__label({ label, name, required }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type = 'number' + - attributes.min = min ? min : '0' + - attributes.max = max ? max : '{{ Number.MAX_VALUE }}' + - attributes.step = step ? step : '1' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ error: 'required', message: `${errLbl} could not be empty!` }) + + if min + +form-field__error({ error: 'min', message: `${errLbl} is less than allowable minimum: ${ min || 0 }`}) + + if max + +form-field__error({ error: 'max', message: `${errLbl} is more than allowable maximum: ${ max }`}) + + +form-field__error({ error: 'number', message: 'Only numbers allowed' }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/password.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/password.pug b/modules/web-console/frontend/app/primitives/form-field/password.pug new file mode 100644 index 0000000..ba38cce --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/password.pug @@ -0,0 +1,37 @@ +//- + 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. + +mixin form-field__password({ label, model, name, disabled, required, placeholder, tip }) + -var errLbl = label.substring(0, label.length - 1) + + .form-field + +form-field__label({ label, name, required }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type='password' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ name, error: 'required', message: `${errLbl} could not be empty!` }) + + +form-field__error({ name, error: 'mismatch', message: `Password does not match the confirm password!` }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/phone.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/phone.pug b/modules/web-console/frontend/app/primitives/form-field/phone.pug new file mode 100644 index 0000000..b65c5d2 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/phone.pug @@ -0,0 +1,35 @@ +//- + 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. + +mixin form-field__phone({ label, model, name, disabled, required, optional, placeholder, tip }) + -var errLbl = label.substring(0, label.length - 1) + + .form-field + +form-field__label({ label, name, required, optional }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type='tel' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ name, error: 'required', message: `${errLbl} could not be empty!` }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/text.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/text.pug b/modules/web-console/frontend/app/primitives/form-field/text.pug new file mode 100644 index 0000000..8f63f19 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/text.pug @@ -0,0 +1,35 @@ +//- + 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. + +mixin form-field__text({ label, model, name, disabled, required, placeholder, tip }) + -var errLbl = label.substring(0, label.length - 1) + + .form-field(id=`{{ ${name} }}Field`) + +form-field__label({ label, name, required, disabled }) + +form-field__tooltip({ title: tip, options: tipOpts }) + + .form-field__control + - attributes.type='text' + +form-field__input({ name, model, disabled, required, placeholder })(attributes=attributes) + + .form-field__errors( + ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched || ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? ${form}[${name}].$error : {}` + ) + if block + block + + if required + +form-field__error({ name, error: 'required', message: `${errLbl} could not be empty!` }) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/tooltip.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/form-field/tooltip.pug b/modules/web-console/frontend/app/primitives/form-field/tooltip.pug new file mode 100644 index 0000000..08ffd83 --- /dev/null +++ b/modules/web-console/frontend/app/primitives/form-field/tooltip.pug @@ -0,0 +1,18 @@ +//- + 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. + +mixin form-field__tooltip({ title, options }) + +tooltip(title, options) http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/panel/index.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/panel/index.scss b/modules/web-console/frontend/app/primitives/panel/index.scss index 56cecfe..e16210c 100644 --- a/modules/web-console/frontend/app/primitives/panel/index.scss +++ b/modules/web-console/frontend/app/primitives/panel/index.scss @@ -17,35 +17,91 @@ @import '../../../public/stylesheets/variables'; -.panel--ignite { - border: none; - border-radius: 0 0 4px 4px; +.panel { + &--ignite { + border: none; + border-radius: 0 0 4px 4px; - font-family: Roboto; + font-family: Roboto; - background-color: white; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); + background-color: white; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); - & > .panel-heading { - height: auto; - padding: 22px 20px; + & > header { + height: auto; + padding: 22px 20px; - background-color: initial; - border-bottom: 1px solid $ignite-brand-primary; + background-color: initial; + font-size: 16px; + line-height: 36px; - &:hover { - text-decoration: none; + &:hover { + text-decoration: none; + } } - & > .panel-title { - font-size: 16px; - line-height: 36px; + & > hr { + margin: 0; + border-top: 1px solid #ddd; + } + + & > section { + padding: 0 20px; + } + + & > .panel-heading { + height: auto; + padding: 22px 20px; - & > .panel-selected { - font-size: 14px; - font-style: italic; + background-color: initial; + border-bottom: 1px solid $ignite-brand-primary; + + &:hover { + text-decoration: none; + } + + & > .panel-title { + font-size: 16px; line-height: 36px; - cursor: default; + + & > .panel-selected { + font-size: 14px; + font-style: italic; + line-height: 36px; + cursor: default; + } + } + } + } + + &--collapse { + & > header { + cursor: pointer; + } + + [ignite-icon='expand'], + [ignite-icon='collapse'] { + width: 13px; + height: 13px; + + margin-right: 9px; + } + + [ignite-icon='expand'] { + display: none; + } + + [ignite-icon='collapse'] { + display: inline-block; + } + + &.in { + [ignite-icon='expand'] { + display: inline-block; + } + + [ignite-icon='collapse'] { + display: none; } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/tooltip/index.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/tooltip/index.scss b/modules/web-console/frontend/app/primitives/tooltip/index.scss index 174d624..a6cd79f 100644 --- a/modules/web-console/frontend/app/primitives/tooltip/index.scss +++ b/modules/web-console/frontend/app/primitives/tooltip/index.scss @@ -22,4 +22,21 @@ padding: 12px; background-color: #FFF; } +} + +.tooltip--error { + &.top { + margin-top: 8px; + margin-left: -1px; + } + + &.top .tooltip-arrow { + border-top-color: #f34718; + } + + .tooltip-inner { + background: #f34718; + border-color: #f34718; + color: white; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/ui-grid/index.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/primitives/ui-grid/index.scss b/modules/web-console/frontend/app/primitives/ui-grid/index.scss index a83cb57..331b075 100644 --- a/modules/web-console/frontend/app/primitives/ui-grid/index.scss +++ b/modules/web-console/frontend/app/primitives/ui-grid/index.scss @@ -105,8 +105,8 @@ } .ui-grid-header-cell-filter { - background-image: - linear-gradient(to right, $ignite-brand-success, transparent), + background-image: + linear-gradient(to right, $ignite-brand-success, transparent), linear-gradient(to right, $ignite-brand-success 70%, transparent 0%); background-position: left bottom; background-repeat: repeat-x; @@ -114,7 +114,7 @@ &:hover { background-image: none; - // linear-gradient(to right, change-color($ignite-brand-success, $lightness: 26%), transparent), + // linear-gradient(to right, change-color($ignite-brand-success, $lightness: 26%), transparent), // linear-gradient(to right, change-color($ignite-brand-success, $lightness: 26%) 70%, transparent 0%); } @@ -126,14 +126,14 @@ height: 20px; margin-top: -20px; - font-size: 0; + font-size: 0; } &.active { color: $ignite-brand-primary; - background-image: - linear-gradient(to right, $ignite-brand-primary, transparent), + background-image: + linear-gradient(to right, $ignite-brand-primary, transparent), linear-gradient(to right, $ignite-brand-primary 70%, transparent 0%); } } @@ -182,7 +182,7 @@ width: auto; .ui-grid-render-container-left { - .ui-grid-viewport, + .ui-grid-viewport, .ui-grid-header-viewport { width: auto; @@ -216,10 +216,10 @@ top: 0; right: 9px; z-index: 1000; - + width: 5px; height: 100%; - + opacity: .2; box-shadow: 2px 0 3px #000; border-right: 1px solid #000; @@ -299,7 +299,7 @@ position: absolute; top: 4px; left: 4px; - + width: 4px; height: 8px; @@ -353,7 +353,7 @@ position: absolute; top: 5px; left: 2px; - + width: 7px; margin: 0; @@ -367,7 +367,7 @@ position: absolute; top: 2px; left: 5px; - + height: 7px; margin: 0; @@ -435,7 +435,7 @@ width: 4px; height: 46px; - + background: #0067b9; box-shadow: 0 -1px 0 0 rgba(0, 0, 0, .3), 0 -1px 0 0 rgba(0, 103, 185, 1); } @@ -481,7 +481,7 @@ .ui-grid-icon-cancel { &:before { content: ''; - + display: block; width: 12px; height: 12px; @@ -525,9 +525,9 @@ position: relative; padding: 16px 51px; - + border-radius: 0 0 4px 4px; - + font-style: italic; line-height: 16px; } http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/services/DefaultState.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/services/DefaultState.js b/modules/web-console/frontend/app/services/DefaultState.js new file mode 100644 index 0000000..db7b3e3 --- /dev/null +++ b/modules/web-console/frontend/app/services/DefaultState.js @@ -0,0 +1,36 @@ +/* + * 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. + */ + +function DefaultState($stateProvider) { + const stateName = 'default-state'; + + $stateProvider.state(stateName, {}); + + return { + setRedirectTo(fn) { + const state = $stateProvider.stateRegistry.get(stateName); + state.redirectTo = fn(state.redirectTo); + }, + $get() { + return this; + } + }; +} + +DefaultState.$inject = ['$stateProvider']; + +export default DefaultState; http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/services/index.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/services/index.js b/modules/web-console/frontend/app/services/index.js index 49e7632..55f8d3d 100644 --- a/modules/web-console/frontend/app/services/index.js +++ b/modules/web-console/frontend/app/services/index.js @@ -17,7 +17,9 @@ import angular from 'angular'; import IgniteVersion from './Version.service'; +import {default as DefaultState} from './DefaultState'; export default angular .module('ignite-console.services', []) + .provider('DefaultState', DefaultState) .service('IgniteVersion', IgniteVersion); http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/vendor.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/vendor.js b/modules/web-console/frontend/app/vendor.js index ea0f63c..eac47d4 100644 --- a/modules/web-console/frontend/app/vendor.js +++ b/modules/web-console/frontend/app/vendor.js @@ -25,6 +25,7 @@ import 'angular-strap/dist/angular-strap.tpl'; import 'angular-socket-io'; import 'angular-retina'; +import 'angular-messages'; import '@uirouter/angularjs'; import '@uirouter/angularjs/lib/legacy/stateEvents'; @@ -36,8 +37,6 @@ import 'angular-drag-and-drop-lists'; import 'angular-nvd3'; import 'angular-tree-control'; import 'angular-gridster'; -import 'bootstrap-sass/assets/javascripts/bootstrap/transition'; -import 'bootstrap-sass/assets/javascripts/bootstrap/carousel'; import 'brace'; import 'brace/mode/xml'; import 'brace/mode/sql'; @@ -52,6 +51,7 @@ import 'file-saver'; import 'jszip'; import 'nvd3'; import 'lodash'; +import 'angular-ui-carousel'; import 'angular-gridster/dist/angular-gridster.min.css'; import 'angular-tree-control/css/tree-control-attribute.css'; @@ -59,3 +59,4 @@ import 'angular-tree-control/css/tree-control.css'; import 'angular-ui-grid/ui-grid.css'; import 'angular-motion/dist/angular-motion.css'; import 'nvd3/build/nv.d3.css'; +import 'angular-ui-carousel/dist/ui-carousel.css'; http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/package.json ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/package.json b/modules/web-console/frontend/package.json index c30f80c..100e644 100644 --- a/modules/web-console/frontend/package.json +++ b/modules/web-console/frontend/package.json @@ -42,6 +42,7 @@ "angular-cookies": "1.6.6", "angular-drag-and-drop-lists": "1.4.0", "angular-gridster": "0.13.14", + "angular-messages": "1.6.9", "angular-motion": "0.4.4", "angular-nvd3": "1.0.9", "angular-retina": "0.4.0", @@ -51,6 +52,7 @@ "angular-strap": "2.3.12", "angular-translate": "2.16.0", "angular-tree-control": "0.2.28", + "angular-ui-carousel": "0.1.10", "angular-ui-grid": "4.0.11", "babel-core": "6.25.0", "babel-eslint": "7.2.3", @@ -89,7 +91,6 @@ "progress-bar-webpack-plugin": "1.10.0", "pug-html-loader": "1.1.0", "pug-loader": "2.3.0", - "raleway-webfont": "3.0.1", "resolve-url-loader": "2.1.0", "roboto-font": "0.1.0", "rxjs": "5.4.2", http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/collapse.svg ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/icons/collapse.svg b/modules/web-console/frontend/public/images/icons/collapse.svg new file mode 100644 index 0000000..86861a5 --- /dev/null +++ b/modules/web-console/frontend/public/images/icons/collapse.svg @@ -0,0 +1,3 @@ +<svg version="1.1" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"> + <path d="m2 0c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 2-2v-9c0-1.108-0.892-2-2-2h-9zm1 6h7v1h-7v-1z" fill="#757575"/> +</svg> http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/exclamation.svg ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/icons/exclamation.svg b/modules/web-console/frontend/public/images/icons/exclamation.svg new file mode 100644 index 0000000..95e4613 --- /dev/null +++ b/modules/web-console/frontend/public/images/icons/exclamation.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14"> + <path fill="#F34718" fill-rule="evenodd" d="M6.3 9.1h1.4v1.4H6.3V9.1zm0-5.6h1.4v4.2H6.3V3.5zM6.993 0A6.997 6.997 0 0 0 0 7c0 3.864 3.129 7 6.993 7A7.004 7.004 0 0 0 14 7c0-3.864-3.136-7-7.007-7zM7 12.6A5.598 5.598 0 0 1 1.4 7c0-3.094 2.506-5.6 5.6-5.6s5.6 2.506 5.6 5.6-2.506 5.6-5.6 5.6z"/> +</svg> http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/expand.svg ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/icons/expand.svg b/modules/web-console/frontend/public/images/icons/expand.svg new file mode 100644 index 0000000..569c9c0 --- /dev/null +++ b/modules/web-console/frontend/public/images/icons/expand.svg @@ -0,0 +1,3 @@ +<svg version="1.1" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg"> + <path d="m2 0c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 2-2v-9c0-1.108-0.892-2-2-2zm4 3h1v3h3v1h-3v3h-1v-3h-3v-1h3z" fill="#757575" /> +</svg> http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/index.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/icons/index.js b/modules/web-console/frontend/public/images/icons/index.js index 816ef1f..1168942 100644 --- a/modules/web-console/frontend/public/images/icons/index.js +++ b/modules/web-console/frontend/public/images/icons/index.js @@ -31,3 +31,7 @@ export checkmark from './checkmark.svg'; export alert from './alert.svg'; export attention from './attention.svg'; export connectedClusters from './connectedClusters.svg'; +export exclamation from './exclamation.svg'; +export collapse from './collapse.svg'; +export expand from './expand.svg'; + http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/main-screenshot.png ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/main-screenshot.png b/modules/web-console/frontend/public/images/main-screenshot.png new file mode 100644 index 0000000..5e1b9e9 Binary files /dev/null and b/modules/web-console/frontend/public/images/main-screenshot.png differ http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-1.png ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/page-landing-carousel-1.png b/modules/web-console/frontend/public/images/page-landing-carousel-1.png new file mode 100644 index 0000000..1ac243c Binary files /dev/null and b/modules/web-console/frontend/public/images/page-landing-carousel-1.png differ http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-2.png ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/page-landing-carousel-2.png b/modules/web-console/frontend/public/images/page-landing-carousel-2.png new file mode 100644 index 0000000..bb48ad6 Binary files /dev/null and b/modules/web-console/frontend/public/images/page-landing-carousel-2.png differ http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-3.png ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/images/page-landing-carousel-3.png b/modules/web-console/frontend/public/images/page-landing-carousel-3.png new file mode 100644 index 0000000..91946c9 Binary files /dev/null and b/modules/web-console/frontend/public/images/page-landing-carousel-3.png differ http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss b/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss index 3b52821..3dc338f 100644 --- a/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss +++ b/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss @@ -58,7 +58,6 @@ @import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/modals"; @import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/tooltip"; @import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/popovers"; -@import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/carousel"; // Utility classes @import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/utilities"; http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/views/reset.tpl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/views/reset.tpl.pug b/modules/web-console/frontend/views/reset.tpl.pug deleted file mode 100644 index 6bc5b7b..0000000 --- a/modules/web-console/frontend/views/reset.tpl.pug +++ /dev/null @@ -1,44 +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. - -web-console-header - web-console-header-left - ignite-header-title - -.container.body-container - .main-content(ng-controller='resetPassword') - .row - .text-center(ng-if='!token') - p Further instructions for password reset have been sent to your e-mail address. - .text-center(ng-if='error') - p {{::error}} - div(ng-if='token && !error') - form.form-horizontal(name='resetForm' ng-init='reset_info.token = token') - .settings-row - label.col-sm-1 E-mail: - label {{::email}} - .settings-row - label.col-sm-1.required Password: - .col-sm-3 - input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' type='password' ng-model='reset_info.password' placeholder='New password' required) - .settings-row - label.col-sm-1.required Confirm: - .col-sm-3 - input#user_confirm.form-control(type='password' ng-model='reset_info.confirm' ignite-match='reset_info.password' placeholder='Confirm new password' required ignite-on-enter='resetForm.$valid && resetPassword(user_info)') - .settings-row - button.btn.btn-primary(ng-disabled='resetForm.$invalid' ng-click='resetPassword(reset_info)') Reset Password - -web-console-footer http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/views/signin.tpl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/views/signin.tpl.pug b/modules/web-console/frontend/views/signin.tpl.pug deleted file mode 100644 index 29da8b1..0000000 --- a/modules/web-console/frontend/views/signin.tpl.pug +++ /dev/null @@ -1,165 +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. - -mixin lblRequired(txt) - label.col-xs-3.col-md-3.required #{txt} - -web-console-header - web-console-header-left - ignite-header-title - -.container.body-container - .main-content - .row.home - .signin-greedy - .col-xs-12.col-md-6 - form(name='form' novalidate) - .row(style='padding: 0 0 10px 0; margin: 0') - .settings-row(ng-if='action == "signup"') - h3.login-header Sign Up - .settings-row(ng-if='action == "signin"') - h3.login-header Sign In - .settings-row(ng-if='action == "password/forgot"') - h3.login-header Forgot password? - .settings-row - p.col-xs-12.col-md-11(ng-show='action == "password/forgot"') - | That's ok! Simply enter your email below and a reset password link will be sent to you via email. You can then follow that link and select a new password. - .settings-row(ng-show='action == "signin"') - +lblRequired('Email:') - .col-xs-9.col-md-8 - input#signin_email.form-control(ignite-on-enter-focus-move='user_password' type='email' ng-model='ui.email' placeholder='Input email' required) - .settings-row(ng-show='action == "signup"') - +lblRequired('Email:') - .col-xs-9.col-md-8 - input#signup_email.form-control(ignite-on-enter-focus-move='user_password' type='email' ng-model='ui.email' placeholder='Input email' required) - .settings-row(ng-show='action != "password/forgot"') - +lblRequired('Password:') - .col-xs-9.col-md-8 - input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' type='password' ng-model='ui.password' placeholder='Password' ng-required='action != "password/forgot"' ignite-on-enter='action == "signin" && form.$valid && auth(action, ui)') - .settings-row(ng-if='action == "signup"') - +lblRequired('Confirm:') - .col-xs-9.col-md-8 - input#user_confirm.form-control(ignite-on-enter-focus-move='first_name' type='password' ng-model='ui_exclude.confirm' ignite-match='ui.password' placeholder='Confirm password' ng-required='action == "signup"') - .settings-row(ng-show='action == "signup"') - +lblRequired('First Name:') - .col-xs-9.col-md-8 - input#first_name.form-control(ignite-on-enter-focus-move='last_name' type='text' ng-model='ui.firstName' placeholder='Input first name' ng-required='action=="signup"') - .settings-row(ng-show='action == "signup"') - +lblRequired('Last Name:') - .col-xs-9.col-md-8 - input#last_name.form-control(ignite-on-enter-focus-move='company' type='text' ng-model='ui.lastName' placeholder='Input last name' ng-required='action=="signup"') - .settings-row(ng-show='action == "password/forgot"') - +lblRequired('Email:') - .col-xs-9.col-md-8 - input#forgot_email.form-control(ignite-on-enter='form.$valid && forgotPassword(ui)' type='email' ng-model='ui.email' placeholder='Input email' required) - .settings-row(ng-show='action == "signup"') - +lblRequired('Company:') - .col-xs-9.col-md-8 - input#company.form-control(ignite-on-enter-focus-move='country' type='text' ng-model='ui.company' placeholder='Input company name' ng-required='action=="signup"') - .settings-row(ng-show='action == "signup"') - +lblRequired('Country:') - .col-xs-9.col-md-8 - button#country.select-toggle.form-control(ignite-on-enter-focus-move='signup' bs-select bs-options='item.name as item.name for item in countries' type='text' ng-model='ui.country' placeholder='Choose your country' ng-required='action=="signup"') - .settings-row(ignite-terms) - .col-md-offset-3(ng-if='action == "signup" && terms.termsState') - label - input(type='checkbox' ng-model='ui_exclude.agree', ng-required='true') - | I agree to the #[a(ui-sref='{{::terms.termsState}}' target='_blank') terms and conditions] - .col-xs-12.col-md-11 - .login-footer(ng-show='action == "signup"') - a#password-forgot-signup.labelField(ng-click='action = "password/forgot"' ignite-on-click-focus='signin_email') Forgot password? - a.labelLogin(ng-click='action = "signin"' ignite-on-click-focus='signin_email') Sign In - button#signup.btn.btn-primary(ng-click='auth(action, ui)' ng-disabled='form.$invalid') Sign Up - .col-xs-12.col-md-11 - .login-footer(ng-show='action == "password/forgot"') - a.labelField(ng-click='action = "signin"' ignite-on-click-focus='signin_email') Sign In - button#forgot.btn.btn-primary(ng-click='forgotPassword(ui)' ng-disabled='form.$invalid') Send it to me - .col-xs-12.col-md-11 - .login-footer(ng-show='action == "signin"') - a#password-forgot-signin.labelField(ng-click='action = "password/forgot"' ignite-on-click-focus='signin_email') Forgot password? - a.labelLogin(ng-click='action = "signup"' ignite-on-click-focus='first_name') Sign Up - button#login.btn.btn-primary(ng-click='auth(action, ui)' ng-disabled='form.$invalid') Sign In - - .col-xs-12.col-md-11.home-panel - ignite-features - .col-xs-12.col-md-6 - #carousel.carousel.slide - //- Indicators - ol.carousel-indicators - li.active(data-target='#carousel', data-slide-to='0') - li(data-target='#carousel', data-slide-to='1') - li(data-target='#carousel', data-slide-to='2') - li(data-target='#carousel', data-slide-to='3') - li(data-target='#carousel', data-slide-to='4') - li(data-target='#carousel', data-slide-to='5') - li(data-target='#carousel', data-slide-to='6') - li(data-target='#carousel', data-slide-to='7') - //- Wrapper for slides - .carousel-inner(role='listbox') - .item.active - img(src='/images/cluster.png', alt='Clusters screen') - .carousel-caption - h3 Clusters screen - p Configure clusters, link clusters to caches - .item - img(src='/images/cache.png', alt='Caches screen') - .carousel-caption - h3 Caches screen - p Configure caches, link domain models to caches, link caches to clusters - .item - img(src='/images/domains.png', alt='Domain model screen') - .carousel-caption - h3 Domain model screen - p Manually enter domain model or import from database - .item - img(src='/images/summary.png', alt='Summary screen') - .carousel-caption - h3 Summary screen - p Preview XML config, JAVA code,Docker file and download project - .item - img(src='/images/query-table.png', alt='Query') - .carousel-caption - h3 Query - p Explain SQL, execute, scan queries - .item - img(src='/images/query-metadata.png', alt='Cache metadata') - .carousel-caption - h3 Cache metadata - p View cache type metadata - .item - img(src='/images/query-chart.png', alt='Query chart') - .carousel-caption - h3 Query chart - p View data in tabular form and as charts - .item - img(src='/images/multicluster.png', alt='Multicluster support') - .carousel-caption - h3 Multicluster support - p Execute queries on different clusters - //- Controls - a.left.carousel-control(href='#carousel', ng-click='$event.preventDefault()', role='button', data-slide='prev') - span.fa.fa-chevron-left(aria-hidden='true') - span.sr-only Previous - a.right.carousel-control(href='#carousel', ng-click='$event.preventDefault()', role='button', data-slide='next') - span.fa.fa-chevron-right(aria-hidden='true') - span.sr-only Next - -web-console-footer - -script. - $('.carousel').carousel() - -
