http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/reset.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/reset.jade 
b/modules/web-console/frontend/views/reset.jade
deleted file mode 100644
index 9098105..0000000
--- a/modules/web-console/frontend/views/reset.jade
+++ /dev/null
@@ -1,48 +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.
-
-header#header.header
-    table.container
-        tr
-            td.col-xs-3.col-sm-3.col-md-2
-                ignite-header-logo
-            td
-                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
-
-include includes/footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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
new file mode 100644
index 0000000..9098105
--- /dev/null
+++ b/modules/web-console/frontend/views/reset.tpl.pug
@@ -0,0 +1,48 @@
+//-
+    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.
+
+header#header.header
+    table.container
+        tr
+            td.col-xs-3.col-sm-3.col-md-2
+                ignite-header-logo
+            td
+                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
+
+include includes/footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/settings/admin.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/settings/admin.jade 
b/modules/web-console/frontend/views/settings/admin.jade
deleted file mode 100644
index a09fda9..0000000
--- a/modules/web-console/frontend/views/settings/admin.jade
+++ /dev/null
@@ -1,25 +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.
-
-.admin-page.row
-    .docs-content.greedy
-        .docs-header
-            h1 Admin panel
-            hr
-        .docs-body
-            .row
-                .col-xs-12
-                    ignite-list-of-registered-users(data-options='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/settings/admin.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/settings/admin.tpl.pug 
b/modules/web-console/frontend/views/settings/admin.tpl.pug
new file mode 100644
index 0000000..a09fda9
--- /dev/null
+++ b/modules/web-console/frontend/views/settings/admin.tpl.pug
@@ -0,0 +1,25 @@
+//-
+    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.
+
+.admin-page.row
+    .docs-content.greedy
+        .docs-header
+            h1 Admin panel
+            hr
+        .docs-body
+            .row
+                .col-xs-12
+                    ignite-list-of-registered-users(data-options='ctrl.data')

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/settings/profile.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/settings/profile.jade 
b/modules/web-console/frontend/views/settings/profile.jade
deleted file mode 100644
index 6f91f8f..0000000
--- a/modules/web-console/frontend/views/settings/profile.jade
+++ /dev/null
@@ -1,76 +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 lbl(txt)
-    label.col-sm-2.required.labelFormField #{txt}
-
-.row(ng-controller='profileController')
-    .docs-content.greedy
-        .docs-header
-            h1 User profile
-            hr
-        .docs-body
-            form.form-horizontal(name='profileForm' novalidate)
-                .col-sm-10(style='padding: 0')
-                    .details-row
-                        +lbl('First name:')
-                        .col-xs-5.col-sm-4
-                            
input#profile-firstname.form-control(ignite-on-enter-focus-move='profile-lastname'
 type='text' ng-model='user.firstName' placeholder='Input first name' required 
ignite-auto-focus)
-                    .details-row
-                        +lbl('Last name:')
-                        .col-xs-5.col-sm-4
-                            
input#profile-lastname.form-control(ignite-on-enter-focus-move='profile-email' 
type='text' ng-model='user.lastName' placeholder='Input last name' required)
-                    .details-row
-                        +lbl('Email:')
-                        .col-xs-5.col-sm-4
-                            
input#profile-email.form-control(ignite-on-enter-focus-move='profile-company' 
type='email' ng-model='user.email' placeholder='Input email' required)
-                    .details-row
-                        +lbl('Company:')
-                        .col-xs-5.col-sm-4
-                            
input#profile-company.form-control(ignite-on-enter-focus-move='profile-country' 
type='text' ng-model='user.company' placeholder='Input company name' required)
-                    .details-row
-                        +lbl('Country:')
-                        .col-xs-5.col-sm-4
-                            
button#profile-country.select-toggle.form-control(bs-select 
bs-options='item.name as item.name for item in countries' type='text' 
ng-model='user.country' placeholder='Choose your country' ng-required='true')
-                    .details-row
-                        .advanced-options
-                            i.fa(
-                            ng-click='toggleToken()'
-                            ng-class='expandedToken ? "fa-chevron-circle-down" 
: "fa-chevron-circle-right"')
-                            a(ng-click='toggleToken()') {{expandedToken ? 
'Cancel security token changing...' : 'Show security token...'}}
-                        div(ng-if='expandedToken')
-                            +lbl('Security token:')
-                            label {{user.token || 'No security token. 
Regenerate please.'}}
-                            
i.tipLabel.fa.fa-refresh(ng-click='generateToken()' bs-tooltip='' 
data-title='Generate random security token')
-                            
i.tipLabel.fa.fa-clipboard(ignite-copy-to-clipboard='{{user.token}}' 
bs-tooltip='' data-title='Copy security token to clipboard')
-                            i.tipLabel.icon-help(ng-if=lines bs-tooltip='' 
data-title='The security token is used for authorization of web agent')
-                    .details-row
-                        .advanced-options
-                            i.fa(
-                            ng-click='togglePassword()'
-                            ng-class='expandedPassword ? 
"fa-chevron-circle-down" : "fa-chevron-circle-right"')
-                            a(ng-click='togglePassword()') {{expandedPassword 
? 'Cancel password changing...' : 'Change password...'}}
-                        div(ng-if='expandedPassword')
-                            .details-row
-                                +lbl('New password:')
-                                .col-xs-5.col-sm-4
-                                    
input#profile_password.form-control(ignite-on-enter-focus-move='profile_confirm'
 type='password' ng-model='user.password' placeholder='New password')
-                            .details-row
-                                +lbl('Confirm:')
-                                .col-xs-5.col-sm-4
-                                    
input#profile_confirm.form-control(type='password' ng-model='user.confirm' 
ignite-match='user.password' placeholder='Confirm new password')
-                .col-xs-12.col-sm-12.details-row
-                    a.btn.btn-primary(ng-disabled='!profileCouldBeSaved()' 
ng-click='profileCouldBeSaved() && saveUser()' bs-tooltip='' 
data-title='{{saveBtnTipText()}}' data-placement='bottom' data-trigger='hover') 
Save

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/settings/profile.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/settings/profile.tpl.pug 
b/modules/web-console/frontend/views/settings/profile.tpl.pug
new file mode 100644
index 0000000..6f91f8f
--- /dev/null
+++ b/modules/web-console/frontend/views/settings/profile.tpl.pug
@@ -0,0 +1,76 @@
+//-
+    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 lbl(txt)
+    label.col-sm-2.required.labelFormField #{txt}
+
+.row(ng-controller='profileController')
+    .docs-content.greedy
+        .docs-header
+            h1 User profile
+            hr
+        .docs-body
+            form.form-horizontal(name='profileForm' novalidate)
+                .col-sm-10(style='padding: 0')
+                    .details-row
+                        +lbl('First name:')
+                        .col-xs-5.col-sm-4
+                            
input#profile-firstname.form-control(ignite-on-enter-focus-move='profile-lastname'
 type='text' ng-model='user.firstName' placeholder='Input first name' required 
ignite-auto-focus)
+                    .details-row
+                        +lbl('Last name:')
+                        .col-xs-5.col-sm-4
+                            
input#profile-lastname.form-control(ignite-on-enter-focus-move='profile-email' 
type='text' ng-model='user.lastName' placeholder='Input last name' required)
+                    .details-row
+                        +lbl('Email:')
+                        .col-xs-5.col-sm-4
+                            
input#profile-email.form-control(ignite-on-enter-focus-move='profile-company' 
type='email' ng-model='user.email' placeholder='Input email' required)
+                    .details-row
+                        +lbl('Company:')
+                        .col-xs-5.col-sm-4
+                            
input#profile-company.form-control(ignite-on-enter-focus-move='profile-country' 
type='text' ng-model='user.company' placeholder='Input company name' required)
+                    .details-row
+                        +lbl('Country:')
+                        .col-xs-5.col-sm-4
+                            
button#profile-country.select-toggle.form-control(bs-select 
bs-options='item.name as item.name for item in countries' type='text' 
ng-model='user.country' placeholder='Choose your country' ng-required='true')
+                    .details-row
+                        .advanced-options
+                            i.fa(
+                            ng-click='toggleToken()'
+                            ng-class='expandedToken ? "fa-chevron-circle-down" 
: "fa-chevron-circle-right"')
+                            a(ng-click='toggleToken()') {{expandedToken ? 
'Cancel security token changing...' : 'Show security token...'}}
+                        div(ng-if='expandedToken')
+                            +lbl('Security token:')
+                            label {{user.token || 'No security token. 
Regenerate please.'}}
+                            
i.tipLabel.fa.fa-refresh(ng-click='generateToken()' bs-tooltip='' 
data-title='Generate random security token')
+                            
i.tipLabel.fa.fa-clipboard(ignite-copy-to-clipboard='{{user.token}}' 
bs-tooltip='' data-title='Copy security token to clipboard')
+                            i.tipLabel.icon-help(ng-if=lines bs-tooltip='' 
data-title='The security token is used for authorization of web agent')
+                    .details-row
+                        .advanced-options
+                            i.fa(
+                            ng-click='togglePassword()'
+                            ng-class='expandedPassword ? 
"fa-chevron-circle-down" : "fa-chevron-circle-right"')
+                            a(ng-click='togglePassword()') {{expandedPassword 
? 'Cancel password changing...' : 'Change password...'}}
+                        div(ng-if='expandedPassword')
+                            .details-row
+                                +lbl('New password:')
+                                .col-xs-5.col-sm-4
+                                    
input#profile_password.form-control(ignite-on-enter-focus-move='profile_confirm'
 type='password' ng-model='user.password' placeholder='New password')
+                            .details-row
+                                +lbl('Confirm:')
+                                .col-xs-5.col-sm-4
+                                    
input#profile_confirm.form-control(type='password' ng-model='user.confirm' 
ignite-match='user.password' placeholder='Confirm new password')
+                .col-xs-12.col-sm-12.details-row
+                    a.btn.btn-primary(ng-disabled='!profileCouldBeSaved()' 
ng-click='profileCouldBeSaved() && saveUser()' bs-tooltip='' 
data-title='{{saveBtnTipText()}}' data-placement='bottom' data-trigger='hover') 
Save

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/signin.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/signin.jade 
b/modules/web-console/frontend/views/signin.jade
deleted file mode 100644
index a6c64a8..0000000
--- a/modules/web-console/frontend/views/signin.jade
+++ /dev/null
@@ -1,163 +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}
-
-header#header.header
-    table.container
-        tr
-            td.col-xs-3.col-sm-3.col-md-2
-                ignite-header-logo
-            td
-                ignite-header-title
-
-.container.body-container
-    .main-content(ng-controller='auth')
-        .row.home
-            .signin-greedy
-                .col-xs-12.col-md-6
-                    form(name='form' novalidate)
-                        .modal-body.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.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.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')
-                        // 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
-                        // 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
-
-include includes/footer
-
-script.
-    $('.carousel').carousel()
-
-

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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
new file mode 100644
index 0000000..a6c64a8
--- /dev/null
+++ b/modules/web-console/frontend/views/signin.tpl.pug
@@ -0,0 +1,163 @@
+//-
+    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}
+
+header#header.header
+    table.container
+        tr
+            td.col-xs-3.col-sm-3.col-md-2
+                ignite-header-logo
+            td
+                ignite-header-title
+
+.container.body-container
+    .main-content(ng-controller='auth')
+        .row.home
+            .signin-greedy
+                .col-xs-12.col-md-6
+                    form(name='form' novalidate)
+                        .modal-body.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.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.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')
+                        // 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
+                        // 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
+
+include includes/footer
+
+script.
+    $('.carousel').carousel()
+
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/cache-metadata.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/cache-metadata.jade 
b/modules/web-console/frontend/views/sql/cache-metadata.jade
deleted file mode 100644
index 385960a..0000000
--- a/modules/web-console/frontend/views/sql/cache-metadata.jade
+++ /dev/null
@@ -1,40 +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.
-.popover.cache-metadata(tabindex='-1' ignite-loading='loadingCacheMetadata' 
ignite-loading-text='Loading metadata...' ng-init='importMetadata()')
-    h3.popover-title
-        label.labelField Metadata for caches:
-        button.close(id='cache-metadata-close' ng-click='$hide()') ×
-        .input-tip
-            input.form-control(type='text' ng-model='metaFilter' 
placeholder='Filter metadata...')
-    .popover-content(ng-if='metadata && metadata.length > 0')
-        treecontrol.tree-classic(tree-model='metadata' options='metaOptions' 
filter-expression='metaFilter')
-            span(ng-switch='node.type')
-                span(ng-switch-when='type' 
ng-dblclick='dblclickMetadata(paragraph, node)')
-                    i.fa.fa-table
-                    label.clickable(ng-bind='node.displayName')
-                span(ng-switch-when='plain')
-                    label {{node.name}}
-                span(ng-switch-when='field' 
ng-dblclick='dblclickMetadata(paragraph, node)')
-                    i.fa(ng-class='node.system ? "fa-file-text-o" : 
"fa-file-o"')
-                    label.clickable {{node.name}} [{{node.clazz}}]
-                label(ng-switch-when='indexes') {{node.name}}
-                label(ng-switch-when='index') {{node.name}}
-                span(ng-switch-when='index-field' 
ng-dblclick='dblclickMetadata(paragraph, node)')
-                    i.fa(ng-class='node.order ? "fa-sort-amount-desc" : 
"fa-sort-amount-asc"')
-                    label.clickable {{node.name}}
-    .popover-content(ng-if='!metadata || metadata.length == 0')
-        label.content-empty No types found
-    h3.popover-footer Double click to paste into editor

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/cache-metadata.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/cache-metadata.tpl.pug 
b/modules/web-console/frontend/views/sql/cache-metadata.tpl.pug
new file mode 100644
index 0000000..385960a
--- /dev/null
+++ b/modules/web-console/frontend/views/sql/cache-metadata.tpl.pug
@@ -0,0 +1,40 @@
+//-
+    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.
+.popover.cache-metadata(tabindex='-1' ignite-loading='loadingCacheMetadata' 
ignite-loading-text='Loading metadata...' ng-init='importMetadata()')
+    h3.popover-title
+        label.labelField Metadata for caches:
+        button.close(id='cache-metadata-close' ng-click='$hide()') ×
+        .input-tip
+            input.form-control(type='text' ng-model='metaFilter' 
placeholder='Filter metadata...')
+    .popover-content(ng-if='metadata && metadata.length > 0')
+        treecontrol.tree-classic(tree-model='metadata' options='metaOptions' 
filter-expression='metaFilter')
+            span(ng-switch='node.type')
+                span(ng-switch-when='type' 
ng-dblclick='dblclickMetadata(paragraph, node)')
+                    i.fa.fa-table
+                    label.clickable(ng-bind='node.displayName')
+                span(ng-switch-when='plain')
+                    label {{node.name}}
+                span(ng-switch-when='field' 
ng-dblclick='dblclickMetadata(paragraph, node)')
+                    i.fa(ng-class='node.system ? "fa-file-text-o" : 
"fa-file-o"')
+                    label.clickable {{node.name}} [{{node.clazz}}]
+                label(ng-switch-when='indexes') {{node.name}}
+                label(ng-switch-when='index') {{node.name}}
+                span(ng-switch-when='index-field' 
ng-dblclick='dblclickMetadata(paragraph, node)')
+                    i.fa(ng-class='node.order ? "fa-sort-amount-desc" : 
"fa-sort-amount-asc"')
+                    label.clickable {{node.name}}
+    .popover-content(ng-if='!metadata || metadata.length == 0')
+        label.content-empty No types found
+    h3.popover-footer Double click to paste into editor

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/chart-settings.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/chart-settings.jade 
b/modules/web-console/frontend/views/sql/chart-settings.jade
deleted file mode 100644
index 5a1ceed..0000000
--- a/modules/web-console/frontend/views/sql/chart-settings.jade
+++ /dev/null
@@ -1,40 +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.
-
-.popover.settings(tabindex='-1' style='width: 300px')
-    .arrow
-    h3.popover-title(style='color: black') Chart settings
-    button.close(id='chart-settings-close' ng-click='$hide()') ×
-    .popover-content
-        form.form-horizontal.chart-settings(name='chartSettingsForm' 
novalidate)
-            .form-group.chart-settings
-                -var btnClass = 'col.value < 0 ? "btn-success" : "btn-default"'
-
-                label All columns (drag columns to axis)
-                
ul.chart-settings-columns-list(dnd-list='paragraph.chartColumns' 
dnd-allowed-types='[]')
-                    li(ng-repeat='col in paragraph.chartColumns track by 
$index')
-                        
.btn.btn-default.btn-chart-column-movable(ng-class=btnClass dnd-draggable='col' 
dnd-effect-allowed='copy') {{col.label}}
-                label X axis (accept only one column)
-                
ul.chart-settings-columns-list(dnd-list='paragraph.chartKeyCols' 
dnd-drop='chartAcceptKeyColumn(paragraph, item)')
-                    li(ng-repeat='col in paragraph.chartKeyCols track by 
$index')
-                        .btn.btn-default.btn-chart-column(ng-class=btnClass) 
{{col.label}}
-                            
i.fa.fa-close(ng-click='chartRemoveKeyColumn(paragraph, $index)')
-                label Y axis (accept only numeric columns)
-                
ul.chart-settings-columns-list(dnd-list='paragraph.chartValCols' 
dnd-drop='chartAcceptValColumn(paragraph, item)')
-                    li(ng-repeat='col in paragraph.chartValCols track by 
$index')
-                        
.btn.btn-default.btn-chart-column(ng-style='chartColor($index)') {{col.label}}
-                            
button.btn-chart-column-agg-fx.select-toggle(ng-change='applyChartSettings(paragraph)'
 ng-show='paragraphTimeSpanVisible(paragraph)' ng-style='chartColor($index)' 
ng-model='col.aggFx' placeholder='...' bs-select bs-options='item for item in 
aggregateFxs' data-container='false' tabindex='-1')
-                            
i.fa.fa-close(ng-click='chartRemoveValColumn(paragraph, $index)')

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/chart-settings.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/chart-settings.tpl.pug 
b/modules/web-console/frontend/views/sql/chart-settings.tpl.pug
new file mode 100644
index 0000000..5a1ceed
--- /dev/null
+++ b/modules/web-console/frontend/views/sql/chart-settings.tpl.pug
@@ -0,0 +1,40 @@
+//-
+    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.
+
+.popover.settings(tabindex='-1' style='width: 300px')
+    .arrow
+    h3.popover-title(style='color: black') Chart settings
+    button.close(id='chart-settings-close' ng-click='$hide()') &times;
+    .popover-content
+        form.form-horizontal.chart-settings(name='chartSettingsForm' 
novalidate)
+            .form-group.chart-settings
+                -var btnClass = 'col.value < 0 ? "btn-success" : "btn-default"'
+
+                label All columns (drag columns to axis)
+                
ul.chart-settings-columns-list(dnd-list='paragraph.chartColumns' 
dnd-allowed-types='[]')
+                    li(ng-repeat='col in paragraph.chartColumns track by 
$index')
+                        
.btn.btn-default.btn-chart-column-movable(ng-class=btnClass dnd-draggable='col' 
dnd-effect-allowed='copy') {{col.label}}
+                label X axis (accept only one column)
+                
ul.chart-settings-columns-list(dnd-list='paragraph.chartKeyCols' 
dnd-drop='chartAcceptKeyColumn(paragraph, item)')
+                    li(ng-repeat='col in paragraph.chartKeyCols track by 
$index')
+                        .btn.btn-default.btn-chart-column(ng-class=btnClass) 
{{col.label}}
+                            
i.fa.fa-close(ng-click='chartRemoveKeyColumn(paragraph, $index)')
+                label Y axis (accept only numeric columns)
+                
ul.chart-settings-columns-list(dnd-list='paragraph.chartValCols' 
dnd-drop='chartAcceptValColumn(paragraph, item)')
+                    li(ng-repeat='col in paragraph.chartValCols track by 
$index')
+                        
.btn.btn-default.btn-chart-column(ng-style='chartColor($index)') {{col.label}}
+                            
button.btn-chart-column-agg-fx.select-toggle(ng-change='applyChartSettings(paragraph)'
 ng-show='paragraphTimeSpanVisible(paragraph)' ng-style='chartColor($index)' 
ng-model='col.aggFx' placeholder='...' bs-select bs-options='item for item in 
aggregateFxs' data-container='false' tabindex='-1')
+                            
i.fa.fa-close(ng-click='chartRemoveValColumn(paragraph, $index)')

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/notebook-new.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/notebook-new.jade 
b/modules/web-console/frontend/views/sql/notebook-new.jade
deleted file mode 100644
index 9585e92..0000000
--- a/modules/web-console/frontend/views/sql/notebook-new.jade
+++ /dev/null
@@ -1,33 +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.
-
-.modal(tabindex='-1' role='dialog')
-    .modal-dialog
-        .modal-content
-            .modal-header
-                button.close(ng-click='$hide()') &times;
-                h4.modal-title
-                    i.fa.fa-file-o
-                    | New query notebook
-            form.form-horizontal.modal-body.row(name='ui.inputForm' novalidate)
-                div
-                    .col-sm-2
-                        label.required.labelFormField Name:&nbsp;
-                    .col-sm-10
-                        input.form-control(id='create-notebook' type='text' 
ng-model='name' required ignite-on-enter='ui.inputForm.$valid && create(name)' 
ignite-auto-focus)
-            .modal-footer
-                button.btn.btn-default(id='copy-btn-cancel' 
ng-click='$hide()') Cancel
-                button.btn.btn-primary(id='copy-btn-confirm' 
ng-disabled='ui.inputForm.$invalid' ng-click='create(name)') Create

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/notebook-new.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/notebook-new.tpl.pug 
b/modules/web-console/frontend/views/sql/notebook-new.tpl.pug
new file mode 100644
index 0000000..9585e92
--- /dev/null
+++ b/modules/web-console/frontend/views/sql/notebook-new.tpl.pug
@@ -0,0 +1,33 @@
+//-
+    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.
+
+.modal(tabindex='-1' role='dialog')
+    .modal-dialog
+        .modal-content
+            .modal-header
+                button.close(ng-click='$hide()') &times;
+                h4.modal-title
+                    i.fa.fa-file-o
+                    | New query notebook
+            form.form-horizontal.modal-body.row(name='ui.inputForm' novalidate)
+                div
+                    .col-sm-2
+                        label.required.labelFormField Name:&nbsp;
+                    .col-sm-10
+                        input.form-control(id='create-notebook' type='text' 
ng-model='name' required ignite-on-enter='ui.inputForm.$valid && create(name)' 
ignite-auto-focus)
+            .modal-footer
+                button.btn.btn-default(id='copy-btn-cancel' 
ng-click='$hide()') Cancel
+                button.btn.btn-primary(id='copy-btn-confirm' 
ng-disabled='ui.inputForm.$invalid' ng-click='create(name)') Create

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/paragraph-rate.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/paragraph-rate.jade 
b/modules/web-console/frontend/views/sql/paragraph-rate.jade
deleted file mode 100644
index 03c6497..0000000
--- a/modules/web-console/frontend/views/sql/paragraph-rate.jade
+++ /dev/null
@@ -1,31 +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.
-
-.popover.settings(tabindex='-1' style='width: 200px')
-    .arrow
-    h3.popover-title(style='color: black') Refresh rate
-    button.close(id='paragraph-rate-close' ng-click='$hide()') &times;
-    .popover-content
-        form(name='popoverForm' novalidate)
-            .form-group(style='padding: 5px')
-                .col-sm-4
-                    input.form-control(id='paragraph-rate' ng-init='value = 
paragraph.rate.value' ng-model='value' type='number' min='1' required 
ignite-auto-focus)
-                .col-sm-8(style='padding-left: 5px')
-                    button.form-control.select-toggle(id='paragraph-unit' 
ng-init='unit = paragraph.rate.unit' ng-model='unit' required placeholder='Time 
unit' bs-select bs-options='item.value as item.label for item in timeUnit' 
data-container='false' tabindex='0')
-            .form-actions(style='margin-top: 30px; padding: 5px')
-                button.btn.btn-primary(id='paragraph-rate-start' 
ng-disabled='popoverForm.$invalid' ng-click='startRefresh(paragraph, value, 
unit); $hide()') Start
-                button.btn.btn-primary.btn-default(id='paragraph-rate-stop' 
ng-click='stopRefresh(paragraph); $hide()' 
ng-disabled='!paragraph.rate.installed') Stop
-

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/paragraph-rate.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/paragraph-rate.tpl.pug 
b/modules/web-console/frontend/views/sql/paragraph-rate.tpl.pug
new file mode 100644
index 0000000..03c6497
--- /dev/null
+++ b/modules/web-console/frontend/views/sql/paragraph-rate.tpl.pug
@@ -0,0 +1,31 @@
+//-
+    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.
+
+.popover.settings(tabindex='-1' style='width: 200px')
+    .arrow
+    h3.popover-title(style='color: black') Refresh rate
+    button.close(id='paragraph-rate-close' ng-click='$hide()') &times;
+    .popover-content
+        form(name='popoverForm' novalidate)
+            .form-group(style='padding: 5px')
+                .col-sm-4
+                    input.form-control(id='paragraph-rate' ng-init='value = 
paragraph.rate.value' ng-model='value' type='number' min='1' required 
ignite-auto-focus)
+                .col-sm-8(style='padding-left: 5px')
+                    button.form-control.select-toggle(id='paragraph-unit' 
ng-init='unit = paragraph.rate.unit' ng-model='unit' required placeholder='Time 
unit' bs-select bs-options='item.value as item.label for item in timeUnit' 
data-container='false' tabindex='0')
+            .form-actions(style='margin-top: 30px; padding: 5px')
+                button.btn.btn-primary(id='paragraph-rate-start' 
ng-disabled='popoverForm.$invalid' ng-click='startRefresh(paragraph, value, 
unit); $hide()') Start
+                button.btn.btn-primary.btn-default(id='paragraph-rate-stop' 
ng-click='stopRefresh(paragraph); $hide()' 
ng-disabled='!paragraph.rate.installed') Stop
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/sql/sql.jade 
b/modules/web-console/frontend/views/sql/sql.jade
deleted file mode 100644
index 61d5b30..0000000
--- a/modules/web-console/frontend/views/sql/sql.jade
+++ /dev/null
@@ -1,278 +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.
-
-include /app/helpers/jade/mixins.jade
-include /app/components/ui-grid-settings/ui-grid-settings.jade
-
-mixin btn-toolbar(btn, click, tip, focusId)
-    i.btn.btn-default.fa(class=btn ng-click=click bs-tooltip='' data-title=tip 
ignite-on-click-focus=focusId data-trigger='hover' data-placement='bottom')
-
-mixin btn-toolbar-data(btn, kind, tip)
-    i.btn.btn-default.fa(class=btn ng-click='setResult(paragraph, "#{kind}")' 
ng-class='{active: resultEq(paragraph, "#{kind}")}' bs-tooltip='' 
data-title=tip data-trigger='hover' data-placement='bottom')
-
-mixin result-toolbar
-    .btn-group(ng-model='paragraph.result' ng-click='$event.stopPropagation()' 
style='left: 50%; margin: 0 0 0 -70px;display: block;')
-        +btn-toolbar-data('fa-table', 'table', 'Show data in tabular form')
-        +btn-toolbar-data('fa-bar-chart', 'bar', 'Show bar chart<br/>By 
default first column - X values, second column - Y values<br/>In case of one 
column it will be treated as Y values')
-        +btn-toolbar-data('fa-pie-chart', 'pie', 'Show pie chart<br/>By 
default first column - pie labels, second column - pie values<br/>In case of 
one column it will be treated as pie values')
-        +btn-toolbar-data('fa-line-chart', 'line', 'Show line chart<br/>By 
default first column - X values, second column - Y values<br/>In case of one 
column it will be treated as Y values')
-        +btn-toolbar-data('fa-area-chart', 'area', 'Show area chart<br/>By 
default first column - X values, second column - Y values<br/>In case of one 
column it will be treated as Y values')
-
-mixin chart-settings
-    .total.row
-        .col-xs-4
-            .chart-settings-link(ng-show='paragraph.chart && 
paragraph.chartColumns.length > 0')
-                a(title='Click to show chart settings dialog' 
ng-click='$event.stopPropagation()' bs-popover 
data-template-url='/sql/chart-settings.html' data-placement='bottom' 
data-auto-close='1' data-trigger='click')
-                    i.fa.fa-bars
-                    | Chart settings
-                div(ng-show='paragraphTimeSpanVisible(paragraph)')
-                    label Show
-                    
button.select-manual-caret.btn.btn-default(ng-model='paragraph.timeLineSpan' 
ng-change='applyChartSettings(paragraph)' bs-options='item for item in 
timeLineSpans' bs-select data-caret-html='<span class="caret"></span>')
-                    label min
-        .col-xs-4
-            +result-toolbar
-
-mixin notebook-rename
-    .docs-header.notebook-header
-        h1.col-sm-6(ng-hide='notebook.edit')
-            label(style='max-width: calc(100% - 60px)') {{notebook.name}}
-            .btn-group(ng-if='!demo')
-                +btn-toolbar('fa-pencil', 'notebook.edit = 
true;notebook.editName = notebook.name', 'Rename notebook')
-                +btn-toolbar('fa-trash', 'removeNotebook(notebook)', 'Remove 
notebook')
-        h1.col-sm-6(ng-show='notebook.edit')
-            i.btn.fa.fa-floppy-o(ng-show='notebook.editName' 
ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save 
notebook name' data-trigger='hover')
-            .input-tip
-                input.form-control(ng-model='notebook.editName' required 
ignite-on-enter='renameNotebook(notebook.editName)' 
ignite-on-escape='notebook.edit = false;')
-        h1.pull-right
-            a.dropdown-toggle(style='margin-right: 20px' 
data-toggle='dropdown' bs-dropdown='scrollParagraphs' 
data-placement='bottom-right') Scroll to query
-                span.caret
-            button.btn.btn-default(style='margin-top: 2px' 
ng-click='addQuery()' ignite-on-click-focus=focusId)
-                i.fa.fa-fw.fa-plus
-                | Add query
-
-            button.btn.btn-default(style='margin-top: 2px' 
ng-click='addScan()' ignite-on-click-focus=focusId)
-                i.fa.fa-fw.fa-plus
-                | Add scan
-
-mixin notebook-error
-    h2 Failed to load notebook
-    label.col-sm-12 Notebook not accessible any more. Go back to configuration 
or open to another notebook.
-    button.h3.btn.btn-primary(ui-sref='base.configuration.clusters') Back to 
configuration
-
-mixin paragraph-rename
-    .col-sm-6(ng-hide='paragraph.edit')
-        i.fa(ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-down" 
: "fa-chevron-circle-right"')
-        label {{paragraph.name}}
-
-        .btn-group(ng-hide='notebook.paragraphs.length > 1')
-            +btn-toolbar('fa-pencil', 'paragraph.edit = true; 
paragraph.editName = paragraph.name; $event.stopPropagation();', 'Rename 
query', 'paragraph-name-{{paragraph.id}}')
-
-        .btn-group(ng-show='notebook.paragraphs.length > 1' 
ng-click='$event.stopPropagation();')
-            +btn-toolbar('fa-pencil', 'paragraph.edit = true; 
paragraph.editName = paragraph.name;', 'Rename query', 
'paragraph-name-{{paragraph.id}}')
-            +btn-toolbar('fa-remove', 'removeParagraph(paragraph)', 'Remove 
query')
-
-    .col-sm-6(ng-show='paragraph.edit')
-        i.tipLabel.fa(style='float: left;' 
ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-down" : 
"fa-chevron-circle-right"')
-        i.tipLabel.fa.fa-floppy-o(style='float: right;' 
ng-show='paragraph.editName' ng-click='renameParagraph(paragraph, 
paragraph.editName); $event.stopPropagation();' bs-tooltip data-title='Save 
query name' data-trigger='hover')
-        .input-tip
-            input.form-control(id='paragraph-name-{{paragraph.id}}' 
ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' 
ignite-on-enter='renameParagraph(paragraph, paragraph.editName)' 
ignite-on-escape='paragraph.edit = false')
-
-mixin query-settings
-    label.tipLabel(bs-tooltip data-placement='bottom' data-title='Configure 
periodical execution of last successfully executed query') Refresh rate:
-        button.btn.btn-default.fa.fa-clock-o.tipLabel(ng-class='{"btn-info": 
paragraph.rate && paragraph.rate.installed}' bs-popover 
data-template-url='/sql/paragraph-rate.html' data-placement='left' 
data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}}
-
-    label.tipLabel(bs-tooltip data-placement='bottom' data-title='Max number 
of rows to show in query result as one page') Page size:
-        
button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.pageSize' 
bs-select bs-options='item for item in pageSizes')
-
-    label.tipLabel(bs-tooltip data-placement='bottom' data-title='Limit query 
max results to specified number of pages') Max pages:
-        
button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.maxPages' 
bs-select bs-options='item.value as item.label for item in maxPages')
-
-    label.tipLabel(ng-if='nonCollocatedJoinsAvailable(paragraph)' bs-tooltip 
data-placement='bottom' data-title='Non-collocated joins is a special mode that 
allow to join data across cluster without collocation.<br/>\
-        Nested joins are not supported for now.<br/>\
-        <b>NOTE</b>: In some cases it may consume more heap memory or may take 
a long time than collocated joins.' data-trigger='hover')
-        input(type='checkbox' ng-model='paragraph.nonCollocatedJoins')
-        span Allow non-collocated joins
-
-mixin query-actions
-    button.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' 
ng-click='execute(paragraph)') Execute
-    button.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' 
ng-click='execute(paragraph, true)') Execute on selected node
-
-    a.btn.btn-default(ng-disabled='!actionAvailable(paragraph, true)' 
ng-click='explain(paragraph)' data-placement='bottom' bs-tooltip='' 
data-title='{{actionTooltip(paragraph, "explain", true)}}') Explain
-
-mixin table-result-heading-query
-    .total.row
-        .col-xs-4
-            +ui-grid-settings
-            label Page: #[b {{paragraph.page}}]
-            label.margin-left-dflt Results so far: #[b {{paragraph.rows.length 
+ paragraph.total}}]
-            label.margin-left-dflt Duration: #[b {{paragraph.duration | 
duration}}]
-        .col-xs-4
-            div(ng-if='paragraph.qryType === "query"')
-                +result-toolbar
-        .col-xs-4
-            .pull-right
-                .btn-group(ng-disabled='paragraph.loading')
-                    button.btn.btn-primary(ng-click='exportCsv(paragraph)' 
bs-tooltip data-title='{{actionTooltip(paragraph, "export", false)}}') Export
-                    
button.btn.btn-primary.dropdown-toggle(id='export-item-dropdown' 
data-toggle='dropdown' data-container='body' bs-dropdown='exportDropdown' 
data-placement='bottom-right')
-                        span.caret
-
-mixin table-result-heading-scan
-    .total.row
-        .col-xs-4
-            +ui-grid-settings
-            label Page: #[b {{paragraph.page}}]
-            label.margin-left-dflt Results so far: #[b {{paragraph.rows.length 
+ paragraph.total}}]
-            label.margin-left-dflt Duration: #[b {{paragraph.duration | 
duration}}]
-        .col-xs-4
-            div(ng-if='paragraph.qryType === "query"')
-                +result-toolbar
-        .col-xs-4
-            .pull-right
-                .btn-group(ng-disabled='paragraph.loading')
-                    button.btn.btn-primary(ng-click='exportCsv(paragraph)' 
bs-tooltip data-title='{{actionTooltip(paragraph, "export", false)}}') Export
-                    
button.btn.btn-primary.dropdown-toggle(id='export-item-dropdown' 
data-toggle='dropdown' data-container='body' bs-dropdown='exportDropdown' 
data-placement='bottom-right')
-                        span.caret
-
-mixin table-result-body
-    .grid(ui-grid='paragraph.gridOptions' ui-grid-resize-columns 
ui-grid-exporter)
-
-mixin chart-result
-    div(ng-hide='paragraph.scanExplain()')
-        +chart-settings
-        .empty(ng-show='paragraph.chartColumns.length > 0 && 
!paragraph.chartColumnsConfigured()') Cannot display chart. Please configure 
axis using #[b Chart settings]
-        .empty(ng-show='paragraph.chartColumns.length == 0') Cannot display 
chart. Result set must contain Java build-in type columns. Please change query 
and execute it again.
-        div(ng-show='paragraph.chartColumnsConfigured()')
-            div(ng-show='paragraph.timeLineSupported() || 
!paragraph.chartTimeLineEnabled()')
-                div(ng-repeat='chart in paragraph.charts')
-                    nvd3(options='chart.options' data='chart.data' 
api='chart.api')
-            .empty(ng-show='!paragraph.timeLineSupported() && 
paragraph.chartTimeLineEnabled()') Pie chart does not support 'TIME_LINE' 
column for X-axis. Please use another column for X-axis or switch to another 
chart.
-    .empty(ng-show='paragraph.scanExplain()')
-        .row
-            .col-xs-4.col-xs-offset-4
-                +result-toolbar
-        label.margin-top-dflt Charts do not support #[b Explain] and #[b Scan] 
query
-
-mixin paragraph-scan
-    .panel-heading(bs-collapse-toggle)
-        .row
-            +paragraph-rename
-    .panel-collapse(role='tabpanel' bs-collapse-target)
-        .col-sm-12.sql-controls
-            .col-sm-3
-                +dropdown-required('Cache:', 'paragraph.cacheName', '"cache"', 
'true', 'false', 'Choose cache', 'caches')
-            .col-sm-3
-                +text-enabled('Filter:', 'paragraph.filter', '"filter"', true, 
false, 'Enter filter')
-                    
label.btn.btn-default.ignite-form-field__btn(ng-click='paragraph.caseSensitive 
= !paragraph.caseSensitive')
-                        input(type='checkbox' 
ng-model='paragraph.caseSensitive')
-                        span(bs-tooltip data-title='Select this checkbox for 
case sensitive search') Cs
-            label.tipLabel(bs-tooltip data-placement='bottom' data-title='Max 
number of rows to show in query result as one page') Page size:
-                
button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.pageSize' 
bs-select bs-options='item for item in pageSizes')
-
-        .col-sm-12.sql-controls
-            button.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, 
false)' ng-click='scan(paragraph)')
-                | Scan
-            button.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, 
false)' ng-click='scan(paragraph, true)')
-                | Scan on selected node
-
-        .col-sm-12.sql-result(ng-if='paragraph.queryExecuted()' 
ng-switch='paragraph.resultType()')
-            .error(ng-switch-when='error') Error: {{paragraph.errMsg}}
-            .empty(ng-switch-when='empty') Result set is empty
-            .table(ng-switch-when='table')
-                +table-result-heading-scan
-                +table-result-body
-            .footer.clearfix()
-                .pull-left
-                    | Showing results for scan of #[b {{ 
paragraph.queryArgs.cacheName | defaultName }}]
-                    span(ng-if='paragraph.queryArgs.filter') &nbsp; with 
filter: #[b {{ paragraph.queryArgs.filter }}]
-                    span(ng-if='paragraph.queryArgs.localNid') &nbsp; on node: 
#[b {{ paragraph.queryArgs.localNid | limitTo:8 }}]
-
-                -var nextVisibleCondition = 'paragraph.resultType() != "error" 
&& paragraph.queryId && paragraph.nonRefresh() && (paragraph.table() || 
paragraph.chart() && !paragraph.scanExplain())'
-
-                .pull-right(ng-show='#{nextVisibleCondition}' 
ng-class='{disabled: paragraph.loading}' ng-click='!paragraph.loading && 
nextPage(paragraph)')
-                    i.fa.fa-chevron-circle-right
-                    a Next
-
-mixin paragraph-query
-    .row.panel-heading(bs-collapse-toggle)
-        +paragraph-rename
-    .panel-collapse(role='tabpanel' bs-collapse-target)
-        .col-sm-12
-            .col-xs-8.col-sm-9(style='border-right: 1px solid #eee')
-                .sql-editor(ignite-ace='{onLoad: aceInit(paragraph), theme: 
"chrome", mode: "sql", require: ["ace/ext/language_tools"],' +
-                'advanced: {enableSnippets: false, enableBasicAutocompletion: 
true, enableLiveAutocompletion: true}}'
-                ng-model='paragraph.query')
-            .col-xs-4.col-sm-3
-                div(ng-show='caches.length > 0' style='padding: 5px 10px' 
st-table='displayedCaches' st-safe-src='caches')
-                    lable.labelField.labelFormField Caches:
-                    i.fa.fa-database.tipField(title='Click to show cache types 
metadata dialog' bs-popover data-template-url='/sql/cache-metadata.html' 
data-placement='bottom' data-trigger='click' data-container='#{{ paragraph.id 
}}')
-                    .input-tip
-                        input.form-control(type='text' st-search='label' 
placeholder='Filter caches...')
-                    table.links
-                        tbody.scrollable-y(style='max-height: 15em; display: 
block;')
-                            tr(ng-repeat='cache in displayedCaches track by 
cache.name')
-                                td(style='width: 100%')
-                                    input.labelField(id='cache_{{ 
[paragraph.id, $index].join("_") }}' type='radio' value='{{cache.name}}' 
ng-model='paragraph.cacheName')
-                                    label(for='cache_{{ [paragraph.id, 
$index].join("_") }} ' ng-bind-html='cache.label')
-                .empty-caches(ng-show='displayedCaches.length == 0 && 
caches.length != 0')
-                    label Wrong caches filter
-                .empty-caches(ng-show='caches.length == 0')
-                    label No caches
-        .col-sm-12.sql-controls
-            +query-actions
-
-            .pull-right
-                +query-settings
-        .col-sm-12.sql-result(ng-if='paragraph.queryExecuted()' 
ng-switch='paragraph.resultType()')
-            .error(ng-switch-when='error') Error: {{paragraph.errMsg}}
-            .empty(ng-switch-when='empty') Result set is empty
-            .table(ng-switch-when='table')
-                +table-result-heading-query
-                +table-result-body
-            .chart(ng-switch-when='chart')
-                +chart-result
-            .footer.clearfix
-                a.pull-left(ng-click='showResultQuery(paragraph)') Show query
-
-                -var nextVisibleCondition = 'paragraph.resultType() != "error" 
&& paragraph.queryId && paragraph.nonRefresh() && (paragraph.table() || 
paragraph.chart() && !paragraph.scanExplain())'
-
-                .pull-right(ng-show='#{nextVisibleCondition}' 
ng-class='{disabled: paragraph.loading}' ng-click='!paragraph.loading && 
nextPage(paragraph)')
-                    i.fa.fa-chevron-circle-right
-                    a Next
-
-.row(ng-controller='sqlController')
-    .docs-content
-        .row(ng-if='notebook' bs-affix style='margin-bottom: 20px;')
-            +notebook-rename
-
-        ignite-information(data-title='With query notebook you can' 
style='margin-top: 0; margin-bottom: 30px')
-            ul
-                li Create any number of queries
-                li Execute and explain SQL queries
-                li Execute scan queries
-                li View data in tabular form and as charts
-
-        div(ng-if='notebookLoadFailed' style='text-align: center')
-            +notebook-error
-
-        div(ng-if='notebook' ignite-loading='sqlLoading' 
ignite-loading-text='{{ loadingText }}' ignite-loading-position='top')
-            .docs-body.paragraphs
-                .panel-group(bs-collapse 
ng-model='notebook.expandedParagraphs' data-allow-multiple='true' 
data-start-collapsed='false')
-
-                    .panel-paragraph(ng-repeat='paragraph in 
notebook.paragraphs' id='{{paragraph.id}}' ng-form='form_{{paragraph.id}}')
-                        .panel.panel-default(ng-if='paragraph.qryType === 
"scan"')
-                            +paragraph-scan
-                        .panel.panel-default(ng-if='paragraph.qryType === 
"query"')
-                            +paragraph-query

Reply via email to