Vue.component("action-editor", {
template: '<template>     <div style="overflow: hidden;">         <vv-notice ref=\'notice\'></vv-notice>         <vv-msql-queryresult v-show="false" ref="shared_msql_queryresult"></vv-msql-queryresult>          <q-tabs v-model="item_idx" dense align="left" class="bg-white text-primary" :breakpoint="0">             <q-tab dense v-for="item in items" :label="item.rid ? (item.data === item.data_edit ? item.rid : \'*\'.concat(item.rid)) : \'* <new>\'" :name="item.idx" content-class="button-for-qtab">                 <q-btn icon="icon-el-cancel" color="primary" flat dense size=\'xs\' style="margin: 0px 0px 0px 5px;" @click.stop.prevent=editor_on_close(item)></q-btn>             </q-tab>         </q-tabs>          <q-tab-panels v-model="item_idx" animated>             <q-tab-panel v-for="item in items" :name="item.idx" style=\'height: calc(100vh - 100px); overflow: hidden;\'>                 <q-btn-dropdown v-show="item.sections().length > 1" style="width: 180px;" flat dropdown-icon="icon-eo-down-open" color="primary" :label="item.sections().find(f => f.type === item.section_type).text">                     <q-list>                         <q-item v-for="section in item.sections()" clickable v-close-popup @click="editor_on_select_section(item, section)">                             <q-item-section>                                 <q-item-label>{{section.text}}</q-item-label>                             </q-item-section>                         </q-item>                     </q-list>                 </q-btn-dropdown>                  <vv-monaco-editor ref="monaco_editor_action"                     v-if=\'item.section_type === "action"\'                     style=\'height: calc(100vh - 150px)\'                     v-model = \'item.data_edit\'                     lang=\'vvlorryaction\'                     theme=\'theme-for-vvlorryaction\'                     :monaco="on_monaco_init"                     :options=\'{minimap: {enabled: false}, suggest: {showWords: false}, scrollbar: {vertical: "visible", horizontal: "visible"}}\'                     :state=\'item.monaco_editor_action_state\'                     @state_changed = \'(value) => {item.monaco_editor_action_state = value}\'                 ></vv-monaco-editor>                 <div v-if=\'item.section_type === "test_error"\'>                     {{item.test.error}}                 </div>                 <vv-monaco-editor v-if=\'item.section_type === "test_query"\'                     style=\'height: calc(100vh - 150px)\'                     v-model = \'item.test.query\'                     lang=\'sql\'                     :options=\'{minimap: {enabled: false}, suggest: {showWords: false}, scrollbar: {vertical: "visible", horizontal: "visible"}}\'                     :state=\'item.monaco_editor_action_test_query\'                     @state_changed = \'(value) => {item.monaco_editor_action_test_query = value}\'                 ></vv-monaco-editor>                 <vv-monaco-editor v-if=\'item.section_type === "test_json"\'                     style=\'height: calc(100vh - 150px)\'                     v-model = \'item.test.json\'                     lang=\'json\'                     :options=\'{minimap: {enabled: false}, suggest: {showWords: false}, scrollbar: {vertical: "visible", horizontal: "visible"}}\'                     :state=\'item.monaco_editor_action_test_json\'                     @state_changed = \'(value) => {item.monaco_editor_action_test_json = value}\'                 ></vv-monaco-editor>                 <vv-msql-queryresult ref="msql_queryresult" :external_table_list="item.test.raw_table_list" v-if=\'item.section_type === "test_raw"\' table_height="calc(100vh - 200px)"></vv-msql-queryresult>             </q-tab-panel>         </q-tab-panels>     </div> </template>',
data :function () {
    return {
        item_idx: undefined,
        items: []
    };
},
methods :{
    on_monaco_init(monaco) {
        monaco.languages.register({ id: 'vvlorryaction' });
        monaco.languages.setMonarchTokensProvider('vvlorryaction', {
            ignoreCase: true,
            keywords: [
                'ABORT_AFTER_WAIT',
                'ABSENT',
                'ABSOLUTE',
                'ACCENT_SENSITIVITY',
                'ACTION',
                'ACTIVATION',
                'ACTIVE',
                'ADD',
                'ADDRESS',
                'ADMIN',
                'AES',
                'AES_128',
                'AES_192',
                'AES_256',
                'AFFINITY',
                'AFTER',
                'AGGREGATE',
                'ALGORITHM',
                'ALL_CONSTRAINTS',
                'ALL_ERRORMSGS',
                'ALL_INDEXES',
                'ALL_LEVELS',
                'ALL_SPARSE_COLUMNS',
                'ALLOW_CONNECTIONS',
                'ALLOW_MULTIPLE_EVENT_LOSS',
                'ALLOW_PAGE_LOCKS',
                'ALLOW_ROW_LOCKS',
                'ALLOW_SINGLE_EVENT_LOSS',
                'ALLOW_SNAPSHOT_ISOLATION',
                'ALLOWED',
                'ALTER',
                'ANONYMOUS',
                'ANSI_DEFAULTS',
                'ANSI_NULL_DEFAULT',
                'ANSI_NULL_DFLT_OFF',
                'ANSI_NULL_DFLT_ON',
                'ANSI_NULLS',
                'ANSI_PADDING',
                'ANSI_WARNINGS',
                'APPEND',
                'APPLICATION',
                'APPLICATION_LOG',
                'ARITHABORT',
                'ARITHIGNORE',
                'AS',
                'ASC',
                'ASSEMBLY',
                'ASYMMETRIC',
                'ASYNCHRONOUS_COMMIT',
                'AT',
                'ATOMIC',
                'ATTACH',
                'ATTACH_REBUILD_LOG',
                'AUDIT',
                'AUDIT_GUID',
                'AUTHENTICATION',
                'AUTHORIZATION',
                'AUTO',
                'AUTO_CLEANUP',
                'AUTO_CLOSE',
                'AUTO_CREATE_STATISTICS',
                'AUTO_SHRINK',
                'AUTO_UPDATE_STATISTICS',
                'AUTO_UPDATE_STATISTICS_ASYNC',
                'AUTOMATED_BACKUP_PREFERENCE',
                'AUTOMATIC',
                'AVAILABILITY',
                'AVAILABILITY_MODE',
                'BACKUP',
                'BACKUP_PRIORITY',
                'BASE64',
                'BATCHSIZE',
                'BEGIN',
                'BEGIN_DIALOG',
                'BIGINT',
                'BINARY',
                'BINDING',
                'BIT',
                'BLOCKERS',
                'BLOCKSIZE',
                'BOUNDING_BOX',
                'BREAK',
                'BROKER',
                'BROKER_INSTANCE',
                'BROWSE',
                'BUCKET_COUNT',
                'BUFFER',
                'BUFFERCOUNT',
                'BULK',
                'BULK_LOGGED',
                'BY',
                'CACHE',
                'CALL',
                'CALLED',
                'CALLER',
                'CAP_CPU_PERCENT',
                'CASCADE',
                'CASE',
                'CATALOG',
                'CATCH',
                'CELLS_PER_OBJECT',
                'CERTIFICATE',
                'CHANGE_RETENTION',
                'CHANGE_TRACKING',
                'CHANGES',
                'CHAR',
                'CHARACTER',
                'CHECK',
                'CHECK_CONSTRAINTS',
                'CHECK_EXPIRATION',
                'CHECK_POLICY',
                'CHECKALLOC',
                'CHECKCATALOG',
                'CHECKCONSTRAINTS',
                'CHECKDB',
                'CHECKFILEGROUP',
                'CHECKIDENT',
                'CHECKPOINT',
                'CHECKTABLE',
                'CLASSIFIER_FUNCTION',
                'CLEANTABLE',
                'CLEANUP',
                'CLEAR',
                'CLOSE',
                'CLUSTER',
                'CLUSTERED',
                'CODEPAGE',
                'COLLATE',
                'COLLECTION',
                'COLUMN',
                'COLUMN_SET',
                'COLUMNS',
                'COLUMNSTORE',
                'COLUMNSTORE_ARCHIVE',
                'COMMIT',
                'COMMITTED',
                'COMPATIBILITY_LEVEL',
                'COMPRESSION',
                'COMPUTE',
                'CONCAT',
                'CONCAT_NULL_YIELDS_NULL',
                'CONFIGURATION',
                'CONNECT',
                'CONSTRAINT',
                'CONTAINMENT',
                'CONTENT',
                'CONTEXT',
                'CONTINUE',
                'CONTINUE_AFTER_ERROR',
                'CONTRACT',
                'CONTRACT_NAME',
                'CONTROL',
                'CONVERSATION',
                'COOKIE',
                'COPY_ONLY',
                'COUNTER',
                'CPU',
                'CREATE',
                'CREATE_NEW',
                'CREATION_DISPOSITION',
                'CREDENTIAL',
                'CRYPTOGRAPHIC',
                'CUBE',
                'CURRENT',
                'CURRENT_DATE',
                'CURSOR',
                'CURSOR_CLOSE_ON_COMMIT',
                'CURSOR_DEFAULT',
                'CYCLE',
                'DATA',
                'DATA_COMPRESSION',
                'DATA_PURITY',
                'DATABASE',
                'DATABASE_DEFAULT',
                'DATABASE_MIRRORING',
                'DATABASE_SNAPSHOT',
                'DATAFILETYPE',
                'DATE',
                'DATE_CORRELATION_OPTIMIZATION',
                'DATEFIRST',
                'DATEFORMAT',
                'DATETIME',
                'DATETIME2',
                'DATETIMEOFFSET',
                'DAY',
                'DAYOFYEAR',
                'DAYS',
                'DB_CHAINING',
                'DBCC',
                'DBREINDEX',
                'DDL_DATABASE_LEVEL_EVENTS',
                'DEADLOCK_PRIORITY',
                'DEALLOCATE',
                'DEC',
                'DECIMAL',
                'DECLARE',
                'DECRYPTION',
                'DEFAULT',
                'DEFAULT_DATABASE',
                'DEFAULT_FULLTEXT_LANGUAGE',
                'DEFAULT_LANGUAGE',
                'DEFAULT_SCHEMA',
                'DEFINITION',
                'DELAY',
                'DELAYED_DURABILITY',
                'DELETE',
                'DELETED',
                'DENSITY_VECTOR',
                'DENY',
                'DEPENDENTS',
                'DES',
                'DESC',
                'DESCRIPTION',
                'DESX',
                'DHCP',
                'DIAGNOSTICS',
                'DIALOG',
                'DIFFERENTIAL',
                'DIRECTORY_NAME',
                'DISABLE',
                'DISABLE_BROKER',
                'DISABLED',
                'DISK',
                'DISTINCT',
                'DISTRIBUTED',
                'DOCUMENT',
                'DOUBLE',
                'DROP',
                'DROP_EXISTING',
                'DROPCLEANBUFFERS',
                'DUMP',
                'DURABILITY',
                'DYNAMIC',
                'EDITION',
                'ELEMENTS',
                'ELSE',
                'EMERGENCY',
                'EMPTY',
                'EMPTYFILE',
                'ENABLE',
                'ENABLE_BROKER',
                'ENABLED',
                'ENCRYPTION',
                'END',
                'ENDPOINT',
                'ENDPOINT_URL',
                'ERRLVL',
                'ERROR',
                'ERROR_BROKER_CONVERSATIONS',
                'ERRORFILE',
                'ESCAPE',
                'ESTIMATEONLY',
                'EVENT',
                'EVENT_RETENTION_MODE',
                'EXEC',
                'EXECUTABLE',
                'EXECUTE',
                'EXIT',
                'EXPAND',
                'EXPIREDATE',
                'EXPIRY_DATE',
                'EXPLICIT',
                'EXTENDED_LOGICAL_CHECKS',
                'EXTENSION',
                'EXTERNAL',
                'EXTERNAL_ACCESS',
                'FAIL_OPERATION',
                'FAILOVER',
                'FAILOVER_MODE',
                'FAILURE_CONDITION_LEVEL',
                'FALSE',
                'FAN_IN',
                'FAST',
                'FAST_FORWARD',
                'FETCH',
                'FIELDTERMINATOR',
                'FILE',
                'FILEGROUP',
                'FILEGROWTH',
                'FILELISTONLY',
                'FILENAME',
                'FILEPATH',
                'FILESTREAM',
                'FILESTREAM_ON',
                'FILETABLE_COLLATE_FILENAME',
                'FILETABLE_DIRECTORY',
                'FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME',
                'FILETABLE_NAMESPACE',
                'FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME',
                'FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME',
                'FILLFACTOR',
                'FILTERING',
                'FIRE_TRIGGERS',
                'FIRST',
                'FIRSTROW',
                'FLOAT',
                'FMTONLY',
                'FOLLOWING',
                'FOR',
                'FORCE',
                'FORCE_FAILOVER_ALLOW_DATA_LOSS',
                'FORCE_SERVICE_ALLOW_DATA_LOSS',
                'FORCED',
                'FORCEPLAN',
                'FORCESCAN',
                'FORCESEEK',
                'FOREIGN',
                'FORMATFILE',
                'FORMSOF',
                'FORWARD_ONLY',
                'FREE',
                'FREEPROCCACHE',
                'FREESESSIONCACHE',
                'FREESYSTEMCACHE',
                'FROM',
                'FULL',
                'FULLSCAN',
                'FULLTEXT',
                'FUNCTION',
                'GB',
                'GEOGRAPHY_AUTO_GRID',
                'GEOGRAPHY_GRID',
                'GEOMETRY_AUTO_GRID',
                'GEOMETRY_GRID',
                'GET',
                'GLOBAL',
                'GO',
                'GOTO',
                'GOVERNOR',
                'GRANT',
                'GRIDS',
                'GROUP',
                'GROUP_MAX_REQUESTS',
                'HADR',
                'HASH',
                'HASHED',
                'HAVING',
                'HEADERONLY',
                'HEALTH_CHECK_TIMEOUT',
                'HELP',
                'HIERARCHYID',
                'HIGH',
                'HINT',
                'HISTOGRAM',
                'HOLDLOCK',
                'HONOR_BROKER_PRIORITY',
                'HOUR',
                'HOURS',
                'IDENTITY',
                'IDENTITY_INSERT',
                'IDENTITY_VALUE',
                'IDENTITYCOL',
                'IF',
                'IGNORE_CONSTRAINTS',
                'IGNORE_DUP_KEY',
                'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX',
                'IGNORE_TRIGGERS',
                'IMAGE',
                'IMMEDIATE',
                'IMPERSONATE',
                'IMPLICIT_TRANSACTIONS',
                'IMPORTANCE',
                'INCLUDE',
                'INCREMENT',
                'INCREMENTAL',
                'INDEX',
                'INDEXDEFRAG',
                'INFINITE',
                'INFLECTIONAL',
                'INIT',
                'INITIATOR',
                'INPUT',
                'INPUTBUFFER',
                'INSENSITIVE',
                'INSERT',
                'INSERTED',
                'INSTEAD',
                'INT',
                'INTEGER',
                'INTO',
                'IO',
                'IP',
                'ISABOUT',
                'ISOLATION',
                'JOB',
                'KB',
                'KEEP',
                'KEEP_CDC',
                'KEEP_NULLS',
                'KEEP_REPLICATION',
                'KEEPDEFAULTS',
                'KEEPFIXED',
                'KEEPIDENTITY',
                'KEEPNULLS',
                'KERBEROS',
                'KEY',
                'KEY_SOURCE',
                'KEYS',
                'KEYSET',
                'KILL',
                'KILOBYTES_PER_BATCH',
                'LABELONLY',
                'LANGUAGE',
                'LAST',
                'LASTROW',
                'LEVEL',
                'LEVEL_1',
                'LEVEL_2',
                'LEVEL_3',
                'LEVEL_4',
                'LIFETIME',
                'LIMIT',
                'LINENO',
                'LIST',
                'LISTENER',
                'LISTENER_IP',
                'LISTENER_PORT',
                'LOAD',
                'LOADHISTORY',
                'LOB_COMPACTION',
                'LOCAL',
                'LOCAL_SERVICE_NAME',
                'LOCK_ESCALATION',
                'LOCK_TIMEOUT',
                'LOGIN',
                'LOGSPACE',
                'LOOP',
                'LOW',
                'MANUAL',
                'MARK',
                'MARK_IN_USE_FOR_REMOVAL',
                'MASTER',
                'MAX_CPU_PERCENT',
                'MAX_DISPATCH_LATENCY',
                'MAX_DOP',
                'MAX_DURATION',
                'MAX_EVENT_SIZE',
                'MAX_FILES',
                'MAX_IOPS_PER_VOLUME',
                'MAX_MEMORY',
                'MAX_MEMORY_PERCENT',
                'MAX_QUEUE_READERS',
                'MAX_ROLLOVER_FILES',
                'MAX_SIZE',
                'MAXDOP',
                'MAXERRORS',
                'MAXLENGTH',
                'MAXRECURSION',
                'MAXSIZE',
                'MAXTRANSFERSIZE',
                'MAXVALUE',
                'MB',
                'MEDIADESCRIPTION',
                'MEDIANAME',
                'MEDIAPASSWORD',
                'MEDIUM',
                'MEMBER',
                'MEMORY_OPTIMIZED',
                'MEMORY_OPTIMIZED_DATA',
                'MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT',
                'MEMORY_PARTITION_MODE',
                'MERGE',
                'MESSAGE',
                'MESSAGE_FORWARD_SIZE',
                'MESSAGE_FORWARDING',
                'MICROSECOND',
                'MILLISECOND',
                'MIN_CPU_PERCENT',
                'MIN_IOPS_PER_VOLUME',
                'MIN_MEMORY_PERCENT',
                'MINUTE',
                'MINUTES',
                'MINVALUE',
                'MIRROR',
                'MIRROR_ADDRESS',
                'MODIFY',
                'MONEY',
                'MONTH',
                'MOVE',
                'MULTI_USER',
                'MUST_CHANGE',
                'NAME',
                'NANOSECOND',
                'NATIONAL',
                'NATIVE_COMPILATION',
                'NCHAR',
                'NEGOTIATE',
                'NESTED_TRIGGERS',
                'NEW_ACCOUNT',
                'NEW_BROKER',
                'NEW_PASSWORD',
                'NEWNAME',
                'NEXT',
                'NO',
                'NO_BROWSETABLE',
                'NO_CHECKSUM',
                'NO_COMPRESSION',
                'NO_EVENT_LOSS',
                'NO_INFOMSGS',
                'NO_TRUNCATE',
                'NO_WAIT',
                'NOCHECK',
                'NOCOUNT',
                'NOEXEC',
                'NOEXPAND',
                'NOFORMAT',
                'NOINDEX',
                'NOINIT',
                'NOLOCK',
                'NON',
                'NON_TRANSACTED_ACCESS',
                'NONCLUSTERED',
                'NONE',
                'NORECOMPUTE',
                'NORECOVERY',
                'NORESEED',
                'NORESET',
                'NOREWIND',
                'NORMAL',
                'NOSKIP',
                'NOTIFICATION',
                'NOTRUNCATE',
                'NOUNLOAD',
                'NOWAIT',
                'NTEXT',
                'NTLM',
                'NUMANODE',
                'NUMERIC',
                'NUMERIC_ROUNDABORT',
                'NVARCHAR',
                'OBJECT',
                'OF',
                'OFF',
                'OFFLINE',
                'OFFSET',
                'OFFSETS',
                'OLD_ACCOUNT',
                'OLD_PASSWORD',
                'ON',
                'ON_FAILURE',
                'ONLINE',
                'ONLY',
                'OPEN',
                'OPEN_EXISTING',
                'OPENTRAN',
                'OPTIMISTIC',
                'OPTIMIZE',
                'OPTION',
                'ORDER',
                'OUT',
                'OUTPUT',
                'OUTPUTBUFFER',
                'OVER',
                'OVERRIDE',
                'OWNER',
                'OWNERSHIP',
                'PAD_INDEX',
                'PAGE',
                'PAGE_VERIFY',
                'PAGECOUNT',
                'PAGLOCK',
                'PARAMETERIZATION',
                'PARSEONLY',
                'PARTIAL',
                'PARTITION',
                'PARTITIONS',
                'PARTNER',
                'PASSWORD',
                'PATH',
                'PER_CPU',
                'PER_NODE',
                'PERCENT',
                'PERMISSION_SET',
                'PERSISTED',
                'PHYSICAL_ONLY',
                'PLAN',
                'POISON_MESSAGE_HANDLING',
                'POOL',
                'POPULATION',
                'PORT',
                'PRECEDING',
                'PRECISION',
                'PRIMARY',
                'PRIMARY_ROLE',
                'PRINT',
                'PRIOR',
                'PRIORITY',
                'PRIORITY_LEVEL',
                'PRIVATE',
                'PRIVILEGES',
                'PROC',
                'PROCCACHE',
                'PROCEDURE',
                'PROCEDURE_NAME',
                'PROCESS',
                'PROFILE',
                'PROPERTY',
                'PROPERTY_DESCRIPTION',
                'PROPERTY_INT_ID',
                'PROPERTY_SET_GUID',
                'PROVIDER',
                'PROVIDER_KEY_NAME',
                'PUBLIC',
                'PUT',
                'QUARTER',
                'QUERY',
                'QUERY_GOVERNOR_COST_LIMIT',
                'QUEUE',
                'QUEUE_DELAY',
                'QUOTED_IDENTIFIER',
                'RAISERROR',
                'RANGE',
                'RAW',
                'RC2',
                'RC4',
                'RC4_128',
                'READ',
                'READ_COMMITTED_SNAPSHOT',
                'READ_ONLY',
                'READ_ONLY_ROUTING_LIST',
                'READ_ONLY_ROUTING_URL',
                'READ_WRITE',
                'READ_WRITE_FILEGROUPS',
                'READCOMMITTED',
                'READCOMMITTEDLOCK',
                'READONLY',
                'READPAST',
                'READTEXT',
                'READUNCOMMITTED',
                'READWRITE',
                'REAL',
                'REBUILD',
                'RECEIVE',
                'RECOMPILE',
                'RECONFIGURE',
                'RECOVERY',
                'RECURSIVE',
                'RECURSIVE_TRIGGERS',
                'REFERENCES',
                'REGENERATE',
                'RELATED_CONVERSATION',
                'RELATED_CONVERSATION_GROUP',
                'RELATIVE',
                'REMOTE',
                'REMOTE_PROC_TRANSACTIONS',
                'REMOTE_SERVICE_NAME',
                'REMOVE',
                'REORGANIZE',
                'REPAIR_ALLOW_DATA_LOSS',
                'REPAIR_FAST',
                'REPAIR_REBUILD',
                'REPEATABLE',
                'REPEATABLEREAD',
                'REPLICA',
                'REPLICATION',
                'REQUEST_MAX_CPU_TIME_SEC',
                'REQUEST_MAX_MEMORY_GRANT_PERCENT',
                'REQUEST_MEMORY_GRANT_TIMEOUT_SEC',
                'REQUIRED',
                'RESAMPLE',
                'RESEED',
                'RESERVE_DISK_SPACE',
                'RESET',
                'RESOURCE',
                'RESTART',
                'RESTORE',
                'RESTRICT',
                'RESTRICTED_USER',
                'RESULT',
                'RESUME',
                'RETAINDAYS',
                'RETENTION',
                'RETURN',
                'RETURNS',
                'REVERT',
                'REVOKE',
                'REWIND',
                'REWINDONLY',
                'ROBUST',
                'ROLE',
                'ROLLBACK',
                'ROLLUP',
                'ROOT',
                'ROUTE',
                'ROW',
                'ROWCOUNT',
                'ROWGUIDCOL',
                'ROWLOCK',
                'ROWS',
                'ROWS_PER_BATCH',
                'ROWTERMINATOR',
                'ROWVERSION',
                'RSA_1024',
                'RSA_2048',
                'RSA_512',
                'RULE',
                'SAFE',
                'SAFETY',
                'SAMPLE',
                'SAVE',
                'SCHEDULER',
                'SCHEMA',
                'SCHEMA_AND_DATA',
                'SCHEMA_ONLY',
                'SCHEMABINDING',
                'SCHEME',
                'SCROLL',
                'SCROLL_LOCKS',
                'SEARCH',
                'SECOND',
                'SECONDARY',
                'SECONDARY_ONLY',
                'SECONDARY_ROLE',
                'SECONDS',
                'SECRET',
                'SECURITY_LOG',
                'SECURITYAUDIT',
                'SELECT',
                'SELECTIVE',
                'SELF',
                'SEND',
                'SENT',
                'SEQUENCE',
                'SERIALIZABLE',
                'SERVER',
                'SERVICE',
                'SERVICE_BROKER',
                'SERVICE_NAME',
                'SESSION',
                'SESSION_TIMEOUT',
                'SET',
                'SETS',
                'SETUSER',
                'SHOW_STATISTICS',
                'SHOWCONTIG',
                'SHOWPLAN',
                'SHOWPLAN_ALL',
                'SHOWPLAN_TEXT',
                'SHOWPLAN_XML',
                'SHRINKDATABASE',
                'SHRINKFILE',
                'SHUTDOWN',
                'SID',
                'SIGNATURE',
                'SIMPLE',
                'SINGLE_BLOB',
                'SINGLE_CLOB',
                'SINGLE_NCLOB',
                'SINGLE_USER',
                'SINGLETON',
                'SIZE',
                'SKIP',
                'SMALLDATETIME',
                'SMALLINT',
                'SMALLMONEY',
                'SNAPSHOT',
                'SORT_IN_TEMPDB',
                'SOURCE',
                'SPARSE',
                'SPATIAL',
                'SPATIAL_WINDOW_MAX_CELLS',
                'SPECIFICATION',
                'SPLIT',
                'SQL',
                'SQL_VARIANT',
                'SQLPERF',
                'STANDBY',
                'START',
                'START_DATE',
                'STARTED',
                'STARTUP_STATE',
                'STAT_HEADER',
                'STATE',
                'STATEMENT',
                'STATIC',
                'STATISTICAL_SEMANTICS',
                'STATISTICS',
                'STATISTICS_INCREMENTAL',
                'STATISTICS_NORECOMPUTE',
                'STATS',
                'STATS_STREAM',
                'STATUS',
                'STATUSONLY',
                'STOP',
                'STOP_ON_ERROR',
                'STOPAT',
                'STOPATMARK',
                'STOPBEFOREMARK',
                'STOPLIST',
                'STOPPED',
                'SUBJECT',
                'SUBSCRIPTION',
                'SUPPORTED',
                'SUSPEND',
                'SWITCH',
                'SYMMETRIC',
                'SYNCHRONOUS_COMMIT',
                'SYNONYM',
                'SYSNAME',
                'SYSTEM',
                'TABLE',
                'TABLERESULTS',
                'TABLESAMPLE',
                'TABLOCK',
                'TABLOCKX',
                'TAKE',
                'TAPE',
                'TARGET',
                'TARGET_RECOVERY_TIME',
                'TB',
                'TCP',
                'TEXT',
                'TEXTIMAGE_ON',
                'TEXTSIZE',
                'THEN',
                'THESAURUS',
                'THROW',
                'TIES',
                'TIME',
                'TIMEOUT',
                'TIMER',
                'TIMESTAMP',
                'TINYINT',
                'TO',
                'TOP',
                'TORN_PAGE_DETECTION',
                'TRACEOFF',
                'TRACEON',
                'TRACESTATUS',
                'TRACK_CAUSALITY',
                'TRACK_COLUMNS_UPDATED',
                'TRAN',
                'TRANSACTION',
                'TRANSFER',
                'TRANSFORM_NOISE_WORDS',
                'TRIGGER',
                'TRIPLE_DES',
                'TRIPLE_DES_3KEY',
                'TRUE',
                'TRUNCATE',
                'TRUNCATEONLY',
                'TRUSTWORTHY',
                'TRY',
                'TSQL',
                'TWO_DIGIT_YEAR_CUTOFF',
                'TYPE',
                'TYPE_WARNING',
                'UNBOUNDED',
                'UNCHECKED',
                'UNCOMMITTED',
                'UNDEFINED',
                'UNIQUE',
                'UNIQUEIDENTIFIER',
                'UNKNOWN',
                'UNLIMITED',
                'UNLOAD',
                'UNSAFE',
                'UPDATE',
                'UPDATETEXT',
                'UPDATEUSAGE',
                'UPDLOCK',
                'URL',
                'USE',
                'USED',
                'USER',
                'USEROPTIONS',
                'USING',
                'VALID_XML',
                'VALIDATION',
                'VALUE',
                'VALUES',
                'VARBINARY',
                'VARCHAR',
                'VARYING',
                'VERIFYONLY',
                'VERSION',
                'VIEW',
                'VIEW_METADATA',
                'VIEWS',
                'VISIBILITY',
                'WAIT_AT_LOW_PRIORITY',
                'WAITFOR',
                'WEEK',
                'WEIGHT',
                'WELL_FORMED_XML',
                'WHEN',
                'WHERE',
                'WHILE',
                'WINDOWS',
                'WITH',
                'WITHIN',
                'WITHOUT',
                'WITNESS',
                'WORK',
                'WORKLOAD',
                'WRITETEXT',
                'XACT_ABORT',
                'XLOCK',
                'XMAX',
                'XMIN',
                'XML',
                'XMLDATA',
                'XMLNAMESPACES',
                'XMLSCHEMA',
                'XQUERY',
                'XSINIL',
                'YEAR',
                'YMAX',
                'YMIN'
            ],
            operators: [
                'ALL',
                'AND',
                'ANY',
                'BETWEEN',
                'EXISTS',
                'IN',
                'LIKE',
                'NOT',
                'OR',
                'SOME',
                'EXCEPT',
                'INTERSECT',
                'UNION',
                'APPLY',
                'CROSS',
                'FULL',
                'INNER',
                'JOIN',
                'LEFT',
                'OUTER',
                'RIGHT',
                'CONTAINS',
                'FREETEXT',
                'IS',
                'NULL',
                'PIVOT',
                'UNPIVOT',
                'MATCHED'
            ],
            builtinFunctions: [
                'AVG',
                'CHECKSUM_AGG',
                'COUNT',
                'COUNT_BIG',
                'GROUPING',
                'GROUPING_ID',
                'MAX',
                'MIN',
                'SUM',
                'STDEV',
                'STDEVP',
                'VAR',
                'VARP',
                'CUME_DIST',
                'FIRST_VALUE',
                'LAG',
                'LAST_VALUE',
                'LEAD',
                'PERCENTILE_CONT',
                'PERCENTILE_DISC',
                'PERCENT_RANK',
                'COLLATE',
                'COLLATIONPROPERTY',
                'TERTIARY_WEIGHTS',
                'FEDERATION_FILTERING_VALUE',
                'CAST',
                'CONVERT',
                'PARSE',
                'TRY_CAST',
                'TRY_CONVERT',
                'TRY_PARSE',
                'ASYMKEY_ID',
                'ASYMKEYPROPERTY',
                'CERTPROPERTY',
                'CERT_ID',
                'CRYPT_GEN_RANDOM',
                'DECRYPTBYASYMKEY',
                'DECRYPTBYCERT',
                'DECRYPTBYKEY',
                'DECRYPTBYKEYAUTOASYMKEY',
                'DECRYPTBYKEYAUTOCERT',
                'DECRYPTBYPASSPHRASE',
                'ENCRYPTBYASYMKEY',
                'ENCRYPTBYCERT',
                'ENCRYPTBYKEY',
                'ENCRYPTBYPASSPHRASE',
                'HASHBYTES',
                'IS_OBJECTSIGNED',
                'KEY_GUID',
                'KEY_ID',
                'KEY_NAME',
                'SIGNBYASYMKEY',
                'SIGNBYCERT',
                'SYMKEYPROPERTY',
                'VERIFYSIGNEDBYCERT',
                'VERIFYSIGNEDBYASYMKEY',
                'CURSOR_STATUS',
                'DATALENGTH',
                'IDENT_CURRENT',
                'IDENT_INCR',
                'IDENT_SEED',
                'IDENTITY',
                'SQL_VARIANT_PROPERTY',
                'CURRENT_TIMESTAMP',
                'DATEADD',
                'DATEDIFF',
                'DATEFROMPARTS',
                'DATENAME',
                'DATEPART',
                'DATETIME2FROMPARTS',
                'DATETIMEFROMPARTS',
                'DATETIMEOFFSETFROMPARTS',
                'DAY',
                'EOMONTH',
                'GETDATE',
                'GETUTCDATE',
                'ISDATE',
                'MONTH',
                'SMALLDATETIMEFROMPARTS',
                'SWITCHOFFSET',
                'SYSDATETIME',
                'SYSDATETIMEOFFSET',
                'SYSUTCDATETIME',
                'TIMEFROMPARTS',
                'TODATETIMEOFFSET',
                'YEAR',
                'CHOOSE',
                'COALESCE',
                'IIF',
                'NULLIF',
                'ABS',
                'ACOS',
                'ASIN',
                'ATAN',
                'ATN2',
                'CEILING',
                'COS',
                'COT',
                'DEGREES',
                'EXP',
                'FLOOR',
                'LOG',
                'LOG10',
                'PI',
                'POWER',
                'RADIANS',
                'RAND',
                'ROUND',
                'SIGN',
                'SIN',
                'SQRT',
                'SQUARE',
                'TAN',
                'APP_NAME',
                'APPLOCK_MODE',
                'APPLOCK_TEST',
                'ASSEMBLYPROPERTY',
                'COL_LENGTH',
                'COL_NAME',
                'COLUMNPROPERTY',
                'DATABASE_PRINCIPAL_ID',
                'DATABASEPROPERTYEX',
                'DB_ID',
                'DB_NAME',
                'FILE_ID',
                'FILE_IDEX',
                'FILE_NAME',
                'FILEGROUP_ID',
                'FILEGROUP_NAME',
                'FILEGROUPPROPERTY',
                'FILEPROPERTY',
                'FULLTEXTCATALOGPROPERTY',
                'FULLTEXTSERVICEPROPERTY',
                'INDEX_COL',
                'INDEXKEY_PROPERTY',
                'INDEXPROPERTY',
                'OBJECT_DEFINITION',
                'OBJECT_ID',
                'OBJECT_NAME',
                'OBJECT_SCHEMA_NAME',
                'OBJECTPROPERTY',
                'OBJECTPROPERTYEX',
                'ORIGINAL_DB_NAME',
                'PARSENAME',
                'SCHEMA_ID',
                'SCHEMA_NAME',
                'SCOPE_IDENTITY',
                'SERVERPROPERTY',
                'STATS_DATE',
                'TYPE_ID',
                'TYPE_NAME',
                'TYPEPROPERTY',
                'DENSE_RANK',
                'NTILE',
                'RANK',
                'ROW_NUMBER',
                'PUBLISHINGSERVERNAME',
                'OPENDATASOURCE',
                'OPENQUERY',
                'OPENROWSET',
                'OPENXML',
                'CERTENCODED',
                'CERTPRIVATEKEY',
                'CURRENT_USER',
                'HAS_DBACCESS',
                'HAS_PERMS_BY_NAME',
                'IS_MEMBER',
                'IS_ROLEMEMBER',
                'IS_SRVROLEMEMBER',
                'LOGINPROPERTY',
                'ORIGINAL_LOGIN',
                'PERMISSIONS',
                'PWDENCRYPT',
                'PWDCOMPARE',
                'SESSION_USER',
                'SESSIONPROPERTY',
                'SUSER_ID',
                'SUSER_NAME',
                'SUSER_SID',
                'SUSER_SNAME',
                'SYSTEM_USER',
                'USER',
                'USER_ID',
                'USER_NAME',
                'ASCII',
                'CHAR',
                'CHARINDEX',
                'CONCAT',
                'DIFFERENCE',
                'FORMAT',
                'LEFT',
                'LEN',
                'LOWER',
                'LTRIM',
                'NCHAR',
                'PATINDEX',
                'QUOTENAME',
                'REPLACE',
                'REPLICATE',
                'REVERSE',
                'RIGHT',
                'RTRIM',
                'SOUNDEX',
                'SPACE',
                'STR',
                'STUFF',
                'SUBSTRING',
                'UNICODE',
                'UPPER',
                'BINARY_CHECKSUM',
                'CHECKSUM',
                'CONNECTIONPROPERTY',
                'CONTEXT_INFO',
                'CURRENT_REQUEST_ID',
                'ERROR_LINE',
                'ERROR_NUMBER',
                'ERROR_MESSAGE',
                'ERROR_PROCEDURE',
                'ERROR_SEVERITY',
                'ERROR_STATE',
                'FORMATMESSAGE',
                'GETANSINULL',
                'GET_FILESTREAM_TRANSACTION_CONTEXT',
                'HOST_ID',
                'HOST_NAME',
                'ISNULL',
                'ISNUMERIC',
                'MIN_ACTIVE_ROWVERSION',
                'NEWID',
                'NEWSEQUENTIALID',
                'ROWCOUNT_BIG',
                'XACT_STATE',
                'TEXTPTR',
                'TEXTVALID',
                'COLUMNS_UPDATED',
                'EVENTDATA',
                'TRIGGER_NESTLEVEL',
                'UPDATE',
                'CHANGETABLE',
                'CHANGE_TRACKING_CONTEXT',
                'CHANGE_TRACKING_CURRENT_VERSION',
                'CHANGE_TRACKING_IS_COLUMN_IN_MASK',
                'CHANGE_TRACKING_MIN_VALID_VERSION',
                'CONTAINSTABLE',
                'FREETEXTTABLE',
                'SEMANTICKEYPHRASETABLE',
                'SEMANTICSIMILARITYDETAILSTABLE',
                'SEMANTICSIMILARITYTABLE',
                'FILETABLEROOTPATH',
                'GETFILENAMESPACEPATH',
                'GETPATHLOCATOR',
                'PATHNAME',
                'GET_TRANSMISSION_STATUS'
            ],
            builtinVariables: [
                '@@DATEFIRST',
                '@@DBTS',
                '@@LANGID',
                '@@LANGUAGE',
                '@@LOCK_TIMEOUT',
                '@@MAX_CONNECTIONS',
                '@@MAX_PRECISION',
                '@@NESTLEVEL',
                '@@OPTIONS',
                '@@REMSERVER',
                '@@SERVERNAME',
                '@@SERVICENAME',
                '@@SPID',
                '@@TEXTSIZE',
                '@@VERSION',
                '@@CURSOR_ROWS',
                '@@FETCH_STATUS',
                '@@DATEFIRST',
                '@@PROCID',
                '@@ERROR',
                '@@IDENTITY',
                '@@ROWCOUNT',
                '@@TRANCOUNT',
                '@@CONNECTIONS',
                '@@CPU_BUSY',
                '@@IDLE',
                '@@IO_BUSY',
                '@@PACKET_ERRORS',
                '@@PACK_RECEIVED',
                '@@PACK_SENT',
                '@@TIMETICKS',
                '@@TOTAL_ERRORS',
                '@@TOTAL_READ',
                '@@TOTAL_WRITE'
            ],
            pseudoColumns: [
                '$ACTION',
                '$IDENTITY',
                '$ROWGUID',
                '$PARTITION'
            ],
            tokenizer: {
                root: [
                    [
                        /^#[sS][eE][cC][tT][iI][oO][nN]_[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]+/,
                        'custom-section'
                    ],
                    { include: '@whitespace' },
                    { include: '@complexIdentifiers' },
                    [
                        /'/,
                        {
                            token: 'string.quote',
                            bracket: '@open',
                            next: '@string'
                        }
                    ],
                    [
                        /[\w@#$]+/,
                        {
                            cases: {
                                '@keywords': 'keyword',
                                '@operators': 'operator',
                                '@builtinFunctions': 'builtinFunction',
                                '@builtinVariables': 'builtinVariable',
                                '@pseudoColumns': 'pseudoColumn'
                            }
                        }
                    ],
                    [
                        /[<>=!%&+\-*/|~^]/,
                        'operator'
                    ]
                ],
                string: [
                    [
                        /[^\\'']+/,
                        'string'
                    ],
                    [
                        /'/,
                        {
                            token: 'string.quote',
                            bracket: '@close',
                            next: '@pop'
                        }
                    ]
                ],
                whitespace: [[
                        /\/\/.*$/,
                        'comment'
                    ]],
                complexIdentifiers: [
                    [
                        /\[/,
                        {
                            token: 'identifier.quote',
                            next: '@bracketedIdentifier'
                        }
                    ],
                    [
                        /"/,
                        {
                            token: 'identifier.quote',
                            next: '@quotedIdentifier'
                        }
                    ]
                ],
                bracketedIdentifier: [
                    [
                        /[^\]]+/,
                        'identifier'
                    ],
                    [
                        /]]/,
                        'identifier'
                    ],
                    [
                        /]/,
                        {
                            token: 'identifier.quote',
                            next: '@pop'
                        }
                    ]
                ],
                quotedIdentifier: [
                    [
                        /[^"]+/,
                        'identifier'
                    ],
                    [
                        /""/,
                        'identifier'
                    ],
                    [
                        /"/,
                        {
                            token: 'identifier.quote',
                            next: '@pop'
                        }
                    ]
                ]
            }
        });
        monaco.editor.defineTheme('theme-for-vvlorryaction', {
            base: 'vs',
            inherit: true,
            rules: [
                {
                    token: 'custom-section',
                    fontStyle: 'bold',
                    foreground: 'bb8588'
                },
                {
                    token: 'keyword',
                    foreground: '0000FF'
                },
                {
                    token: 'operator',
                    foreground: '808080'
                },
                {
                    token: 'builtinFunction',
                    foreground: 'FF00FF'
                },
                {
                    token: 'builtinVariable',
                    foreground: 'FF00FF'
                },
                {
                    token: 'pseudoColumn',
                    foreground: 'FF00FF'
                }
            ]
        });
    },
    editor_add(rid, data) {
        let last_idx = this.items.length > 0 ? this.items[this.items.length - 1].idx : 0;
        let item = {
            idx: last_idx + 1,
            data: data,
            data_edit: data,
            rid: rid,
            monaco_editor_action_state: undefined,
            section_type: 'action',
            test: undefined,
            sections: function () {
                let result = [{
                        type: 'action',
                        text: 'action'
                    }];
                if (!this.test)
                    return result;
                if (this.test.error) {
                    result.push({
                        type: 'test_error',
                        text: 'test error'
                    });
                }
                if (this.test.query) {
                    result.push({
                        type: 'test_query',
                        text: 'test query'
                    });
                }
                if (this.test.raw) {
                    result.push({
                        type: 'test_raw',
                        text: 'test result raw'
                    });
                }
                if (this.test.json) {
                    result.push({
                        type: 'test_json',
                        text: 'test result'
                    });
                }
                return result;
            }
        };
        this.items.push(item);
        this.item_idx = last_idx + 1;
        this.emit('tabs', this.items.length);
    },
    editor_edit(idx, rid, data) {
        if (!idx)
            return;
        let fnd = this.items.find(f => f.idx === idx);
        if (!fnd)
            return;
        fnd.data = data;
        fnd.data_edit = data;
        fnd.rid = rid;
    },
    editor_test(idx, test) {
        if (!idx)
            return;
        let fnd = this.items.find(f => f.idx === idx);
        if (!fnd)
            return;
        fnd.test = test;
        fnd.section_type = 'action';
        this.$refs.shared_msql_queryresult.clear();
        if (fnd.test && fnd.test.raw && Array.isArray(fnd.test.raw)) {
            fnd.test.raw.forEach(item => {
                this.$refs.shared_msql_queryresult.table_add(item.column_list);
                this.$refs.shared_msql_queryresult.rows_add(item.row_list);
            });
        }
        fnd.test.raw_table_list = this.$refs.shared_msql_queryresult.table_list;
        console.log(fnd);
        console.log(fnd.sections());
    },
    editor_get_current() {
        if (!this.item_idx)
            return undefined;
        return this.items.find(f => f.idx === this.item_idx);
    },
    editor_on_close(item) {
        if (!item)
            return;
        if (item.data_edit === item.data) {
            this.editor_on_close_step2(item);
            return;
        }
        this.$refs.notice.question('This tab contains unsaved data. They will be lost. Close tab?', 'Close unsaved action', result => {
            if (result === true) {
                this.editor_on_close_step2(item);
            }
        });
    },
    editor_on_close_step2(item) {
        if (!this.item_idx || this.item_idx !== item.idx || this.items.length <= 1) {
            this.items = this.items.filter(f => f.idx !== item.idx);
            this.emit('tabs', this.items.length);
            return;
        }
        let position = -1;
        for (let i = 0; i < this.items.length; i++) {
            if (this.items[i].idx === item.idx) {
                position = i;
                break;
            }
        }
        let new_item_idx = -1;
        if (position >= 0) {
            if (position === this.items.length - 1) {
                new_item_idx = this.items[position - 1].idx;
            } else {
                new_item_idx = this.items[position + 1].idx;
            }
        }
        this.items = this.items.filter(f => f.idx !== item.idx);
        if (new_item_idx >= 0) {
            this.item_idx = new_item_idx;
        }
        this.emit('tabs', this.items.length);
    },
    editor_on_select_section(item, section) {
        if (!item || !section)
            return;
        item.section_type = section.type;
        console.log(item);
        console.log(section);
    },
    emit(command, mode) {
        this.$emit('event', {
            command: command,
            mode: mode
        });
    }
}
})