@things-factory/integration-ui 7.0.23 → 7.0.28

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.
@@ -183,21 +183,46 @@ export class ThingsEditorProcedureParameters extends OxFormField {
183
183
  <option value="Out" ?selected=${item.dir == 'Out'}>Out</option>
184
184
  </select>
185
185
  <select data-type placeholder="type" .value=${item.type}>
186
- ${dbtype == 'oracle' ? html`
187
- <option value="" ?selected=${item.type == ''}>&nbsp;</option>
188
- <option value="String" ?selected=${item.type == 'String'}>String</option>
189
- <option value="Number" ?selected=${item.type == 'Number'}>Number</option>
190
- <option value="Date" ?selected=${item.type == 'Date'}>Date</option>
191
- <!--
186
+ ${dbtype == 'oracle'
187
+ ? html`
188
+ <option value="" ?selected=${item.type == ''}>&nbsp;</option>
189
+ <option value="String" ?selected=${item.type == 'String'}>String</option>
190
+ <option value="Number" ?selected=${item.type == 'Number'}>Number</option>
191
+ <option value="Date" ?selected=${item.type == 'Date'}>Date</option>
192
+ <!--
192
193
  <option value="Buffer" ?selected=${item.type == 'Buffer'}>Buffer</option>
193
194
  <option value="Blob" ?selected=${item.type == 'Blob'}>Blob</option>
194
195
  <option value="Clob" ?selected=${item.type == 'Clob'}>Clob</option>
195
196
  -->
196
- <option value="Cursor" ?selected=${item.type == 'Cursor'}>Cursor</option>
197
- `: html`
198
- <option value="" ?selected=${item.type == ''}>&nbsp;</option>
199
- ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html`<option value=${type} ?selected=${item.type == type}>${type}</option>`)}
200
- `}
197
+ <option value="Cursor" ?selected=${item.type == 'Cursor'}>Cursor</option>
198
+ `
199
+ : html`
200
+ <option value="" ?selected=${item.type == ''}>&nbsp;</option>
201
+ ${[
202
+ 'CHAR',
203
+ 'VARCHAR',
204
+ 'NCHAR',
205
+ 'NVARCHAR',
206
+ 'TEXT',
207
+ 'NTEXT',
208
+ 'TINYINT',
209
+ 'SMALLINT',
210
+ 'INT',
211
+ 'BIGINT',
212
+ 'FLOAT',
213
+ 'REAL',
214
+ 'DECIMAL',
215
+ 'NUMERIC',
216
+ 'MONEY',
217
+ 'SMALLMONEY',
218
+ 'SMALLDATETIME',
219
+ 'DATE',
220
+ 'TIME',
221
+ 'DATETIME',
222
+ 'DATETIME2',
223
+ 'DATETIMEOFFSET'
224
+ ].map(type => html`<option value=${type} ?selected=${item.type == type}>${type}</option>`)}
225
+ `}
201
226
  </select>
202
227
  <input type="text" data-accessor placeholder="accessor" .value=${item.accessor || ''} list="step-list" />
203
228
  <input type="text" data-val placeholder="val" .value=${item.val || ''} />
@@ -225,22 +250,46 @@ export class ThingsEditorProcedureParameters extends OxFormField {
225
250
  <option value="Out">Out</option>
226
251
  </select>
227
252
  <select data-type placeholder="type" value="">
228
- ${dbtype == 'oracle' ? html`
253
+ ${dbtype == 'oracle'
254
+ ? html`
229
255
  <option value="" selected>&nbsp;</option>
230
- <option value="String" >String</option>
231
- <option value="Number" >Number</option>
232
- <option value="Date" >Date</option>
256
+ <option value="String">String</option>
257
+ <option value="Number">Number</option>
258
+ <option value="Date">Date</option>
233
259
  <!--
234
260
  <option value="Buffer">Buffer</option>
235
261
  <option value="Blob">Blob</option>
236
262
  <option value="Clob">Clob</option>
237
263
  -->
238
264
  <option value="Cursor">Cursor</option>
239
- `: html`
265
+ `
266
+ : html`
240
267
  <option value="" selected>&nbsp;</option>
241
- ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html`<option value=${type}>${type}</option>`)}
268
+ ${[
269
+ 'CHAR',
270
+ 'VARCHAR',
271
+ 'NCHAR',
272
+ 'NVARCHAR',
273
+ 'TEXT',
274
+ 'NTEXT',
275
+ 'TINYINT',
276
+ 'SMALLINT',
277
+ 'INT',
278
+ 'BIGINT',
279
+ 'FLOAT',
280
+ 'REAL',
281
+ 'DECIMAL',
282
+ 'NUMERIC',
283
+ 'MONEY',
284
+ 'SMALLMONEY',
285
+ 'SMALLDATETIME',
286
+ 'DATE',
287
+ 'TIME',
288
+ 'DATETIME',
289
+ 'DATETIME2',
290
+ 'DATETIMEOFFSET'
291
+ ].map(type => html`<option value=${type}>${type}</option>`)}
242
292
  `}
243
-
244
293
  </select>
245
294
  <input type="text" data-accessor placeholder="accessor" value="" list="step-list" />
246
295
  <input type="text" data-val placeholder="val" value="" />
@@ -304,7 +353,8 @@ export class ThingsEditorProcedureParameters extends OxFormField {
304
353
 
305
354
  if (
306
355
  /* for oracle */
307
- dir != 'In' && (type == 'String' || type == 'Buffer') &&
356
+ dir != 'In' &&
357
+ (type == 'String' || type == 'Buffer') &&
308
358
  maxSize !== null &&
309
359
  maxSize !== undefined &&
310
360
  !isNaN(maxSize)
@@ -312,7 +362,7 @@ export class ThingsEditorProcedureParameters extends OxFormField {
312
362
  entry.maxSize = maxSize
313
363
  } else if (
314
364
  /* for mssql */
315
- (PARAMETERIZED_TYPES.includes(type)) &&
365
+ PARAMETERIZED_TYPES.includes(type) &&
316
366
  maxSize !== null &&
317
367
  maxSize !== undefined &&
318
368
  !isNaN(maxSize)
@@ -372,14 +422,13 @@ export class ThingsEditorProcedureParameters extends OxFormField {
372
422
  _buildMssqlCode() {
373
423
  const declareClauses = this.parameters
374
424
  ?.map(({ name, dir, type, val, maxSize = 0 }) => {
375
- const ptype =
376
- PARAMETERIZED_TYPES.includes(type) ? `${type}(${maxSize})` : type
425
+ const ptype = PARAMETERIZED_TYPES.includes(type) ? `${type}(${maxSize})` : type
377
426
 
378
427
  if (dir == 'Out') {
379
428
  return `DECLARE @${name} ${ptype};`
380
429
  } else {
381
430
  const pvalue = NUMBERS.includes(type) ? `${val}` : `'${val}'`
382
- return `DECLARE @${name} ${ptype} ${pvalue};`
431
+ return `DECLARE @${name} ${ptype} = ${pvalue};`
383
432
  }
384
433
  })
385
434
  .join('\n')
@@ -15,9 +15,10 @@ import { PageView, store } from '@operato/shell'
15
15
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
16
16
  import { isMobileDevice } from '@operato/utils'
17
17
  import { FetchOption } from '@operato/data-grist'
18
+ import { p13n } from '@operato/p13n'
18
19
 
19
20
  @customElement('connection-page')
20
- export class Connection extends connect(store)(localize(i18next)(PageView)) {
21
+ export class Connection extends connect(store)(p13n(localize(i18next)(PageView))) {
21
22
  static styles = [
22
23
  CommonGristStyles,
23
24
  ScrollbarStyles,
@@ -87,7 +88,9 @@ export class Connection extends connect(store)(localize(i18next)(PageView)) {
87
88
  .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
88
89
  .config=${this.gristConfig}
89
90
  .fetchHandler=${this.fetchHandler.bind(this)}
91
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
90
92
  >
93
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
91
94
  </ox-grist>
92
95
  `
