@things-factory/auth-ui 9.1.19 → 10.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-client/bootstrap.js +24 -0
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/domain-switch.d.ts +2 -12
- package/dist-client/components/domain-switch.js +5 -18
- package/dist-client/components/domain-switch.js.map +1 -1
- package/dist-client/components/user-role-editor.js +13 -4
- package/dist-client/components/user-role-editor.js.map +1 -1
- package/dist-client/pages/app-binding/app-binding.js +66 -111
- package/dist-client/pages/app-binding/app-binding.js.map +1 -1
- package/dist-client/pages/app-binding/app-bindings.js +38 -59
- package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
- package/dist-client/pages/appliance/appliance.js +72 -120
- package/dist-client/pages/appliance/appliance.js.map +1 -1
- package/dist-client/pages/appliance/home.js +39 -61
- package/dist-client/pages/appliance/home.js.map +1 -1
- package/dist-client/pages/appliance/register.js +33 -52
- package/dist-client/pages/appliance/register.js.map +1 -1
- package/dist-client/pages/application/application.js +67 -107
- package/dist-client/pages/application/application.js.map +1 -1
- package/dist-client/pages/application/applications.js +38 -59
- package/dist-client/pages/application/applications.js.map +1 -1
- package/dist-client/pages/application/register.js +41 -64
- package/dist-client/pages/application/register.js.map +1 -1
- package/dist-client/pages/attribute/attribute-set-management.d.ts +0 -6
- package/dist-client/pages/attribute/attribute-set-management.js +46 -87
- package/dist-client/pages/attribute/attribute-set-management.js.map +1 -1
- package/dist-client/pages/auth-provider/auth-provider-management.d.ts +0 -6
- package/dist-client/pages/auth-provider/auth-provider-management.js +67 -127
- package/dist-client/pages/auth-provider/auth-provider-management.js.map +1 -1
- package/dist-client/pages/domain/domain-management.d.ts +0 -6
- package/dist-client/pages/domain/domain-management.js +74 -118
- package/dist-client/pages/domain/domain-management.js.map +1 -1
- package/dist-client/pages/domain-link/domain-link-management.d.ts +1 -7
- package/dist-client/pages/domain-link/domain-link-management.js +67 -125
- package/dist-client/pages/domain-link/domain-link-management.js.map +1 -1
- package/dist-client/pages/env-var/env-var-list-page.d.ts +0 -6
- package/dist-client/pages/env-var/env-var-list-page.js +44 -82
- package/dist-client/pages/env-var/env-var-list-page.js.map +1 -1
- package/dist-client/pages/partner/partner-management.js +17 -28
- package/dist-client/pages/partner/partner-management.js.map +1 -1
- package/dist-client/pages/role/role-management.js +20 -33
- package/dist-client/pages/role/role-management.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
- package/views/auth-page.html +1 -1
- package/views/oauth2-page.html +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-binding.js","sourceRoot":"","sources":["../../../client/pages/app-binding/app-binding.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport Clipboard from 'clipboard'\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { asyncReplace } from 'lit/directives/async-replace.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client } from '@operato/graphql'\nimport { navigate, PageView, store } from '@operato/shell'\nimport { parseJwt, sleep } from '@operato/utils'\n\n@customElement('app-binding-page')\nclass AppBinding extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n\n position: relative;\n\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n }\n\n h2 {\n margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n\n [page-description] {\n margin: var(--page-description-margin);\n font: var(--page-description-font);\n color: var(--page-description-color);\n }\n\n [icon] {\n position: absolute;\n top: 10px;\n right: 10px;\n\n max-width: 80px;\n }\n\n [icon] img {\n max-width: 100%;\n max-height: 100%;\n }\n\n [fieldset-container] {\n background-color: var(--md-sys-color-surface);\n margin: var(--spacing-large) 0 var(--spacing-medium) 0;\n padding: var(--spacing-medium);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n\n label {\n font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n input {\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n font: var(--input-font);\n\n flex: 1;\n }\n select:focus,\n input:focus,\n button {\n outline: none;\n }\n form {\n max-width: var(--content-container-max-width);\n }\n }\n\n [fieldset-container] fieldset {\n margin: 0;\n margin-top: -15px;\n }\n\n fieldset {\n border-radius: var(--border-radius);\n border: var(--border-dim-color);\n margin: var(--fieldset-margin);\n padding: var(--fieldset-padding);\n }\n\n legend {\n padding: var(--legend-padding);\n font-weight: bold;\n color: var(--legend-color);\n }\n\n [field-2column] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 15px;\n }\n\n [field] {\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n [grid-span] {\n grid-column: span 2;\n }\n\n button,\n [button-in-field] {\n background-color: var(--button-background-color);\n border: var(--button-border);\n border-radius: var(--button-border-radius);\n padding: var(--button-padding);\n color: var(--button-color);\n font: var(--button-font);\n text-transform: var(--button-text-transform);\n\n margin: var(--spacing-medium) 0 var(--spacing-medium) var(--spacing-medium);\n float: right;\n text-decoration: none;\n }\n\n button:hover {\n border: var(--button-activ-border);\n box-shadow: var(--button-active-box-shadow);\n }\n\n [button-in-field] {\n border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;\n position: absolute;\n top: 12px;\n right: 0;\n max-height: 36px;\n }\n\n [input-hint] {\n font: var(--input-hint-font);\n color: var(--input-hint-color);\n }\n\n @media screen and (max-width: 480px) {\n [field] {\n grid-column: span 2;\n }\n }\n `\n ]\n\n @property({ type: Object }) appbinding: any\n @property({ type: String }) accessToken?: string\n\n @state() _refreshTokenInfo: any\n @state() _accessTokenInfo: any\n\n private clipboard?: Clipboard\n\n get context() {\n return {\n title: {\n icon: 'link',\n text: this.appbinding.name\n }\n }\n }\n\n render() {\n var binding = this.appbinding || {}\n var app = this.appbinding?.application || {}\n var refreshTokenExp = this._refreshTokenInfo?.exp\n var accessTokenExp = this._accessTokenInfo?.exp\n\n return html`\n <div>\n <h2><md-icon>link</md-icon> ${app.name}</h2>\n <p page-description>${app.description}</p>\n </div>\n\n ${app.icon\n ? html`\n <div icon>\n <img src=${app.icon} />\n </div>\n `\n : html``}\n\n <form>\n <div fieldset-container>\n <fieldset>\n <legend>application</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"app-name\">app name</label>\n <input id=\"app-name\" type=\"text\" .value=${app.name} readonly />\n </div>\n\n <div field grid-span>\n <label for=\"app-description\">description</label>\n <input id=\"app-description\" type=\"text\" .value=${app.description} readonly />\n </div>\n\n <div field>\n <label for=\"contact-email\">contact email</label>\n <input id=\"contact-email\" type=\"text\" .value=${app.email} readonly />\n </div>\n </div>\n </fieldset>\n </div>\n\n <div fieldset-container>\n <fieldset>\n <legend>binding</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"id\">id</label>\n <input id=\"id\" type=\"text\" .value=${binding.id} readonly />\n </div>\n\n <div field grid-span>\n <label for=\"name\">name</label>\n <input id=\"name\" type=\"text\" .value=${binding.email} readonly />\n </div>\n\n <div field>\n <label for=\"status\">status</label>\n <input id=\"status\" type=\"text\" .value=${binding.status} readonly />\n </div>\n\n <div field>\n <label for=\"scope\">scope</label>\n <input id=\"scope\" type=\"text\" .value=${binding.scope} readonly />\n </div>\n </div>\n </fieldset>\n </div>\n\n <div fieldset-container>\n <fieldset>\n <legend>binding credential</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"access-token\">access token</label>\n <input id=\"access-token\" type=\"text\" .value=${this.accessToken || ''} readonly />\n <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>\n ${accessTokenExp\n ? html`<div input-hint>\n expired in ${new Date(accessTokenExp).toLocaleString()} :\n ${asyncReplace(this.expTimer(accessTokenExp))}\n </div>`\n : html``}\n </div>\n\n <div field grid-span>\n <label for=\"refresh-token\">refresh token</label>\n <input id=\"refresh-token\" type=\"text\" .value=${binding.refreshToken || ''} readonly />\n <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>\n ${refreshTokenExp\n ? html`<div input-hint>\n expired in ${new Date(refreshTokenExp).toLocaleString()} :\n ${asyncReplace(this.expTimer(refreshTokenExp))}\n </div>`\n : html``}\n </div>\n </div>\n </fieldset>\n </div>\n\n <button @click=${this.deleteAppBinding.bind(this)}>delete this application binding</button>\n <button @click=${this.renewApplicationAccessToken.bind(this)}>renew access token</button>\n </form>\n `\n }\n\n async *expTimer(exp) {\n const DAY = 24 * 60 * 60\n const HOUR = 60 * 60\n const MIN = 60\n\n while (this.active) {\n var remain = Math.floor(Number(exp) - Date.now() / 1000)\n const days = Math.floor(remain / DAY)\n remain -= days * DAY\n const hours = Math.floor(remain / HOUR)\n remain -= hours * HOUR\n const mins = Math.floor(remain / MIN)\n const secs = remain - mins * MIN\n\n yield `${days} days ${hours} hours ${mins} mins ${secs} seconds remain`\n\n await sleep(1000)\n }\n }\n\n firstUpdated() {\n const copybuttons = this.renderRoot.querySelectorAll('[clipboard-copy]')\n\n this.clipboard = new Clipboard(copybuttons, {\n target: (trigger => trigger.parentElement.querySelector('input')) as any\n })\n }\n\n updated(changes) {\n /*\n * If this page properties are changed, this callback will be invoked.\n * This callback will be called back only when this page is activated.\n */\n if (changes.has('appbinding')) {\n const { refreshToken } = this.appbinding || {}\n this._refreshTokenInfo = refreshToken ? parseJwt(refreshToken) : {}\n }\n\n if (changes.has('accessToken')) {\n this._accessTokenInfo = this.accessToken ? parseJwt(this.accessToken) : {}\n }\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n /*\n * this page is activated\n */\n await this.fetchAppBinding()\n } else {\n /* this page is deactivated */\n }\n }\n\n async fetchAppBinding() {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n appBinding(id: $id) {\n id\n name\n description\n email\n scope\n status\n application {\n id\n name\n description\n email\n icon\n }\n refreshToken\n }\n }\n `,\n variables: {\n id: this.lifecycle.resourceId\n }\n })\n\n this.appbinding = response.data.appBinding\n }\n\n async deleteAppBinding(e) {\n e.preventDefault()\n\n const id = this.lifecycle.resourceId\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n deleteAppBinding(id: $id)\n }\n `,\n variables: {\n id\n }\n })\n\n const result = response.data.deleteAppBinding\n if (result) {\n console.log('delete sucess')\n navigate(`app-bindings`)\n } else {\n console.error('delete fail')\n }\n }\n\n async renewApplicationAccessToken(e) {\n e.preventDefault()\n\n const id = this.lifecycle.resourceId\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n renewApplicationAccessToken(id: $id) {\n accessToken\n refreshToken\n }\n }\n `,\n variables: {\n id\n }\n })\n\n if (response.errors) {\n console.error('renew application access token fail')\n } else {\n const { accessToken, refreshToken } = response.data.renewApplicationAccessToken\n this.accessToken = accessToken\n this.appbinding = {\n ...this.appbinding,\n refreshToken\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app-binding.js","sourceRoot":"","sources":["../../../client/pages/app-binding/app-binding.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport Clipboard from 'clipboard'\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { asyncReplace } from 'lit/directives/async-replace.js'\nimport { client } from '@operato/graphql'\nimport { navigate, PageView } from '@operato/shell'\nimport { parseJwt, sleep } from '@operato/utils'\n\n@customElement('app-binding-page')\nclass AppBinding extends PageView { static styles = [\n css`\n :host { display: flex;\n flex-direction: column;\n overflow-y: auto;\n\n position: relative;\n\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n }\n\n h2 { margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n\n [page-description] { margin: var(--page-description-margin);\n font: var(--page-description-font);\n color: var(--page-description-color);\n }\n\n [icon] { position: absolute;\n top: 10px;\n right: 10px;\n\n max-width: 80px;\n }\n\n [icon] img { max-width: 100%;\n max-height: 100%;\n }\n\n [fieldset-container] { background-color: var(--md-sys-color-surface);\n margin: var(--spacing-large) 0 var(--spacing-medium) 0;\n padding: var(--spacing-medium);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n\n label { font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n input { border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n font: var(--input-font);\n\n flex: 1;\n }\n select:focus,\n input:focus,\n button { outline: none;\n }\n form { max-width: var(--content-container-max-width);\n }\n }\n\n [fieldset-container] fieldset { margin: 0;\n margin-top: -15px;\n }\n\n fieldset { border-radius: var(--border-radius);\n border: var(--border-dim-color);\n margin: var(--fieldset-margin);\n padding: var(--fieldset-padding);\n }\n\n legend { padding: var(--legend-padding);\n font-weight: bold;\n color: var(--legend-color);\n }\n\n [field-2column] { display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 15px;\n }\n\n [field] { display: flex;\n flex-direction: column;\n position: relative;\n }\n\n [grid-span] { grid-column: span 2;\n }\n\n button,\n [button-in-field] { background-color: var(--button-background-color);\n border: var(--button-border);\n border-radius: var(--button-border-radius);\n padding: var(--button-padding);\n color: var(--button-color);\n font: var(--button-font);\n text-transform: var(--button-text-transform);\n\n margin: var(--spacing-medium) 0 var(--spacing-medium) var(--spacing-medium);\n float: right;\n text-decoration: none;\n }\n\n button:hover { border: var(--button-activ-border);\n box-shadow: var(--button-active-box-shadow);\n }\n\n [button-in-field] { border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;\n position: absolute;\n top: 12px;\n right: 0;\n max-height: 36px;\n }\n\n [input-hint] { font: var(--input-hint-font);\n color: var(--input-hint-color);\n }\n\n @media screen and (max-width: 480px) { [field] { grid-column: span 2;\n }\n }\n `\n ]\n\n @property({ type: Object }) appbinding: any\n @property({ type: String }) accessToken?: string\n\n @state() _refreshTokenInfo: any\n @state() _accessTokenInfo: any\n\n private clipboard?: Clipboard\n\n get context() { return { title: { icon: 'link',\n text: this.appbinding.name\n }\n }\n }\n\n render() { var binding = this.appbinding || {}\n var app = this.appbinding?.application || {}\n var refreshTokenExp = this._refreshTokenInfo?.exp\n var accessTokenExp = this._accessTokenInfo?.exp\n\n return html`\n <div>\n <h2><md-icon>link</md-icon> ${app.name}</h2>\n <p page-description>${app.description}</p>\n </div>\n\n ${app.icon\n ? html`\n <div icon>\n <img src=${app.icon} />\n </div>\n `\n : html``}\n\n <form>\n <div fieldset-container>\n <fieldset>\n <legend>application</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"app-name\">app name</label>\n <input id=\"app-name\" type=\"text\" .value=${app.name} readonly />\n </div>\n\n <div field grid-span>\n <label for=\"app-description\">description</label>\n <input id=\"app-description\" type=\"text\" .value=${app.description} readonly />\n </div>\n\n <div field>\n <label for=\"contact-email\">contact email</label>\n <input id=\"contact-email\" type=\"text\" .value=${app.email} readonly />\n </div>\n </div>\n </fieldset>\n </div>\n\n <div fieldset-container>\n <fieldset>\n <legend>binding</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"id\">id</label>\n <input id=\"id\" type=\"text\" .value=${binding.id} readonly />\n </div>\n\n <div field grid-span>\n <label for=\"name\">name</label>\n <input id=\"name\" type=\"text\" .value=${binding.email} readonly />\n </div>\n\n <div field>\n <label for=\"status\">status</label>\n <input id=\"status\" type=\"text\" .value=${binding.status} readonly />\n </div>\n\n <div field>\n <label for=\"scope\">scope</label>\n <input id=\"scope\" type=\"text\" .value=${binding.scope} readonly />\n </div>\n </div>\n </fieldset>\n </div>\n\n <div fieldset-container>\n <fieldset>\n <legend>binding credential</legend>\n <div field-2column>\n <div field grid-span>\n <label for=\"access-token\">access token</label>\n <input id=\"access-token\" type=\"text\" .value=${this.accessToken || ''} readonly />\n <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>\n ${accessTokenExp\n ? html`<div input-hint>\n expired in ${new Date(accessTokenExp).toLocaleString()} :\n ${asyncReplace(this.expTimer(accessTokenExp))}\n </div>`\n : html``}\n </div>\n\n <div field grid-span>\n <label for=\"refresh-token\">refresh token</label>\n <input id=\"refresh-token\" type=\"text\" .value=${binding.refreshToken || ''} readonly />\n <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>\n ${refreshTokenExp\n ? html`<div input-hint>\n expired in ${new Date(refreshTokenExp).toLocaleString()} :\n ${asyncReplace(this.expTimer(refreshTokenExp))}\n </div>`\n : html``}\n </div>\n </div>\n </fieldset>\n </div>\n\n <button @click=${this.deleteAppBinding.bind(this)}>delete this application binding</button>\n <button @click=${this.renewApplicationAccessToken.bind(this)}>renew access token</button>\n </form>\n `\n }\n\n async *expTimer(exp) { const DAY = 24 * 60 * 60\n const HOUR = 60 * 60\n const MIN = 60\n\n while (this.active) { var remain = Math.floor(Number(exp) - Date.now() / 1000)\n const days = Math.floor(remain / DAY)\n remain -= days * DAY\n const hours = Math.floor(remain / HOUR)\n remain -= hours * HOUR\n const mins = Math.floor(remain / MIN)\n const secs = remain - mins * MIN\n\n yield `${days} days ${hours} hours ${mins} mins ${secs} seconds remain`\n\n await sleep(1000)\n }\n }\n\n firstUpdated() { const copybuttons = this.renderRoot.querySelectorAll('[clipboard-copy]')\n\n this.clipboard = new Clipboard(copybuttons, { target: (trigger => trigger.parentElement.querySelector('input')) as any\n })\n }\n\n updated(changes) { /*\n * If this page properties are changed, this callback will be invoked.\n * This callback will be called back only when this page is activated.\n */\n if (changes.has('appbinding')) { const { refreshToken } = this.appbinding || {}\n this._refreshTokenInfo = refreshToken ? parseJwt(refreshToken) : {}\n }\n\n if (changes.has('accessToken')) { this._accessTokenInfo = this.accessToken ? parseJwt(this.accessToken) : {}\n }\n }\n\n async pageUpdated(changes, lifecycle, before) { if (this.active) { /*\n * this page is activated\n */\n await this.fetchAppBinding()\n } else { /* this page is deactivated */\n }\n }\n\n async fetchAppBinding() { const response = await client.query({ query: gql`\n query ($id: String!) { appBinding(id: $id) { id\n name\n description\n email\n scope\n status\n application { id\n name\n description\n email\n icon\n }\n refreshToken\n }\n }\n `,\n variables: { id: this.lifecycle.resourceId\n }\n })\n\n this.appbinding = response.data.appBinding\n }\n\n async deleteAppBinding(e) { e.preventDefault()\n\n const id = this.lifecycle.resourceId\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!) { deleteAppBinding(id: $id)\n }\n `,\n variables: { id\n }\n })\n\n const result = response.data.deleteAppBinding\n if (result) { console.log('delete sucess')\n navigate(`app-bindings`)\n } else { console.error('delete fail')\n }\n }\n\n async renewApplicationAccessToken(e) { e.preventDefault()\n\n const id = this.lifecycle.resourceId\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!) { renewApplicationAccessToken(id: $id) { accessToken\n refreshToken\n }\n }\n `,\n variables: { id\n }\n })\n\n if (response.errors) { console.error('renew application access token fail')\n } else { const { accessToken, refreshToken } = response.data.renewApplicationAccessToken\n this.accessToken = accessToken\n this.appbinding = { ...this.appbinding,\n refreshToken\n }\n }\n }\n}\n"]}
|
|
@@ -4,65 +4,54 @@ import '@material/web/button/outlined-button.js';
|
|
|
4
4
|
import gql from 'graphql-tag';
|
|
5
5
|
import { css, html } from 'lit';
|
|
6
6
|
import { customElement, property } from 'lit/decorators.js';
|
|
7
|
-
import { connect } from 'pwa-helpers/connect-mixin.js';
|
|
8
7
|
import { client } from '@operato/graphql';
|
|
9
|
-
import { navigate, PageView
|
|
10
|
-
let AppBindings = class AppBindings extends
|
|
8
|
+
import { navigate, PageView } from '@operato/shell';
|
|
9
|
+
let AppBindings = class AppBindings extends PageView {
|
|
11
10
|
constructor() {
|
|
12
11
|
super(...arguments);
|
|
13
12
|
this.appBindings = [];
|
|
14
13
|
}
|
|
15
14
|
static { this.styles = [
|
|
16
15
|
css `
|
|
17
|
-
:host {
|
|
18
|
-
background-color: var(--md-sys-color-background);
|
|
16
|
+
:host { background-color: var(--md-sys-color-background);
|
|
19
17
|
padding: var(--spacing-large);
|
|
20
18
|
|
|
21
19
|
overflow: auto;
|
|
22
|
-
|
|
20
|
+
}
|
|
23
21
|
|
|
24
|
-
md-elevated-button {
|
|
25
|
-
|
|
26
|
-
}
|
|
22
|
+
md-elevated-button { text-transform: capitalize;
|
|
23
|
+
}
|
|
27
24
|
|
|
28
|
-
md-outlined-button {
|
|
29
|
-
float: right;
|
|
25
|
+
md-outlined-button { float: right;
|
|
30
26
|
margin-top: var(--spacing-medium);
|
|
31
27
|
text-transform: capitalize;
|
|
32
|
-
|
|
28
|
+
}
|
|
33
29
|
|
|
34
|
-
h2 {
|
|
35
|
-
margin: var(--title-margin);
|
|
30
|
+
h2 { margin: var(--title-margin);
|
|
36
31
|
font: var(--title-font);
|
|
37
32
|
color: var(--title-text-color);
|
|
38
|
-
|
|
33
|
+
}
|
|
39
34
|
|
|
40
|
-
[page-description] {
|
|
41
|
-
margin: var(--page-description-margin);
|
|
35
|
+
[page-description] { margin: var(--page-description-margin);
|
|
42
36
|
font: var(--page-description-font);
|
|
43
37
|
color: var(--page-description-color);
|
|
44
|
-
|
|
38
|
+
}
|
|
45
39
|
|
|
46
|
-
table {
|
|
47
|
-
width: 100%;
|
|
40
|
+
table { width: 100%;
|
|
48
41
|
margin: var(--spacing-large) 0;
|
|
49
42
|
border-collapse: collapse;
|
|
50
|
-
|
|
43
|
+
}
|
|
51
44
|
|
|
52
|
-
tr {
|
|
53
|
-
|
|
54
|
-
}
|
|
45
|
+
tr { background-color: var(--tr-background-color);
|
|
46
|
+
}
|
|
55
47
|
|
|
56
|
-
tr:nth-child(odd) {
|
|
57
|
-
|
|
58
|
-
}
|
|
48
|
+
tr:nth-child(odd) { background-color: var(--tr-background-odd-color);
|
|
49
|
+
}
|
|
59
50
|
|
|
60
|
-
tr:hover {
|
|
61
|
-
|
|
62
|
-
}
|
|
51
|
+
tr:hover { background-color: var(--tr-background-hover-color);
|
|
52
|
+
}
|
|
63
53
|
|
|
64
|
-
th {
|
|
65
|
-
border-top: var(--th-border-top);
|
|
54
|
+
th { border-top: var(--th-border-top);
|
|
66
55
|
border-bottom: var(--td-border-bottom);
|
|
67
56
|
padding: var(--th-padding);
|
|
68
57
|
|
|
@@ -70,35 +59,30 @@ let AppBindings = class AppBindings extends connect(store)(PageView) {
|
|
|
70
59
|
color: var(--th-color);
|
|
71
60
|
text-transform: var(--th-text-transform);
|
|
72
61
|
text-align: left;
|
|
73
|
-
|
|
62
|
+
}
|
|
74
63
|
|
|
75
|
-
td {
|
|
76
|
-
padding: var(--td-padding);
|
|
64
|
+
td { padding: var(--td-padding);
|
|
77
65
|
border-bottom: var(--td-border-bottom);
|
|
78
66
|
font: var(--td-font);
|
|
79
67
|
color: var(--td-color);
|
|
80
|
-
|
|
68
|
+
}
|
|
81
69
|
|
|
82
|
-
td a {
|
|
83
|
-
color: var(--md-sys-color-primary);
|
|
70
|
+
td a { color: var(--md-sys-color-primary);
|
|
84
71
|
font: bold 16px var(--theme-font);
|
|
85
72
|
|
|
86
73
|
display: block;
|
|
87
74
|
text-decoration: none;
|
|
88
|
-
|
|
75
|
+
}
|
|
89
76
|
|
|
90
|
-
.text-align-center {
|
|
91
|
-
|
|
92
|
-
}
|
|
77
|
+
.text-align-center { text-align: center;
|
|
78
|
+
}
|
|
93
79
|
|
|
94
|
-
.text-align-right {
|
|
95
|
-
|
|
96
|
-
}
|
|
80
|
+
.text-align-right { text-align: right;
|
|
81
|
+
}
|
|
97
82
|
`
|
|
98
83
|
]; }
|
|
99
84
|
get context() {
|
|
100
|
-
return {
|
|
101
|
-
title: `application bindings`,
|
|
85
|
+
return { title: `application bindings`,
|
|
102
86
|
help: 'auth/application'
|
|
103
87
|
};
|
|
104
88
|
}
|
|
@@ -136,23 +120,18 @@ let AppBindings = class AppBindings extends connect(store)(PageView) {
|
|
|
136
120
|
}
|
|
137
121
|
}
|
|
138
122
|
async fetchAppBindings() {
|
|
139
|
-
const response = await client.query({
|
|
140
|
-
|
|
141
|
-
query {
|
|
142
|
-
appBindings {
|
|
143
|
-
items {
|
|
144
|
-
id
|
|
123
|
+
const response = await client.query({ query: gql `
|
|
124
|
+
query { appBindings { items { id
|
|
145
125
|
name
|
|
146
|
-
application {
|
|
147
|
-
id
|
|
126
|
+
application { id
|
|
148
127
|
name
|
|
149
|
-
|
|
128
|
+
}
|
|
150
129
|
scope
|
|
151
130
|
status
|
|
152
|
-
|
|
131
|
+
}
|
|
153
132
|
total
|
|
154
|
-
|
|
155
|
-
|
|
133
|
+
}
|
|
134
|
+
}
|
|
156
135
|
`
|
|
157
136
|
});
|
|
158
137
|
if (!response.errors) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-bindings.js","sourceRoot":"","sources":["../../../client/pages/app-binding/app-bindings.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAChD,OAAO,yCAAyC,CAAA;AAEhD,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"app-bindings.js","sourceRoot":"","sources":["../../../client/pages/app-binding/app-bindings.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAChD,OAAO,yCAAyC,CAAA;AAEhD,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGnD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,QAAQ;IAAlC;;QAuE6B,gBAAW,GAAU,EAAE,CAAA;IA4DpD,CAAC;aAnI6C,WAAM,GAAG;QACnD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmEF;KACF,AArEiD,CAqEjD;IAID,IAAI,OAAO;QAAS,OAAO,EAAQ,KAAK,EAAE,sBAAsB;YAC5D,IAAI,EAAE,kBAAkB;SAC5B,CAAA;IACD,CAAC;IAEA,MAAM;QAAS,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;QAErD,OAAO,IAAI,CAAA;;;;;;;;;;;;UAYL,WAAW,CAAC,GAAG,CACf,UAAU,CAAC,EAAE,CAAC,IAAI,CAAA;;;0BAGF,eAAe,UAAU,CAAC,EAAE,EAAE,IAAI,UAAU,CAAC,IAAI;kBACzD,UAAU,CAAC,WAAW;;oBAEpB,UAAU,CAAC,KAAK;oBAChB,UAAU,CAAC,MAAM;;WAE1B,CACF;;mCAE0B,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3D,CAAA;IACJ,CAAC;IAEA,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM;QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAO,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAA;QACtI,CAAC;IACD,CAAC;IAEA,KAAK,CAAC,gBAAgB;QAAS,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAQ,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;OAYhF;SACL,CAAC,CAAA;QAEC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAAO,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAA;QACjE,CAAC;IACD,CAAC;;AA3D2B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;gDAAwB;AAvE9C,WAAW;IADhB,aAAa,CAAC,mBAAmB,CAAC;GAC7B,WAAW,CAmIhB","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/button/outlined-button.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { client } from '@operato/graphql'\nimport { navigate, PageView } from '@operato/shell'\n\n@customElement('app-bindings-page')\nclass AppBindings extends PageView { static styles = [\n css`\n :host { background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n\n overflow: auto;\n }\n\n md-elevated-button { text-transform: capitalize;\n }\n\n md-outlined-button { float: right;\n margin-top: var(--spacing-medium);\n text-transform: capitalize;\n }\n\n h2 { margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n\n [page-description] { margin: var(--page-description-margin);\n font: var(--page-description-font);\n color: var(--page-description-color);\n }\n\n table { width: 100%;\n margin: var(--spacing-large) 0;\n border-collapse: collapse;\n }\n\n tr { background-color: var(--tr-background-color);\n }\n\n tr:nth-child(odd) { background-color: var(--tr-background-odd-color);\n }\n\n tr:hover { background-color: var(--tr-background-hover-color);\n }\n\n th { border-top: var(--th-border-top);\n border-bottom: var(--td-border-bottom);\n padding: var(--th-padding);\n\n font: var(--th-font);\n color: var(--th-color);\n text-transform: var(--th-text-transform);\n text-align: left;\n }\n\n td { padding: var(--td-padding);\n border-bottom: var(--td-border-bottom);\n font: var(--td-font);\n color: var(--td-color);\n }\n\n td a { color: var(--md-sys-color-primary);\n font: bold 16px var(--theme-font);\n\n display: block;\n text-decoration: none;\n }\n\n .text-align-center { text-align: center;\n }\n\n .text-align-right { text-align: right;\n }\n `\n ]\n\n @property({ type: Array }) appBindings: any[] = []\n\n get context() { return { title: `application bindings`,\n help: 'auth/application'\n }\n }\n\n render() { var appBindings = this.appBindings || []\n\n return html`\n <div>\n <h2>Bound Applications</h2>\n <p page-description>Bound Applications goes here</p>\n </div>\n\n <table>\n <tr>\n <th>app name</th>\n <th>Scope</th>\n <th>status</th>\n </tr>\n ${appBindings.map(\n appBinding => html`\n <tr>\n <td>\n <a href=${`app-binding/${appBinding.id}`}>${appBinding.name}</a>\n ${appBinding.description}\n </td>\n <td>${appBinding.scope}</td>\n <td>${appBinding.status}</td>\n </tr>\n `\n )}\n </table>\n <md-elevated-button @click=${e => navigate('applications')}>registered applications ..</md-elevated-button>\n `\n }\n\n async pageUpdated(changes, lifecycle, before) { if (this.active) { this.appBindings = (await this.fetchAppBindings()).items\n }\n }\n\n async fetchAppBindings() { const response = await client.query({ query: gql`\n query { appBindings { items { id\n name\n application { id\n name\n }\n scope\n status\n }\n total\n }\n }\n `\n })\n\n if (!response.errors) { return response.data.appBindings\n }\n }\n}\n"]}
|
|
@@ -5,50 +5,43 @@ import gql from 'graphql-tag';
|
|
|
5
5
|
import { css, html } from 'lit';
|
|
6
6
|
import { customElement, property, queryAll } from 'lit/decorators.js';
|
|
7
7
|
import { asyncReplace } from 'lit/directives/async-replace.js';
|
|
8
|
-
import { connect } from 'pwa-helpers/connect-mixin.js';
|
|
9
8
|
import { client } from '@operato/graphql';
|
|
10
|
-
import { navigate, PageView
|
|
9
|
+
import { navigate, PageView } from '@operato/shell';
|
|
11
10
|
import { parseJwt, sleep } from '@operato/utils';
|
|
12
11
|
import { i18next } from '@operato/i18n';
|
|
13
|
-
let Appliance = class Appliance extends
|
|
12
|
+
let Appliance = class Appliance extends PageView {
|
|
14
13
|
static { this.styles = [
|
|
15
14
|
css `
|
|
16
|
-
:host {
|
|
17
|
-
display: flex;
|
|
15
|
+
:host { display: flex;
|
|
18
16
|
flex-direction: column;
|
|
19
17
|
overflow-y: auto;
|
|
20
18
|
position: relative;
|
|
21
19
|
|
|
22
20
|
background-color: var(--md-sys-color-background);
|
|
23
21
|
padding: var(--spacing-large);
|
|
24
|
-
|
|
22
|
+
}
|
|
25
23
|
|
|
26
|
-
h2 {
|
|
27
|
-
margin: var(--title-margin);
|
|
24
|
+
h2 { margin: var(--title-margin);
|
|
28
25
|
font: var(--title-font);
|
|
29
26
|
color: var(--title-text-color);
|
|
30
|
-
|
|
27
|
+
}
|
|
31
28
|
|
|
32
|
-
[page-description] {
|
|
33
|
-
margin: var(--page-description-margin);
|
|
29
|
+
[page-description] { margin: var(--page-description-margin);
|
|
34
30
|
font: var(--page-description-font);
|
|
35
31
|
color: var(--page-description-color);
|
|
36
|
-
|
|
32
|
+
}
|
|
37
33
|
|
|
38
|
-
[icon] {
|
|
39
|
-
position: absolute;
|
|
34
|
+
[icon] { position: absolute;
|
|
40
35
|
top: 10px;
|
|
41
36
|
right: 10px;
|
|
42
37
|
max-width: 80px;
|
|
43
|
-
|
|
38
|
+
}
|
|
44
39
|
|
|
45
|
-
[icon] img {
|
|
46
|
-
max-width: 100%;
|
|
40
|
+
[icon] img { max-width: 100%;
|
|
47
41
|
max-height: 100%;
|
|
48
|
-
|
|
42
|
+
}
|
|
49
43
|
|
|
50
|
-
[button-primary] {
|
|
51
|
-
background-color: var(--button-primary-background-color);
|
|
44
|
+
[button-primary] { background-color: var(--button-primary-background-color);
|
|
52
45
|
border: var(--button-border);
|
|
53
46
|
border-radius: var(--button-border-radius);
|
|
54
47
|
margin: var(--button-margin);
|
|
@@ -58,92 +51,78 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
58
51
|
text-transform: var(--button-text-transform);
|
|
59
52
|
|
|
60
53
|
text-decoration: none;
|
|
61
|
-
|
|
54
|
+
}
|
|
62
55
|
|
|
63
|
-
[button-primary]:hover {
|
|
64
|
-
background-color: var(--button-primary-active-background-color);
|
|
56
|
+
[button-primary]:hover { background-color: var(--button-primary-active-background-color);
|
|
65
57
|
box-shadow: var(--button-active-box-shadow);
|
|
66
|
-
|
|
58
|
+
}
|
|
67
59
|
|
|
68
|
-
[fieldset-container] {
|
|
69
|
-
background-color: var(--md-sys-color-surface);
|
|
60
|
+
[fieldset-container] { background-color: var(--md-sys-color-surface);
|
|
70
61
|
margin: var(--spacing-large) 0 var(--spacing-medium) 0;
|
|
71
62
|
padding: var(--spacing-medium);
|
|
72
63
|
border-radius: var(--border-radius);
|
|
73
64
|
box-shadow: var(--box-shadow);
|
|
74
65
|
|
|
75
|
-
label {
|
|
76
|
-
font: var(--label-font);
|
|
66
|
+
label { font: var(--label-font);
|
|
77
67
|
color: var(--label-color, var(--md-sys-color-on-surface));
|
|
78
68
|
text-transform: var(--label-text-transform);
|
|
79
|
-
|
|
69
|
+
}
|
|
80
70
|
|
|
81
71
|
input,
|
|
82
|
-
select {
|
|
83
|
-
border: var(--border-dim-color);
|
|
72
|
+
select { border: var(--border-dim-color);
|
|
84
73
|
border-radius: var(--border-radius);
|
|
85
74
|
margin: var(--input-margin);
|
|
86
75
|
padding: var(--input-padding);
|
|
87
76
|
font: var(--input-font);
|
|
88
77
|
|
|
89
78
|
flex: 1;
|
|
90
|
-
|
|
79
|
+
}
|
|
91
80
|
|
|
92
81
|
select:focus,
|
|
93
82
|
input:focus,
|
|
94
|
-
button {
|
|
95
|
-
|
|
96
|
-
}
|
|
83
|
+
button { outline: none;
|
|
84
|
+
}
|
|
97
85
|
|
|
98
|
-
form {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
86
|
+
form { max-width: var(--content-container-max-width);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
102
89
|
|
|
103
|
-
[fieldset-container] fieldset {
|
|
104
|
-
margin: 0;
|
|
90
|
+
[fieldset-container] fieldset { margin: 0;
|
|
105
91
|
margin-top: -15px;
|
|
106
|
-
|
|
92
|
+
}
|
|
107
93
|
|
|
108
|
-
fieldset {
|
|
109
|
-
border-radius: var(--border-radius);
|
|
94
|
+
fieldset { border-radius: var(--border-radius);
|
|
110
95
|
border: var(--border-dim-color);
|
|
111
96
|
margin: var(--fieldset-margin);
|
|
112
97
|
padding: var(--fieldset-padding);
|
|
113
|
-
|
|
98
|
+
}
|
|
114
99
|
|
|
115
|
-
legend {
|
|
116
|
-
padding: var(--legend-padding);
|
|
100
|
+
legend { padding: var(--legend-padding);
|
|
117
101
|
font-weight: bold;
|
|
118
102
|
color: var(--legend-color);
|
|
119
|
-
|
|
103
|
+
}
|
|
120
104
|
|
|
121
|
-
[field-2column] {
|
|
122
|
-
display: grid;
|
|
105
|
+
[field-2column] { display: grid;
|
|
123
106
|
grid-template-columns: 1fr 1fr;
|
|
124
107
|
grid-gap: 15px;
|
|
125
|
-
|
|
108
|
+
}
|
|
126
109
|
|
|
127
|
-
[field] {
|
|
128
|
-
display: flex;
|
|
110
|
+
[field] { display: flex;
|
|
129
111
|
flex-direction: column;
|
|
130
112
|
position: relative;
|
|
131
|
-
|
|
113
|
+
}
|
|
132
114
|
|
|
133
|
-
[grid-span] {
|
|
134
|
-
|
|
135
|
-
}
|
|
115
|
+
[grid-span] { grid-column: span 2;
|
|
116
|
+
}
|
|
136
117
|
|
|
137
|
-
button {
|
|
138
|
-
display: flex;
|
|
118
|
+
button { display: flex;
|
|
139
119
|
align-items: center;
|
|
140
120
|
gap: var(--spacing-small);
|
|
141
|
-
|
|
121
|
+
}
|
|
142
122
|
|
|
143
123
|
button,
|
|
144
124
|
input[type='submit'],
|
|
145
|
-
[button-in-field] {
|
|
146
|
-
background-color: var(--button-background-color);
|
|
125
|
+
[button-in-field] { background-color: var(--button-background-color);
|
|
147
126
|
border: var(--button-border);
|
|
148
127
|
border-radius: var(--button-border-radius);
|
|
149
128
|
padding: var(--button-padding);
|
|
@@ -154,38 +133,31 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
154
133
|
margin: var(--spacing-medium) 0 var(--spacing-medium) var(--spacing-medium);
|
|
155
134
|
float: right;
|
|
156
135
|
text-decoration: none;
|
|
157
|
-
|
|
136
|
+
}
|
|
158
137
|
|
|
159
138
|
button:hover,
|
|
160
|
-
input[type='submit']:hover {
|
|
161
|
-
border: var(--button-activ-border);
|
|
139
|
+
input[type='submit']:hover { border: var(--button-activ-border);
|
|
162
140
|
box-shadow: var(--button-active-box-shadow);
|
|
163
|
-
|
|
141
|
+
}
|
|
164
142
|
|
|
165
|
-
[button-in-field] {
|
|
166
|
-
border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;
|
|
143
|
+
[button-in-field] { border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;
|
|
167
144
|
position: absolute;
|
|
168
145
|
top: 12px;
|
|
169
146
|
right: 0;
|
|
170
147
|
max-height: 36px;
|
|
171
|
-
|
|
148
|
+
}
|
|
172
149
|
|
|
173
|
-
[input-hint] {
|
|
174
|
-
font: var(--input-hint-font);
|
|
150
|
+
[input-hint] { font: var(--input-hint-font);
|
|
175
151
|
color: var(--input-hint-color);
|
|
176
|
-
|
|
152
|
+
}
|
|
177
153
|
|
|
178
|
-
@media screen and (max-width: 480px) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
}
|
|
154
|
+
@media screen and (max-width: 480px) { [field] { grid-column: span 2;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
183
157
|
`
|
|
184
158
|
]; }
|
|
185
159
|
get context() {
|
|
186
|
-
return {
|
|
187
|
-
title: {
|
|
188
|
-
icon: 'devices',
|
|
160
|
+
return { title: { icon: 'devices',
|
|
189
161
|
text: this.appliance.name
|
|
190
162
|
}
|
|
191
163
|
};
|
|
@@ -267,15 +239,10 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
267
239
|
`;
|
|
268
240
|
}
|
|
269
241
|
firstUpdated() {
|
|
270
|
-
this.clipboard = new Clipboard(this.copybuttons, {
|
|
271
|
-
target: (trigger => trigger.parentElement.querySelector('input'))
|
|
242
|
+
this.clipboard = new Clipboard(this.copybuttons, { target: (trigger => trigger.parentElement.querySelector('input'))
|
|
272
243
|
});
|
|
273
244
|
}
|
|
274
245
|
updated(changes) {
|
|
275
|
-
/*
|
|
276
|
-
* If this page properties are changed, this callback will be invoked.
|
|
277
|
-
* This callback will be called back only when this page is activated.
|
|
278
|
-
*/
|
|
279
246
|
if (changes.has('appliance')) {
|
|
280
247
|
const { accessToken } = this.appliance || {};
|
|
281
248
|
this.accessToken = accessToken;
|
|
@@ -290,11 +257,8 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
290
257
|
}
|
|
291
258
|
}
|
|
292
259
|
async fetchAppliance() {
|
|
293
|
-
const response = await client.query({
|
|
294
|
-
|
|
295
|
-
query ($id: String!) {
|
|
296
|
-
appliance(id: $id) {
|
|
297
|
-
id
|
|
260
|
+
const response = await client.query({ query: gql `
|
|
261
|
+
query ($id: String!) { appliance(id: $id) { id
|
|
298
262
|
name
|
|
299
263
|
description
|
|
300
264
|
serialNo
|
|
@@ -302,11 +266,10 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
302
266
|
model
|
|
303
267
|
netmask
|
|
304
268
|
accessToken
|
|
305
|
-
|
|
306
|
-
|
|
269
|
+
}
|
|
270
|
+
}
|
|
307
271
|
`,
|
|
308
|
-
variables: {
|
|
309
|
-
id: this.lifecycle.resourceId
|
|
272
|
+
variables: { id: this.lifecycle.resourceId
|
|
310
273
|
}
|
|
311
274
|
});
|
|
312
275
|
this.appliance = response.data.appliance;
|
|
@@ -320,11 +283,8 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
320
283
|
return patch;
|
|
321
284
|
}, {});
|
|
322
285
|
const id = this.lifecycle.resourceId;
|
|
323
|
-
const response = await client.mutate({
|
|
324
|
-
|
|
325
|
-
mutation ($id: String!, $patch: AppliancePatch!) {
|
|
326
|
-
updateAppliance(id: $id, patch: $patch) {
|
|
327
|
-
id
|
|
286
|
+
const response = await client.mutate({ mutation: gql `
|
|
287
|
+
mutation ($id: String!, $patch: AppliancePatch!) { updateAppliance(id: $id, patch: $patch) { id
|
|
328
288
|
name
|
|
329
289
|
description
|
|
330
290
|
serialNo
|
|
@@ -332,11 +292,10 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
332
292
|
model
|
|
333
293
|
netmask
|
|
334
294
|
accessToken
|
|
335
|
-
|
|
336
|
-
|
|
295
|
+
}
|
|
296
|
+
}
|
|
337
297
|
`,
|
|
338
|
-
variables: {
|
|
339
|
-
id,
|
|
298
|
+
variables: { id,
|
|
340
299
|
patch
|
|
341
300
|
}
|
|
342
301
|
});
|
|
@@ -351,14 +310,11 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
351
310
|
async deleteAppliance(e) {
|
|
352
311
|
e.preventDefault();
|
|
353
312
|
const id = this.lifecycle.resourceId;
|
|
354
|
-
const response = await client.mutate({
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
deleteAppliance(id: $id)
|
|
358
|
-
}
|
|
313
|
+
const response = await client.mutate({ mutation: gql `
|
|
314
|
+
mutation ($id: String!) { deleteAppliance(id: $id)
|
|
315
|
+
}
|
|
359
316
|
`,
|
|
360
|
-
variables: {
|
|
361
|
-
id
|
|
317
|
+
variables: { id
|
|
362
318
|
}
|
|
363
319
|
});
|
|
364
320
|
if (response.errors) {
|
|
@@ -371,11 +327,8 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
371
327
|
async generateApplianceSecret(e) {
|
|
372
328
|
e.preventDefault();
|
|
373
329
|
const id = this.lifecycle.resourceId;
|
|
374
|
-
const response = await client.mutate({
|
|
375
|
-
|
|
376
|
-
mutation ($id: String!) {
|
|
377
|
-
generateApplianceSecret(id: $id) {
|
|
378
|
-
id
|
|
330
|
+
const response = await client.mutate({ mutation: gql `
|
|
331
|
+
mutation ($id: String!) { generateApplianceSecret(id: $id) { id
|
|
379
332
|
name
|
|
380
333
|
description
|
|
381
334
|
serialNo
|
|
@@ -383,11 +336,10 @@ let Appliance = class Appliance extends connect(store)(PageView) {
|
|
|
383
336
|
model
|
|
384
337
|
netmask
|
|
385
338
|
accessToken
|
|
386
|
-
|
|
387
|
-
|
|
339
|
+
}
|
|
340
|
+
}
|
|
388
341
|
`,
|
|
389
|
-
variables: {
|
|
390
|
-
id
|
|
342
|
+
variables: { id
|
|
391
343
|
}
|
|
392
344
|
});
|
|
393
345
|
if (response.errors) {
|