@things-factory/menu-ui 10.1.254 → 10.1.257

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.
@@ -84,8 +84,8 @@ let FavoriteTool = class FavoriteTool extends LitElement {
84
84
  });
85
85
  }
86
86
  async removeFavorite(routing) {
87
- await client.query({
88
- query: gql `
87
+ await client.mutate({
88
+ mutation: gql `
89
89
  mutation {
90
90
  deleteFavorite(routing: "${routing}")
91
91
  }
@@ -94,8 +94,8 @@ let FavoriteTool = class FavoriteTool extends LitElement {
94
94
  this.refreshFavorites();
95
95
  }
96
96
  async addFavorite(routing) {
97
- await client.query({
98
- query: gql `
97
+ await client.mutate({
98
+ mutation: gql `
99
99
  mutation {
100
100
  createFavorite(favorite: {
101
101
  routing: "${routing}"
@@ -1 +1 @@
1
- {"version":3,"file":"favorite-tool.js","sourceRoot":"","sources":["../../client/apptools/favorite-tool.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { LitElement, html, css } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport gql from 'graphql-tag'\n\nimport { store, client } from '@things-factory/shell/client'\nimport { UPDATE_FAVORITES } from '@things-factory/fav-base/client'\n\n@customElement('favorite-tool')\nexport class FavoriteTool extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n vertical-align: middle;\n line-height: 0;\n }\n\n [favorable] {\n opacity: 0.5;\n }\n `\n\n @property({ type: Array }) favorites: any\n @property({ type: Object }) user: any\n @property({ type: String }) page?: string\n @property({ type: String }) resourceId?: string\n @property({ type: Boolean }) favored: boolean = false\n @property({ type: Array }) routingTypes: any[] = []\n @property({ type: Array }) blackList: string[] = []\n\n render() {\n var renderable = (this.blackList || []).indexOf(this.page!) == -1\n\n return renderable\n ? html`\n <md-icon @click=${this.onClick.bind(this)} ?favorable=${!this.favored}\n >${this.favored ? 'star' : 'star_border'}</md-icon\n >\n `\n : html``\n }\n\n updated(changes) {\n if (changes.has('user')) {\n this.refreshFavorites()\n }\n\n this.favored = (this.favorites || []).includes(this.getFullRouting())\n }\n\n private _unsubscribe?: () => void\n\n\n connectedCallback() {\n\n super.connectedCallback()\n\n this._applyState()\n\n this._unsubscribe = store.subscribe(() => this._applyState())\n\n }\n\n\n disconnectedCallback() {\n\n super.disconnectedCallback()\n\n this._unsubscribe?.()\n\n }\n\n\n private _applyState() {\n\n const __state__ = store.getState() as any\nthis.favorites = __state__.favorite.favorites\n this.user = __state__.auth.user\n this.page = __state__.route.page\n this.resourceId = __state__.route.resourceId\n this.routingTypes = __state__.menu.routingTypes\n\n }\n\n onClick(event) {\n if (this.favored) {\n this.removeFavorite(this.getFullRouting())\n } else {\n this.addFavorite(this.getFullRouting())\n }\n }\n\n async refreshFavorites() {\n if (!this.user || !this.user.email) {\n return\n }\n\n const response = await client.query({\n query: gql`\n query {\n myFavorites {\n id\n routing\n }\n }\n `\n })\n\n store.dispatch({\n type: UPDATE_FAVORITES,\n favorites: response.data.myFavorites.map(favorite => favorite.routing)\n })\n }\n\n async removeFavorite(routing) {\n await client.query({\n query: gql`\n mutation {\n deleteFavorite(routing: \"${routing}\")\n }\n `\n })\n\n this.refreshFavorites()\n }\n\n async addFavorite(routing) {\n await client.query({\n query: gql`\n mutation {\n createFavorite(favorite: {\n routing: \"${routing}\"\n }) {\n id\n routing\n }\n }\n `\n })\n\n this.refreshFavorites()\n }\n\n getFullRouting() {\n var routingType = Object.values(this.routingTypes).find(type => type.page == this.page)\n return routingType ? `${this.page}/${this.resourceId}` : this.page\n }\n}\n"]}
1
+ {"version":3,"file":"favorite-tool.js","sourceRoot":"","sources":["../../client/apptools/favorite-tool.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { LitElement, html, css } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport gql from 'graphql-tag'\n\nimport { store, client } from '@things-factory/shell/client'\nimport { UPDATE_FAVORITES } from '@things-factory/fav-base/client'\n\n@customElement('favorite-tool')\nexport class FavoriteTool extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n vertical-align: middle;\n line-height: 0;\n }\n\n [favorable] {\n opacity: 0.5;\n }\n `\n\n @property({ type: Array }) favorites: any\n @property({ type: Object }) user: any\n @property({ type: String }) page?: string\n @property({ type: String }) resourceId?: string\n @property({ type: Boolean }) favored: boolean = false\n @property({ type: Array }) routingTypes: any[] = []\n @property({ type: Array }) blackList: string[] = []\n\n render() {\n var renderable = (this.blackList || []).indexOf(this.page!) == -1\n\n return renderable\n ? html`\n <md-icon @click=${this.onClick.bind(this)} ?favorable=${!this.favored}\n >${this.favored ? 'star' : 'star_border'}</md-icon\n >\n `\n : html``\n }\n\n updated(changes) {\n if (changes.has('user')) {\n this.refreshFavorites()\n }\n\n this.favored = (this.favorites || []).includes(this.getFullRouting())\n }\n\n private _unsubscribe?: () => void\n\n\n connectedCallback() {\n\n super.connectedCallback()\n\n this._applyState()\n\n this._unsubscribe = store.subscribe(() => this._applyState())\n\n }\n\n\n disconnectedCallback() {\n\n super.disconnectedCallback()\n\n this._unsubscribe?.()\n\n }\n\n\n private _applyState() {\n\n const __state__ = store.getState() as any\nthis.favorites = __state__.favorite.favorites\n this.user = __state__.auth.user\n this.page = __state__.route.page\n this.resourceId = __state__.route.resourceId\n this.routingTypes = __state__.menu.routingTypes\n\n }\n\n onClick(event) {\n if (this.favored) {\n this.removeFavorite(this.getFullRouting())\n } else {\n this.addFavorite(this.getFullRouting())\n }\n }\n\n async refreshFavorites() {\n if (!this.user || !this.user.email) {\n return\n }\n\n const response = await client.query({\n query: gql`\n query {\n myFavorites {\n id\n routing\n }\n }\n `\n })\n\n store.dispatch({\n type: UPDATE_FAVORITES,\n favorites: response.data.myFavorites.map(favorite => favorite.routing)\n })\n }\n\n async removeFavorite(routing) {\n await client.mutate({\n mutation: gql`\n mutation {\n deleteFavorite(routing: \"${routing}\")\n }\n `\n })\n\n this.refreshFavorites()\n }\n\n async addFavorite(routing) {\n await client.mutate({\n mutation: gql`\n mutation {\n createFavorite(favorite: {\n routing: \"${routing}\"\n }) {\n id\n routing\n }\n }\n `\n })\n\n this.refreshFavorites()\n }\n\n getFullRouting() {\n var routingType = Object.values(this.routingTypes).find(type => type.page == this.page)\n return routingType ? `${this.page}/${this.resourceId}` : this.page\n }\n}\n"]}
@@ -280,8 +280,8 @@ let MenuManagementDetail = class MenuManagementDetail extends localize(i18next)(
280
280
  async save() {
281
281
  const patches = this.getPatches();
282
282
  if (patches && patches.length) {
283
- const response = await client.query({
284
- query: gql `
283
+ const response = await client.mutate({
284
+ mutation: gql `
285
285
  mutation {
286
286
  updateMultipleMenu(${gqlBuilder.buildArgs({
287
287
  patches
@@ -311,8 +311,8 @@ let MenuManagementDetail = class MenuManagementDetail extends localize(i18next)(
311
311
  confirmButton: { text: i18next.t('button.delete') },
312
312
  cancelButton: { text: i18next.t('button.cancel') }
313
313
  })) {
314
- const response = await client.query({
315
- query: gql `
314
+ const response = await client.mutate({
315
+ mutation: gql `
316
316
  mutation {
317
317
  deleteMenus(${gqlBuilder.buildArgs({ ids })})
318
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-management-detail.js","sourceRoot":"","sources":["../../client/pages/menu-management-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/form-ui'\nimport '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { DataGrist, FetchOption, getEditor, getRenderer } from '@operato/data-grist'\nimport { i18next, localize } from '@operato/i18n'\nimport { client } from '@operato/graphql'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { gqlBuilder } from '@things-factory/utils'\n\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\n\n@customElement('menu-management-detail')\nclass MenuManagementDetail extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--md-sys-color-surface);\n }\n search-form {\n overflow: visible;\n }\n .grist {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n }\n ox-grist {\n overflow-y: hidden;\n flex: 1;\n }\n .button-container {\n padding: 10px 0 12px 0;\n text-align: center;\n }\n .button-container > button {\n background-color: var(--button-background-color);\n border: var(--button-border);\n border-radius: var(--button-border-radius);\n margin: var(--button-margin);\n padding: var(--button-padding);\n color: var(--button-color);\n font: var(--button-font);\n text-transform: var(--button-text-transform);\n }\n .button-container > button:hover,\n .button-container > button:active {\n background-color: var(--button-background-focus-color);\n }\n `\n ]\n\n @property({ type: String }) menuId?: string\n @property({ type: Object }) searchFields: any\n @property({ type: Object }) config: any\n\n @query('ox-grist') dataGrist!: DataGrist\n @query('search-form') searchForm!: HTMLFormElement\n\n render() {\n return html`\n <search-form .fields=${this.searchFields} @submit=${e => this.dataGrist.fetch()}></search-form>\n\n <div class=\"grist\">\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.config}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ></ox-grist>\n </div>\n\n <div class=\"button-container\">\n <button @click=${this.save}>${i18next.t('button.save')}</button>\n <button @click=${this.delete}>${i18next.t('button.delete')}</button>\n </div>\n `\n }\n\n firstUpdated() {\n this.searchFields = [\n {\n name: 'name',\n label: i18next.t('field.name'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'description',\n label: i18next.t('field.description'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'template',\n label: i18next.t('field.template'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'category',\n label: i18next.t('field.category'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'resourceUrl',\n label: i18next.t('field.resource_url'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'hiddenFlag',\n label: i18next.t('field.hidden_flag'),\n type: 'checkbox',\n props: { searchOper: 'eq' },\n attrs: ['indeterminate']\n }\n ]\n\n this.config = {\n rows: { selectable: { multiple: true } },\n pagination: { infinite: true },\n columns: [\n { type: 'gutter', gutterName: 'dirty' },\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 150\n },\n {\n type: 'integer',\n name: 'rank',\n header: i18next.t('field.rank'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'select',\n name: 'resourceType',\n header: i18next.t('field.type'),\n record: {\n editable: true,\n options: ['', 'board']\n },\n width: 80\n },\n {\n type: 'string',\n name: 'resourceId',\n header: i18next.t('field.value'),\n record: {\n editable: true,\n editor: function (value, column, record, rowIndex, field) {\n const type = record.resourceType || 'string'\n if (value && type !== 'board') {\n delete record.resourceId\n value = ''\n }\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) {\n const type = record.resourceType || 'string'\n if (value && type !== 'board') {\n delete record.resourceId\n value = ''\n }\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 200\n },\n {\n type: 'string',\n name: 'template',\n header: i18next.t('field.template'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 160\n },\n {\n type: 'string',\n name: 'resourceUrl',\n header: i18next.t('field.resource_url'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 160\n },\n {\n type: 'boolean',\n name: 'hiddenFlag',\n header: i18next.t('field.hidden_flag'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'resource-object',\n name: 'role',\n label: true,\n header: i18next.t('field.required role'),\n record: {\n editable: true,\n options: {\n title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n width: 200\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false },\n sortable: true,\n width: 150\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false },\n sortable: true,\n width: 150\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query {\n menus(${gqlBuilder.buildArgs({\n filters: [...this.searchForm.queryFilters, { name: 'parentId', operator: 'eq', value: this.menuId }],\n pagination: { page, limit },\n sortings: sorters\n })}) {\n items {\n id\n name\n rank\n description\n category\n template\n resourceUrl\n resourceType\n resourceId\n hiddenFlag\n role {\n id\n name\n description\n }\n updatedAt\n updater{\n id\n name\n description\n }\n }\n total\n }\n }\n `\n })\n\n return {\n total: response.data.menus.total || 0,\n records: response.data.menus.items || []\n }\n }\n\n async save() {\n const patches = this.getPatches()\n if (patches && patches.length) {\n const response = await client.query({\n query: gql`\n mutation {\n updateMultipleMenu(${gqlBuilder.buildArgs({\n patches\n })}) {\n name\n }\n }\n `\n })\n\n if (!response.errors) this.dataGrist.fetch()\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_changed'),\n text: i18next.t('text.there_is_nothing_to_save')\n })\n }\n }\n\n async delete() {\n const ids = this.dataGrist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n if (\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('button.delete'),\n text: i18next.t('text.are_you_sure'),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.query({\n query: gql`\n mutation {\n deleteMenus(${gqlBuilder.buildArgs({ ids })})\n }\n `\n })\n\n if (!response.errors) {\n this.dataGrist.fetch()\n }\n }\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_selected'),\n text: i18next.t('text.there_is_nothing_to_delete')\n })\n }\n }\n\n getPatches() {\n let patches = this.dataGrist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(menu => {\n let patchField: any = menu.id ? { id: menu.id } : {}\n patchField = { ...patchField, routingType: menu.routingType, menuType: menu.menuType }\n const dirtyFields = menu.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.parent = { id: this.menuId }\n patchField.routingType = patchField.routingType || 'STATIC'\n patchField.menuType = patchField.menuType || 'SCREEN'\n patchField.cuFlag = menu.__dirty__\n\n return patchField\n })\n }\n\n return patches\n }\n}\n"]}
1
+ {"version":3,"file":"menu-management-detail.js","sourceRoot":"","sources":["../../client/pages/menu-management-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/form-ui'\nimport '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { DataGrist, FetchOption, getEditor, getRenderer } from '@operato/data-grist'\nimport { i18next, localize } from '@operato/i18n'\nimport { client } from '@operato/graphql'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { gqlBuilder } from '@things-factory/utils'\n\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\n\n@customElement('menu-management-detail')\nclass MenuManagementDetail extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--md-sys-color-surface);\n }\n search-form {\n overflow: visible;\n }\n .grist {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n }\n ox-grist {\n overflow-y: hidden;\n flex: 1;\n }\n .button-container {\n padding: 10px 0 12px 0;\n text-align: center;\n }\n .button-container > button {\n background-color: var(--button-background-color);\n border: var(--button-border);\n border-radius: var(--button-border-radius);\n margin: var(--button-margin);\n padding: var(--button-padding);\n color: var(--button-color);\n font: var(--button-font);\n text-transform: var(--button-text-transform);\n }\n .button-container > button:hover,\n .button-container > button:active {\n background-color: var(--button-background-focus-color);\n }\n `\n ]\n\n @property({ type: String }) menuId?: string\n @property({ type: Object }) searchFields: any\n @property({ type: Object }) config: any\n\n @query('ox-grist') dataGrist!: DataGrist\n @query('search-form') searchForm!: HTMLFormElement\n\n render() {\n return html`\n <search-form .fields=${this.searchFields} @submit=${e => this.dataGrist.fetch()}></search-form>\n\n <div class=\"grist\">\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.config}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ></ox-grist>\n </div>\n\n <div class=\"button-container\">\n <button @click=${this.save}>${i18next.t('button.save')}</button>\n <button @click=${this.delete}>${i18next.t('button.delete')}</button>\n </div>\n `\n }\n\n firstUpdated() {\n this.searchFields = [\n {\n name: 'name',\n label: i18next.t('field.name'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'description',\n label: i18next.t('field.description'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'template',\n label: i18next.t('field.template'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'category',\n label: i18next.t('field.category'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'resourceUrl',\n label: i18next.t('field.resource_url'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'hiddenFlag',\n label: i18next.t('field.hidden_flag'),\n type: 'checkbox',\n props: { searchOper: 'eq' },\n attrs: ['indeterminate']\n }\n ]\n\n this.config = {\n rows: { selectable: { multiple: true } },\n pagination: { infinite: true },\n columns: [\n { type: 'gutter', gutterName: 'dirty' },\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 150\n },\n {\n type: 'integer',\n name: 'rank',\n header: i18next.t('field.rank'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'select',\n name: 'resourceType',\n header: i18next.t('field.type'),\n record: {\n editable: true,\n options: ['', 'board']\n },\n width: 80\n },\n {\n type: 'string',\n name: 'resourceId',\n header: i18next.t('field.value'),\n record: {\n editable: true,\n editor: function (value, column, record, rowIndex, field) {\n const type = record.resourceType || 'string'\n if (value && type !== 'board') {\n delete record.resourceId\n value = ''\n }\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) {\n const type = record.resourceType || 'string'\n if (value && type !== 'board') {\n delete record.resourceId\n value = ''\n }\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 200\n },\n {\n type: 'string',\n name: 'template',\n header: i18next.t('field.template'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 160\n },\n {\n type: 'string',\n name: 'resourceUrl',\n header: i18next.t('field.resource_url'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 160\n },\n {\n type: 'boolean',\n name: 'hiddenFlag',\n header: i18next.t('field.hidden_flag'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'resource-object',\n name: 'role',\n label: true,\n header: i18next.t('field.required role'),\n record: {\n editable: true,\n options: {\n title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n width: 200\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false },\n sortable: true,\n width: 150\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false },\n sortable: true,\n width: 150\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query {\n menus(${gqlBuilder.buildArgs({\n filters: [...this.searchForm.queryFilters, { name: 'parentId', operator: 'eq', value: this.menuId }],\n pagination: { page, limit },\n sortings: sorters\n })}) {\n items {\n id\n name\n rank\n description\n category\n template\n resourceUrl\n resourceType\n resourceId\n hiddenFlag\n role {\n id\n name\n description\n }\n updatedAt\n updater{\n id\n name\n description\n }\n }\n total\n }\n }\n `\n })\n\n return {\n total: response.data.menus.total || 0,\n records: response.data.menus.items || []\n }\n }\n\n async save() {\n const patches = this.getPatches()\n if (patches && patches.length) {\n const response = await client.mutate({\n mutation: gql`\n mutation {\n updateMultipleMenu(${gqlBuilder.buildArgs({\n patches\n })}) {\n name\n }\n }\n `\n })\n\n if (!response.errors) this.dataGrist.fetch()\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_changed'),\n text: i18next.t('text.there_is_nothing_to_save')\n })\n }\n }\n\n async delete() {\n const ids = this.dataGrist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n if (\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('button.delete'),\n text: i18next.t('text.are_you_sure'),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation {\n deleteMenus(${gqlBuilder.buildArgs({ ids })})\n }\n `\n })\n\n if (!response.errors) {\n this.dataGrist.fetch()\n }\n }\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_selected'),\n text: i18next.t('text.there_is_nothing_to_delete')\n })\n }\n }\n\n getPatches() {\n let patches = this.dataGrist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(menu => {\n let patchField: any = menu.id ? { id: menu.id } : {}\n patchField = { ...patchField, routingType: menu.routingType, menuType: menu.menuType }\n const dirtyFields = menu.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.parent = { id: this.menuId }\n patchField.routingType = patchField.routingType || 'STATIC'\n patchField.menuType = patchField.menuType || 'SCREEN'\n patchField.cuFlag = menu.__dirty__\n\n return patchField\n })\n }\n\n return patches\n }\n}\n"]}
@@ -185,8 +185,8 @@ let MenuManagement = class MenuManagement extends localize(i18next)(PageView) {
185
185
  async save() {
186
186
  const patches = this.getPatches();
187
187
  if (patches && patches.length) {
188
- const response = await client.query({
189
- query: gql `
188
+ const response = await client.mutate({
189
+ mutation: gql `
190
190
  mutation {
191
191
  updateMultipleMenu(${gqlBuilder.buildArgs({
192
192
  patches
@@ -216,8 +216,8 @@ let MenuManagement = class MenuManagement extends localize(i18next)(PageView) {
216
216
  confirmButton: { text: i18next.t('button.delete') },
217
217
  cancelButton: { text: i18next.t('button.cancel') }
218
218
  })) {
219
- const response = await client.query({
220
- query: gql `
219
+ const response = await client.mutate({
220
+ mutation: gql `
221
221
  mutation {
222
222
  deleteMenus(${gqlBuilder.buildArgs({ ids })})
223
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-management.js","sourceRoot":"","sources":["../../client/pages/menu-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/form-ui'\nimport '@operato/data-grist'\nimport './menu-management-detail'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { openPopup } from '@operato/layout'\nimport { i18next, localize } from '@operato/i18n'\nimport { CommonButtonStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { client, PageView } from '@things-factory/shell/client'\nimport { gqlBuilder } from '@things-factory/utils/src'\n\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\n\n@customElement('menu-management')\nclass MenuManagement extends localize(i18next)(PageView) {\n static styles = [\n /* The work surface frame for a list screen (ADR-0060 decision 8). */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n css`\n\n search-form {\n overflow: visible;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n `\n ]\n\n @property({ type: Array }) searchFields: any[] = []\n @property({ type: Object }) config: any\n @property({ type: Object }) data: any\n\n @query('ox-grist') dataGrist!: DataGrist\n @query('search-form') searchForm!: HTMLFormElement\n\n render() {\n return html`\n <search-form .fields=${this.searchFields} @submit=${e => this.dataGrist.fetch()}></search-form>\n\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.config}\n .fetchHandler=\"${this.fetchHandler.bind(this)}\"\n ></ox-grist>\n `\n }\n\n get context() {\n return {\n title: i18next.t('title.menu_management'),\n actions: [\n {\n title: i18next.t('button.save'),\n action: this.save.bind(this),\n ...CommonButtonStyles.save\n },\n {\n title: i18next.t('button.delete'),\n action: this.delete.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\n\n pageUpdated(_changes, _lifecycle) {\n if (this.active) {\n this.dataGrist.fetch()\n }\n }\n\n pageInitialized() {\n this.searchFields = [\n {\n name: 'name',\n label: i18next.t('label.name'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'description',\n label: i18next.t('label.description'),\n type: 'text',\n props: { searchOper: 'i_like' }\n }\n ]\n\n this.config = {\n rows: { selectable: { multiple: true } },\n columns: [\n { type: 'gutter', gutterName: 'dirty' },\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'reorder',\n handlers: {\n click: (_columns, _data, _column, record, _rowIndex) => {\n if (record.id && record.name) this.openMenuDetail(record.id, record.name)\n }\n }\n },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 150\n },\n {\n type: 'integer',\n name: 'rank',\n header: i18next.t('field.rank'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 200\n },\n {\n type: 'boolean',\n name: 'hiddenFlag',\n header: i18next.t('field.hidden_flag'),\n record: { editable: false },\n sortable: true,\n width: 80\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false },\n sortable: true,\n width: 150\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false },\n sortable: true,\n width: 150\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query {\n menus(${gqlBuilder.buildArgs({\n filters: [...this.searchForm.queryFilters, { name: 'menuType', operator: 'eq', value: 'MENU' }],\n pagination: { page, limit },\n sortings: sorters\n })}) {\n items {\n id\n name\n rank\n description\n hiddenFlag\n updatedAt\n updater{\n id\n name\n description\n }\n }\n total\n }\n }\n `\n })\n\n return {\n total: response.data.menus.total || 0,\n records: response.data.menus.items || []\n }\n }\n\n async save() {\n const patches = this.getPatches()\n if (patches && patches.length) {\n const response = await client.query({\n query: gql`\n mutation {\n updateMultipleMenu(${gqlBuilder.buildArgs({\n patches\n })}) {\n name\n }\n }\n `\n })\n\n if (!response.errors) this.dataGrist.fetch()\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_changed'),\n text: i18next.t('text.there_is_nothing_to_save')\n })\n }\n }\n\n async delete() {\n const ids = this.dataGrist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n if (\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('button.delete'),\n text: i18next.t('text.are_you_sure'),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.query({\n query: gql`\n mutation {\n deleteMenus(${gqlBuilder.buildArgs({ ids })})\n }\n `\n })\n\n if (!response.errors) {\n this.dataGrist.fetch()\n }\n }\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_selected'),\n text: i18next.t('text.there_is_nothing_to_delete')\n })\n }\n }\n\n getPatches() {\n let patches = this.dataGrist.dirtyRecords\n\n if (patches && patches.length) {\n patches = patches.map(menu => {\n let patchField: any = menu.id ? { id: menu.id } : {}\n const dirtyFields = menu.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n\n patchField.cuFlag = menu.__dirty__\n patchField.menuType = 'MENU'\n\n return patchField\n })\n }\n\n return patches\n }\n\n openMenuDetail(menuId, menuName) {\n openPopup(html` <menu-management-detail .menuId=${menuId}></menu-management-detail> `, {\n backdrop: true,\n size: 'large',\n title: `${i18next.t('title.menu_management_detail')} - ${menuName}`\n })\n }\n}\n"]}
1
+ {"version":3,"file":"menu-management.js","sourceRoot":"","sources":["../../client/pages/menu-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/form-ui'\nimport '@operato/data-grist'\nimport './menu-management-detail'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { openPopup } from '@operato/layout'\nimport { i18next, localize } from '@operato/i18n'\nimport { CommonButtonStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { client, PageView } from '@things-factory/shell/client'\nimport { gqlBuilder } from '@things-factory/utils/src'\n\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\n\n@customElement('menu-management')\nclass MenuManagement extends localize(i18next)(PageView) {\n static styles = [\n /* The work surface frame for a list screen (ADR-0060 decision 8). */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n css`\n\n search-form {\n overflow: visible;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n `\n ]\n\n @property({ type: Array }) searchFields: any[] = []\n @property({ type: Object }) config: any\n @property({ type: Object }) data: any\n\n @query('ox-grist') dataGrist!: DataGrist\n @query('search-form') searchForm!: HTMLFormElement\n\n render() {\n return html`\n <search-form .fields=${this.searchFields} @submit=${e => this.dataGrist.fetch()}></search-form>\n\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.config}\n .fetchHandler=\"${this.fetchHandler.bind(this)}\"\n ></ox-grist>\n `\n }\n\n get context() {\n return {\n title: i18next.t('title.menu_management'),\n actions: [\n {\n title: i18next.t('button.save'),\n action: this.save.bind(this),\n ...CommonButtonStyles.save\n },\n {\n title: i18next.t('button.delete'),\n action: this.delete.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\n\n pageUpdated(_changes, _lifecycle) {\n if (this.active) {\n this.dataGrist.fetch()\n }\n }\n\n pageInitialized() {\n this.searchFields = [\n {\n name: 'name',\n label: i18next.t('label.name'),\n type: 'text',\n props: { searchOper: 'i_like' }\n },\n {\n name: 'description',\n label: i18next.t('label.description'),\n type: 'text',\n props: { searchOper: 'i_like' }\n }\n ]\n\n this.config = {\n rows: { selectable: { multiple: true } },\n columns: [\n { type: 'gutter', gutterName: 'dirty' },\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'reorder',\n handlers: {\n click: (_columns, _data, _column, record, _rowIndex) => {\n if (record.id && record.name) this.openMenuDetail(record.id, record.name)\n }\n }\n },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 150\n },\n {\n type: 'integer',\n name: 'rank',\n header: i18next.t('field.rank'),\n record: { editable: true },\n sortable: true,\n width: 80\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true, align: 'left' },\n sortable: true,\n width: 200\n },\n {\n type: 'boolean',\n name: 'hiddenFlag',\n header: i18next.t('field.hidden_flag'),\n record: { editable: false },\n sortable: true,\n width: 80\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false },\n sortable: true,\n width: 150\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false },\n sortable: true,\n width: 150\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query {\n menus(${gqlBuilder.buildArgs({\n filters: [...this.searchForm.queryFilters, { name: 'menuType', operator: 'eq', value: 'MENU' }],\n pagination: { page, limit },\n sortings: sorters\n })}) {\n items {\n id\n name\n rank\n description\n hiddenFlag\n updatedAt\n updater{\n id\n name\n description\n }\n }\n total\n }\n }\n `\n })\n\n return {\n total: response.data.menus.total || 0,\n records: response.data.menus.items || []\n }\n }\n\n async save() {\n const patches = this.getPatches()\n if (patches && patches.length) {\n const response = await client.mutate({\n mutation: gql`\n mutation {\n updateMultipleMenu(${gqlBuilder.buildArgs({\n patches\n })}) {\n name\n }\n }\n `\n })\n\n if (!response.errors) this.dataGrist.fetch()\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_changed'),\n text: i18next.t('text.there_is_nothing_to_save')\n })\n }\n }\n\n async delete() {\n const ids = this.dataGrist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n if (\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('button.delete'),\n text: i18next.t('text.are_you_sure'),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation {\n deleteMenus(${gqlBuilder.buildArgs({ ids })})\n }\n `\n })\n\n if (!response.errors) {\n this.dataGrist.fetch()\n }\n }\n } else {\n OxPrompt.open({\n title: i18next.t('text.nothing_selected'),\n text: i18next.t('text.there_is_nothing_to_delete')\n })\n }\n }\n\n getPatches() {\n let patches = this.dataGrist.dirtyRecords\n\n if (patches && patches.length) {\n patches = patches.map(menu => {\n let patchField: any = menu.id ? { id: menu.id } : {}\n const dirtyFields = menu.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n\n patchField.cuFlag = menu.__dirty__\n patchField.menuType = 'MENU'\n\n return patchField\n })\n }\n\n return patches\n }\n\n openMenuDetail(menuId, menuName) {\n openPopup(html` <menu-management-detail .menuId=${menuId}></menu-management-detail> `, {\n backdrop: true,\n size: 'large',\n title: `${i18next.t('title.menu_management_detail')} - ${menuName}`\n })\n }\n}\n"]}
@@ -8,12 +8,44 @@ import { css, html } from 'lit';
8
8
  import { customElement, property } from 'lit/decorators.js';
9
9
  import { openPopup } from '@operato/layout';
10
10
  import { i18next, localize } from '@operato/i18n';
11
- import { client, PageView } from '@things-factory/shell/client';
11
+ import { QueryController } from '@operato/graphql';
12
+ import { PageView } from '@things-factory/shell/client';
12
13
  import { DocumentPageStyles } from '@operato/styles';
13
14
  let RoleMenusManagement = class RoleMenusManagement extends localize(i18next)(PageView) {
14
15
  constructor() {
15
16
  super(...arguments);
16
- this.parentMenus = [];
17
+ /* Every menu, and the menus of the role chosen (ADR-0190). */
18
+ this.menus = new QueryController(this, gql `
19
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
20
+ menus(filters: $filters, pagination: $pagination, sortings: $sortings) {
21
+ items {
22
+ id
23
+ name
24
+ description
25
+ children {
26
+ id
27
+ name
28
+ }
29
+ }
30
+ total
31
+ }
32
+ }
33
+ `, { variables: () => ({ filters: [], pagination: {}, sortings: [{ name: 'name' }] }) });
34
+ this.roleMenusOf = new QueryController(this, gql `
35
+ query ($roleId: String!) {
36
+ roleMenus(roleId: $roleId) {
37
+ items {
38
+ id
39
+ name
40
+ description
41
+ parent {
42
+ id
43
+ name
44
+ }
45
+ }
46
+ }
47
+ }
48
+ `, { variables: () => (this.targetRole?.id ? { roleId: this.targetRole.id } : undefined) });
17
49
  }
18
50
  static { this.styles = [
19
51
  /*
@@ -47,6 +79,20 @@ let RoleMenusManagement = class RoleMenusManagement extends localize(i18next)(Pa
47
79
  }
48
80
  `
49
81
  ]; }
82
+ get parentMenus() {
83
+ return (this.menus.data?.menus.items || []).filter(menu => menu.children?.length);
84
+ }
85
+ get menuSet() {
86
+ if (!this.roleMenusOf.data)
87
+ return undefined;
88
+ return (this.roleMenusOf.data.roleMenus.items || []).reduce((menuSet, menu) => {
89
+ const parentMenu = menu.parent.name;
90
+ if (!menuSet[parentMenu])
91
+ menuSet[parentMenu] = [];
92
+ menuSet[parentMenu].push(menu);
93
+ return menuSet;
94
+ }, {});
95
+ }
50
96
  get context() {
51
97
  return {
52
98
  /*
@@ -78,9 +124,7 @@ let RoleMenusManagement = class RoleMenusManagement extends localize(i18next)(Pa
78
124
  .data="${data}"
79
125
  .contentRenderer="${(item, tabKey) => this.targetRole
80
126
  ? html `<child-menus-selector
81
- @updateRoleMenus="${async () => {
82
- await this.getMenus(this.targetRole);
83
- }}"
127
+ @updateRoleMenus="${() => this.roleMenusOf.refetch()}"
84
128
  .parentMenu=${item}
85
129
  .roleMenus=${menuSet[item.name]}
86
130
  .targetRole=${this.targetRole}
@@ -95,72 +139,6 @@ let RoleMenusManagement = class RoleMenusManagement extends localize(i18next)(Pa
95
139
  get roleInput() {
96
140
  return this.renderRoot.querySelector('input');
97
141
  }
98
- async pageUpdated(changes) {
99
- if (this.active) {
100
- this.load();
101
- }
102
- }
103
- async load() {
104
- const response = await client.query({
105
- query: gql `
106
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
107
- menus(filters: $filters, pagination: $pagination, sortings: $sortings) {
108
- items {
109
- id
110
- name
111
- description
112
- children {
113
- id
114
- name
115
- }
116
- }
117
- total
118
- }
119
- }
120
- `,
121
- variables: {
122
- filters: [],
123
- pagination: {},
124
- sortings: [{ name: 'name' }]
125
- }
126
- });
127
- if (!response.errors?.length) {
128
- const menus = response.data.menus.items || [];
129
- this.parentMenus = menus.filter(menu => menu.children?.length);
130
- }
131
- }
132
- async getMenus(targetRole) {
133
- const response = await client.query({
134
- query: gql `
135
- query ($roleId: String!) {
136
- roleMenus(roleId: $roleId) {
137
- items {
138
- id
139
- name
140
- description
141
- parent {
142
- id
143
- name
144
- }
145
- }
146
- }
147
- }
148
- `,
149
- variables: {
150
- roleId: targetRole.id
151
- }
152
- });
153
- if (!response.errors?.length) {
154
- this.roleMenus = response.data.roleMenus.items || [];
155
- this.menuSet = (this.roleMenus || []).reduce((menuSet, menu) => {
156
- const parentMenu = menu.parent.name;
157
- if (!menuSet[parentMenu])
158
- menuSet[parentMenu] = [];
159
- menuSet[parentMenu].push(menu);
160
- return menuSet;
161
- }, {});
162
- }
163
- }
164
142
  onSelectRole() {
165
143
  openPopup(html `
166
144
  <role-select-popup
@@ -168,7 +146,6 @@ let RoleMenusManagement = class RoleMenusManagement extends localize(i18next)(Pa
168
146
  this.selectedRole = e.detail;
169
147
  this.roleInput.value = this.selectedRole.name;
170
148
  this.targetRole = this.selectedRole || {};
171
- this.getMenus(this.targetRole);
172
149
  }}"
173
150
  ></role-select-popup>
174
151
  `, {
@@ -184,18 +161,6 @@ __decorate([
184
161
  property({ type: Object }),
185
162
  __metadata("design:type", Object)
186
163
  ], RoleMenusManagement.prototype, "selectedRole", void 0);
187
- __decorate([
188
- property({ type: Array }),
189
- __metadata("design:type", Array)
190
- ], RoleMenusManagement.prototype, "parentMenus", void 0);
191
- __decorate([
192
- property({ type: Array }),
193
- __metadata("design:type", Object)
194
- ], RoleMenusManagement.prototype, "roleMenus", void 0);
195
- __decorate([
196
- property({ type: Object }),
197
- __metadata("design:type", Object)
198
- ], RoleMenusManagement.prototype, "menuSet", void 0);
199
164
  __decorate([
200
165
  property({ type: Object }),
201
166
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"role-menus-management.js","sourceRoot":"","sources":["../../client/pages/role-menus-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/filled-button.js'\nimport '@things-factory/component-ui'\nimport '../components/role-select-popup'\nimport '../components/child-menus-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { openPopup } from '@operato/layout'\nimport { i18next, localize } from '@operato/i18n'\nimport { client, PageView } from '@things-factory/shell/client'\nimport { DocumentPageStyles } from '@operato/styles'\n\n@customElement('role-menus-management')\nclass RoleMenusManagement extends localize(i18next)(PageView) {\n static styles = [\n /*\n * A screen that is read and edited down one column (ADR-0060 decision 8). The frame owns the\n * width, the padding and the spacing between sections; what is left here is this screen's own\n * controls.\n */\n DocumentPageStyles,\n css`\n [input-container] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n input {\n background-color: var(--input-field-background, var(--md-sys-color-surface-container-highest));\n color: var(--input-field-color, var(--md-sys-color-on-surface));\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n padding: var(--input-padding);\n min-width: 250px;\n font: var(--input-font);\n }\n label {\n display: flex;\n }\n @media screen and (max-width: 480px) {\n input {\n min-width: 0;\n }\n }\n `\n ]\n\n @property({ type: Object }) selectedRole: any\n @property({ type: Array }) parentMenus: any[] = []\n @property({ type: Array }) roleMenus: any\n @property({ type: Object }) menuSet: any\n @property({ type: Object }) targetRole: any\n\n get context() {\n return {\n /*\n * 이 화면이 어떤 틀인가 — 동작 줄이 이것을 읽고 자기 오른쪽 끝을 내용에 맞춘다\n * (ADR-0060 결정 9 보탬). 안 적으면 창 폭이고, 그것은 작업면의 모양이다.\n */\n frame: 'document',\ntitle: i18next.t('title.role_menus_management')\n }\n }\n\n render() {\n const data = { menus: this.parentMenus || [] }\n const menuSet = this.menuSet || {}\n\n /* The screen name is in the title bar, so the h2 that used to sit here said it a second time. */\n return html`\n <div class=\"page\">\n <section class=\"page-section\">\n <header class=\"page-section-header\"><h3>${i18next.t('field.role')}</h3></header>\n <div class=\"page-card\" input-container>\n <label><input name=\"name\" type=\"text\" disabled /></label>\n <md-filled-button @click=${() => this.onSelectRole()}>${i18next.t('button.select')}</md-filled-button>\n </div>\n </section>\n\n <section class=\"page-section\">\n <header class=\"page-section-header\"><h3>${i18next.t('title.menus')}</h3></header>\n <div id=\"children-menus\">\n <quick-find-list\n .data=\"${data}\"\n .contentRenderer=\"${(item, tabKey) =>\n this.targetRole\n ? html`<child-menus-selector\n @updateRoleMenus=\"${async () => {\n await this.getMenus(this.targetRole)\n }}\"\n .parentMenu=${item}\n .roleMenus=${menuSet[item.name]}\n .targetRole=${this.targetRole}\n ></child-menus-selector>`\n : this.showToast(i18next.t('error.value is empty', { value: i18next.t('field.role') }))}\"\n ></quick-find-list>\n </div>\n </section>\n </div>\n `\n }\n\n get roleInput() {\n return this.renderRoot.querySelector('input') as HTMLInputElement\n }\n\n async pageUpdated(changes) {\n if (this.active) {\n this.load()\n }\n }\n\n async load() {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n menus(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n children {\n id\n name\n }\n }\n total\n }\n }\n `,\n variables: {\n filters: [],\n pagination: {},\n sortings: [{ name: 'name' }]\n }\n })\n\n if (!response.errors?.length) {\n const menus = response.data.menus.items || []\n this.parentMenus = menus.filter(menu => menu.children?.length)\n }\n }\n\n async getMenus(targetRole) {\n const response = await client.query({\n query: gql`\n query ($roleId: String!) {\n roleMenus(roleId: $roleId) {\n items {\n id\n name\n description\n parent {\n id\n name\n }\n }\n }\n }\n `,\n variables: {\n roleId: targetRole.id\n }\n })\n\n if (!response.errors?.length) {\n this.roleMenus = response.data.roleMenus.items || []\n this.menuSet = (this.roleMenus || []).reduce((menuSet, menu) => {\n const parentMenu = menu.parent.name\n if (!menuSet[parentMenu]) menuSet[parentMenu] = []\n menuSet[parentMenu].push(menu)\n\n return menuSet\n }, {})\n }\n }\n\n onSelectRole() {\n openPopup(\n html`\n <role-select-popup\n @selected=\"${e => {\n this.selectedRole = e.detail\n this.roleInput.value = this.selectedRole.name\n this.targetRole = this.selectedRole || {}\n this.getMenus(this.targetRole)\n }}\"\n ></role-select-popup>\n `,\n {\n size: 'large',\n title: `${i18next.t('title.role_select')}`\n }\n )\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}
1
+ {"version":3,"file":"role-menus-management.js","sourceRoot":"","sources":["../../client/pages/role-menus-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/filled-button.js'\nimport '@things-factory/component-ui'\nimport '../components/role-select-popup'\nimport '../components/child-menus-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { openPopup } from '@operato/layout'\nimport { i18next, localize } from '@operato/i18n'\nimport { QueryController } from '@operato/graphql'\nimport { PageView } from '@things-factory/shell/client'\nimport { DocumentPageStyles } from '@operato/styles'\n\n@customElement('role-menus-management')\nclass RoleMenusManagement extends localize(i18next)(PageView) {\n static styles = [\n /*\n * A screen that is read and edited down one column (ADR-0060 decision 8). The frame owns the\n * width, the padding and the spacing between sections; what is left here is this screen's own\n * controls.\n */\n DocumentPageStyles,\n css`\n [input-container] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n input {\n background-color: var(--input-field-background, var(--md-sys-color-surface-container-highest));\n color: var(--input-field-color, var(--md-sys-color-on-surface));\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n padding: var(--input-padding);\n min-width: 250px;\n font: var(--input-font);\n }\n label {\n display: flex;\n }\n @media screen and (max-width: 480px) {\n input {\n min-width: 0;\n }\n }\n `\n ]\n\n @property({ type: Object }) selectedRole: any\n @property({ type: Object }) targetRole: any\n\n /* Every menu, and the menus of the role chosen (ADR-0190). */\n private menus = new QueryController(\n this,\n gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n menus(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n children {\n id\n name\n }\n }\n total\n }\n }\n `,\n { variables: () => ({ filters: [], pagination: {}, sortings: [{ name: 'name' }] }) }\n )\n\n private roleMenusOf = new QueryController(\n this,\n gql`\n query ($roleId: String!) {\n roleMenus(roleId: $roleId) {\n items {\n id\n name\n description\n parent {\n id\n name\n }\n }\n }\n }\n `,\n { variables: () => (this.targetRole?.id ? { roleId: this.targetRole.id } : undefined) }\n )\n\n private get parentMenus(): any[] {\n return (this.menus.data?.menus.items || []).filter(menu => menu.children?.length)\n }\n\n private get menuSet(): any {\n if (!this.roleMenusOf.data) return undefined\n return (this.roleMenusOf.data.roleMenus.items || []).reduce((menuSet, menu) => {\n const parentMenu = menu.parent.name\n if (!menuSet[parentMenu]) menuSet[parentMenu] = []\n menuSet[parentMenu].push(menu)\n\n return menuSet\n }, {})\n }\n\n get context() {\n return {\n /*\n * 이 화면이 어떤 틀인가 — 동작 줄이 이것을 읽고 자기 오른쪽 끝을 내용에 맞춘다\n * (ADR-0060 결정 9 보탬). 안 적으면 창 폭이고, 그것은 작업면의 모양이다.\n */\n frame: 'document',\ntitle: i18next.t('title.role_menus_management')\n }\n }\n\n render() {\n const data = { menus: this.parentMenus || [] }\n const menuSet = this.menuSet || {}\n\n /* The screen name is in the title bar, so the h2 that used to sit here said it a second time. */\n return html`\n <div class=\"page\">\n <section class=\"page-section\">\n <header class=\"page-section-header\"><h3>${i18next.t('field.role')}</h3></header>\n <div class=\"page-card\" input-container>\n <label><input name=\"name\" type=\"text\" disabled /></label>\n <md-filled-button @click=${() => this.onSelectRole()}>${i18next.t('button.select')}</md-filled-button>\n </div>\n </section>\n\n <section class=\"page-section\">\n <header class=\"page-section-header\"><h3>${i18next.t('title.menus')}</h3></header>\n <div id=\"children-menus\">\n <quick-find-list\n .data=\"${data}\"\n .contentRenderer=\"${(item, tabKey) =>\n this.targetRole\n ? html`<child-menus-selector\n @updateRoleMenus=\"${() => this.roleMenusOf.refetch()}\"\n .parentMenu=${item}\n .roleMenus=${menuSet[item.name]}\n .targetRole=${this.targetRole}\n ></child-menus-selector>`\n : this.showToast(i18next.t('error.value is empty', { value: i18next.t('field.role') }))}\"\n ></quick-find-list>\n </div>\n </section>\n </div>\n `\n }\n\n get roleInput() {\n return this.renderRoot.querySelector('input') as HTMLInputElement\n }\n\n onSelectRole() {\n openPopup(\n html`\n <role-select-popup\n @selected=\"${e => {\n this.selectedRole = e.detail\n this.roleInput.value = this.selectedRole.name\n this.targetRole = this.selectedRole || {}\n }}\"\n ></role-select-popup>\n `,\n {\n size: 'large',\n title: `${i18next.t('title.role_select')}`\n }\n )\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}