93
96
  }
@@ -16,6 +16,7 @@ import { navigate, PageView, store } from '@operato/shell'
16
16
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
17
17
  import { isMobileDevice } from '@operato/utils'
18
18
  import { FetchOption } from '@operato/data-grist'
19
+ import { p13n } from '@operato/p13n'
19
20
 
20
21
  const DEFAULT_TZ = Intl.DateTimeFormat().resolvedOptions().timeZone
21
22
  const TIMEZONE_OPTIONS = ['', DEFAULT_TZ, ...moment.tz.names().filter(tz => tz !== DEFAULT_TZ)]
@@ -25,7 +26,7 @@ function IS_SCENARIO_RUNNING(state) {
25
26
  }
26
27
 
27
28
  @customElement('scenario-page')
28
- export class Scenario extends connect(store)(localize(i18next)(PageView)) {
29
+ export class Scenario extends connect(store)(p13n(localize(i18next)(PageView))) {
29
30
  static get styles() {
30
31
  return [
31
32
  CommonGristStyles,
@@ -109,7 +110,9 @@ export class Scenario extends connect(store)(localize(i18next)(PageView)) {
109
110
  .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
110
111
  .config=${this.gristConfig}
111
112
  .fetchHandler=${this.fetchHandler.bind(this)}
113
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
112
114
  >
115
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
113
116
  </ox-grist>
114
117
  `
115
118
  }
@@ -6,18 +6,21 @@ import { connect } from 'pwa-helpers/connect-mixin'
6
6
  import gql from 'graphql-tag'
7
7
 
8
8
  import { PageView, store } from '@operato/shell'
9
- import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
9
+ import { CommonHeaderStyles, CommonGristStyles, CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
10
10
  import { ColumnConfig, DataGrist, FetchOption, SortersControl } from '@operato/data-grist'
11
11
  import { client } from '@operato/graphql'
12
12
  import { i18next, localize } from '@operato/i18n'
13
13
  import { notify, openPopup } from '@operato/layout'
14
14
  import { OxPopup, OxPrompt } from '@operato/popup'
15
15
  import { isMobileDevice } from '@operato/utils'
16
+ import { p13n } from '@operato/p13n'
16
17
 
17
18
  @customElement('state-register-page')
18
- export class StateRegisterListPage extends connect(store)(localize(i18next)(PageView)) {
19
+ export class StateRegisterListPage extends connect(store)(p13n(localize(i18next)(PageView))) {
19
20
  static styles = [
20
21
  ScrollbarStyles,
22
+ CommonGristStyles,
23
+ CommonHeaderStyles,
21
24
  css`
22
25
  :host {
23
26
  display: flex;
@@ -69,7 +72,14 @@ export class StateRegisterListPage extends connect(store)(localize(i18next)(Page
69
72
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
70
73
 
71
74
  return html`
72
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>
75
+ <ox-grist
76
+ .mode=${mode}
77
+ .config=${this.gristConfig}
78
+ .fetchHandler=${this.fetchHandler.bind(this)}
79
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
80
+ >
81
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
82
+ </ox-grist>
73
83
  `
74
84
  }
75
85
 
@@ -72,21 +72,46 @@ let ThingsEditorProcedureParameters = class ThingsEditorProcedureParameters exte
72
72
  <option value="Out" ?selected=${item.dir == 'Out'}>Out</option>
73
73
  </select>
74
74
  <select data-type placeholder="type" .value=${item.type}>
75
- ${dbtype == 'oracle' ? html `
76
- <option value="" ?selected=${item.type == ''}>&nbsp;</option>
77
- <option value="String" ?selected=${item.type == 'String'}>String</option>
78
- <option value="Number" ?selected=${item.type == 'Number'}>Number</option>
79
- <option value="Date" ?selected=${item.type == 'Date'}>Date</option>
80
- <!--
75
+ ${dbtype == 'oracle'
76
+ ? html `
77
+ <option value="" ?selected=${item.type == ''}>&nbsp;</option>
78
+ <option value="String" ?selected=${item.type == 'String'}>String</option>
79
+ <option value="Number" ?selected=${item.type == 'Number'}>Number</option>
80
+ <option value="Date" ?selected=${item.type == 'Date'}>Date</option>
81
+ <!--
81
82
  <option value="Buffer" ?selected=${item.type == 'Buffer'}>Buffer</option>
82
83
  <option value="Blob" ?selected=${item.type == 'Blob'}>Blob</option>
83
84
  <option value="Clob" ?selected=${item.type == 'Clob'}>Clob</option>
84
85
  -->
85
- <option value="Cursor" ?selected=${item.type == 'Cursor'}>Cursor</option>
86
- ` : html `
87
- <option value="" ?selected=${item.type == ''}>&nbsp;</option>
88
- ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html `<option value=${type} ?selected=${item.type == type}>${type}</option>`)}
89
- `}
86
+ <option value="Cursor" ?selected=${item.type == 'Cursor'}>Cursor</option>
87
+ `
88
+ : html `
89
+ <option value="" ?selected=${item.type == ''}>&nbsp;</option>
90
+ ${[
91
+ 'CHAR',
92
+ 'VARCHAR',
93
+ 'NCHAR',
94
+ 'NVARCHAR',
95
+ 'TEXT',
96
+ 'NTEXT',
97
+ 'TINYINT',
98
+ 'SMALLINT',
99
+ 'INT',
100
+ 'BIGINT',
101
+ 'FLOAT',
102
+ 'REAL',
103
+ 'DECIMAL',
104
+ 'NUMERIC',
105
+ 'MONEY',
106
+ 'SMALLMONEY',
107
+ 'SMALLDATETIME',
108
+ 'DATE',
109
+ 'TIME',
110
+ 'DATETIME',
111
+ 'DATETIME2',
112
+ 'DATETIMEOFFSET'
113
+ ].map(type => html `<option value=${type} ?selected=${item.type == type}>${type}</option>`)}
114
+ `}
90
115
  </select>
91
116
  <input type="text" data-accessor placeholder="accessor" .value=${item.accessor || ''} list="step-list" />
92
117
  <input type="text" data-val placeholder="val" .value=${item.val || ''} />
@@ -113,22 +138,46 @@ let ThingsEditorProcedureParameters = class ThingsEditorProcedureParameters exte
113
138
  <option value="Out">Out</option>
114
139
  </select>
115
140
  <select data-type placeholder="type" value="">
116
- ${dbtype == 'oracle' ? html `
141
+ ${dbtype == 'oracle'
142
+ ? html `
117
143
  <option value="" selected>&nbsp;</option>
118
- <option value="String" >String</option>
119
- <option value="Number" >Number</option>
120
- <option value="Date" >Date</option>
144
+ <option value="String">String</option>
145
+ <option value="Number">Number</option>
146
+ <option value="Date">Date</option>
121
147
  <!--
122
148
  <option value="Buffer">Buffer</option>
123
149
  <option value="Blob">Blob</option>
124
150
  <option value="Clob">Clob</option>
125
151
  -->
126
152
  <option value="Cursor">Cursor</option>
127
- ` : html `
153
+ `
154
+ : html `
128
155
  <option value="" selected>&nbsp;</option>
129
- ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html `<option value=${type}>${type}</option>`)}
156
+ ${[
157
+ 'CHAR',
158
+ 'VARCHAR',
159
+ 'NCHAR',
160
+ 'NVARCHAR',
161
+ 'TEXT',
162
+ 'NTEXT',
163
+ 'TINYINT',
164
+ 'SMALLINT',
165
+ 'INT',
166
+ 'BIGINT',
167
+ 'FLOAT',
168
+ 'REAL',
169
+ 'DECIMAL',
170
+ 'NUMERIC',
171
+ 'MONEY',
172
+ 'SMALLMONEY',
173
+ 'SMALLDATETIME',
174
+ 'DATE',
175
+ 'TIME',
176
+ 'DATETIME',
177
+ 'DATETIME2',
178
+ 'DATETIMEOFFSET'
179
+ ].map(type => html `<option value=${type}>${type}</option>`)}
130
180
  `}
131
-
132
181
  </select>
133
182
  <input type="text" data-accessor placeholder="accessor" value="" list="step-list" />
134
183
  <input type="text" data-val placeholder="val" value="" />
@@ -183,7 +232,8 @@ let ThingsEditorProcedureParameters = class ThingsEditorProcedureParameters exte
183
232
  };
184
233
  if (
185
234
  /* for oracle */
186
- dir != 'In' && (type == 'String' || type == 'Buffer') &&
235
+ dir != 'In' &&
236
+ (type == 'String' || type == 'Buffer') &&
187
237
  maxSize !== null &&
188
238
  maxSize !== undefined &&
189
239
  !isNaN(maxSize)) {
@@ -191,7 +241,7 @@ let ThingsEditorProcedureParameters = class ThingsEditorProcedureParameters exte
191
241
  }
192
242
  else if (
193
243
  /* for mssql */
194
- (PARAMETERIZED_TYPES.includes(type)) &&
244
+ PARAMETERIZED_TYPES.includes(type) &&
195
245
  maxSize !== null &&
196
246
  maxSize !== undefined &&
197
247
  !isNaN(maxSize)) {
@@ -242,7 +292,7 @@ let ThingsEditorProcedureParameters = class ThingsEditorProcedureParameters exte
242
292
  }
243
293
  else {
244
294
  const pvalue = NUMBERS.includes(type) ? `${val}` : `'${val}'`;
245
- return `DECLARE @${name} ${ptype} ${pvalue};`;
295
+ return `DECLARE @${name} ${ptype} = ${pvalue};`;
246
296
  }
247
297
  }).join('\n');
248
298
  const execClause = [
@@ -1 +1 @@
1
- {"version":3,"file":"things-editor-db-procedure.js","sourceRoot":"","sources":["../../client/editors/things-editor-db-procedure.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/web/icon/icon.js'\n\nimport '@operato/i18n/ox-i18n.js'\nimport { css, html } from 'lit'\nimport { customElement, property, queryAll, state } from 'lit/decorators.js'\n\nimport { OxFormField } from '@operato/input'\n\ntype ProcedureParameterType = {\n name: string\n dir: string\n type: string\n val?: any\n accessor?: string\n maxSize?: number\n}\n\ntype ValueType = {\n code?: string\n procedure?: string\n parameters?: ProcedureParameterType[]\n}\n\nconst NUMBERS = ['TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'READ', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY']\nconst PARAMETERIZED_TYPES = ['NCHAR', 'VARCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'DECIMAL', 'NUMERIC']\n\n/**\n input component for procedure-parameters\n \n Example:\n \n <things-editor-db-procedure \n value=${map}\n </things-editor-db-procedure>\n */\n@customElement('things-editor-db-procedure')\nexport class ThingsEditorProcedureParameters extends OxFormField {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n margin-bottom: var(--spacing-large);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--spacing-medium);\n margin-bottom: var(--spacing-small);\n }\n\n pre {\n flex: 1;\n background-color: #333;\n color: white;\n margin: 0;\n padding: 4px 6px;\n font-size: 1.5em;\n display: flex;\n border-radius: var(--spacing-small);\n }\n\n code {\n flex: 1;\n white-space: pre;\n min-height: 32px;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--spacing-small) var(--spacing-medium);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n\n button + button {\n margin-left: -5px;\n }\n\n button md-icon {\n --md-icon-size: var(--fontsize-default);\n }\n\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--md-sys-color-on-primary);\n }\n\n input {\n flex: 1;\n border: 0;\n border-bottom: var(--border-dim-color);\n padding: var(--input-padding);\n font: var(--input-font);\n min-width: 50px;\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--md-sys-color-primary);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n select,\n ox-select,\n input:not([type='checkbox']) {\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n }\n `\n ]\n\n @property({ type: Object }) value: ValueType = {}\n @property({ type: Array }) steps: string[] = []\n @property({ type: String }) dbtype: 'oracle' | 'mssql' = 'oracle'\n\n @state() private procedure?: string = ''\n @state() private parameters?: ProcedureParameterType[] = []\n private _changingNow: boolean = false\n\n @queryAll('[data-record]') records!: NodeListOf<HTMLElement>\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n render() {\n const code = this.value?.code || ''\n const parameters = this.parameters || []\n const procedure = this.procedure || ''\n const dbtype = this.dbtype || 'oracle'\n\n const steps = this.steps || []\n\n return html`\n <div>\n <label><ox-i18n msgid=\"label.procedure-code\"></ox-i18n></label>\n </div>\n\n <div>\n <pre>\n <code>${code}</code>\n </pre\n >\n </div>\n\n <div>\n <label><ox-i18n msgid=\"label.procedure-name\"></ox-i18n></label>\n </div>\n\n <div>\n <input type=\"text\" data-procedure .value=${procedure} />\n </div>\n\n <div>\n <label><ox-i18n msgid=\"label.parameters\"></ox-i18n></label>\n </div>\n\n ${parameters.map(\n item => html`\n <div data-record>\n <input type=\"text\" data-name placeholder=\"name\" .value=${item.name} />\n <select data-dir placeholder=\"dir\" .value=${item.dir}>\n <option value=\"\" ?selected=${item.dir == ''}>&nbsp;</option>\n <option value=\"In\" ?selected=${item.dir == 'In'}>In</option>\n <option value=\"Inout\" ?selected=${item.dir == 'Inout'}>Inout</option>\n <option value=\"Out\" ?selected=${item.dir == 'Out'}>Out</option>\n </select>\n <select data-type placeholder=\"type\" .value=${item.type}>\n ${dbtype == 'oracle' ? html`\n <option value=\"\" ?selected=${item.type == ''}>&nbsp;</option>\n <option value=\"String\" ?selected=${item.type == 'String'}>String</option>\n <option value=\"Number\" ?selected=${item.type == 'Number'}>Number</option>\n <option value=\"Date\" ?selected=${item.type == 'Date'}>Date</option>\n <!-- \n <option value=\"Buffer\" ?selected=${item.type == 'Buffer'}>Buffer</option>\n <option value=\"Blob\" ?selected=${item.type == 'Blob'}>Blob</option>\n <option value=\"Clob\" ?selected=${item.type == 'Clob'}>Clob</option>\n -->\n <option value=\"Cursor\" ?selected=${item.type == 'Cursor'}>Cursor</option>\n `: html`\n <option value=\"\" ?selected=${item.type == ''}>&nbsp;</option>\n ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html`<option value=${type} ?selected=${item.type == type}>${type}</option>`)}\n `}\n </select>\n <input type=\"text\" data-accessor placeholder=\"accessor\" .value=${item.accessor || ''} list=\"step-list\" />\n <input type=\"text\" data-val placeholder=\"val\" .value=${item.val || ''} />\n <input type=\"number\" data-max-size placeholder=\"max-size\" .value=${String(item.maxSize)} />\n\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._delete(e)} tabindex=\"-1\">\n <md-icon>remove</md-icon>\n </button>\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._up(e)} tabindex=\"-1\">\n <md-icon>arrow_upward</md-icon>\n </button>\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._down(e)} tabindex=\"-1\">\n <md-icon>arrow_downward</md-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record-new>\n <input type=\"text\" data-name placeholder=\"name\" value=\"\" />\n <select data-dir placeholder=\"dir\">\n <option value=\"\" selected>&nbsp;</option>\n <option value=\"In\">In</option>\n <option value=\"Inout\">Inout</option>\n <option value=\"Out\">Out</option>\n </select>\n <select data-type placeholder=\"type\" value=\"\">\n ${dbtype == 'oracle' ? html`\n <option value=\"\" selected>&nbsp;</option>\n <option value=\"String\" >String</option>\n <option value=\"Number\" >Number</option>\n <option value=\"Date\" >Date</option>\n <!-- \n <option value=\"Buffer\">Buffer</option>\n <option value=\"Blob\">Blob</option>\n <option value=\"Clob\">Clob</option>\n -->\n <option value=\"Cursor\">Cursor</option>\n `: html`\n <option value=\"\" selected>&nbsp;</option>\n ${['CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'REAL', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY', 'SMALLDATETIME', 'DATE', 'TIME', 'DATETIME', 'DATETIME2', 'DATETIMEOFFSET'].map(type => html`<option value=${type}>${type}</option>`)}\n `}\n\n </select>\n <input type=\"text\" data-accessor placeholder=\"accessor\" value=\"\" list=\"step-list\" />\n <input type=\"text\" data-val placeholder=\"val\" value=\"\" />\n <input type=\"number\" data-max-size placeholder=\"max-size\" value=\"\" />\n\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._add()} tabindex=\"-1\">\n <md-icon>add</md-icon>\n </button>\n <button class=\"hidden\"><md-icon>add</md-icon></button>\n <button class=\"hidden\"><md-icon>add</md-icon></button>\n </div>\n\n <datalist id=\"step-list\">${steps.map(id => html` <option value=${id}></option> `)}</datalist>\n `\n }\n\n updated(changes: any) {\n if (changes.has('value')) {\n /* 하위 호환성때문에, Array타입 값을 처리하도록 함. 다음 마이너 업그레이드시에 제거할 것. */\n const value = (Array.isArray(this.value) ? { parameters: this.value } : this.value) as ValueType\n\n const { procedure, parameters } = value || {}\n\n this.procedure = procedure\n this.parameters = parameters\n }\n }\n\n _onChange(e: Event) {\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n\n if (input.hasAttribute('data-procedure')) {\n this.procedure = input.value\n this._updateValue()\n } else {\n const record = (e.target as Element).closest('[data-record],[data-record-new]') as HTMLElement\n\n if (record.hasAttribute('data-record')) {\n this._build()\n } else if (record.hasAttribute('data-record-new') && input.hasAttribute('data-type')) {\n this._add()\n }\n }\n\n this._changingNow = false\n }\n\n _adjust({ name, type, dir, maxSize, val, accessor }: ProcedureParameterType): ProcedureParameterType {\n const entry = {\n name: name && String(name).trim(),\n type,\n dir,\n accessor: accessor && String(accessor).trim()\n } as ProcedureParameterType\n\n if (\n /* for oracle */\n dir != 'In' && (type == 'String' || type == 'Buffer') &&\n maxSize !== null &&\n maxSize !== undefined &&\n !isNaN(maxSize)\n ) {\n entry.maxSize = maxSize\n } else if (\n /* for mssql */\n (PARAMETERIZED_TYPES.includes(type)) &&\n maxSize !== null &&\n maxSize !== undefined &&\n !isNaN(maxSize)\n ) {\n entry.maxSize = maxSize\n }\n\n if (dir != 'Out' && val !== null && val !== undefined && val != '') {\n entry.val = type == 'Number' || NUMBERS.includes(type) ? Number(val) : val\n }\n\n return entry\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]') as NodeListOf<HTMLElement>\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]') as NodeListOf<HTMLElement>\n }\n\n var newmap: ProcedureParameterType[] = []\n\n for (var i = 0; i < records.length; i++) {\n var record = records[i]\n\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n const inputs = record.querySelectorAll(\n '[data-type]:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement>\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n if (name) {\n newmap.push(this._adjust({ name, type, dir, val, accessor, maxSize }))\n }\n }\n\n this.parameters = newmap\n this._updateValue()\n }\n\n _buildOracleCode() {\n const args = (this.parameters || []).map(p => ':' + p.name).join(', ')\n\n return `${this.procedure}(${args});`\n }\n\n _buildMssqlCode() {\n const declareClauses = this.parameters\n ?.map(({ name, dir, type, val, maxSize = 0 }) => {\n const ptype =\n PARAMETERIZED_TYPES.includes(type) ? `${type}(${maxSize})` : type\n\n if (dir == 'Out') {\n return `DECLARE @${name} ${ptype};`\n } else {\n const pvalue = NUMBERS.includes(type) ? `${val}` : `'${val}'`\n return `DECLARE @${name} ${ptype} ${pvalue};`\n }\n })\n .join('\\n')\n\n const execClause =\n [\n `EXEC ${this.procedure}`,\n ...(this.parameters?.map(({ name, dir }, index, array) => {\n const period = index === array.length - 1 ? '' : ','\n\n if (dir == 'In') {\n return ` @${name} = @${name}${period}`\n } else {\n return ` @${name} = @${name} OUTPUT${period}`\n }\n }) || [])\n ].join('\\n') + ';'\n\n const seleceClause =\n `SELECT ` +\n this.parameters\n ?.filter(({ dir }) => dir !== 'In')\n .map(({ name }, index, array) => {\n const period = index === array.length - 1 ? '' : ','\n\n return `@${name} AS ${name}${period}`\n })\n .join(' ') +\n ';'\n\n return [declareClauses, execClause, seleceClause].filter(Boolean).join('\\n\\n')\n }\n\n _updateValue() {\n this.value = {\n code: this.dbtype == 'oracle' ? this._buildOracleCode() : this._buildMssqlCode(),\n procedure: this.procedure,\n parameters: this.parameters\n }\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n\n const inputs = this.renderRoot.querySelectorAll(\n '[data-record-new] input:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement & { value: any }>\n\n for (var i = 0; i < inputs.length; i++) {\n let input = inputs[i]\n\n input.value = ''\n }\n\n inputs[0].focus()\n }\n\n _delete(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n\n ;(record!.querySelector('[data-name]') as HTMLInputElement)!.value = ''\n\n this._build()\n }\n\n _up(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n const array = Array.from(this.records)\n const index = array.indexOf(record) - 1\n\n if (index < 0) {\n return\n }\n\n const deleted = array.splice(index, 1)\n array.splice(index + 1, 0, ...deleted)\n\n this.parameters = array.map(record => {\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n return this._adjust({ name, dir, type, val, accessor, maxSize })\n })\n\n this._updateValue()\n }\n\n _down(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n const array = Array.from(this.records)\n const index = array.indexOf(record)\n\n if (index > array.length) {\n return\n }\n\n array.splice(index, 1)\n array.splice(index + 1, 0, record)\n\n this.parameters = array.map(record => {\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n return this._adjust({ name, dir, type, val, accessor, maxSize })\n })\n\n this._updateValue()\n }\n}\n"]}
1
+ {"version":3,"file":"things-editor-db-procedure.js","sourceRoot":"","sources":["../../client/editors/things-editor-db-procedure.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/web/icon/icon.js'\n\nimport '@operato/i18n/ox-i18n.js'\nimport { css, html } from 'lit'\nimport { customElement, property, queryAll, state } from 'lit/decorators.js'\n\nimport { OxFormField } from '@operato/input'\n\ntype ProcedureParameterType = {\n name: string\n dir: string\n type: string\n val?: any\n accessor?: string\n maxSize?: number\n}\n\ntype ValueType = {\n code?: string\n procedure?: string\n parameters?: ProcedureParameterType[]\n}\n\nconst NUMBERS = ['TINYINT', 'SMALLINT', 'INT', 'BIGINT', 'FLOAT', 'READ', 'DECIMAL', 'NUMERIC', 'MONEY', 'SMALLMONEY']\nconst PARAMETERIZED_TYPES = ['NCHAR', 'VARCHAR', 'NVARCHAR', 'TEXT', 'NTEXT', 'DECIMAL', 'NUMERIC']\n\n/**\n input component for procedure-parameters\n \n Example:\n \n <things-editor-db-procedure \n value=${map}\n </things-editor-db-procedure>\n */\n@customElement('things-editor-db-procedure')\nexport class ThingsEditorProcedureParameters extends OxFormField {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n margin-bottom: var(--spacing-large);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--spacing-medium);\n margin-bottom: var(--spacing-small);\n }\n\n pre {\n flex: 1;\n background-color: #333;\n color: white;\n margin: 0;\n padding: 4px 6px;\n font-size: 1.5em;\n display: flex;\n border-radius: var(--spacing-small);\n }\n\n code {\n flex: 1;\n white-space: pre;\n min-height: 32px;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--spacing-small) var(--spacing-medium);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n\n button + button {\n margin-left: -5px;\n }\n\n button md-icon {\n --md-icon-size: var(--fontsize-default);\n }\n\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--md-sys-color-on-primary);\n }\n\n input {\n flex: 1;\n border: 0;\n border-bottom: var(--border-dim-color);\n padding: var(--input-padding);\n font: var(--input-font);\n min-width: 50px;\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--md-sys-color-primary);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n select,\n ox-select,\n input:not([type='checkbox']) {\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n }\n `\n ]\n\n @property({ type: Object }) value: ValueType = {}\n @property({ type: Array }) steps: string[] = []\n @property({ type: String }) dbtype: 'oracle' | 'mssql' = 'oracle'\n\n @state() private procedure?: string = ''\n @state() private parameters?: ProcedureParameterType[] = []\n private _changingNow: boolean = false\n\n @queryAll('[data-record]') records!: NodeListOf<HTMLElement>\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n render() {\n const code = this.value?.code || ''\n const parameters = this.parameters || []\n const procedure = this.procedure || ''\n const dbtype = this.dbtype || 'oracle'\n\n const steps = this.steps || []\n\n return html`\n <div>\n <label><ox-i18n msgid=\"label.procedure-code\"></ox-i18n></label>\n </div>\n\n <div>\n <pre>\n <code>${code}</code>\n </pre\n >\n </div>\n\n <div>\n <label><ox-i18n msgid=\"label.procedure-name\"></ox-i18n></label>\n </div>\n\n <div>\n <input type=\"text\" data-procedure .value=${procedure} />\n </div>\n\n <div>\n <label><ox-i18n msgid=\"label.parameters\"></ox-i18n></label>\n </div>\n\n ${parameters.map(\n item => html`\n <div data-record>\n <input type=\"text\" data-name placeholder=\"name\" .value=${item.name} />\n <select data-dir placeholder=\"dir\" .value=${item.dir}>\n <option value=\"\" ?selected=${item.dir == ''}>&nbsp;</option>\n <option value=\"In\" ?selected=${item.dir == 'In'}>In</option>\n <option value=\"Inout\" ?selected=${item.dir == 'Inout'}>Inout</option>\n <option value=\"Out\" ?selected=${item.dir == 'Out'}>Out</option>\n </select>\n <select data-type placeholder=\"type\" .value=${item.type}>\n ${dbtype == 'oracle'\n ? html`\n <option value=\"\" ?selected=${item.type == ''}>&nbsp;</option>\n <option value=\"String\" ?selected=${item.type == 'String'}>String</option>\n <option value=\"Number\" ?selected=${item.type == 'Number'}>Number</option>\n <option value=\"Date\" ?selected=${item.type == 'Date'}>Date</option>\n <!-- \n <option value=\"Buffer\" ?selected=${item.type == 'Buffer'}>Buffer</option>\n <option value=\"Blob\" ?selected=${item.type == 'Blob'}>Blob</option>\n <option value=\"Clob\" ?selected=${item.type == 'Clob'}>Clob</option>\n -->\n <option value=\"Cursor\" ?selected=${item.type == 'Cursor'}>Cursor</option>\n `\n : html`\n <option value=\"\" ?selected=${item.type == ''}>&nbsp;</option>\n ${[\n 'CHAR',\n 'VARCHAR',\n 'NCHAR',\n 'NVARCHAR',\n 'TEXT',\n 'NTEXT',\n 'TINYINT',\n 'SMALLINT',\n 'INT',\n 'BIGINT',\n 'FLOAT',\n 'REAL',\n 'DECIMAL',\n 'NUMERIC',\n 'MONEY',\n 'SMALLMONEY',\n 'SMALLDATETIME',\n 'DATE',\n 'TIME',\n 'DATETIME',\n 'DATETIME2',\n 'DATETIMEOFFSET'\n ].map(type => html`<option value=${type} ?selected=${item.type == type}>${type}</option>`)}\n `}\n </select>\n <input type=\"text\" data-accessor placeholder=\"accessor\" .value=${item.accessor || ''} list=\"step-list\" />\n <input type=\"text\" data-val placeholder=\"val\" .value=${item.val || ''} />\n <input type=\"number\" data-max-size placeholder=\"max-size\" .value=${String(item.maxSize)} />\n\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._delete(e)} tabindex=\"-1\">\n <md-icon>remove</md-icon>\n </button>\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._up(e)} tabindex=\"-1\">\n <md-icon>arrow_upward</md-icon>\n </button>\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._down(e)} tabindex=\"-1\">\n <md-icon>arrow_downward</md-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record-new>\n <input type=\"text\" data-name placeholder=\"name\" value=\"\" />\n <select data-dir placeholder=\"dir\">\n <option value=\"\" selected>&nbsp;</option>\n <option value=\"In\">In</option>\n <option value=\"Inout\">Inout</option>\n <option value=\"Out\">Out</option>\n </select>\n <select data-type placeholder=\"type\" value=\"\">\n ${dbtype == 'oracle'\n ? html`\n <option value=\"\" selected>&nbsp;</option>\n <option value=\"String\">String</option>\n <option value=\"Number\">Number</option>\n <option value=\"Date\">Date</option>\n <!-- \n <option value=\"Buffer\">Buffer</option>\n <option value=\"Blob\">Blob</option>\n <option value=\"Clob\">Clob</option>\n -->\n <option value=\"Cursor\">Cursor</option>\n `\n : html`\n <option value=\"\" selected>&nbsp;</option>\n ${[\n 'CHAR',\n 'VARCHAR',\n 'NCHAR',\n 'NVARCHAR',\n 'TEXT',\n 'NTEXT',\n 'TINYINT',\n 'SMALLINT',\n 'INT',\n 'BIGINT',\n 'FLOAT',\n 'REAL',\n 'DECIMAL',\n 'NUMERIC',\n 'MONEY',\n 'SMALLMONEY',\n 'SMALLDATETIME',\n 'DATE',\n 'TIME',\n 'DATETIME',\n 'DATETIME2',\n 'DATETIMEOFFSET'\n ].map(type => html`<option value=${type}>${type}</option>`)}\n `}\n </select>\n <input type=\"text\" data-accessor placeholder=\"accessor\" value=\"\" list=\"step-list\" />\n <input type=\"text\" data-val placeholder=\"val\" value=\"\" />\n <input type=\"number\" data-max-size placeholder=\"max-size\" value=\"\" />\n\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._add()} tabindex=\"-1\">\n <md-icon>add</md-icon>\n </button>\n <button class=\"hidden\"><md-icon>add</md-icon></button>\n <button class=\"hidden\"><md-icon>add</md-icon></button>\n </div>\n\n <datalist id=\"step-list\">${steps.map(id => html` <option value=${id}></option> `)}</datalist>\n `\n }\n\n updated(changes: any) {\n if (changes.has('value')) {\n /* 하위 호환성때문에, Array타입 값을 처리하도록 함. 다음 마이너 업그레이드시에 제거할 것. */\n const value = (Array.isArray(this.value) ? { parameters: this.value } : this.value) as ValueType\n\n const { procedure, parameters } = value || {}\n\n this.procedure = procedure\n this.parameters = parameters\n }\n }\n\n _onChange(e: Event) {\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n\n if (input.hasAttribute('data-procedure')) {\n this.procedure = input.value\n this._updateValue()\n } else {\n const record = (e.target as Element).closest('[data-record],[data-record-new]') as HTMLElement\n\n if (record.hasAttribute('data-record')) {\n this._build()\n } else if (record.hasAttribute('data-record-new') && input.hasAttribute('data-type')) {\n this._add()\n }\n }\n\n this._changingNow = false\n }\n\n _adjust({ name, type, dir, maxSize, val, accessor }: ProcedureParameterType): ProcedureParameterType {\n const entry = {\n name: name && String(name).trim(),\n type,\n dir,\n accessor: accessor && String(accessor).trim()\n } as ProcedureParameterType\n\n if (\n /* for oracle */\n dir != 'In' &&\n (type == 'String' || type == 'Buffer') &&\n maxSize !== null &&\n maxSize !== undefined &&\n !isNaN(maxSize)\n ) {\n entry.maxSize = maxSize\n } else if (\n /* for mssql */\n PARAMETERIZED_TYPES.includes(type) &&\n maxSize !== null &&\n maxSize !== undefined &&\n !isNaN(maxSize)\n ) {\n entry.maxSize = maxSize\n }\n\n if (dir != 'Out' && val !== null && val !== undefined && val != '') {\n entry.val = type == 'Number' || NUMBERS.includes(type) ? Number(val) : val\n }\n\n return entry\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]') as NodeListOf<HTMLElement>\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]') as NodeListOf<HTMLElement>\n }\n\n var newmap: ProcedureParameterType[] = []\n\n for (var i = 0; i < records.length; i++) {\n var record = records[i]\n\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n const inputs = record.querySelectorAll(\n '[data-type]:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement>\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n if (name) {\n newmap.push(this._adjust({ name, type, dir, val, accessor, maxSize }))\n }\n }\n\n this.parameters = newmap\n this._updateValue()\n }\n\n _buildOracleCode() {\n const args = (this.parameters || []).map(p => ':' + p.name).join(', ')\n\n return `${this.procedure}(${args});`\n }\n\n _buildMssqlCode() {\n const declareClauses = this.parameters\n ?.map(({ name, dir, type, val, maxSize = 0 }) => {\n const ptype = PARAMETERIZED_TYPES.includes(type) ? `${type}(${maxSize})` : type\n\n if (dir == 'Out') {\n return `DECLARE @${name} ${ptype};`\n } else {\n const pvalue = NUMBERS.includes(type) ? `${val}` : `'${val}'`\n return `DECLARE @${name} ${ptype} = ${pvalue};`\n }\n })\n .join('\\n')\n\n const execClause =\n [\n `EXEC ${this.procedure}`,\n ...(this.parameters?.map(({ name, dir }, index, array) => {\n const period = index === array.length - 1 ? '' : ','\n\n if (dir == 'In') {\n return ` @${name} = @${name}${period}`\n } else {\n return ` @${name} = @${name} OUTPUT${period}`\n }\n }) || [])\n ].join('\\n') + ';'\n\n const seleceClause =\n `SELECT ` +\n this.parameters\n ?.filter(({ dir }) => dir !== 'In')\n .map(({ name }, index, array) => {\n const period = index === array.length - 1 ? '' : ','\n\n return `@${name} AS ${name}${period}`\n })\n .join(' ') +\n ';'\n\n return [declareClauses, execClause, seleceClause].filter(Boolean).join('\\n\\n')\n }\n\n _updateValue() {\n this.value = {\n code: this.dbtype == 'oracle' ? this._buildOracleCode() : this._buildMssqlCode(),\n procedure: this.procedure,\n parameters: this.parameters\n }\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n\n const inputs = this.renderRoot.querySelectorAll(\n '[data-record-new] input:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement & { value: any }>\n\n for (var i = 0; i < inputs.length; i++) {\n let input = inputs[i]\n\n input.value = ''\n }\n\n inputs[0].focus()\n }\n\n _delete(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n\n ;(record!.querySelector('[data-name]') as HTMLInputElement)!.value = ''\n\n this._build()\n }\n\n _up(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n const array = Array.from(this.records)\n const index = array.indexOf(record) - 1\n\n if (index < 0) {\n return\n }\n\n const deleted = array.splice(index, 1)\n array.splice(index + 1, 0, ...deleted)\n\n this.parameters = array.map(record => {\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n return this._adjust({ name, dir, type, val, accessor, maxSize })\n })\n\n this._updateValue()\n }\n\n _down(e: MouseEvent) {\n const record = (e.target as Element).closest('[data-record]') as HTMLElement\n const array = Array.from(this.records)\n const index = array.indexOf(record)\n\n if (index > array.length) {\n return\n }\n\n array.splice(index, 1)\n array.splice(index + 1, 0, record)\n\n this.parameters = array.map(record => {\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n const dir = (record.querySelector('[data-dir]') as HTMLInputElement).value\n const type = (record.querySelector('[data-type]') as HTMLInputElement).value\n const val = (record.querySelector('[data-val]') as HTMLInputElement).value\n const accessor = (record.querySelector('[data-accessor]') as HTMLInputElement).value\n const maxSize = (record.querySelector('[data-max-size]') as HTMLInputElement).valueAsNumber\n\n return this._adjust({ name, dir, type, val, accessor, maxSize })\n })\n\n this._updateValue()\n }\n}\n"]}
@@ -9,6 +9,11 @@ declare const Connection_base: (new (...args: any[]) => {
9
9
  disconnectedCallback(): void;
10
10
  stateChanged(_state: unknown): void;
11
11
  readonly isConnected: boolean;
12
+ }) & (new (...args: any[]) => {
13
+ __preferenceProviders: {
14
+ [element: string]: import("@operato/p13n").PagePreferenceProvider;
15
+ };
16
+ getPagePreferenceProvider(element: string): import("@operato/p13n").PagePreferenceProvider | undefined;
12
17
  }) & (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
13
18
  export declare class Connection extends Connection_base {
14
19
  static styles: import("lit").CSSResult[];
@@ -13,7 +13,8 @@ import { i18next, localize } from '@operato/i18n';
13
13
  import { PageView, store } from '@operato/shell';
14
14
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
15
15
  import { isMobileDevice } from '@operato/utils';
16
- let Connection = class Connection extends connect(store)(localize(i18next)(PageView)) {
16
+ import { p13n } from '@operato/p13n';
17
+ let Connection = class Connection extends connect(store)(p13n(localize(i18next)(PageView))) {
17
18
  constructor() {
18
19
  super(...arguments);
19
20
  this.active = false;
@@ -55,7 +56,9 @@ let Connection = class Connection extends connect(store)(localize(i18next)(PageV
55
56
  .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
56
57
  .config=${this.gristConfig}
57
58
  .fetchHandler=${this.fetchHandler.bind(this)}
59
+ .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')}
58
60
  >
61
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
59
62
  </ox-grist>
60
63
  `;
61
64
  }