1
+
2
+ const vscode = require ( `vscode` ) ;
3
+ const Tools = require ( `../tools` ) ;
4
+
5
+ const Statement = require ( `../../database/statement` ) ;
6
+ const Trigger = require ( `../../database/trigger` ) ;
7
+
8
+ const checkValues = {
9
+ N : `None` ,
10
+ C : `Cascaded` ,
11
+ Y : `Local`
12
+ }
13
+
14
+ module . exports = class ViewPanel {
15
+ /**
16
+ * @param {string } schema
17
+ * @param {string } trigger
18
+ * @param {vscode.Uri } extensionUri
19
+ */
20
+ constructor ( schema , trigger , extensionUri ) {
21
+ this . schema = schema ;
22
+ this . trigger = trigger ;
23
+
24
+ this . extensionUri = extensionUri ;
25
+
26
+ /** @type {vscode.WebviewPanel } */
27
+ this . panel = undefined ;
28
+ }
29
+
30
+ async render ( ) {
31
+ if ( this . panel ) return ;
32
+
33
+ this . panel = vscode . window . createWebviewPanel (
34
+ `view` ,
35
+ `View ${ this . trigger } ` ,
36
+ vscode . ViewColumn . Active ,
37
+ {
38
+ enableScripts : true ,
39
+ }
40
+ ) ;
41
+
42
+ this . panel . webview . html = Tools . getLoadingHTML ( this . panel . webview , this . extensionUri ) ;
43
+ this . panel . webview . html = await this . _getContent ( ) ;
44
+ }
45
+
46
+ async _getContent ( ) {
47
+ const toolkitUri = Tools . getUri ( this . panel . webview , this . extensionUri , [
48
+ `node_modules` ,
49
+ `@vscode` ,
50
+ `webview-ui-toolkit` ,
51
+ `dist` ,
52
+ `toolkit.js` ,
53
+ ] ) ;
54
+
55
+ const trigger = new Trigger ( this . schema , this . trigger ) ;
56
+
57
+ Tools . setLoadingText ( this . panel . webview , `Fetching base info` ) ;
58
+ const info = await trigger . getInfo ( ) ;
59
+
60
+ Tools . setLoadingText ( this . panel . webview , `Rendering` ) ;
61
+
62
+ return /*html*/ `
63
+ <!DOCTYPE html>
64
+ <html lang="en">
65
+ <head>
66
+ <meta charset="UTF-8">
67
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
68
+ <script type="module" src="${ toolkitUri } "></script>
69
+ <style type="text/css">
70
+ .component {
71
+ margin-bottom: 0.5rem;
72
+ }
73
+ </style>
74
+ <script>
75
+ </script>
76
+ <title>Table</title>
77
+ </head>
78
+ <body>
79
+ <section class="tables">
80
+ ${ Tools . generateTabs ( [
81
+ {
82
+ title : `View` ,
83
+ content : Tools . generateFields ( [
84
+ {
85
+ label : `Table name` ,
86
+ value : info . EVENT_OBJECT_TABLE ,
87
+ } ,
88
+ {
89
+ label : `Table schema` ,
90
+ value : info . EVENT_OBJECT_SCHEMA ,
91
+ } ,
92
+ {
93
+ label : `Program name` ,
94
+ value : info . TRIGGER_PROGRAM_NAME
95
+ } ,
96
+ {
97
+ label : `Program schema` ,
98
+ value : info . TRIGGER_PROGRAM_LIBRARY
99
+ } ,
100
+ {
101
+ label : `Enabled` ,
102
+ value : info . ENABLED === `Y` ? `Yes` : `No`
103
+ } ,
104
+ {
105
+ label : `Considerd secure for row and column access control` ,
106
+ value : info . SECURE === `Y` ? `Yes` : `No`
107
+ } ,
108
+ {
109
+ label : `Called on both Db2 Mirror nodes` ,
110
+ value : info . MIRRORED === `Y` ? `Yes` : `No`
111
+ } ,
112
+ {
113
+ label : `Event` ,
114
+ value : info . EVENT_MANIPULATION
115
+ } ,
116
+ {
117
+ label : `When to run` ,
118
+ value : info . ACTION_TIMING
119
+ } ,
120
+ {
121
+ label : `Multi-threaded job action` ,
122
+ value : info . MULTITHREADED_JOB_ACTION
123
+ } ,
124
+ {
125
+ label : `Created` ,
126
+ value : info . CREATED ,
127
+ size : 50
128
+ } ,
129
+ {
130
+ label : `Definer` ,
131
+ value : info . TRIGGER_DEFINER
132
+ } ,
133
+ {
134
+ label : `Text` ,
135
+ value : info . TRIGGER_TEXT ,
136
+ size : 50
137
+ } ,
138
+ {
139
+ label : `Comment` ,
140
+ value : info . LONG_COMMENT ,
141
+ size : 50
142
+ }
143
+ ] )
144
+ }
145
+ ] ) }
146
+ </section>
147
+ </body>
148
+ </html>
149
+ ` ;
150
+ }
151
+ }
0 commit comments