supercommitting all changes since the beginning of time...kinda
This commit is contained in:
parent
bed7bfaa45
commit
ef244c0747
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@ -5,6 +5,12 @@
|
|||||||
"driver": "SQLite",
|
"driver": "SQLite",
|
||||||
"name": "mocha-suv-manager",
|
"name": "mocha-suv-manager",
|
||||||
"database": "/home/beckermj/.config/mocha-suv-manager.sqlite3"
|
"database": "/home/beckermj/.config/mocha-suv-manager.sqlite3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"previewLimit": 50,
|
||||||
|
"driver": "SQLite",
|
||||||
|
"name": "test_mql",
|
||||||
|
"database": "${workspaceFolder:mocha}/python/test.mql"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
551
apache2/conf/suv.conf
Normal file
551
apache2/conf/suv.conf
Normal file
@ -0,0 +1,551 @@
|
|||||||
|
#
|
||||||
|
# This is the main Apache HTTP server configuration file. It contains the
|
||||||
|
# configuration directives that give the server its instructions.
|
||||||
|
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
|
||||||
|
# In particular, see
|
||||||
|
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
|
||||||
|
# for a discussion of each configuration directive.
|
||||||
|
#
|
||||||
|
# Do NOT simply read the instructions in here without understanding
|
||||||
|
# what they do. They're here only as hints or reminders. If you are unsure
|
||||||
|
# consult the online docs. You have been warned.
|
||||||
|
#
|
||||||
|
# Configuration and logfile names: If the filenames you specify for many
|
||||||
|
# of the server's control files begin with "/" (or "drive:/" for Win32), the
|
||||||
|
# server will use that explicit path. If the filenames do *not* begin
|
||||||
|
# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
|
||||||
|
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
|
||||||
|
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log"
|
||||||
|
# will be interpreted as '/logs/access_log'.
|
||||||
|
|
||||||
|
#
|
||||||
|
# ServerRoot: The top of the directory tree under which the server's
|
||||||
|
# configuration, error, and log files are kept.
|
||||||
|
#
|
||||||
|
# Do not add a slash at the end of the directory path. If you point
|
||||||
|
# ServerRoot at a non-local disk, be sure to specify a local disk on the
|
||||||
|
# Mutex directive, if file-based mutexes are used. If you wish to share the
|
||||||
|
# same ServerRoot for multiple httpd daemons, you will need to change at
|
||||||
|
# least PidFile.
|
||||||
|
#
|
||||||
|
ServerRoot "/usr/local/apache2"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mutex: Allows you to set the mutex mechanism and mutex file directory
|
||||||
|
# for individual mutexes, or change the global defaults
|
||||||
|
#
|
||||||
|
# Uncomment and change the directory if mutexes are file-based and the default
|
||||||
|
# mutex file directory is not on a local disk or is not appropriate for some
|
||||||
|
# other reason.
|
||||||
|
#
|
||||||
|
# Mutex default:logs
|
||||||
|
|
||||||
|
#
|
||||||
|
# Listen: Allows you to bind Apache to specific IP addresses and/or
|
||||||
|
# ports, instead of the default. See also the <VirtualHost>
|
||||||
|
# directive.
|
||||||
|
#
|
||||||
|
# Change this to Listen on specific IP addresses as shown below to
|
||||||
|
# prevent Apache from glomming onto all bound IP addresses.
|
||||||
|
#
|
||||||
|
#Listen 12.34.56.78:80
|
||||||
|
Listen 80
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dynamic Shared Object (DSO) Support
|
||||||
|
#
|
||||||
|
# To be able to use the functionality of a module which was built as a DSO you
|
||||||
|
# have to place corresponding `LoadModule' lines at this location so the
|
||||||
|
# directives contained in it are actually available _before_ they are used.
|
||||||
|
# Statically compiled modules (those listed by `httpd -l') do not need
|
||||||
|
# to be loaded here.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# LoadModule foo_module modules/mod_foo.so
|
||||||
|
#
|
||||||
|
LoadModule mpm_event_module modules/mod_mpm_event.so
|
||||||
|
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
|
||||||
|
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
|
||||||
|
LoadModule authn_file_module modules/mod_authn_file.so
|
||||||
|
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
|
||||||
|
#LoadModule authn_anon_module modules/mod_authn_anon.so
|
||||||
|
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
|
||||||
|
#LoadModule authn_socache_module modules/mod_authn_socache.so
|
||||||
|
LoadModule authn_core_module modules/mod_authn_core.so
|
||||||
|
LoadModule authz_host_module modules/mod_authz_host.so
|
||||||
|
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
|
||||||
|
LoadModule authz_user_module modules/mod_authz_user.so
|
||||||
|
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
|
||||||
|
#LoadModule authz_owner_module modules/mod_authz_owner.so
|
||||||
|
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
|
||||||
|
LoadModule authz_core_module modules/mod_authz_core.so
|
||||||
|
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
|
||||||
|
#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
|
||||||
|
LoadModule access_compat_module modules/mod_access_compat.so
|
||||||
|
LoadModule auth_basic_module modules/mod_auth_basic.so
|
||||||
|
#LoadModule auth_form_module modules/mod_auth_form.so
|
||||||
|
#LoadModule auth_digest_module modules/mod_auth_digest.so
|
||||||
|
#LoadModule allowmethods_module modules/mod_allowmethods.so
|
||||||
|
#LoadModule isapi_module modules/mod_isapi.so
|
||||||
|
#LoadModule file_cache_module modules/mod_file_cache.so
|
||||||
|
#LoadModule cache_module modules/mod_cache.so
|
||||||
|
#LoadModule cache_disk_module modules/mod_cache_disk.so
|
||||||
|
#LoadModule cache_socache_module modules/mod_cache_socache.so
|
||||||
|
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
|
||||||
|
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
|
||||||
|
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
|
||||||
|
#LoadModule socache_redis_module modules/mod_socache_redis.so
|
||||||
|
#LoadModule watchdog_module modules/mod_watchdog.so
|
||||||
|
#LoadModule macro_module modules/mod_macro.so
|
||||||
|
#LoadModule dbd_module modules/mod_dbd.so
|
||||||
|
#LoadModule bucketeer_module modules/mod_bucketeer.so
|
||||||
|
#LoadModule dumpio_module modules/mod_dumpio.so
|
||||||
|
#LoadModule echo_module modules/mod_echo.so
|
||||||
|
#LoadModule example_hooks_module modules/mod_example_hooks.so
|
||||||
|
#LoadModule case_filter_module modules/mod_case_filter.so
|
||||||
|
#LoadModule case_filter_in_module modules/mod_case_filter_in.so
|
||||||
|
#LoadModule example_ipc_module modules/mod_example_ipc.so
|
||||||
|
#LoadModule buffer_module modules/mod_buffer.so
|
||||||
|
#LoadModule data_module modules/mod_data.so
|
||||||
|
#LoadModule ratelimit_module modules/mod_ratelimit.so
|
||||||
|
LoadModule reqtimeout_module modules/mod_reqtimeout.so
|
||||||
|
#LoadModule ext_filter_module modules/mod_ext_filter.so
|
||||||
|
#LoadModule request_module modules/mod_request.so
|
||||||
|
#LoadModule include_module modules/mod_include.so
|
||||||
|
LoadModule filter_module modules/mod_filter.so
|
||||||
|
#LoadModule reflector_module modules/mod_reflector.so
|
||||||
|
#LoadModule substitute_module modules/mod_substitute.so
|
||||||
|
#LoadModule sed_module modules/mod_sed.so
|
||||||
|
#LoadModule charset_lite_module modules/mod_charset_lite.so
|
||||||
|
#LoadModule deflate_module modules/mod_deflate.so
|
||||||
|
#LoadModule xml2enc_module modules/mod_xml2enc.so
|
||||||
|
#LoadModule proxy_html_module modules/mod_proxy_html.so
|
||||||
|
#LoadModule brotli_module modules/mod_brotli.so
|
||||||
|
LoadModule mime_module modules/mod_mime.so
|
||||||
|
#LoadModule ldap_module modules/mod_ldap.so
|
||||||
|
LoadModule log_config_module modules/mod_log_config.so
|
||||||
|
#LoadModule log_debug_module modules/mod_log_debug.so
|
||||||
|
#LoadModule log_forensic_module modules/mod_log_forensic.so
|
||||||
|
#LoadModule logio_module modules/mod_logio.so
|
||||||
|
#LoadModule lua_module modules/mod_lua.so
|
||||||
|
LoadModule env_module modules/mod_env.so
|
||||||
|
#LoadModule mime_magic_module modules/mod_mime_magic.so
|
||||||
|
#LoadModule cern_meta_module modules/mod_cern_meta.so
|
||||||
|
#LoadModule expires_module modules/mod_expires.so
|
||||||
|
LoadModule headers_module modules/mod_headers.so
|
||||||
|
#LoadModule ident_module modules/mod_ident.so
|
||||||
|
#LoadModule usertrack_module modules/mod_usertrack.so
|
||||||
|
#LoadModule unique_id_module modules/mod_unique_id.so
|
||||||
|
LoadModule setenvif_module modules/mod_setenvif.so
|
||||||
|
LoadModule version_module modules/mod_version.so
|
||||||
|
#LoadModule remoteip_module modules/mod_remoteip.so
|
||||||
|
#LoadModule proxy_module modules/mod_proxy.so
|
||||||
|
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
|
||||||
|
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
|
||||||
|
#LoadModule proxy_http_module modules/mod_proxy_http.so
|
||||||
|
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
|
||||||
|
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
|
||||||
|
#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
|
||||||
|
#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
|
||||||
|
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
|
||||||
|
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
|
||||||
|
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
|
||||||
|
#LoadModule proxy_express_module modules/mod_proxy_express.so
|
||||||
|
#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
|
||||||
|
#LoadModule session_module modules/mod_session.so
|
||||||
|
#LoadModule session_cookie_module modules/mod_session_cookie.so
|
||||||
|
#LoadModule session_crypto_module modules/mod_session_crypto.so
|
||||||
|
#LoadModule session_dbd_module modules/mod_session_dbd.so
|
||||||
|
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
|
||||||
|
#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
|
||||||
|
#LoadModule ssl_module modules/mod_ssl.so
|
||||||
|
#LoadModule optional_hook_export_module modules/mod_optional_hook_export.so
|
||||||
|
#LoadModule optional_hook_import_module modules/mod_optional_hook_import.so
|
||||||
|
#LoadModule optional_fn_import_module modules/mod_optional_fn_import.so
|
||||||
|
#LoadModule optional_fn_export_module modules/mod_optional_fn_export.so
|
||||||
|
#LoadModule dialup_module modules/mod_dialup.so
|
||||||
|
#LoadModule http2_module modules/mod_http2.so
|
||||||
|
#LoadModule proxy_http2_module modules/mod_proxy_http2.so
|
||||||
|
#LoadModule md_module modules/mod_md.so
|
||||||
|
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
|
||||||
|
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
|
||||||
|
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
|
||||||
|
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
|
||||||
|
LoadModule unixd_module modules/mod_unixd.so
|
||||||
|
#LoadModule heartbeat_module modules/mod_heartbeat.so
|
||||||
|
#LoadModule heartmonitor_module modules/mod_heartmonitor.so
|
||||||
|
#LoadModule dav_module modules/mod_dav.so
|
||||||
|
LoadModule status_module modules/mod_status.so
|
||||||
|
LoadModule autoindex_module modules/mod_autoindex.so
|
||||||
|
#LoadModule asis_module modules/mod_asis.so
|
||||||
|
#LoadModule info_module modules/mod_info.so
|
||||||
|
#LoadModule suexec_module modules/mod_suexec.so
|
||||||
|
<IfModule !mpm_prefork_module>
|
||||||
|
#LoadModule cgid_module modules/mod_cgid.so
|
||||||
|
</IfModule>
|
||||||
|
<IfModule mpm_prefork_module>
|
||||||
|
#LoadModule cgi_module modules/mod_cgi.so
|
||||||
|
</IfModule>
|
||||||
|
#LoadModule dav_fs_module modules/mod_dav_fs.so
|
||||||
|
#LoadModule dav_lock_module modules/mod_dav_lock.so
|
||||||
|
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
|
||||||
|
#LoadModule negotiation_module modules/mod_negotiation.so
|
||||||
|
LoadModule dir_module modules/mod_dir.so
|
||||||
|
#LoadModule imagemap_module modules/mod_imagemap.so
|
||||||
|
#LoadModule actions_module modules/mod_actions.so
|
||||||
|
#LoadModule speling_module modules/mod_speling.so
|
||||||
|
#LoadModule userdir_module modules/mod_userdir.so
|
||||||
|
LoadModule alias_module modules/mod_alias.so
|
||||||
|
LoadModule rewrite_module modules/mod_rewrite.so
|
||||||
|
|
||||||
|
<IfModule unixd_module>
|
||||||
|
#
|
||||||
|
# If you wish httpd to run as a different user or group, you must run
|
||||||
|
# httpd as root initially and it will switch.
|
||||||
|
#
|
||||||
|
# User/Group: The name (or #number) of the user/group to run httpd as.
|
||||||
|
# It is usually good practice to create a dedicated user and group for
|
||||||
|
# running httpd, as with most system services.
|
||||||
|
#
|
||||||
|
User www-data
|
||||||
|
Group www-data
|
||||||
|
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# 'Main' server configuration
|
||||||
|
#
|
||||||
|
# The directives in this section set up the values used by the 'main'
|
||||||
|
# server, which responds to any requests that aren't handled by a
|
||||||
|
# <VirtualHost> definition. These values also provide defaults for
|
||||||
|
# any <VirtualHost> containers you may define later in the file.
|
||||||
|
#
|
||||||
|
# All of these directives may appear inside <VirtualHost> containers,
|
||||||
|
# in which case these default settings will be overridden for the
|
||||||
|
# virtual host being defined.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# ServerAdmin: Your address, where problems with the server should be
|
||||||
|
# e-mailed. This address appears on some server-generated pages, such
|
||||||
|
# as error documents. e.g. admin@your-domain.com
|
||||||
|
#
|
||||||
|
ServerAdmin you@example.com
|
||||||
|
|
||||||
|
#
|
||||||
|
# ServerName gives the name and port that the server uses to identify itself.
|
||||||
|
# This can often be determined automatically, but we recommend you specify
|
||||||
|
# it explicitly to prevent problems during startup.
|
||||||
|
#
|
||||||
|
# If your host doesn't have a registered DNS name, enter its IP address here.
|
||||||
|
#
|
||||||
|
#ServerName www.example.com:80
|
||||||
|
|
||||||
|
#
|
||||||
|
# Deny access to the entirety of your server's filesystem. You must
|
||||||
|
# explicitly permit access to web content directories in other
|
||||||
|
# <Directory> blocks below.
|
||||||
|
#
|
||||||
|
<Directory />
|
||||||
|
AllowOverride none
|
||||||
|
Require all denied
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Note that from this point forward you must specifically allow
|
||||||
|
# particular features to be enabled - so if something's not working as
|
||||||
|
# you might expect, make sure that you have specifically enabled it
|
||||||
|
# below.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# DocumentRoot: The directory out of which you will serve your
|
||||||
|
# documents. By default, all requests are taken from this directory, but
|
||||||
|
# symbolic links and aliases may be used to point to other locations.
|
||||||
|
#
|
||||||
|
DocumentRoot "/usr/local/apache2/htdocs"
|
||||||
|
<Directory "/usr/local/apache2/htdocs">
|
||||||
|
#
|
||||||
|
# Possible values for the Options directive are "None", "All",
|
||||||
|
# or any combination of:
|
||||||
|
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
|
||||||
|
#
|
||||||
|
# Note that "MultiViews" must be named *explicitly* --- "Options All"
|
||||||
|
# doesn't give it to you.
|
||||||
|
#
|
||||||
|
# The Options directive is both complicated and important. Please see
|
||||||
|
# http://httpd.apache.org/docs/2.4/mod/core.html#options
|
||||||
|
# for more information.
|
||||||
|
#
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
|
||||||
|
#
|
||||||
|
# AllowOverride controls what directives may be placed in .htaccess files.
|
||||||
|
# It can be "All", "None", or any combination of the keywords:
|
||||||
|
# AllowOverride FileInfo AuthConfig Limit
|
||||||
|
#
|
||||||
|
AllowOverride All
|
||||||
|
|
||||||
|
#
|
||||||
|
# Controls who can get stuff from this server.
|
||||||
|
#
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
#
|
||||||
|
# DirectoryIndex: sets the file that Apache will serve if a directory
|
||||||
|
# is requested.
|
||||||
|
#
|
||||||
|
<IfModule dir_module>
|
||||||
|
DirectoryIndex index.php
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following lines prevent .htaccess and .htpasswd files from being
|
||||||
|
# viewed by Web clients.
|
||||||
|
#
|
||||||
|
<Files ".ht*">
|
||||||
|
Require all denied
|
||||||
|
</Files>
|
||||||
|
|
||||||
|
#
|
||||||
|
# ErrorLog: The location of the error log file.
|
||||||
|
# If you do not specify an ErrorLog directive within a <VirtualHost>
|
||||||
|
# container, error messages relating to that virtual host will be
|
||||||
|
# logged here. If you *do* define an error logfile for a <VirtualHost>
|
||||||
|
# container, that host's errors will be logged there and not here.
|
||||||
|
#
|
||||||
|
ErrorLog /proc/self/fd/2
|
||||||
|
|
||||||
|
#
|
||||||
|
# LogLevel: Control the number of messages logged to the error_log.
|
||||||
|
# Possible values include: debug, info, notice, warn, error, crit,
|
||||||
|
# alert, emerg.
|
||||||
|
#
|
||||||
|
LogLevel warn
|
||||||
|
|
||||||
|
<IfModule log_config_module>
|
||||||
|
#
|
||||||
|
# The following directives define some format nicknames for use with
|
||||||
|
# a CustomLog directive (see below).
|
||||||
|
#
|
||||||
|
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
|
||||||
|
LogFormat "%h %l %u %t \"%r\" %>s %b" common
|
||||||
|
|
||||||
|
<IfModule logio_module>
|
||||||
|
# You need to enable mod_logio.c to use %I and %O
|
||||||
|
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
#
|
||||||
|
# The location and format of the access logfile (Common Logfile Format).
|
||||||
|
# If you do not define any access logfiles within a <VirtualHost>
|
||||||
|
# container, they will be logged here. Contrariwise, if you *do*
|
||||||
|
# define per-<VirtualHost> access logfiles, transactions will be
|
||||||
|
# logged therein and *not* in this file.
|
||||||
|
#
|
||||||
|
CustomLog /proc/self/fd/1 common
|
||||||
|
|
||||||
|
#
|
||||||
|
# If you prefer a logfile with access, agent, and referer information
|
||||||
|
# (Combined Logfile Format) you can use the following directive.
|
||||||
|
#
|
||||||
|
#CustomLog "logs/access_log" combined
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule alias_module>
|
||||||
|
#
|
||||||
|
# Redirect: Allows you to tell clients about documents that used to
|
||||||
|
# exist in your server's namespace, but do not anymore. The client
|
||||||
|
# will make a new request for the document at its new location.
|
||||||
|
# Example:
|
||||||
|
# Redirect permanent /foo http://www.example.com/bar
|
||||||
|
|
||||||
|
#
|
||||||
|
# Alias: Maps web paths into filesystem paths and is used to
|
||||||
|
# access content that does not live under the DocumentRoot.
|
||||||
|
# Example:
|
||||||
|
# Alias /webpath /full/filesystem/path
|
||||||
|
#
|
||||||
|
# If you include a trailing / on /webpath then the server will
|
||||||
|
# require it to be present in the URL. You will also likely
|
||||||
|
# need to provide a <Directory> section to allow access to
|
||||||
|
# the filesystem path.
|
||||||
|
|
||||||
|
#
|
||||||
|
# ScriptAlias: This controls which directories contain server scripts.
|
||||||
|
# ScriptAliases are essentially the same as Aliases, except that
|
||||||
|
# documents in the target directory are treated as applications and
|
||||||
|
# run by the server when requested rather than as documents sent to the
|
||||||
|
# client. The same rules about trailing "/" apply to ScriptAlias
|
||||||
|
# directives as to Alias.
|
||||||
|
#
|
||||||
|
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
|
||||||
|
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule cgid_module>
|
||||||
|
#
|
||||||
|
# ScriptSock: On threaded servers, designate the path to the UNIX
|
||||||
|
# socket used to communicate with the CGI daemon of mod_cgid.
|
||||||
|
#
|
||||||
|
#Scriptsock cgisock
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
#
|
||||||
|
# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased
|
||||||
|
# CGI directory exists, if you have that configured.
|
||||||
|
#
|
||||||
|
<Directory "/usr/local/apache2/cgi-bin">
|
||||||
|
AllowOverride None
|
||||||
|
Options None
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<IfModule headers_module>
|
||||||
|
#
|
||||||
|
# Avoid passing HTTP_PROXY environment to CGI's on this or any proxied
|
||||||
|
# backend servers which have lingering "httpoxy" defects.
|
||||||
|
# 'Proxy' request header is undefined by the IETF, not listed by IANA
|
||||||
|
#
|
||||||
|
RequestHeader unset Proxy early
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mime_module>
|
||||||
|
#
|
||||||
|
# TypesConfig points to the file containing the list of mappings from
|
||||||
|
# filename extension to MIME-type.
|
||||||
|
#
|
||||||
|
TypesConfig conf/mime.types
|
||||||
|
|
||||||
|
#
|
||||||
|
# AddType allows you to add to or override the MIME configuration
|
||||||
|
# file specified in TypesConfig for specific file types.
|
||||||
|
#
|
||||||
|
#AddType application/x-gzip .tgz
|
||||||
|
#
|
||||||
|
# AddEncoding allows you to have certain browsers uncompress
|
||||||
|
# information on the fly. Note: Not all browsers support this.
|
||||||
|
#
|
||||||
|
#AddEncoding x-compress .Z
|
||||||
|
#AddEncoding x-gzip .gz .tgz
|
||||||
|
#
|
||||||
|
# If the AddEncoding directives above are commented-out, then you
|
||||||
|
# probably should define those extensions to indicate media types:
|
||||||
|
#
|
||||||
|
AddType application/x-compress .Z
|
||||||
|
AddType application/x-gzip .gz .tgz
|
||||||
|
|
||||||
|
#
|
||||||
|
# AddHandler allows you to map certain file extensions to "handlers":
|
||||||
|
# actions unrelated to filetype. These can be either built into the server
|
||||||
|
# or added with the Action directive (see below)
|
||||||
|
#
|
||||||
|
# To use CGI scripts outside of ScriptAliased directories:
|
||||||
|
# (You will also need to add "ExecCGI" to the "Options" directive.)
|
||||||
|
#
|
||||||
|
#AddHandler cgi-script .cgi
|
||||||
|
|
||||||
|
# For type maps (negotiated resources):
|
||||||
|
#AddHandler type-map var
|
||||||
|
|
||||||
|
#
|
||||||
|
# Filters allow you to process content before it is sent to the client.
|
||||||
|
#
|
||||||
|
# To parse .shtml files for server-side includes (SSI):
|
||||||
|
# (You will also need to add "Includes" to the "Options" directive.)
|
||||||
|
#
|
||||||
|
#AddType text/html .shtml
|
||||||
|
#AddOutputFilter INCLUDES .shtml
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
#
|
||||||
|
# The mod_mime_magic module allows the server to use various hints from the
|
||||||
|
# contents of the file itself to determine its type. The MIMEMagicFile
|
||||||
|
# directive tells the module where the hint definitions are located.
|
||||||
|
#
|
||||||
|
#MIMEMagicFile conf/magic
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customizable error responses come in three flavors:
|
||||||
|
# 1) plain text 2) local redirects 3) external redirects
|
||||||
|
#
|
||||||
|
# Some examples:
|
||||||
|
#ErrorDocument 500 "The server made a boo boo."
|
||||||
|
#ErrorDocument 404 /missing.html
|
||||||
|
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
|
||||||
|
#ErrorDocument 402 http://www.example.com/subscription_info.html
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# MaxRanges: Maximum number of Ranges in a request before
|
||||||
|
# returning the entire resource, or one of the special
|
||||||
|
# values 'default', 'none' or 'unlimited'.
|
||||||
|
# Default setting is to accept 200 Ranges.
|
||||||
|
#MaxRanges unlimited
|
||||||
|
|
||||||
|
#
|
||||||
|
# EnableMMAP and EnableSendfile: On systems that support it,
|
||||||
|
# memory-mapping or the sendfile syscall may be used to deliver
|
||||||
|
# files. This usually improves server performance, but must
|
||||||
|
# be turned off when serving from networked-mounted
|
||||||
|
# filesystems or if support for these functions is otherwise
|
||||||
|
# broken on your system.
|
||||||
|
# Defaults: EnableMMAP On, EnableSendfile Off
|
||||||
|
#
|
||||||
|
#EnableMMAP off
|
||||||
|
#EnableSendfile on
|
||||||
|
|
||||||
|
# Supplemental configuration
|
||||||
|
#
|
||||||
|
# The configuration files in the conf/extra/ directory can be
|
||||||
|
# included to add extra features or to modify the default configuration of
|
||||||
|
# the server, or you may simply copy their contents here and change as
|
||||||
|
# necessary.
|
||||||
|
|
||||||
|
# Server-pool management (MPM specific)
|
||||||
|
#Include conf/extra/httpd-mpm.conf
|
||||||
|
|
||||||
|
# Multi-language error messages
|
||||||
|
#Include conf/extra/httpd-multilang-errordoc.conf
|
||||||
|
|
||||||
|
# Fancy directory listings
|
||||||
|
#Include conf/extra/httpd-autoindex.conf
|
||||||
|
|
||||||
|
# Language settings
|
||||||
|
#Include conf/extra/httpd-languages.conf
|
||||||
|
|
||||||
|
# User home directories
|
||||||
|
#Include conf/extra/httpd-userdir.conf
|
||||||
|
|
||||||
|
# Real-time info on requests and configuration
|
||||||
|
#Include conf/extra/httpd-info.conf
|
||||||
|
|
||||||
|
# Virtual hosts
|
||||||
|
#Include conf/extra/httpd-vhosts.conf
|
||||||
|
|
||||||
|
# Local access to the Apache HTTP Server Manual
|
||||||
|
#Include conf/extra/httpd-manual.conf
|
||||||
|
|
||||||
|
# Distributed authoring and versioning (WebDAV)
|
||||||
|
#Include conf/extra/httpd-dav.conf
|
||||||
|
|
||||||
|
# Various default settings
|
||||||
|
#Include conf/extra/httpd-default.conf
|
||||||
|
|
||||||
|
# Configure mod_proxy_html to understand HTML4/XHTML1
|
||||||
|
<IfModule proxy_html_module>
|
||||||
|
Include conf/extra/proxy-html.conf
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Secure (SSL/TLS) connections
|
||||||
|
#Include conf/extra/httpd-ssl.conf
|
||||||
|
#
|
||||||
|
# Note: The following must must be present to support
|
||||||
|
# starting without SSL on platforms with no /dev/random equivalent
|
||||||
|
# but a statically compiled-in mod_ssl.
|
||||||
|
#
|
||||||
|
<IfModule ssl_module>
|
||||||
|
SSLRandomSeed startup builtin
|
||||||
|
SSLRandomSeed connect builtin
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Nurse: '{1d77f316-22f0-437d-827b-a975066f6b2f}'
|
||||||
|
|
||||||
|
- library: '&IDL_StarlightCare;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Nurse;'
|
||||||
|
name: 'Nurse'
|
||||||
|
index: 31001
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Patient: '{1bd2ce7c-3e22-47da-9b64-921ffc0ed244}'
|
||||||
|
|
||||||
|
- library: '&IDL_StarlightCare;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Patient;'
|
||||||
|
name: 'Patient'
|
||||||
|
index: 31002
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Hospital: '{54389173-4ef9-45fb-a10b-15d06b0ac696}'
|
||||||
|
|
||||||
|
- library: '&IDL_StarlightCare;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Hospital;'
|
||||||
|
name: 'Hospital'
|
||||||
|
index: 31003
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDI_Task_AssignPatients: '{5366c083-c7b6-436c-be60-e405ee4ac917}'
|
||||||
|
|
||||||
|
- IDM_AssignPatients_Start: '{19bf0b17-0e99-4226-80db-c40e76c7a60c}'
|
||||||
|
|
||||||
|
- IDM_AssignPatients: '{4c568764-5590-4af5-b635-e55b2f8d1887}'
|
||||||
|
- IDMB_AssignPatients: '{959ebea2-504e-4e29-8a43-bc7a46b16101}'
|
||||||
|
|
||||||
|
- IDE_AssignPatients_Start: '{235f36df-d5cb-4d73-88e2-c3849696881e}'
|
||||||
|
- IDE_AssignPatients: '{3fe3fb60-20d1-452e-b345-1b6d04e19c3a}'
|
||||||
|
|
||||||
|
- library: '&IDL_StarlightCare;'
|
||||||
|
instances:
|
||||||
|
|
||||||
|
- controlTransactionMethod: '&IDM_AssignPatients_Start;'
|
||||||
|
forClassId: '&IDC_Nurse;'
|
||||||
|
verb: ''
|
||||||
|
name: 'assign patients'
|
||||||
|
buildsResponseWithBRMB:
|
||||||
|
- globalIdentifier: '&IDMB_AssignPatients;'
|
||||||
|
executesMethod:
|
||||||
|
- type: 'buildUIResponseMethod'
|
||||||
|
globalIdentifier: '&IDM_AssignPatients;'
|
||||||
|
usesExecutableReturningElement: '&IDE_AssignPatients;'
|
||||||
|
|
||||||
|
- element: '&IDE_AssignPatients_Start;'
|
||||||
|
name: 'assign patients start'
|
||||||
|
processedByCTMethod: '&IDM_AssignPatients_Start;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{c4b50ab2-5025-49ce-9308-1e66416300a8}'
|
||||||
|
defaultDataType: '&IDE_Patient_Select;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
|
||||||
|
- element: '&IDE_AssignPatients;'
|
||||||
|
name: 'assign patients'
|
||||||
|
|
||||||
|
- sequenceTask: '&IDI_Task_AssignPatients;'
|
||||||
|
name: 'Assign Patients'
|
||||||
|
initiatingElement: '&IDE_AssignPatients_Start;'
|
||||||
|
taskCategory: '&IDI_TaskCategory_Nurse;'
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDE_Patient_Select: '{6eee89c4-18d0-4422-833c-7bbfddeab40d}'
|
||||||
|
|
||||||
|
- library: '&IDL_StarlightCare;'
|
||||||
|
instances:
|
||||||
|
- element: '&IDE_Patient_Select;'
|
||||||
|
name: 'patient select subedit'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{28e16937-6c7c-4808-928b-b0216be23e78}'
|
||||||
|
defaultDataType: '&IDC_Patient;'
|
||||||
@ -19,6 +19,3 @@
|
|||||||
familyName: 'Trevino'
|
familyName: 'Trevino'
|
||||||
images:
|
images:
|
||||||
- instance: '{1079b0d3-0a1d-47d3-a98c-3f062dc88f90}'
|
- instance: '{1079b0d3-0a1d-47d3-a98c-3f062dc88f90}'
|
||||||
|
|
||||||
|
|
||||||
# {b8136d2a-8238-443b-8d9e-4f47c8a47c4b}
|
|
||||||
@ -3,6 +3,10 @@
|
|||||||
- IDE_ClassSelect: '{bc393547-3a92-48b2-b0dc-7e93306ab5fb}'
|
- IDE_ClassSelect: '{bc393547-3a92-48b2-b0dc-7e93306ab5fb}'
|
||||||
- IDE_ViewClassButtons: '{a3fd6203-8e9c-4b7f-b731-e73f9f77967e}'
|
- IDE_ViewClassButtons: '{a3fd6203-8e9c-4b7f-b731-e73f9f77967e}'
|
||||||
|
|
||||||
|
- IDE_Class_Tabs: '{4926d78c-4397-4a33-8462-740635c937f3}'
|
||||||
|
- IDE_Class_Tabs_Structure: '{6550e278-eeeb-4efc-94c4-999a7dc41ca0}'
|
||||||
|
# {1b261a51-f185-49f9-9733-96184c8539a1}
|
||||||
|
|
||||||
- library: '&IDL_MochaBaseSystem;'
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
instances:
|
instances:
|
||||||
- workSet: '&IDI_WorkSet_ClassForEditClassTask;'
|
- workSet: '&IDI_WorkSet_ClassForEditClassTask;'
|
||||||
@ -133,6 +137,28 @@
|
|||||||
- element: '&IDE_ViewClass;'
|
- element: '&IDE_ViewClass;'
|
||||||
name: 'view class'
|
name: 'view class'
|
||||||
elementContents:
|
elementContents:
|
||||||
|
- globalIdentifier: '{36dcc0a3-9254-453f-b87d-1a9c57468826}'
|
||||||
|
defaultDataType: '&IDE_Class_Tabs;'
|
||||||
|
layout:
|
||||||
|
- type: '&IDC_GroupLayout;'
|
||||||
|
globalIdentifier: '{7cebd1b5-3fed-47b9-adb6-653d169a4177}'
|
||||||
|
options:
|
||||||
|
- instance: '&IDI_GroupLayoutOption_Tabbed;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
|
||||||
|
- element: '&IDE_Class_Tabs;'
|
||||||
|
name: 'class tabs'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{00b1ac1e-f10e-4498-8a9f-b4cb0eabd7c0}'
|
||||||
|
defaultDataType: '&IDE_Class_Tabs_Structure;'
|
||||||
|
label: 'Structure'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;' # !FIXME: nonsingular does not work for some reason
|
||||||
|
|
||||||
|
- element: '&IDE_Class_Tabs_Structure;'
|
||||||
|
name: 'class structure'
|
||||||
|
elementContents:
|
||||||
- globalIdentifier: '{156e622f-da03-42f9-8d45-a85b9336501a}'
|
- globalIdentifier: '{156e622f-da03-42f9-8d45-a85b9336501a}'
|
||||||
defaultDataType: '&IDE_ViewClassButtons;'
|
defaultDataType: '&IDE_ViewClassButtons;'
|
||||||
displayOptions:
|
displayOptions:
|
||||||
@ -148,16 +174,25 @@
|
|||||||
- element: '&IDE_EditClass;'
|
- element: '&IDE_EditClass;'
|
||||||
name: 'edit class'
|
name: 'edit class'
|
||||||
elementContents:
|
elementContents:
|
||||||
- globalIdentifier: '{c24c0ac5-4d79-4cad-9cb7-9917722d12d0}'
|
- globalIdentifier: '{f09f6918-3ad0-4160-af63-afffd6876706}'
|
||||||
defaultDataType: '&IDC_Class;'
|
defaultDataType: '&IDE_Class_Tabs;'
|
||||||
|
layout:
|
||||||
|
- type: '&IDC_GroupLayout;'
|
||||||
|
globalIdentifier: '{ed47ac5b-4101-45bd-91f4-28294c51b63d}'
|
||||||
|
options:
|
||||||
|
- instance: '&IDI_GroupLayoutOption_Tabbed;'
|
||||||
displayOptions:
|
displayOptions:
|
||||||
- instance: '&IDI_DisplayOption_DisplayAsPageTitle;'
|
|
||||||
- instance: '&IDI_DisplayOption_Required;'
|
|
||||||
- globalIdentifier: '{e9a6b12d-49a9-4224-bc1c-18cca8617fc2}'
|
|
||||||
defaultDataType: '&IDE_Class_Structure;'
|
|
||||||
displayOptions:
|
|
||||||
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
|
||||||
- instance: '&IDI_DisplayOption_Singular;'
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
# - globalIdentifier: '{c24c0ac5-4d79-4cad-9cb7-9917722d12d0}'
|
||||||
|
# defaultDataType: '&IDC_Class;'
|
||||||
|
# displayOptions:
|
||||||
|
# - instance: '&IDI_DisplayOption_DisplayAsPageTitle;'
|
||||||
|
# - instance: '&IDI_DisplayOption_Required;'
|
||||||
|
# - globalIdentifier: '{e9a6b12d-49a9-4224-bc1c-18cca8617fc2}'
|
||||||
|
# defaultDataType: '&IDE_Class_Structure;'
|
||||||
|
# displayOptions:
|
||||||
|
# - instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
# - instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
|
||||||
- element: '&IDE_Class_Structure;'
|
- element: '&IDE_Class_Structure;'
|
||||||
name: 'class structure subedits'
|
name: 'class structure subedits'
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDC_BinarySwitchLayout: '{248d781d-3d2f-4377-acc4-38112cf2f9d1}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_BinarySwitchLayout;'
|
||||||
|
name: 'Binary Switch Layout'
|
||||||
|
customTagName: 'binarySwitchLayout'
|
||||||
|
superclasses:
|
||||||
|
- instance: '&IDC_Layout;'
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDA_ThemeName: '{8cfc012c-52fd-4a66-8b2f-1b9b5e4af474}'
|
||||||
|
- IDC_RotarySwitchLayout: '{ea52446a-6332-49f7-baa9-4c78bea4faab}'
|
||||||
|
- IDC_RotarySwitchLayoutOption: '{cdd9a157-3896-471a-91e2-c69c9e1ea9a9}'
|
||||||
|
|
||||||
|
- IDR_Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option: '{ae716c95-1e26-48f4-9013-001d1a1854aa}'
|
||||||
|
- IDR_Rotary_Switch_Layout_Option__for__Rotary_Switch_Layout: '{fed5fe08-db78-4c29-860a-a5be1a15caa0}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- textAttribute: '&IDA_ThemeName;'
|
||||||
|
name: 'Theme Name'
|
||||||
|
|
||||||
|
- class: '&IDC_RotarySwitchLayout;'
|
||||||
|
name: 'Rotary Switch Layout'
|
||||||
|
customTagName: 'rotarySwitchLayout'
|
||||||
|
superclasses:
|
||||||
|
- instance: '&IDC_Layout;'
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_ThemeName;'
|
||||||
|
customTagName: 'theme'
|
||||||
|
relationships:
|
||||||
|
- instance: '&IDR_Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option;'
|
||||||
|
customTagName: 'options'
|
||||||
|
customTagNameCreatesInstanceOf: '&IDC_RotarySwitchLayoutOption;'
|
||||||
|
|
||||||
|
- class: '&IDC_RotarySwitchLayoutOption;'
|
||||||
|
name: 'Rotary Switch Layout Option'
|
||||||
|
registerForTemplate: yes
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_Value;'
|
||||||
|
customTagName: 'value'
|
||||||
|
|
||||||
|
- relationship: '&IDR_Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option;'
|
||||||
|
sourceClassId: '&IDC_RotarySwitchLayout;'
|
||||||
|
type: 'has'
|
||||||
|
destinationClassId: '&IDC_RotarySwitchLayoutOption;'
|
||||||
|
siblingRelationshipId: '&IDR_Rotary_Switch_Layout_Option__for__Rotary_Switch_Layout;'
|
||||||
|
singular: no
|
||||||
|
|
||||||
|
- relationship: '&IDR_Rotary_Switch_Layout_Option__for__Rotary_Switch_Layout;'
|
||||||
|
sourceClassId: '&IDC_RotarySwitchLayoutOption;'
|
||||||
|
type: 'for'
|
||||||
|
destinationClassId: '&IDC_RotarySwitchLayout;'
|
||||||
|
siblingRelationshipId: '&IDR_Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option;'
|
||||||
|
singular: no
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Device: '{51a0a1f6-cc81-4dbb-8b47-86745b9968f6}'
|
||||||
|
|
||||||
|
- IDR_Device__has__Device_Type: '{84cf3bee-6e82-4a44-b823-df241e3b8edb}'
|
||||||
|
- IDR_Device_Type__for__Device: '{aa947d3e-3952-4cc4-aa87-88e2641b0dc9}'
|
||||||
|
- IDR_Device__has__Protocol: '{6d7e8bc3-0214-4c4e-8cfa-91c33cade601}'
|
||||||
|
- IDR_Protocol__for__Device: '{ee7e3446-88c8-46c3-8e8a-735bcc2d6ab9}'
|
||||||
|
- IDR_Device__has__Room: '{45495325-22f8-407e-ada0-68be24eb924f}'
|
||||||
|
- IDR_Room__for__Device: '{e51006b2-8592-4380-b9a3-7721e0d367d6}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Device;'
|
||||||
|
name: 'Device'
|
||||||
|
index: 21101
|
||||||
|
customTagName: 'device'
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_Name;'
|
||||||
|
customTagName: 'name'
|
||||||
|
relationships:
|
||||||
|
- instance: '&IDR_Device__has__Device_Type;'
|
||||||
|
customTagName: 'deviceTypeId'
|
||||||
|
- instance: '&IDR_Device__has__Protocol;'
|
||||||
|
customTagName: 'protocolId'
|
||||||
|
- instance: '&IDR_Device__has__Room;'
|
||||||
|
customTagName: 'roomId'
|
||||||
|
defaultTask: '&IDI_Task_Device_View;'
|
||||||
|
relatedTasks:
|
||||||
|
- instance: '&IDI_Task_Device_View;'
|
||||||
|
- instance: '&IDI_Task_Device_Edit;'
|
||||||
|
|
||||||
|
- relationship: '&IDR_Device__has__Device_Type;'
|
||||||
|
sourceClassId: '&IDC_Device;'
|
||||||
|
type: 'has'
|
||||||
|
destinationClassId: '&IDC_DeviceType;'
|
||||||
|
siblingRelationshipId: '&IDR_Device_Type__for__Device;'
|
||||||
|
singular: yes
|
||||||
|
|
||||||
|
- relationship: '&IDR_Device_Type__for__Device;'
|
||||||
|
sourceClassId: '&IDC_DeviceType;'
|
||||||
|
type: 'for'
|
||||||
|
destinationClassId: '&IDC_Device;'
|
||||||
|
siblingRelationshipId: '&IDR_Device__has__Device_Type;'
|
||||||
|
singular: no
|
||||||
|
|
||||||
|
- relationship: '&IDR_Device__has__Protocol;'
|
||||||
|
sourceClassId: '&IDC_Device;'
|
||||||
|
type: 'has'
|
||||||
|
destinationClassId: '&IDC_Protocol;'
|
||||||
|
siblingRelationshipId: '&IDR_Protocol__for__Device;'
|
||||||
|
singular: yes
|
||||||
|
|
||||||
|
- relationship: '&IDR_Protocol__for__Device;'
|
||||||
|
sourceClassId: '&IDC_Protocol;'
|
||||||
|
type: 'for'
|
||||||
|
destinationClassId: '&IDC_Device;'
|
||||||
|
siblingRelationshipId: '&IDR_Device__has__Protocol;'
|
||||||
|
singular: no
|
||||||
|
|
||||||
|
- relationship: '&IDR_Device__has__Room;'
|
||||||
|
sourceClassId: '&IDC_Device;'
|
||||||
|
type: 'has'
|
||||||
|
destinationClassId: '&IDC_Room;'
|
||||||
|
siblingRelationshipId: '&IDR_Room__for__Device;'
|
||||||
|
singular: yes
|
||||||
|
|
||||||
|
- relationship: '&IDR_Room__for__Device;'
|
||||||
|
sourceClassId: '&IDC_Room;'
|
||||||
|
type: 'for'
|
||||||
|
destinationClassId: '&IDC_Device;'
|
||||||
|
siblingRelationshipId: '&IDR_Device__has__Room;'
|
||||||
|
singular: no
|
||||||
|
|
||||||
|
- device: '{235b454f-de7d-40b8-96bf-9b5fdc0fd4cf}'
|
||||||
|
name: 'lenovo-14IIL'
|
||||||
|
deviceTypeId: '{168850c5-150f-47ea-8671-7c73a7a8cabc}'
|
||||||
|
protocolId: '{c664b941-f6e8-4861-938a-9aa854bd89f3}'
|
||||||
|
|
||||||
|
- device: '{89f75de0-c782-494d-9026-28d85f3e048a}'
|
||||||
|
name: 'Living Room Lights Behind TV'
|
||||||
|
deviceTypeId: '{45a2407a-9422-42cf-b588-2dfdeeb65733}'
|
||||||
|
protocolId: '{4b18ce2d-a5a3-4ccb-99f4-32a2e781fc34}'
|
||||||
|
roomId: '{b8136d2a-8238-443b-8d9e-4f47c8a47c4b}'
|
||||||
|
|
||||||
|
- device: '{47a85ac8-ba23-46ac-b000-c6e7d43a29bf}'
|
||||||
|
name: 'Thermostat'
|
||||||
|
deviceTypeId: '{d6c4d815-5663-488d-b559-4fa12d65614d}'
|
||||||
|
protocolId: '{c664b941-f6e8-4861-938a-9aa854bd89f3}'
|
||||||
|
roomId: '{b8136d2a-8238-443b-8d9e-4f47c8a47c4b}'
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDC_DeviceType: '{62a8d816-2d17-4f8f-a231-511295b9f123}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_DeviceType;'
|
||||||
|
name: 'Device Type'
|
||||||
|
index: 21102
|
||||||
|
customTagName: 'deviceType'
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_Name;'
|
||||||
|
customTagName: 'name'
|
||||||
|
|
||||||
|
- deviceType: '{168850c5-150f-47ea-8671-7c73a7a8cabc}'
|
||||||
|
name: 'Computer'
|
||||||
|
|
||||||
|
- deviceType: '{45a2407a-9422-42cf-b588-2dfdeeb65733}'
|
||||||
|
name: 'Light'
|
||||||
|
|
||||||
|
- deviceType: '{ccaeb192-7604-4e80-a031-99261ca312ef}'
|
||||||
|
name: 'Switch'
|
||||||
|
|
||||||
|
- deviceType: '{d6c4d815-5663-488d-b559-4fa12d65614d}'
|
||||||
|
name: 'Thermostat'
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Protocol: '{e691d813-c043-4e72-9f7c-12c550034e27}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Protocol;'
|
||||||
|
name: 'Protocol'
|
||||||
|
index: 21103
|
||||||
|
customTagName: 'protocol'
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_Name;'
|
||||||
|
customTagName: 'name'
|
||||||
|
|
||||||
|
- protocol: '{c664b941-f6e8-4861-938a-9aa854bd89f3}'
|
||||||
|
name: 'Quovii-Ethernet'
|
||||||
|
|
||||||
|
- protocol: '{4c5e0b0b-c0ca-410b-bf49-4613642db932}'
|
||||||
|
name: 'X10'
|
||||||
|
|
||||||
|
- protocol: '{4b18ce2d-a5a3-4ccb-99f4-32a2e781fc34}'
|
||||||
|
name: 'Z-Wave'
|
||||||
|
|
||||||
|
- protocol: '{388428fb-e8b2-4c62-8a5c-ee4fba3e5a91}'
|
||||||
|
name: 'DMX'
|
||||||
|
|
||||||
|
- protocol: '{b36bea16-9c26-4579-8292-8942de428a66}'
|
||||||
|
name: 'Art-Net'
|
||||||
|
|
||||||
|
- protocol: '{540e91e3-207a-4848-8618-5ca924f5e86f}'
|
||||||
|
name: 'Zigbee'
|
||||||
|
|
||||||
|
- protocol: '{5d287561-1c95-4c75-a717-5b63c265ca4c}'
|
||||||
|
name: 'Lutron'
|
||||||
|
|
||||||
|
- protocol: '{062f1f6d-e354-4293-8855-f2669ee0bc01}'
|
||||||
|
name: 'Kidde'
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDC_Room: '{16572a37-87b0-4ee4-8503-4aadf229c16e}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- class: '&IDC_Room;'
|
||||||
|
name: 'Room'
|
||||||
|
index: 21104
|
||||||
|
customTagName: 'room'
|
||||||
|
attributes:
|
||||||
|
- instance: '&IDA_Name;'
|
||||||
|
customTagName: 'name'
|
||||||
|
# relationships:
|
||||||
|
# - instance: '&IDR_Device__has__Device_Type;'
|
||||||
|
# customTagName: 'deviceTypeId'
|
||||||
|
# - instance: '&IDR_Device__has__Protocol;'
|
||||||
|
# customTagName: 'protocolId'
|
||||||
|
# defaultTask: '&IDI_Task_Device_View;'
|
||||||
|
# relatedTasks:
|
||||||
|
# - instance: '&IDI_Task_Device_View;'
|
||||||
|
# - instance: '&IDI_Task_Device_Edit;'
|
||||||
|
|
||||||
|
- room: '{b8136d2a-8238-443b-8d9e-4f47c8a47c4b}'
|
||||||
|
name: 'Living Room'
|
||||||
@ -0,0 +1,119 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDI_TaskCategory_Device: '{b5866acf-1b2b-4b91-9dd7-42c7a83d3e42}'
|
||||||
|
- IDE_Device_Definition: '{fef7fa56-b830-4612-8cda-4ba246446a6f}'
|
||||||
|
- IDE_Device_Panels: '{2460d307-71d4-49c5-aeb6-929e0a8d11b5}'
|
||||||
|
- IDE_Device_Select: '{d2d65d00-b720-43b3-8148-5bc4b1ace442}'
|
||||||
|
|
||||||
|
- IDA_TestNumericAttribute: '{2b1786b8-2b53-445f-a9a9-7657d566dd27}'
|
||||||
|
- IDA_X10HouseCode: '{f3a1172c-530d-4173-8f50-28f1f2b932c7}'
|
||||||
|
- IDA_X10UnitCode: '{7173b0d2-116e-4749-88ae-f530feb6b1a5}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- taskCategory: '&IDI_TaskCategory_Device;'
|
||||||
|
name: 'Device'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Select;'
|
||||||
|
name: 'device select subedits'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{5e215417-06be-4347-9709-1122ec80bb77}'
|
||||||
|
defaultDataType: '&IDC_Device;'
|
||||||
|
|
||||||
|
- numericAttribute: '&IDA_TestNumericAttribute;'
|
||||||
|
name: 'Test Numeric Attribute'
|
||||||
|
minimumValue: 0
|
||||||
|
maximumValue: 65535
|
||||||
|
|
||||||
|
- binarySwitchLayout: '{5df8edda-59a2-484e-ad3f-0cc4017e8e90}'
|
||||||
|
|
||||||
|
- rotarySwitchLayout: '{22660131-df8f-4b59-990e-9e63bee88541}'
|
||||||
|
theme: 'danger'
|
||||||
|
options:
|
||||||
|
- value: 'A'
|
||||||
|
- value: 'B'
|
||||||
|
- value: 'C'
|
||||||
|
- value: 'D'
|
||||||
|
- value: 'E'
|
||||||
|
- value: 'F'
|
||||||
|
- value: 'G'
|
||||||
|
- value: 'H'
|
||||||
|
- value: 'I'
|
||||||
|
- value: 'J'
|
||||||
|
- value: 'K'
|
||||||
|
- value: 'L'
|
||||||
|
- value: 'M'
|
||||||
|
- value: 'N'
|
||||||
|
- value: 'O'
|
||||||
|
- value: 'P'
|
||||||
|
|
||||||
|
- rotarySwitchLayout: '{a95a9c14-9ba3-47f2-a24a-880546b505a4}'
|
||||||
|
theme: 'primary'
|
||||||
|
options:
|
||||||
|
- value: '1'
|
||||||
|
- value: '2'
|
||||||
|
- value: '3'
|
||||||
|
- value: '4'
|
||||||
|
- value: '5'
|
||||||
|
- value: '6'
|
||||||
|
- value: '7'
|
||||||
|
- value: '8'
|
||||||
|
- value: '9'
|
||||||
|
- value: '10'
|
||||||
|
- value: '11'
|
||||||
|
- value: '12'
|
||||||
|
- value: '13'
|
||||||
|
- value: '14'
|
||||||
|
- value: '15'
|
||||||
|
- value: '16'
|
||||||
|
|
||||||
|
- textAttribute: '&IDA_X10HouseCode;'
|
||||||
|
name: 'House Code'
|
||||||
|
|
||||||
|
- numericAttribute: '&IDA_X10UnitCode;'
|
||||||
|
name: 'Unit Code'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Definition;'
|
||||||
|
name: 'device subedits'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{a0ce4337-f5dd-457f-bcf2-10e87ef7e5d5}'
|
||||||
|
defaultDataType: '&IDA_Name;'
|
||||||
|
- globalIdentifier: '{e2ce9eaf-3c2b-48c5-b108-388c44e14176}'
|
||||||
|
defaultDataType: '&IDR_Device__has__Device_Type;'
|
||||||
|
label: 'Device Type'
|
||||||
|
- globalIdentifier: '{cd0e7e01-30f8-4302-90fc-b409c706993e}'
|
||||||
|
defaultDataType: '&IDR_Device__has__Protocol;'
|
||||||
|
label: 'Protocol'
|
||||||
|
dynamicDisplayOptions:
|
||||||
|
- globalIdentifier: '{2cc3eb4b-cb66-477c-b18f-867829563290}'
|
||||||
|
modifiesElementContents:
|
||||||
|
- instance: '{14c833ca-0e2d-4e6f-8da0-7d78d48b7b1c}' # computer subedits
|
||||||
|
# condition:
|
||||||
|
# - trueConditions:
|
||||||
|
# - globalIdentifier: '&IDMB_Generate_Random_Password__is__True;'
|
||||||
|
removesDisplayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_DoNotShow;'
|
||||||
|
- globalIdentifier: '{fb336c55-1abe-453e-83ba-87fa8b3bfbee}'
|
||||||
|
defaultDataType: '&IDA_TestNumericAttribute;'
|
||||||
|
label: 'Test Binary Switch'
|
||||||
|
layout: '{5df8edda-59a2-484e-ad3f-0cc4017e8e90}'
|
||||||
|
|
||||||
|
- globalIdentifier: '{fbd4448d-0eeb-44a7-b8f9-9877779af13a}'
|
||||||
|
defaultDataType: '&IDA_X10HouseCode;'
|
||||||
|
layout: '{22660131-df8f-4b59-990e-9e63bee88541}'
|
||||||
|
|
||||||
|
- globalIdentifier: '{aa8c3b58-73a4-482c-b63c-8bb4e5289a41}'
|
||||||
|
defaultDataType: '&IDA_X10UnitCode;'
|
||||||
|
layout: '{a95a9c14-9ba3-47f2-a24a-880546b505a4}'
|
||||||
|
|
||||||
|
- globalIdentifier: '{14c833ca-0e2d-4e6f-8da0-7d78d48b7b1c}'
|
||||||
|
defaultDataType: '&IDE_Device_Computer_Subedits;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_DoNotShow;'
|
||||||
|
- globalIdentifier: '{ef961d4e-b423-44b9-87d2-35b5f3984d47}'
|
||||||
|
defaultDataType: '&IDE_Protocol_ZWave_Subedits;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_DoNotShow;'
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDE_Device_Computer_Subedits: '{5182e243-dc69-4c31-aca8-5726fc73145d}'
|
||||||
|
- IDE_Device_Computer_Subedit_Tabs: '{5f7e1efb-33c5-4cd1-a6a9-2a439b878b67}'
|
||||||
|
- IDE_Device_Computer_Subedit_Network: '{c791db99-b487-4335-befc-0afde45e4ed4}'
|
||||||
|
|
||||||
|
- IDA_UseDHCP: '{307a5103-99e0-41b5-aae9-be8e5d9c9995}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- element: '&IDE_Device_Computer_Subedits;'
|
||||||
|
name: 'computer subedits'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{1f6ddc69-ad4f-428d-bd0b-062328eb7081}'
|
||||||
|
defaultDataType: '&IDE_Device_Computer_Subedit_Tabs;'
|
||||||
|
layout: '{a8a233f1-42d1-4bba-a20d-047a9cebd175}'
|
||||||
|
|
||||||
|
- booleanAttribute: '&IDA_UseDHCP;'
|
||||||
|
name: 'Use DHCP'
|
||||||
|
|
||||||
|
- groupLayout: '{a8a233f1-42d1-4bba-a20d-047a9cebd175}'
|
||||||
|
options:
|
||||||
|
- instance: '&IDI_GroupLayoutOption_Tabbed;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Computer_Subedit_Tabs;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{60e38734-a2be-44ae-888c-d683695e86b1}'
|
||||||
|
defaultDataType: '&IDE_Device_Computer_Subedit_Network;'
|
||||||
|
label: 'Network'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Computer_Subedit_Network;'
|
||||||
|
name: 'Network'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{b889d09b-2620-4e80-a7aa-52cb25fb959f}'
|
||||||
|
defaultDataType: '&IDA_UseDHCP;'
|
||||||
|
label: 'Use DHCP'
|
||||||
|
- globalIdentifier: '{a6971557-623d-4a63-bb88-b3f8682c409e}'
|
||||||
|
defaultDataType: '&IDA_IPAddress;'
|
||||||
|
label: 'IP Address'
|
||||||
|
- globalIdentifier: '{b895bdea-32f2-4b85-9093-0c1e506e4a6c}'
|
||||||
|
defaultDataType: '&IDA_Name;'
|
||||||
|
label: 'Name'
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDI_Task_Device_Edit: '{92c338b8-828b-41d5-929f-56e454643c58}'
|
||||||
|
- IDE_Device_Edit: '{9223ea8e-aa43-4a90-bdde-cb978088489f}'
|
||||||
|
|
||||||
|
- IDE_Device_Edit_Start: '{a310dacd-b4c1-4f31-a140-05131bbe64e9}'
|
||||||
|
- IDM_Device_Edit_Start: '{63c76968-e26a-4058-927e-771c9190b15b}'
|
||||||
|
|
||||||
|
- IDMB_Device_Edit: '{003ed29c-8826-491e-9a0c-a9f4b5c69928}'
|
||||||
|
- IDM_Device_Edit: '{dd7ab568-15b4-4834-9ed6-4a16449e5867}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- sequenceTask: '&IDI_Task_Device_Edit;'
|
||||||
|
name: 'Edit Device'
|
||||||
|
initiatingElement: '&IDE_Device_Edit_Start;'
|
||||||
|
taskCategory: '&IDI_TaskCategory_Device;'
|
||||||
|
|
||||||
|
- controlTransactionMethod: '&IDM_Device_Edit_Start;'
|
||||||
|
forClassId: '&IDC_Device;'
|
||||||
|
verb: ''
|
||||||
|
name: 'Device Edit Start'
|
||||||
|
buildsResponseWithBRMB: '&IDMB_Device_Edit;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Edit_Start;'
|
||||||
|
name: 'Edit Device Start'
|
||||||
|
processedByCTMethod: '&IDM_Device_Edit_Start;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{f4e0a7a8-4ec1-4a12-b2cc-abaa84345772}'
|
||||||
|
defaultDataType: '&IDE_Device_Select;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_Edit;'
|
||||||
|
name: 'Edit Device'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{b789e221-3c0b-49ea-a2f4-58e0e58b1213}'
|
||||||
|
defaultDataType: '&IDC_Device;'
|
||||||
|
label: 'Device'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_NotEnterable;'
|
||||||
|
- instance: '&IDI_DisplayOption_DoNotShow;'
|
||||||
|
- globalIdentifier: '{a601df82-ee3e-43f5-a9c8-2afbdefec1c3}'
|
||||||
|
defaultDataType: '&IDE_Device_Definition;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
|
||||||
|
- buildUIResponseMethod: '&IDM_Device_Edit;'
|
||||||
|
usesExecutableReturningElement: '&IDE_Device_Edit;'
|
||||||
|
|
||||||
|
- buildResponseMethodBinding: '&IDMB_Device_Edit;'
|
||||||
|
executesMethod: '&IDM_Device_Edit;'
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDE_Protocol_Kidde_Subedits: '{4973e9b2-49eb-4efe-8006-3895ebe068f1}'
|
||||||
|
- IDE_Protocol_Kidde_Subedit_Tabs: '{e9e7a000-4b72-40b6-955d-aeeaf82d6c71}'
|
||||||
|
- IDE_Protocol_Kidde_Subedit_Network: '{9730e79d-b07b-4ca6-9498-19de08ed4438}'
|
||||||
|
- IDA_KiddeAddress: '{10e8fcd9-12a0-4614-b30b-b62b32a1547d}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- element: '&IDE_Protocol_Kidde_Subedits;'
|
||||||
|
name: 'kidde subedits'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{7e721db2-abb6-4f8b-beb6-20a0d2bb51d8}'
|
||||||
|
defaultDataType: '&IDE_Protocol_Kidde_Subedit_Tabs;'
|
||||||
|
layout: '{f57a229d-832c-4bbf-9be6-39cef96eaa51}'
|
||||||
|
|
||||||
|
- groupLayout: '{f57a229d-832c-4bbf-9be6-39cef96eaa51}'
|
||||||
|
options:
|
||||||
|
- instance: '&IDI_GroupLayoutOption_Tabbed;'
|
||||||
|
|
||||||
|
- numericAttribute: '&IDA_KiddeAddress;'
|
||||||
|
name: 'Kidde Address'
|
||||||
|
|
||||||
|
- binarySwitchLayout: '{44392a21-68da-4b86-a858-3c39ce054abf}'
|
||||||
|
|
||||||
|
- element: '&IDE_Protocol_Kidde_Subedit_Tabs;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{7e1fc142-ee08-4409-97d0-e42994f22daa}'
|
||||||
|
defaultDataType: '&IDE_Protocol_Kidde_Subedit_Network;'
|
||||||
|
label: 'Kidde'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
|
||||||
|
- element: '&IDE_Protocol_Kidde_Subedit_Network;'
|
||||||
|
name: 'Network'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{7b401357-1eb5-4427-9198-57a1f14d1270}'
|
||||||
|
defaultDataType: '&IDA_KiddeAddress;'
|
||||||
|
layout: '{44392a21-68da-4b86-a858-3c39ce054abf}'
|
||||||
|
label: 'Address'
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
- entityDefinitions:
|
||||||
|
- IDI_Task_Device_View: '{b9d1daf8-ac77-473f-b5df-a8ee1256c98b}'
|
||||||
|
- IDE_Device_View: '{7340c83a-c5ca-41fc-a1f5-963c8e7e9067}'
|
||||||
|
|
||||||
|
- IDE_Device_View_Start: '{1caa3a72-79c1-4276-89f3-179f0bf4859d}'
|
||||||
|
- IDM_Device_View_Start: '{f04b2523-45ff-48e6-a3b4-c9c3818c0636}'
|
||||||
|
|
||||||
|
- IDMB_Device_View: '{63531fd3-1963-4510-987f-5349cde64d81}'
|
||||||
|
- IDM_Device_View: '{9bc93c3d-7348-4075-b179-c3d6f144d568}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- sequenceTask: '&IDI_Task_Device_View;'
|
||||||
|
name: 'View Device'
|
||||||
|
initiatingElement: '&IDE_Device_View_Start;'
|
||||||
|
taskCategory: '&IDI_TaskCategory_Device;'
|
||||||
|
|
||||||
|
- controlTransactionMethod: '&IDM_Device_View_Start;'
|
||||||
|
forClassId: '&IDC_Device;'
|
||||||
|
verb: ''
|
||||||
|
name: 'Device View Start'
|
||||||
|
buildsResponseWithBRMB: '&IDMB_Device_View;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_View_Start;'
|
||||||
|
name: 'View Device Start'
|
||||||
|
processedByCTMethod: '&IDM_Device_View_Start;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{5a5c572f-8d13-4f4a-9651-53585d82859f}'
|
||||||
|
defaultDataType: '&IDE_Device_Select;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
|
||||||
|
- element: '&IDE_Device_View;'
|
||||||
|
name: 'View Device'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{dd6b5443-4480-467f-a9ce-395366b479e9}'
|
||||||
|
defaultDataType: '&IDC_Device;'
|
||||||
|
label: 'Device'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_NotEnterable;'
|
||||||
|
- instance: '&IDI_DisplayOption_DoNotShow;'
|
||||||
|
- globalIdentifier: '{2734715a-b232-491a-aafb-9499c423890f}'
|
||||||
|
defaultDataType: '&IDE_Device_Definition;'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_NotEnterable;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
|
||||||
|
- buildUIResponseMethod: '&IDM_Device_View;'
|
||||||
|
usesExecutableReturningElement: '&IDE_Device_View;'
|
||||||
|
|
||||||
|
- buildResponseMethodBinding: '&IDMB_Device_View;'
|
||||||
|
executesMethod: '&IDM_Device_View;'
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
- entityDefinitions:
|
||||||
|
- IDE_Protocol_ZWave_Subedits: '{702150af-6c63-4d8b-b240-e6e72015d5ed}'
|
||||||
|
- IDE_Protocol_ZWave_Subedit_Tabs: '{d547bec8-efb1-4240-a02e-435b755dabe8}'
|
||||||
|
- IDE_Protocol_ZWave_Subedit_Network: '{00e83e02-cbd9-4eb3-857b-5d9df41cec71}'
|
||||||
|
|
||||||
|
- library: '&IDL_MochaBaseSystem;'
|
||||||
|
instances:
|
||||||
|
- element: '&IDE_Protocol_ZWave_Subedits;'
|
||||||
|
name: 'z-wave subedits'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{c04f20b0-96b3-4779-9c6c-ad160d105755}'
|
||||||
|
defaultDataType: '&IDE_Protocol_ZWave_Subedit_Tabs;'
|
||||||
|
layout: '{07091788-296c-448f-ace4-e493465f114b}'
|
||||||
|
|
||||||
|
- booleanAttribute: '&IDA_UseDHCP;'
|
||||||
|
name: 'Use DHCP'
|
||||||
|
|
||||||
|
- groupLayout: '{07091788-296c-448f-ace4-e493465f114b}'
|
||||||
|
options:
|
||||||
|
- instance: '&IDI_GroupLayoutOption_Tabbed;'
|
||||||
|
|
||||||
|
- element: '&IDE_Protocol_ZWave_Subedit_Tabs;'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{7b16a228-b633-4863-bccf-5c49ef58658d}'
|
||||||
|
defaultDataType: '&IDE_Protocol_ZWave_Subedit_Network;'
|
||||||
|
label: 'Z-Wave'
|
||||||
|
displayOptions:
|
||||||
|
- instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
|
||||||
|
- instance: '&IDI_DisplayOption_Singular;'
|
||||||
|
|
||||||
|
- element: '&IDE_Protocol_ZWave_Subedit_Network;'
|
||||||
|
name: 'Network'
|
||||||
|
elementContents:
|
||||||
|
- globalIdentifier: '{8606ffd6-0ea8-4542-bb2a-a701981a014b}'
|
||||||
|
layout:
|
||||||
|
- type: '&IDC_ButtonLayout;'
|
||||||
|
executesTask: '&IDI_Task_Element_Edit;'
|
||||||
|
relatedInstance: '&IDI_WorkSet_TaskRelatedInstance;'
|
||||||
|
label: 'Enroll Device'
|
||||||
@ -21,5 +21,3 @@
|
|||||||
|
|
||||||
- returnInstanceSetMethodBinding: '&IDMB_Product__get__Product_Type;'
|
- returnInstanceSetMethodBinding: '&IDMB_Product__get__Product_Type;'
|
||||||
executesMethod: '&IDM_Product__get__Product_Type;'
|
executesMethod: '&IDM_Product__get__Product_Type;'
|
||||||
|
|
||||||
# {ee7e3446-88c8-46c3-8e8a-735bcc2d6ab9}
|
|
||||||
@ -16,6 +16,7 @@ class KnownAttributeGuids
|
|||||||
const MethodType = "{47ae57a9-7723-48a8-80f2-dd410d929e14}";
|
const MethodType = "{47ae57a9-7723-48a8-80f2-dd410d929e14}";
|
||||||
|
|
||||||
const ClassName = "c7e8d78ecfac4dacae242ac67a0ba9d3";
|
const ClassName = "c7e8d78ecfac4dacae242ac67a0ba9d3";
|
||||||
|
const ThemeName = "{8cfc012c-52fd-4a66-8b2f-1b9b5e4af474}";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Numeric Attribute specifying the maximum length of an input field.
|
* A Numeric Attribute specifying the maximum length of an input field.
|
||||||
|
|||||||
@ -150,5 +150,8 @@ class KnownClassGuids
|
|||||||
const ProcessRelatedUpdatesMethod = "2953e69803c54752a1ebcbbfa8f13905";
|
const ProcessRelatedUpdatesMethod = "2953e69803c54752a1ebcbbfa8f13905";
|
||||||
const SelectFromInstanceSetMethod = "{130637B4-17A7-4394-8F4D-E83A79114E6C}";
|
const SelectFromInstanceSetMethod = "{130637B4-17A7-4394-8F4D-E83A79114E6C}";
|
||||||
const ConditionalSelectFromInstanceSetMethod = "{ffea8e52-06e5-4e95-8c40-da3ba54ce95f}";
|
const ConditionalSelectFromInstanceSetMethod = "{ffea8e52-06e5-4e95-8c40-da3ba54ce95f}";
|
||||||
|
|
||||||
|
const BinarySwitchLayout = "{248d781d-3d2f-4377-acc4-38112cf2f9d1}";
|
||||||
|
const RotarySwitchLayout = "{ea52446a-6332-49f7-baa9-4c78bea4faab}";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@ -266,6 +266,8 @@ class KnownRelationshipGuids
|
|||||||
|
|
||||||
const Layout__has__Style = "{e684bb26-7e78-4a21-b8b4-5a550f3053d5}";
|
const Layout__has__Style = "{e684bb26-7e78-4a21-b8b4-5a550f3053d5}";
|
||||||
|
|
||||||
|
const Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option = "{ae716c95-1e26-48f4-9013-001d1a1854aa}";
|
||||||
|
|
||||||
const Element_Content__has__Element_Content_Display_Option = "f070dfa762604488a779fae291903f2d";
|
const Element_Content__has__Element_Content_Display_Option = "f070dfa762604488a779fae291903f2d";
|
||||||
|
|
||||||
const Element_Content__has__Parameter_Assignment = "51214ef0458a44fa8b9df3d9d2309388";
|
const Element_Content__has__Parameter_Assignment = "51214ef0458a44fa8b9df3d9d2309388";
|
||||||
|
|||||||
@ -25,6 +25,13 @@
|
|||||||
use Phast\Utilities\Stopwatch;
|
use Phast\Utilities\Stopwatch;
|
||||||
use Phast\UUID;
|
use Phast\UUID;
|
||||||
use Phast\WebControlAttribute;
|
use Phast\WebControlAttribute;
|
||||||
|
|
||||||
|
use Phast\WebControls\BinarySwitch;
|
||||||
|
use Phast\WebControls\BinarySwitchEndianness;
|
||||||
|
|
||||||
|
use Phast\WebControls\RotarySwitch;
|
||||||
|
use Phast\WebControls\RotarySwitchOption;
|
||||||
|
|
||||||
use Phast\WebControls\Button;
|
use Phast\WebControls\Button;
|
||||||
use Phast\WebControls\TabContainer;
|
use Phast\WebControls\TabContainer;
|
||||||
use Phast\WebControls\TabPage;
|
use Phast\WebControls\TabPage;
|
||||||
@ -378,7 +385,7 @@
|
|||||||
echo ("</div>");
|
echo ("</div>");
|
||||||
$this->renderEndForm($allElementsAreReadonly);
|
$this->renderEndForm($allElementsAreReadonly);
|
||||||
|
|
||||||
if (!$allElementsAreReadonly)
|
if (false) // (!$allElementsAreReadonly)
|
||||||
{
|
{
|
||||||
echo("<script type=\"text/javascript\">");
|
echo("<script type=\"text/javascript\">");
|
||||||
echo(<<<EOF
|
echo(<<<EOF
|
||||||
@ -1315,6 +1322,54 @@ EOF
|
|||||||
|
|
||||||
array_pop($parentElementContents);
|
array_pop($parentElementContents);
|
||||||
}
|
}
|
||||||
|
else if ($ecLayoutParentClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::BinarySwitchLayout)))
|
||||||
|
{
|
||||||
|
$bs = new BinarySwitch();
|
||||||
|
$bs->Name = "ec_" . $fullyQualifiedECID;
|
||||||
|
$bs->Endianness = BinarySwitchEndianness::LittleEndian;
|
||||||
|
|
||||||
|
|
||||||
|
// Executable returning Attribute
|
||||||
|
$value = 0;
|
||||||
|
if ($oms->is_a($ecInst, KnownClassGuids::ExecutableReturningAttribute))
|
||||||
|
{
|
||||||
|
$value = $oms->getAttributeValue($relatedInstance, $ecInst);
|
||||||
|
}
|
||||||
|
$bs->Value = $value;
|
||||||
|
|
||||||
|
if ($renderNotEnterable)
|
||||||
|
{
|
||||||
|
$bs->Enabled = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$bs->Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// $bs->Value = $value;
|
||||||
|
$bs->Render();
|
||||||
|
}
|
||||||
|
else if ($ecLayoutParentClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::RotarySwitchLayout)))
|
||||||
|
{
|
||||||
|
$bs = new RotarySwitch();
|
||||||
|
$bs->Name = "ec_" . $fullyQualifiedECID;
|
||||||
|
|
||||||
|
$themeName = $oms->getAttributeValue($ecLayout, KnownAttributeGuids::ThemeName);
|
||||||
|
if ($themeName !== null)
|
||||||
|
{
|
||||||
|
$bs->ClassList[] = "uwt-color-" . $themeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rotarySwitchOptions = $oms->getRelatedInstances($ecLayout, KnownRelationshipGuids::Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option);
|
||||||
|
foreach ($rotarySwitchOptions as $rotarySwitchOption)
|
||||||
|
{
|
||||||
|
$value = $oms->getAttributeValue($rotarySwitchOption, KnownAttributeGuids::Value);
|
||||||
|
$bs->Options[] = new RotarySwitchOption($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// $bs->Value = $value;
|
||||||
|
$bs->Render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
47
php/mocha/themes/avondale/uwt-binaryswitch.less
Normal file
47
php/mocha/themes/avondale/uwt-binaryswitch.less
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
div.uwt-binaryswitch
|
||||||
|
{
|
||||||
|
border: solid 1px var(--uwt-color-gray-400);
|
||||||
|
|
||||||
|
&:not([disabled])
|
||||||
|
{
|
||||||
|
&:hover
|
||||||
|
{
|
||||||
|
border-color: var(--uwt-color-accent);
|
||||||
|
}
|
||||||
|
&> div.uwt-binaryswitch-switches
|
||||||
|
{
|
||||||
|
&> div.uwt-switch
|
||||||
|
{
|
||||||
|
&:hover
|
||||||
|
{
|
||||||
|
border-color: var(--uwt-color-gray-600);
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-gray-600);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&> div.uwt-binaryswitch-switches
|
||||||
|
{
|
||||||
|
&> div.uwt-switch
|
||||||
|
{
|
||||||
|
transition: all 0.3s;
|
||||||
|
border: solid 1px var(--uwt-color-gray-400);
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-gray-200);
|
||||||
|
}
|
||||||
|
&.uwt-selected
|
||||||
|
{
|
||||||
|
border-color: var(--uwt-color-accent);
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
php/mocha/themes/avondale/uwt-rotaryswitch.less
Normal file
7
php/mocha/themes/avondale/uwt-rotaryswitch.less
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
div.uwt-rotaryswitch
|
||||||
|
{
|
||||||
|
&> div.uwt-rotaryswitch-indicator
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,6 +9,7 @@
|
|||||||
@import "uwt-alert.less";
|
@import "uwt-alert.less";
|
||||||
@import "uwt-applicationmenu.less";
|
@import "uwt-applicationmenu.less";
|
||||||
@import "uwt-badge.less";
|
@import "uwt-badge.less";
|
||||||
|
@import "uwt-binaryswitch.less";
|
||||||
@import "uwt-blockquote.less";
|
@import "uwt-blockquote.less";
|
||||||
@import "uwt-button.less";
|
@import "uwt-button.less";
|
||||||
@import "uwt-checkbox.less";
|
@import "uwt-checkbox.less";
|
||||||
@ -26,6 +27,7 @@
|
|||||||
@import "uwt-panel.less";
|
@import "uwt-panel.less";
|
||||||
@import "uwt-popup.less";
|
@import "uwt-popup.less";
|
||||||
@import "uwt-richtextbox.less";
|
@import "uwt-richtextbox.less";
|
||||||
|
@import "uwt-rotaryswitch.less";
|
||||||
@import "uwt-sidebar.less";
|
@import "uwt-sidebar.less";
|
||||||
@import "uwt-slider.less";
|
@import "uwt-slider.less";
|
||||||
@import "uwt-spinner.less";
|
@import "uwt-spinner.less";
|
||||||
|
|||||||
91
php/mocha/themes/common/styles/uwt-binaryswitch.less
Normal file
91
php/mocha/themes/common/styles/uwt-binaryswitch.less
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
div.uwt-binaryswitch
|
||||||
|
{
|
||||||
|
&> div.uwt-binaryswitch-switches
|
||||||
|
{
|
||||||
|
background: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
&> div.uwt-switch
|
||||||
|
{
|
||||||
|
border: solid 1px #aaaaaa;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
margin: 16px 8px 8px 8px;
|
||||||
|
&> label.uwt-switch-label
|
||||||
|
{
|
||||||
|
font-size: 8pt;
|
||||||
|
position: absolute;
|
||||||
|
top: -16px;
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
height: 48px;
|
||||||
|
position: relative;
|
||||||
|
width: 16px;
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
padding: 8px;
|
||||||
|
background: #cccccc;
|
||||||
|
height: 4px;
|
||||||
|
position: absolute;
|
||||||
|
top: 28px;
|
||||||
|
width: 0px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
&.uwt-selected
|
||||||
|
{
|
||||||
|
background-color: #fff7cc;
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&> input.uwt-binaryswitch-input, &> label.uwt-binaryswitch-label
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&> label.uwt-binaryswitch-label
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
cursor: text;
|
||||||
|
padding: 8px;
|
||||||
|
user-select: revert;
|
||||||
|
}
|
||||||
|
&[disabled]
|
||||||
|
{
|
||||||
|
&> div.uwt-binaryswitch-switches
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-gray-300);
|
||||||
|
&> div.uwt-switch
|
||||||
|
{
|
||||||
|
background-color: var(--uwt-color-gray-500);
|
||||||
|
cursor: default;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
&> div.uwt-switch-indicator
|
||||||
|
{
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&> input.uwt-binaryswitch-input
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&> label.uwt-binaryswitch-label
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
76
php/mocha/themes/common/styles/uwt-rotaryswitch.less
Normal file
76
php/mocha/themes/common/styles/uwt-rotaryswitch.less
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
@RotarySwitchSize: 128px;
|
||||||
|
@RotarySwitchButtonSize: 16px;
|
||||||
|
|
||||||
|
div.uwt-rotaryswitch
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
width: @RotarySwitchSize;
|
||||||
|
|
||||||
|
&> div.uwt-rotaryswitch-indicator
|
||||||
|
{
|
||||||
|
left: 75%;
|
||||||
|
top: 50%;
|
||||||
|
height: 3px;
|
||||||
|
width: 50%;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
transform-origin: 0px 0px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
|
||||||
|
margin: -4px 0px;
|
||||||
|
}
|
||||||
|
&> ul
|
||||||
|
{
|
||||||
|
background-color: #fff;
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 32px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
width: @RotarySwitchSize;
|
||||||
|
height: @RotarySwitchSize;
|
||||||
|
|
||||||
|
&> li
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
width: @RotarySwitchSize;
|
||||||
|
height: @RotarySwitchSize;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
&> a
|
||||||
|
{
|
||||||
|
pointer-events: all;
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
width: @RotarySwitchButtonSize;
|
||||||
|
height: @RotarySwitchButtonSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.uwt-javascript-disabled)
|
||||||
|
{
|
||||||
|
div.uwt-rotaryswitch
|
||||||
|
{
|
||||||
|
&> select
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body.uwt-javascript-disabled
|
||||||
|
{
|
||||||
|
div.uwt-rotaryswitch
|
||||||
|
{
|
||||||
|
&> ul
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&> div.uwt-rotaryswitch-indicator
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@
|
|||||||
@import "uwt-alert.less";
|
@import "uwt-alert.less";
|
||||||
@import "uwt-applicationmenu.less";
|
@import "uwt-applicationmenu.less";
|
||||||
@import "uwt-badge.less";
|
@import "uwt-badge.less";
|
||||||
|
@import "uwt-binaryswitch.less";
|
||||||
@import "uwt-button.less";
|
@import "uwt-button.less";
|
||||||
@import "uwt-button-group.less";
|
@import "uwt-button-group.less";
|
||||||
@import "uwt-calendar.less";
|
@import "uwt-calendar.less";
|
||||||
@ -30,6 +31,7 @@
|
|||||||
@import "uwt-progressbar.less";
|
@import "uwt-progressbar.less";
|
||||||
@import "uwt-ribbon.less";
|
@import "uwt-ribbon.less";
|
||||||
@import "uwt-ribbon-listview.less";
|
@import "uwt-ribbon-listview.less";
|
||||||
|
@import "uwt-rotaryswitch.less";
|
||||||
@import "uwt-searchbar.less";
|
@import "uwt-searchbar.less";
|
||||||
@import "uwt-sidebar.less";
|
@import "uwt-sidebar.less";
|
||||||
@import "uwt-sidebar-profile.less";
|
@import "uwt-sidebar-profile.less";
|
||||||
|
|||||||
@ -1 +1,18 @@
|
|||||||
@import "mcx-instancebrowser.less";
|
@import "mcx-instancebrowser.less";
|
||||||
|
|
||||||
|
@media (max-width: 1000px)
|
||||||
|
{
|
||||||
|
body.mcx-loginpage
|
||||||
|
{
|
||||||
|
form
|
||||||
|
{
|
||||||
|
position: fixed;
|
||||||
|
right: 0px;
|
||||||
|
left: 0px;
|
||||||
|
top: 0px;
|
||||||
|
bottom: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,8 +2,6 @@
|
|||||||
@import "mcx-elementcontent.less";
|
@import "mcx-elementcontent.less";
|
||||||
@import "mcx-instancebrowser.less";
|
@import "mcx-instancebrowser.less";
|
||||||
|
|
||||||
@import "mobile/uwt.less";
|
|
||||||
|
|
||||||
html
|
html
|
||||||
{
|
{
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
@ -204,6 +202,12 @@ div.mcx-instancebrowser
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// hide the mcx-empty-text for binary switch
|
||||||
|
div.uwt-binaryswitch + span.mcx-empty-text
|
||||||
|
{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.mcx-validation-message.uwt-color-danger
|
.mcx-validation-message.uwt-color-danger
|
||||||
{
|
{
|
||||||
color: var(--uwt-color-danger);
|
color: var(--uwt-color-danger);
|
||||||
@ -212,3 +216,5 @@ div.mcx-instancebrowser
|
|||||||
{
|
{
|
||||||
color: var(--uwt-color-warning);
|
color: var(--uwt-color-warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@import "mobile/uwt.less";
|
||||||
|
|||||||
362
python/mocha-shell.py
Normal file
362
python/mocha-shell.py
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
#
|
||||||
|
# mocha-shell - the 'latte' python REPL shell for mocha
|
||||||
|
# Copyright (C) 2024 Michael Becker
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from mocha.core import InstanceKey, InstanceReference
|
||||||
|
from mocha.oms import Oms
|
||||||
|
from mocha.definitions import KnownClassGuids, KnownInstanceGuids, KnownAttributeGuids, KnownRelationshipGuids
|
||||||
|
|
||||||
|
from framework import REPLApplication, Guid, format_cwd, parse_cwd
|
||||||
|
|
||||||
|
import atexit
|
||||||
|
import colorama
|
||||||
|
import os
|
||||||
|
import readline
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from colorama import Fore, Style
|
||||||
|
from getpass import getpass
|
||||||
|
|
||||||
|
histfile = os.path.join(os.path.expanduser("~"), ".config/latte/history")
|
||||||
|
try:
|
||||||
|
readline.read_history_file(histfile)
|
||||||
|
# default history len is -1 (infinite), which may grow unruly
|
||||||
|
readline.set_history_length(1000)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
atexit.register(readline.write_history_file, histfile)
|
||||||
|
|
||||||
|
colorama.init()
|
||||||
|
|
||||||
|
def clear():
|
||||||
|
print("\033c", end='')
|
||||||
|
|
||||||
|
class MochaShell (REPLApplication):
|
||||||
|
|
||||||
|
def print_instance_list(self, instances : list):
|
||||||
|
print("")
|
||||||
|
print("instance key global identifier ")
|
||||||
|
print("--------------- --------------------------------------")
|
||||||
|
for inst in instances:
|
||||||
|
print(str(inst.get_instance_key()).ljust(16) + str(inst.get_global_identifier()))
|
||||||
|
print("")
|
||||||
|
|
||||||
|
def print_instance_list_with_attribute_values(self, instances : list, oms : Oms, refobj : InstanceReference):
|
||||||
|
print("")
|
||||||
|
print("instance key global identifier value")
|
||||||
|
print("--------------- -------------------------------------- ---------")
|
||||||
|
for inst in instances:
|
||||||
|
print(str(inst.get_instance_key()).ljust(16) + str(inst.get_global_identifier()) + " " + str(oms.get_attribute_value(refobj, inst)))
|
||||||
|
print("")
|
||||||
|
|
||||||
|
def print_instance_list_with_relationship_values(self, instances : list, oms : Oms, refobj : InstanceReference):
|
||||||
|
print("")
|
||||||
|
print("instance key global identifier value")
|
||||||
|
print("--------------- -------------------------------------- ---------")
|
||||||
|
for inst in instances:
|
||||||
|
print(str(inst.get_instance_key()).ljust(16) + str(inst.get_global_identifier()) + " ", end = "")
|
||||||
|
|
||||||
|
rels = oms.get_related_instances(refobj, inst)
|
||||||
|
for rel in rels:
|
||||||
|
if rels.index(rel) > 0:
|
||||||
|
print (" ", end = "")
|
||||||
|
|
||||||
|
print(str(rel.get_instance_key()))
|
||||||
|
|
||||||
|
print("")
|
||||||
|
|
||||||
|
def print_error(self, text : str):
|
||||||
|
print (f"{Fore.RED}error: {Style.RESET_ALL}" + text)
|
||||||
|
|
||||||
|
def print_error_not_open(self):
|
||||||
|
self.print_error ("no database specified, use `create` or `open` first")
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.current_user = None
|
||||||
|
self.current_file = None
|
||||||
|
|
||||||
|
from mocha.oms.db.sqlite import SQLiteDatabaseOms
|
||||||
|
self.oms = SQLiteDatabaseOms()
|
||||||
|
|
||||||
|
def open_file(self, oms : Oms, filename : str):
|
||||||
|
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
print ("file not found")
|
||||||
|
return False
|
||||||
|
|
||||||
|
oms.open(filename)
|
||||||
|
|
||||||
|
print("opening '" + filename + "'")
|
||||||
|
un = input("user name: ")
|
||||||
|
pw = getpass("password: ")
|
||||||
|
|
||||||
|
user = oms.get_user_by_username(un)
|
||||||
|
if user is not None:
|
||||||
|
hash = oms.get_attribute_value(user, oms.get_instance_by_global_identifier(KnownAttributeGuids.PasswordHash))
|
||||||
|
salt = oms.get_attribute_value(user, oms.get_instance_by_global_identifier(KnownAttributeGuids.PasswordSalt))
|
||||||
|
|
||||||
|
passsalt = str(pw + salt).encode("utf-8")
|
||||||
|
import hashlib
|
||||||
|
passhash = hashlib.sha512(passsalt).hexdigest()
|
||||||
|
|
||||||
|
if (hash == passhash):
|
||||||
|
self.current_user = un
|
||||||
|
self.current_file = filename
|
||||||
|
|
||||||
|
login = oms.create_instance_of(oms.get_instance_by_global_identifier(KnownClassGuids.UserLogin))
|
||||||
|
oms.assign_relationship(login, oms.get_instance_by_global_identifier(KnownRelationshipGuids.User_Login__has__User), user)
|
||||||
|
# oms.assign_relationship(user, oms.get_instance_by_global_identifier(KnownRelationshipGuids.User__for__User_Login), login)
|
||||||
|
|
||||||
|
token = Guid.create()
|
||||||
|
oms.set_attribute_value(login, oms.get_instance_by_global_identifier(KnownAttributeGuids.Token), str(token))
|
||||||
|
return True
|
||||||
|
|
||||||
|
print ("invalid user name or password")
|
||||||
|
self.current_file = None
|
||||||
|
|
||||||
|
oms.close()
|
||||||
|
return False
|
||||||
|
|
||||||
|
def strip(self, iid_or_gid : str) -> str:
|
||||||
|
if iid_or_gid[0] == "[" and iid_or_gid[-1] == "]":
|
||||||
|
return iid_or_gid[1:-1]
|
||||||
|
|
||||||
|
return iid_or_gid
|
||||||
|
|
||||||
|
def parse(self, iid_or_gid : str) -> InstanceReference:
|
||||||
|
|
||||||
|
if len(iid_or_gid) < 3:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if iid_or_gid[0] == "[" and iid_or_gid[-1] == "]":
|
||||||
|
ik = InstanceKey.parse(self.strip(iid_or_gid))
|
||||||
|
return self.oms.get_instance_by_key(ik)
|
||||||
|
elif iid_or_gid[0] == "{" and iid_or_gid[-1] == "}":
|
||||||
|
ik = Guid.parse(iid_or_gid)
|
||||||
|
return self.oms.get_instance_by_global_identifier(ik)
|
||||||
|
|
||||||
|
def create_file(self, oms : Oms, filename : str):
|
||||||
|
self.oms.open(filename)
|
||||||
|
self.oms.init()
|
||||||
|
self.oms.close()
|
||||||
|
|
||||||
|
def before_start_internal(self):
|
||||||
|
print (f"latte v0.3 - {Fore.GREEN}Local Application Testing and Troubleshooting Environment{Style.RESET_ALL}")
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
if os.path.exists(sys.argv[1]):
|
||||||
|
self.current_file = sys.argv[1]
|
||||||
|
else:
|
||||||
|
print(f"{Fore.RED}error:{Style.RESET_ALL} file not found '" + sys.argv[1] + "'")
|
||||||
|
if input("would you like to create it? (Y/N) [N] > ").lower() == "y":
|
||||||
|
self.create_file(self.oms, sys.argv[1])
|
||||||
|
self.current_file = sys.argv[1]
|
||||||
|
|
||||||
|
if self.current_file is None:
|
||||||
|
self.print_error_not_open()
|
||||||
|
else:
|
||||||
|
self.open_file(self.oms, self.current_file)
|
||||||
|
|
||||||
|
print ("")
|
||||||
|
|
||||||
|
def get_prompt(self):
|
||||||
|
|
||||||
|
prompt = f"{Fore.GREEN}{Style.BRIGHT}" + os.getlogin() + f"@localhost{Style.RESET_ALL}:{Fore.BLUE}{Style.BRIGHT}" + format_cwd(os.getcwd()) + f"{Style.RESET_ALL}\n↳ latte "
|
||||||
|
if self.current_file is not None:
|
||||||
|
if self.current_user is not None:
|
||||||
|
prompt += f"{Fore.GREEN}" + self.current_user + f"{Style.RESET_ALL}" + "@"
|
||||||
|
prompt += f"{Fore.CYAN}" + self.current_file + f"{Style.RESET_ALL}" + " "
|
||||||
|
|
||||||
|
prompt += "> "
|
||||||
|
return prompt
|
||||||
|
|
||||||
|
def process_input(self, value):
|
||||||
|
parms = value.split(' ')
|
||||||
|
|
||||||
|
if len(parms) > 0:
|
||||||
|
|
||||||
|
if parms[0] == "cd":
|
||||||
|
os.chdir(parse_cwd(parms[1]))
|
||||||
|
|
||||||
|
elif parms[0] == "ls":
|
||||||
|
os.system("ls --color=always")
|
||||||
|
|
||||||
|
elif parms[0] == "open":
|
||||||
|
|
||||||
|
if len(parms) == 2:
|
||||||
|
|
||||||
|
if parms[1] == "database":
|
||||||
|
|
||||||
|
if len(parms) > 2:
|
||||||
|
|
||||||
|
self.open_file(self.oms, parms[2])
|
||||||
|
return
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("usage: open database|tenant 'filename'")
|
||||||
|
|
||||||
|
elif parms[1] == "tenant":
|
||||||
|
|
||||||
|
print("error: not implemented")
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
# default to "open database ..."
|
||||||
|
self.open_file(self.oms, parms[1])
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("usage: open database|tenant 'filename'")
|
||||||
|
|
||||||
|
elif parms[0] == "create":
|
||||||
|
|
||||||
|
self.create_file(self.oms, parms[1])
|
||||||
|
|
||||||
|
self.open_file(self.oms, parms[1])
|
||||||
|
|
||||||
|
# print ("error: no database open, use `open filename.mql` first")
|
||||||
|
|
||||||
|
elif parms[0] == "instance":
|
||||||
|
|
||||||
|
if parms[1] == "create":
|
||||||
|
|
||||||
|
if len(parms) == 3:
|
||||||
|
|
||||||
|
iid = self.parse(parms[2])
|
||||||
|
inst = self.oms.create_instance_of(iid)
|
||||||
|
print(inst)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("usage: instance create class_iid [index]")
|
||||||
|
|
||||||
|
elif parms[1] == "get":
|
||||||
|
|
||||||
|
if len(parms) == 3:
|
||||||
|
iid = self.parse(parms[2])
|
||||||
|
print(iid)
|
||||||
|
|
||||||
|
elif parms[1] == "list":
|
||||||
|
|
||||||
|
if not self.oms.is_open():
|
||||||
|
self.print_error_not_open()
|
||||||
|
return
|
||||||
|
|
||||||
|
instances = self.oms.get_instances()
|
||||||
|
self.print_instance_list(instances)
|
||||||
|
|
||||||
|
elif parms[0] == "attribute":
|
||||||
|
|
||||||
|
if parms[1] == "list":
|
||||||
|
|
||||||
|
if len(parms) == 3:
|
||||||
|
|
||||||
|
inst_id = self.parse(parms[2])
|
||||||
|
if inst_id is None:
|
||||||
|
print("invalid inst id " + parms[2] + " (inst not found)")
|
||||||
|
return
|
||||||
|
|
||||||
|
attrs = self.oms.get_attributes(inst_id)
|
||||||
|
self.print_instance_list_with_attribute_values(attrs, self.oms, inst_id)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print ("usage: attribute list instance_id")
|
||||||
|
|
||||||
|
elif parms[1] == "get":
|
||||||
|
|
||||||
|
if len(parms) == 4:
|
||||||
|
|
||||||
|
if not self.oms.is_open():
|
||||||
|
self.print_error_not_open()
|
||||||
|
return
|
||||||
|
|
||||||
|
inst_id = self.parse(parms[2])
|
||||||
|
att_id = self.parse(parms[3])
|
||||||
|
|
||||||
|
if inst_id is None:
|
||||||
|
print("invalid inst id " + self.strip(parms[2]) + " (inst not found)")
|
||||||
|
return
|
||||||
|
if att_id is None:
|
||||||
|
print("invalid inst id " + self.strip(parms[3]) + " (inst not found)")
|
||||||
|
return
|
||||||
|
|
||||||
|
value = self.oms.get_attribute_value(inst_id, att_id)
|
||||||
|
print(value)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("usage: attribute get inst_iid|inst_gid att_iid|att_gid")
|
||||||
|
|
||||||
|
elif parms[1] == "set":
|
||||||
|
|
||||||
|
if len(parms) == 5:
|
||||||
|
|
||||||
|
if not self.oms.is_open():
|
||||||
|
self.print_error_not_open()
|
||||||
|
return
|
||||||
|
|
||||||
|
inst_id = self.parse(parms[2])
|
||||||
|
att_id = self.parse(parms[3])
|
||||||
|
value = parms[4]
|
||||||
|
|
||||||
|
if inst_id is None:
|
||||||
|
print("invalid inst id " + self.strip(parms[2]) + " (inst not found)")
|
||||||
|
return
|
||||||
|
if att_id is None:
|
||||||
|
print("invalid inst id " + self.strip(parms[3]) + " (inst not found)")
|
||||||
|
return
|
||||||
|
|
||||||
|
self.oms.set_attribute_value(inst_id, att_id, value)
|
||||||
|
print("ok")
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("usage: attribute set inst_iid|inst_gid att_iid|att_gid value")
|
||||||
|
|
||||||
|
elif parms[0] == "relationship":
|
||||||
|
|
||||||
|
if parms[1] == "list":
|
||||||
|
|
||||||
|
if len(parms) == 3:
|
||||||
|
|
||||||
|
inst_id = self.parse(parms[2])
|
||||||
|
if inst_id is None:
|
||||||
|
print("invalid inst id " + parms[2] + " (inst not found)")
|
||||||
|
return
|
||||||
|
|
||||||
|
rels = self.oms.get_relationships(inst_id)
|
||||||
|
self.print_instance_list_with_relationship_values(rels, self.oms, inst_id)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print ("usage: relationship list instance_id")
|
||||||
|
|
||||||
|
elif parms[0] == "close":
|
||||||
|
self.oms.close()
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("invalid cmd '" + parms[0] + "'")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
prog = MochaShell()
|
||||||
|
prog.start()
|
||||||
@ -3,9 +3,18 @@ from mocha.web.WebServer import WebServer
|
|||||||
from mocha.oms import Oms
|
from mocha.oms import Oms
|
||||||
from mocha.oms.memory import MemoryOms
|
from mocha.oms.memory import MemoryOms
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from getopt import getopt
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
port = 8081
|
port = 8081
|
||||||
|
|
||||||
|
(opts, remaining) = getopt(sys.argv[1:], "p", [ "port=" ])
|
||||||
|
for opt in opts:
|
||||||
|
if opt[0] == "--port":
|
||||||
|
port = int(opt[1])
|
||||||
|
|
||||||
print("Mocha User Interface Service - running on port", port)
|
print("Mocha User Interface Service - running on port", port)
|
||||||
|
|
||||||
oms = MemoryOms()
|
oms = MemoryOms()
|
||||||
|
|||||||
@ -9,8 +9,6 @@ class InstanceKey():
|
|||||||
return InstanceKey(tup[0], tup[1])
|
return InstanceKey(tup[0], tup[1])
|
||||||
|
|
||||||
def __init__(self, class_id : int, inst_id : int):
|
def __init__(self, class_id : int, inst_id : int):
|
||||||
|
|
||||||
|
|
||||||
self.__class_id = class_id
|
self.__class_id = class_id
|
||||||
self.__inst_id = inst_id
|
self.__inst_id = inst_id
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
from .InstanceKey import InstanceKey
|
from .InstanceKey import InstanceKey
|
||||||
|
|
||||||
|
from framework import Guid
|
||||||
|
|
||||||
class InstanceReference:
|
class InstanceReference:
|
||||||
|
|
||||||
def __init__(self, dbid, inst_key : InstanceKey, global_id):
|
def __init__(self, dbid, inst_key : InstanceKey, global_id : Guid):
|
||||||
self.dbid = dbid
|
self.dbid = dbid
|
||||||
self.inst_key = inst_key
|
self.inst_key = inst_key
|
||||||
self.global_id = global_id
|
self.global_id = global_id
|
||||||
@ -14,7 +16,10 @@ class InstanceReference:
|
|||||||
return self.inst_key
|
return self.inst_key
|
||||||
|
|
||||||
def get_global_identifier(self):
|
def get_global_identifier(self):
|
||||||
return self.global_id.lower()
|
return self.global_id
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.inst_key) + ' ' + self.global_id
|
return str(self.inst_key) + ' ' + str(self.global_id)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return str(self.inst_key) + ' ' + str(self.global_id)
|
||||||
Binary file not shown.
Binary file not shown.
52
python/mocha/definitions/KnownAttributeGuids.py
Normal file
52
python/mocha/definitions/KnownAttributeGuids.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
from framework import Guid
|
||||||
|
|
||||||
|
"""
|
||||||
|
Represents the Text Attribute `Name`
|
||||||
|
"""
|
||||||
|
Name = Guid.parse("{9153A637-992E-4712-ADF2-B03F0D9EDEA6}")
|
||||||
|
|
||||||
|
"""
|
||||||
|
Represents the Text Attribute `Value`
|
||||||
|
"""
|
||||||
|
Value = Guid.parse("{041DD7FD-2D9C-412B-8B9D-D7125C166FE0}")
|
||||||
|
|
||||||
|
"""
|
||||||
|
Represents the Text Attribute `Debug Definition File Name`
|
||||||
|
"""
|
||||||
|
DebugDefinitionFileName = Guid.parse("{03bf47c7-dc97-43c8-a8c9-c6147bee4e1f}")
|
||||||
|
DebugDefinitionLineNumber = Guid.parse("{822be9b7-531d-4aa1-818a-6e4de1609057}")
|
||||||
|
DebugDefinitionColumnNumber = Guid.parse("{0f75c750-e738-4410-9b4e-deb422efc7aa}")
|
||||||
|
|
||||||
|
|
||||||
|
Singular = Guid.parse("F1A06573C4474D85B4E754A438C4A960")
|
||||||
|
Value = Guid.parse("041DD7FD2D9C412B8B9DD7125C166FE0")
|
||||||
|
CSSValue = Guid.parse("C0DD4A42F5034EB380347C428B1B8803")
|
||||||
|
RelationshipType = Guid.parse("71106B1219344834B0F6D894637BAEED")
|
||||||
|
LabelOverride = Guid.parse("{89b361e0-9f13-4fea-9b1e-6eca573bd6ba}")
|
||||||
|
Label = Guid.parse("69cdf8affcf24477b75d71593e7dbb22")
|
||||||
|
Order = Guid.parse("{49423f66-8837-430d-8cac-7892ebdcb1fe}")
|
||||||
|
MethodType = Guid.parse("{47ae57a9-7723-48a8-80f2-dd410d929e14}")
|
||||||
|
|
||||||
|
ClassName = Guid.parse("c7e8d78ecfac4dacae242ac67a0ba9d3")
|
||||||
|
ThemeName = Guid.parse("{8cfc012c-52fd-4a66-8b2f-1b9b5e4af474}")
|
||||||
|
|
||||||
|
"""
|
||||||
|
A Numeric Attribute specifying the maximum length of an input field.
|
||||||
|
"""
|
||||||
|
MaximumLength = Guid.parse("6d69fee2f2204aadab8901bfa491dae1")
|
||||||
|
|
||||||
|
TargetURL = Guid.parse("970F79A09EFE4E7D92869908C6F06A67")
|
||||||
|
|
||||||
|
UserName = Guid.parse("960FAF025C5940F791A720012A99D9ED")
|
||||||
|
PasswordHash = Guid.parse("F377FC294DF14AFB96434191F37A00A9")
|
||||||
|
PasswordSalt = Guid.parse("8C5A99BC40ED4FA2B23FF373C1F3F4BE")
|
||||||
|
|
||||||
|
Encoding = Guid.parse("a82f3c46055e4e129c5de40447134389")
|
||||||
|
ContentType = Guid.parse("34142FCB172C490AAF03FF8451D00CAF")
|
||||||
|
|
||||||
|
BackgroundColor = Guid.parse("B817BE3BD0AC4A60A98A97F99E96CC89")
|
||||||
|
ForegroundColor = Guid.parse("BB4B6E0DD9BA403D9E8193E8F7FB31C8")
|
||||||
|
IPAddress = Guid.parse("ADE5A3C3A84E4798BC5BE08F21380208")
|
||||||
|
Token = Guid.parse("da7686b638034f1597f67f8f3ae16668")
|
||||||
|
|
||||||
|
DebugDefinitionFileName = Guid.parse("03bf47c7dc9743c8a8c9c6147bee4e1f")
|
||||||
124
python/mocha/definitions/KnownClassGuids.py
Normal file
124
python/mocha/definitions/KnownClassGuids.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
from framework import Guid
|
||||||
|
|
||||||
|
Class = Guid.parse("{B9C9B9B7-AD8A-4CBD-AA6B-E05784630B6B}")
|
||||||
|
Attribute = Guid.parse("{F9CD7751-EF62-4F7C-8A28-EBE90B8F46AA}")
|
||||||
|
Relationship = Guid.parse("{9B0A80F9-C325-4D36-997C-FB4106204648}")
|
||||||
|
|
||||||
|
InstanceDefinition = Guid.parse("{ee26f146-0b89-4cfe-a1af-ae6ac3533eae}")
|
||||||
|
|
||||||
|
Enumeration = Guid.parse("{70c3ee17-4d54-4342-9e7b-527cf73c93dd}")
|
||||||
|
|
||||||
|
# Attribute subclasses
|
||||||
|
TextAttribute = Guid.parse("{C2F36542-60C3-4B9E-9A96-CA9B309C43AF}")
|
||||||
|
BooleanAttribute = Guid.parse("{EA830448-A403-4ED9-A3D3-048D5D5C3A03}")
|
||||||
|
NumericAttribute = Guid.parse("{9DE86AF1-EFD6-4B71-9DCC-202F247C94CB}")
|
||||||
|
DateAttribute = Guid.parse("{0B7B1812-DFB4-4F25-BF6D-CEB0E1DF8744}")
|
||||||
|
|
||||||
|
Element = Guid.parse("{91929595-3dbd-4eae-8add-6120a49797c7}")
|
||||||
|
ElementContent = Guid.parse("{f85d4f5e-c69f-4498-9913-7a8554e233a4}")
|
||||||
|
|
||||||
|
Translation = Guid.parse("{04A53CC8-3206-4A97-99C5-464DB8CAA6E6}")
|
||||||
|
TranslationValue = Guid.parse("{6D38E757-EC18-43AD-9C35-D15BB446C0E1}")
|
||||||
|
|
||||||
|
String = Guid.parse("{5AECB489-DBC2-432E-86AF-6BE349317238}")
|
||||||
|
StringComponent = Guid.parse("{F9E2B671-13F5-4172-A568-725ACD8BBFAB}")
|
||||||
|
ExtractSingleInstanceStringComponent = Guid.parse("{FCECCE4E-8D05-485A-AE34-B1B45E766661}")
|
||||||
|
InstanceAttributeStringComponent = Guid.parse("{623565D5-5AEE-49ED-A5A9-0CFE670507BC}")
|
||||||
|
|
||||||
|
Prompt = Guid.parse("{EC889225-416A-4F73-B8D1-2A42B37AF43E}")
|
||||||
|
TextPrompt = Guid.parse("{195DDDD7-0B74-4498-BF61-B0549FE05CF3}")
|
||||||
|
ChoicePrompt = Guid.parse("{5597AEEB-922D-48AF-AE67-DF7D951C71DB}")
|
||||||
|
InstancePrompt = Guid.parse("{F3ECBF1E-E732-4370-BE05-8FA7CC520F50}")
|
||||||
|
BooleanPrompt = Guid.parse("{a7b49c03-c9ce-4a79-a4b2-e94fc8cd8b29}")
|
||||||
|
|
||||||
|
Method = Guid.parse("{D2813913-80B6-4DD6-9AD6-56D989169734}")
|
||||||
|
|
||||||
|
# MethodCall = Guid.parse("{084A6D58-32C9-4A5F-9D2B-86C46F74E522}")
|
||||||
|
|
||||||
|
ConditionalEvaluationCase = Guid.parse("{ba18abdc-11ae-46af-850a-eb30280b0ffa}")
|
||||||
|
ConditionalSelectAttributeCase = Guid.parse("{a1115690-c400-4e3e-9c8f-24e2a9477e8f}")
|
||||||
|
|
||||||
|
AccessModifier = Guid.parse("{ca4fcc11-16c8-4872-a712-82e589d382ce}")
|
||||||
|
|
||||||
|
MethodBinding = Guid.parse("{CB36098E-B9BF-4D22-87FA-4186EC632C89}")
|
||||||
|
ReturnAttributeMethodBinding = Guid.parse("{30FB6BA6-2BBB-41D2-B91A-709C00A07790}")
|
||||||
|
ReturnInstanceSetMethodBinding = Guid.parse("{AADC20F9-7559-429B-AEF0-97E059295C76}")
|
||||||
|
|
||||||
|
Executable = Guid.parse("{6A1F66F7-8EA6-43D1-B2AF-198F63B84710}")
|
||||||
|
ExecutableReturningAttribute = Guid.parse("{50b2db7a-3623-4be4-b40d-98fab89d3ff5}")
|
||||||
|
ExecutableReturningInstanceSet = Guid.parse("{d5fbc5cb-13fb-4e68-b3ad-46b4ab8909f7}")
|
||||||
|
ExecutableReturningElement = Guid.parse("{a15a4f52-1f1a-4ef3-80a7-033d45cc0548}")
|
||||||
|
ExecutableReturningWorkData = Guid.parse("{a0365b76-ad1f-462e-84da-d6a1d5b9c88c}")
|
||||||
|
|
||||||
|
Event = Guid.parse("{ca727ecd-8536-4aeb-9e75-352dbb958767}")
|
||||||
|
|
||||||
|
WorkData = Guid.parse("{05e8f023-88cb-416b-913e-75299e665eb2}")
|
||||||
|
WorkSet = Guid.parse("{c4c171d8-994b-485b-b0ac-053d11b963ab}")
|
||||||
|
|
||||||
|
Parameter = Guid.parse("{1ab99be0-43f1-495a-b85e-ec38ea606713}")
|
||||||
|
ParameterAssignment = Guid.parse("{c7aa0c7c-50d8-44fd-9b05-a558a38a6954}") # 28
|
||||||
|
ElementContentDisplayOption = Guid.parse("{bd68052a-daa4-43b9-8965-d38095473170}")
|
||||||
|
|
||||||
|
ReportObject = Guid.parse("{ff7d5757-d9d9-48ab-ab04-5932e7341a90}")
|
||||||
|
|
||||||
|
Validation = Guid.parse("{3E45AA17-6E8E-41DB-9C94-E84B4B4176E8}")
|
||||||
|
ValidationClassification = Guid.parse("{8f43d578-a671-436b-afdc-c8689a5bd9b6}")
|
||||||
|
|
||||||
|
PrimaryObjectReportField = Guid.parse("{59EA0C72-4800-48BA-84A4-DDFE10E5F4D0}")
|
||||||
|
RelationshipReportField = Guid.parse("{FC4E3BB5-1EA7-44FF-B828-2EA54CDD4ABB}")
|
||||||
|
|
||||||
|
ReportField = Guid.parse("{655A04D9-FE35-4F89-9AAB-B8FA34989D03}")
|
||||||
|
AttributeReportField = Guid.parse("{C06E0461-A956-4599-9708-012C8FE04D94}")
|
||||||
|
|
||||||
|
Module = Guid.parse("{e009631d-6b9d-445c-95df-79f4ef8c8fff}")
|
||||||
|
|
||||||
|
Report = Guid.parse("{19D947B6-CE82-4EEE-92EC-A4E01E27F2DB}")
|
||||||
|
ReportColumn = Guid.parse("{BEFE99A1-B2EB-4365-A2C9-061C6609037B}")
|
||||||
|
StandardReport = Guid.parse("{FDF4A498-DE83-417D-BA01-707372125C8D}")
|
||||||
|
|
||||||
|
TaskCategory = Guid.parse("{e8d8060f-a20c-442f-8384-03488b63247f}")
|
||||||
|
Task = Guid.parse("{D4F2564B-2D11-4A5C-8AA9-AF52D4EACC13}")
|
||||||
|
UITask = Guid.parse("{BFD07772-178C-4885-A6CE-C85076C8461C}")
|
||||||
|
|
||||||
|
Tenant = Guid.parse("{703F9D65-C584-4D9F-A656-D0E3C247FF1F}")
|
||||||
|
|
||||||
|
User = Guid.parse("{9C6871C1-9A7F-4A3A-900E-69D1D9E24486}")
|
||||||
|
|
||||||
|
UserLogin = Guid.parse("{64F4BCDB-38D0-4373-BA30-8AE99AF1A5F7}")
|
||||||
|
|
||||||
|
MenuItemCommand = Guid.parse("{9D3EDE23-6DB9-4664-9145-ABCBD3A0A2C2}")
|
||||||
|
MenuItemSeparator = Guid.parse("{798DECAB-5119-49D7-B0AD-D4BF45807188}")
|
||||||
|
MenuItemHeader = Guid.parse("{1F148873-8A97-4409-A79B-C19D5D380CA4}")
|
||||||
|
MenuItemInstance = Guid.parse("{6E3AA9AF-96B9-4208-BEA9-291A72C68418}")
|
||||||
|
|
||||||
|
Style = Guid.parse("{A48C843A-B24B-4BC3-BE6F-E2D069229B0A}")
|
||||||
|
StyleRule = Guid.parse("{C269A1F3-E014-4230-B78D-38EAF6EA8A81}")
|
||||||
|
StyleClass = Guid.parse("{a725f089-7763-4887-af37-da52358c378c}")
|
||||||
|
|
||||||
|
Page = Guid.parse("{D9626359-48E3-4840-A089-CD8DA6731690}")
|
||||||
|
ContainerPageComponent = Guid.parse("{6AD6BD1C-7D1C-4AC9-9642-FEBC61E9D6FF}")
|
||||||
|
ButtonPageComponent = Guid.parse("{F480787D-F51E-498A-8972-72128D808AEB}")
|
||||||
|
HeadingPageComponent = Guid.parse("{FD86551E-E4CE-4B8B-95CB-BEC1E6A0EE2B}")
|
||||||
|
ImagePageComponent = Guid.parse("{798B67FA-D4BE-42B9-B4BD-6F8E02C953C0}")
|
||||||
|
PanelPageComponent = Guid.parse("{D349C489-9684-4A5A-9843-B906A7F803BC}")
|
||||||
|
ParagraphPageComponent = Guid.parse("{ADFF93CE-9E85-4168-A7D4-5239B99BE36D}")
|
||||||
|
SequentialContainerPageComponent = Guid.parse("{A66D9AE2-3BEC-4083-A5CB-7DE3B03A9CC7}")
|
||||||
|
SummaryPageComponent = Guid.parse("{5EBA7BD6-BA0A-45B2-835C-C92489FD7E74}")
|
||||||
|
TabContainerPageComponent = Guid.parse("{E52B02D7-895C-4642-9B03-EB0232868190}")
|
||||||
|
DetailPageComponent = Guid.parse("{41F9508E-6CF0-4F3D-8762-FF17CD52C466}")
|
||||||
|
ElementPageComponent = Guid.parse("{122d5565-9df9-4656-b6af-ba5df6630d32}")
|
||||||
|
|
||||||
|
IntegrationID = Guid.parse("{49a5ebda-baaa-4ede-bba5-decc250ce1a3}")
|
||||||
|
IntegrationIDUsage = Guid.parse("{86084b9f-3860-4857-a41f-2f8b6877aff1}")
|
||||||
|
|
||||||
|
Dashboard = Guid.parse("{896B529C-452D-42AC-98C5-170ED4F826C6}")
|
||||||
|
DashboardContent = Guid.parse("{2720ea77-cb09-4099-9f74-ccdacdd146e8}")
|
||||||
|
Instance = Guid.parse("{263C4882-945F-4DE9-AED8-E0D6516D4903}")
|
||||||
|
InstanceSet = Guid.parse("{53aac86e-ce60-4509-a869-417c38c305e0}")
|
||||||
|
|
||||||
|
AuditLine = Guid.parse("{a4124a76-02f6-406a-9583-a197675b493b}")
|
||||||
|
|
||||||
|
Theme = Guid.parse("{7c2cc4b5-8323-4478-863b-1759d7adf62e}")
|
||||||
|
|
||||||
|
CommonBoolean = Guid.parse("{5b025da3-b7bd-45a9-b084-48c4a922bf72}")
|
||||||
|
CommonInstanceSet = Guid.parse("{3382da21-4fc5-45dc-bbd1-f7ba3ece1a1b}")
|
||||||
7
python/mocha/definitions/KnownInstanceGuids.py
Normal file
7
python/mocha/definitions/KnownInstanceGuids.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from framework import Guid
|
||||||
|
|
||||||
|
class User:
|
||||||
|
|
||||||
|
superuser = Guid.parse("{69e291d8-381b-4ad8-9013-f3b0a0c693fe}")
|
||||||
|
|
||||||
|
|
||||||
354
python/mocha/definitions/KnownRelationshipGuids.py
Normal file
354
python/mocha/definitions/KnownRelationshipGuids.py
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
from framework import Guid
|
||||||
|
|
||||||
|
Instance__has__Source_Definition = Guid.parse("{57cbc351-0428-47e6-a6db-445e4503abab}")
|
||||||
|
Class__has_super__Class = Guid.parse("{100F0308-855D-4EC5-99FA-D8976CA20053}")
|
||||||
|
Class__has_sub__Class = Guid.parse("C14BC80D879C4E6F9123E8DFB13F4666")
|
||||||
|
|
||||||
|
Class__has__Method = Guid.parse("2DA282715E464472A6F5910B5DD6F608")
|
||||||
|
Method__for__Class = Guid.parse("76D2CE0DAA4D460BB8442BD76EF9902B")
|
||||||
|
|
||||||
|
Class__has__Instance = Guid.parse("7EB41D3C2AE9488483A4E59441BCAEFB")
|
||||||
|
Instance__for__Class = Guid.parse("494D5A6D04BE477B8763E3F57D0DD8C8")
|
||||||
|
|
||||||
|
Class__has__Relationship = Guid.parse("3997CAAD3BFA4EA69CFA2AA63E20F08D")
|
||||||
|
Relationship__for__Class = Guid.parse("C00BD63F10DA4751B8EA0905436EA098")
|
||||||
|
|
||||||
|
Class__has_title__Translation = Guid.parse("B8BDB90569DD49CDB5570781F7EF2C50")
|
||||||
|
|
||||||
|
Class__has__Attribute = Guid.parse("DECBB61A2C6C4BC890420B5B701E08DE")
|
||||||
|
Attribute__for__Class = Guid.parse("FFC8E435B9F844958C854DDA67F7E2A8")
|
||||||
|
|
||||||
|
Class__has_default__Task = Guid.parse("CF396DAA75EA41488468C66A71F2262D")
|
||||||
|
|
||||||
|
Class__has_owner__User = Guid.parse("D1A25625C90F4A73A6F2AFB530687705")
|
||||||
|
User__owner_for__Class = Guid.parse("04DD2E6BEA5748408DD5F0AA943C37BB")
|
||||||
|
|
||||||
|
Instance__for__Module = Guid.parse("c60fda3c2c0a422980e8f644e4471d28")
|
||||||
|
Module__has__Instance = Guid.parse("c3e5d7e35e114f8da212b175327b2648")
|
||||||
|
|
||||||
|
Class__has__Object_Source = Guid.parse("B62F9B81799B4ABEA4AF29B45347DE54")
|
||||||
|
Object_Source__for__Class = Guid.parse("FBB9391DC4A243269F857801F377253C")
|
||||||
|
|
||||||
|
Relationship__has_source__Class = Guid.parse("7FB5D234042E45CBB11DAD72F8D45BD3")
|
||||||
|
Relationship__has_destination__Class = Guid.parse("F220F1C204994E87A32EBDBF80C1F8A4")
|
||||||
|
Relationship__has_sibling__Relationship = Guid.parse("656110FF450248B8A7F3D07F017AEA3F")
|
||||||
|
|
||||||
|
Translation__has__Translation_Value = Guid.parse("F9B60C00FF1D438FAC746EDFA8DD7324")
|
||||||
|
Translation_Value__has__Language = Guid.parse("3655AEC2E2C94DDE8D980C4D3CE1E569")
|
||||||
|
|
||||||
|
String__has__String_Component = Guid.parse("3B6C4C25B7BC42428ED1BA6D01B834BA")
|
||||||
|
Extract_Single_Instance_String_Component__has__Relationship = Guid.parse("5E499753F50F4A9EBF53DC013820499C")
|
||||||
|
Instance_Attribute_String_Component__has__Attribute = Guid.parse("E15D427769FB4F1992DB8D087F361484")
|
||||||
|
String_Component__has_source__Method = Guid.parse("1ef1c965e12048beb682aa040573b5fb")
|
||||||
|
|
||||||
|
# Class__instance_labeled_by__String = Guid.parse("F52FC851D65548A9B526C5FE0D7A29D2")
|
||||||
|
Class__instances_labeled_by__Executable_returning_Attribute = Guid.parse("{c22fc17f-0c92-47dc-9a8b-28db0db68985}")
|
||||||
|
|
||||||
|
Class__has_summary__Report_Field = Guid.parse("D11050AD73764AB784DEE8D0336B74D2")
|
||||||
|
|
||||||
|
Class__uses_preview__Executable_returning_Element = Guid.parse("{059dc948-5f1b-4331-94f4-6d79dc324ebf}")
|
||||||
|
Executable_returning_Element__preview_used_by__Class = Guid.parse("{07d5e08f-fe38-49fd-8fcb-c862a532ec57}")
|
||||||
|
|
||||||
|
|
||||||
|
Class__has_related__Task = Guid.parse("4D8670E12AF14E7C9C87C910BD7B319B")
|
||||||
|
|
||||||
|
Report_Object__has__Report_Field = Guid.parse("0af6265642bc40a5b0bcdbba67c347f6")
|
||||||
|
Report_Field__for__Report_Object = Guid.parse("b46c8caa3f46465fba117d6f385425a2")
|
||||||
|
|
||||||
|
Task__has_title__Translation = Guid.parse("D97AE03C261F4060A06D985E26FA662C")
|
||||||
|
Task__has_instructions__Translation = Guid.parse("A93878989DC0400694F11FB02EB3ECD7")
|
||||||
|
Task__has__Prompt = Guid.parse("929B106F7E3E4D30BB84E450A4FED063")
|
||||||
|
Task__has__Task_Category = Guid.parse("84048159430d4f6c9361115c8629c517")
|
||||||
|
Task__executes__Method_Call = Guid.parse("D8C0D4D4F8C64B92A2C18BF16B16203D")
|
||||||
|
Task__has_preview_action_title__Translation = Guid.parse("3f65ce0211dd4829a46bb9ea1b43e56a")
|
||||||
|
|
||||||
|
Prompt__has__Report_Field = Guid.parse("922CCB0561EA441D96E063D58231D202") # 3de784b9456142f0946fb1e90d80029e
|
||||||
|
Report_Field__for__Prompt = Guid.parse("5DED3DB4686445A9A5FF8E5A35AD6E6F") # b5f59216a1f149798642a4845e59daa8
|
||||||
|
|
||||||
|
Instance_Prompt__has_valid__Class = Guid.parse("D5BD754BF4014FD8A70782684E7E25F0")
|
||||||
|
|
||||||
|
Instance_Prompt_Value__has__Instance = Guid.parse("512B518EA89244ABAC354E9DBCABFF0B")
|
||||||
|
|
||||||
|
Method__executed_by__Method_Binding = Guid.parse("D52500F114214B739987223163BC9C04")
|
||||||
|
Method_Binding__executes__Method = Guid.parse("B782A5928AF542288296E3D0B24C70A8")
|
||||||
|
|
||||||
|
Method__has_return_type__Class = Guid.parse("1241c599e55d4dcf9200d0e48c217ef8")
|
||||||
|
|
||||||
|
Method_Binding__has__Parameter_Assignment = Guid.parse("2493810994f1463a9314c49e667cf45b")
|
||||||
|
Parameter_Assignment__for__Method_Binding = Guid.parse("19c4a5dbfd2644b8b431e081e6ffff8a")
|
||||||
|
|
||||||
|
Parameter_Assignment__assigns_from__Executable_returning_Work_Data = Guid.parse("{6f3687ed-7d88-4ece-914e-c47c57c1146d}")
|
||||||
|
Parameter_Assignment__assigns_to__Work_Data = Guid.parse("{51c37636-35d2-4528-99ca-50cf09fa1427}")
|
||||||
|
|
||||||
|
|
||||||
|
Parameter__has_data_type__Instance = Guid.parse("ccb5200c5faf4a3a9e8e2edf5c2e0785")
|
||||||
|
Instance__data_type_for__Parameter = Guid.parse("ea1e6305b2e44ba591b41ecfbebfa490")
|
||||||
|
|
||||||
|
Instance_Set__has__Instance = Guid.parse("7c9010a269f1402999c872e05c78c41e")
|
||||||
|
|
||||||
|
Parameter_Assignment__assigns_to__Parameter = Guid.parse("a6d30e787bff4fccb109ee96681b0a9e")
|
||||||
|
Parameter__assigned_from__Parameter_Assignment = Guid.parse("2085341e5e7e4a7fbb8ddfa58f6030d9")
|
||||||
|
|
||||||
|
Method_Binding__assigned_to__Parameter_Assignment = Guid.parse("cbcb23b710c449eba1cab9da73fe8b83")
|
||||||
|
Parameter_Assignment__assigns_from__Method_Binding = Guid.parse("1e055d30a96849d893fe541994fc0c51")
|
||||||
|
|
||||||
|
Validation__has__Validation_Classification = Guid.parse("BCDB6FFDD2F24B63BD7E9C2CCD9547E0")
|
||||||
|
Validation__has_true_condition__Executable = Guid.parse("AA2D3B5141534599A9836B4A13ADCBCB")
|
||||||
|
Validation__has_false_condition__Executable = Guid.parse("419047F8852B4A4DB161A8BD022FD8EB")
|
||||||
|
|
||||||
|
Validation__has_failure_message__Translation = Guid.parse("E15A97DD2A1D4DC0BD6BA957B63D9802")
|
||||||
|
Translation__failure_message_for__Validation = Guid.parse("46a7dfcb884847d59ad3d27fbd8b423f")
|
||||||
|
|
||||||
|
Build_Attribute_Method__returns__Attribute = Guid.parse("{dadbf0f3-7af0-4387-a6b7-a1724a216d88}")
|
||||||
|
# Build_Attribute_Method__builds_with__Executable_returning_Attribute = Guid.parse("{bb64cd83-85c2-4c20-82eb-2a5a5ead31f1}")
|
||||||
|
Build_Attribute_Method__builds_with__Build_Attribute_Method_Component = Guid.parse("{b4fad1b8-711c-4e84-82d0-e9a9e41e8aa7}")
|
||||||
|
Build_Attribute_Method_Component__uses__Executable_returning_Attribute = Guid.parse("{9d2acd01-5c6d-4a95-b77e-5261ba109540}")
|
||||||
|
Get_Attribute_Method__has__Attribute = Guid.parse("5eca9b3fbe754f6e8495781480774833")
|
||||||
|
|
||||||
|
Get_Referenced_Instance_Set_Method__returns__Work_Set = Guid.parse("{72057f5b-9b49-497d-852f-cd7e5e258d6c}")
|
||||||
|
Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set = Guid.parse("{2978238f-7cb0-4ba3-8c6f-473df782cfef}")
|
||||||
|
Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set = Guid.parse("{6a65819e-c8cb-4575-9af8-ee221364049b}")
|
||||||
|
|
||||||
|
Get_Referenced_Attribute_Method__returns__Attribute = Guid.parse("87f90fe95ec64b098f51b8a4d1544cae")
|
||||||
|
Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set = Guid.parse("{c7ecd498-6d05-4e07-b1bc-f7127d0d6666}")
|
||||||
|
Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute = Guid.parse("{022ccde3-2b9e-4573-a8fc-e7568f420cd3}")
|
||||||
|
|
||||||
|
Get_Specified_Instances_Method__returns__Work_Set = Guid.parse("{27796f3d-0cbd-42c5-a840-791d3af6c16d}")
|
||||||
|
Get_Specified_Instances_Method__uses__Instance = Guid.parse("dea1aa0b2bef4bacb4f90ce8cf7006fc")
|
||||||
|
|
||||||
|
Evaluate_Boolean_Expression_Method__returns__Boolean_Attribute = Guid.parse("{53cf2cb6-f5f2-499f-9f18-26b86bf671c4}")
|
||||||
|
Evaluate_Boolean_Expression_Method__has_source__Executable_returning_Work_Data = Guid.parse("{45d76d56-01ed-4641-9f68-cfe0c7d0d265}")
|
||||||
|
IDR_Evaluate_Boolean_Expression_Method__uses__Boolean_Operator = Guid.parse("{aa9e17a2-e4d9-4598-bcfc-2d729031d11c}")
|
||||||
|
Evaluate_Boolean_Expression_Method__has_target__Executable_returning_Work_Data = Guid.parse("{0646df91-7e3e-4d59-be71-b978a22ced8e}")
|
||||||
|
|
||||||
|
Prompt_Value__has__Prompt = Guid.parse("7CD62362DDCE4BFC87B9B5499B0BC141")
|
||||||
|
|
||||||
|
User__has_display_name__Translatable_Text_Constant = Guid.parse("6C29856C3B104F5BA291DD3CA4C04A2F")
|
||||||
|
User_Login__has__User = Guid.parse("85B40E4B849B4006A9C04E201B25975F")
|
||||||
|
|
||||||
|
User__has_default__Page = Guid.parse("f00cda6feded4e0fb6c59675ed664a75")
|
||||||
|
|
||||||
|
Dashboard__has__Dashboard_Content = Guid.parse("d26acf18afa54ccd8629e1d9dac394ed")
|
||||||
|
Dashboard_Content__for__Dashboard = Guid.parse("9f236d2d1f454096a69c42f37abbeebc")
|
||||||
|
Dashboard_Content__has__Instance = Guid.parse("1f0c40752b7d42c28488c7db06e91f5a")
|
||||||
|
Instance__for__Dashboard_Content = Guid.parse("376951c9252b48438e1dca89c94ddfa6")
|
||||||
|
|
||||||
|
Return_Instance_Set_Method_Binding__has_source__Class = Guid.parse("EE7A30498E09410C84CBC2C0D652CF40")
|
||||||
|
|
||||||
|
Report__has__Report_Column = Guid.parse("7A8F57F1A4F34BAF84A5E893FD79447D")
|
||||||
|
Report__has__Report_Data_Source = Guid.parse("1DE7B484F9E3476AA9D37D2A86B55845")
|
||||||
|
Report__has__Prompt = Guid.parse("5D112697303F419F886F3F09F0670B07")
|
||||||
|
|
||||||
|
Report_Column__has__Report_Field = Guid.parse("B90269107E914EE1B5F2D7B740614831")
|
||||||
|
Report_Column__has__Report_Column_Option = Guid.parse("41FFF5F0B4674986A6FD46FAF4A479E9")
|
||||||
|
|
||||||
|
Report_Data_Source__has_source__Method = Guid.parse("2D5CB496583946A09B9430D4E2227B56")
|
||||||
|
|
||||||
|
Report_Field__has_source__Method = Guid.parse("5db86b7669bf421f96e74c49452db82e")
|
||||||
|
Attribute_Report_Field__has_target__Attribute = Guid.parse("3796430126FD41D886611F73684C0E0A")
|
||||||
|
Relationship_Report_Field__has_target__Relationship = Guid.parse("134B2790F6DF4F979AB59878C4A715E5")
|
||||||
|
|
||||||
|
|
||||||
|
Tenant__has__Application = Guid.parse("22936f5126294503a30ba02d61a6c0e0")
|
||||||
|
Tenant__has_sidebar__Menu_Item = Guid.parse("D62DFB9F48D54697AAAD1CAD0EA7ECFA")
|
||||||
|
Tenant__has__Tenant_Type = Guid.parse("E94B6C9D330748589726F24B7DB21E2D")
|
||||||
|
|
||||||
|
Tenant__has_company_logo_image__File = Guid.parse("3540c81cb2294eacb9b59d4b4c6ad1eb")
|
||||||
|
|
||||||
|
Menu__has__Menu_Section = Guid.parse("a22d949ff8d14dcca3ebd9f910228dfd")
|
||||||
|
Menu_Item__has_title__Translatable_Text_Constant = Guid.parse("65E3C87EA2F74A339FA7781EFA801E02")
|
||||||
|
Menu_Section__has__Menu_Item = Guid.parse("5b659d7c58f9453c9826dd3205c3c97f")
|
||||||
|
|
||||||
|
Command_Menu_Item__has__Icon = Guid.parse("8859DAEF01F746FA8F3E7B2F28E0A520")
|
||||||
|
|
||||||
|
Instance_Menu_Item__has_target__Instance = Guid.parse("C599C20EF01A4B12A9195DC3B0F545C2")
|
||||||
|
|
||||||
|
Page__has_title__Translation = Guid.parse("7BE6522A4BE84CD38701C8353F7DF630")
|
||||||
|
Page__has__Style = Guid.parse("6E6E1A853EA94939B13ECBF645CB8B59")
|
||||||
|
Page__has__Page_Component = Guid.parse("24F6C596D77D4754B02300321DEBA924")
|
||||||
|
|
||||||
|
Style__has__Style_Rule = Guid.parse("4CC8A654B2DF4B17A95624939530790E")
|
||||||
|
Style_Rule__has__Style_Property = Guid.parse("B69C2708E78D413AB491ABB6F1D2A6E0")
|
||||||
|
|
||||||
|
Style__has_width__Measurement = Guid.parse("4930ca87641a426d9d67cda6d5f22303")
|
||||||
|
Style__has_height__Measurement = Guid.parse("978e6de0af7345a0bb56aaf451615b06")
|
||||||
|
|
||||||
|
Measurement__has__Measurement_Unit = Guid.parse("C97200821F40406D80B781C1B690354D")
|
||||||
|
|
||||||
|
Page__has_master__Page = Guid.parse("9bdbfd640915419f83fde8cf8bcc74ae")
|
||||||
|
Page__master_for__Page = Guid.parse("7fe8f2a2c94d401083aa9300cc99d71d")
|
||||||
|
|
||||||
|
Page_Component__has__Style = Guid.parse("818CFF507D4243B2B6A792C3C54D450D")
|
||||||
|
Style__for__Page_Component = Guid.parse("007563E7727744368C8206D5F156D8E1")
|
||||||
|
|
||||||
|
Button_Page_Component__has_text__Translatable_Text_Constant = Guid.parse("C25230B14D234CFE8B7556C33E8293AF")
|
||||||
|
Image_Page_Component__has_source__Method = Guid.parse("481E3FBEB82A4C769DDFD66C6BA8C590")
|
||||||
|
|
||||||
|
Sequential_Container_Page_Component__has__Sequential_Container_Orientation = Guid.parse("DD55F50687184240A89421346656E804")
|
||||||
|
Container_Page_Component__has__Page_Component = Guid.parse("CB7B81621C9E4E72BBB8C1C37CA69CD5")
|
||||||
|
|
||||||
|
Panel_Page_Component__has_header__Page_Component = Guid.parse("223B4073F41749CDBCA10E0749144B9D")
|
||||||
|
Panel_Page_Component__has_content__Page_Component = Guid.parse("AD8C5FAE24444700896EC5F968C0F85B")
|
||||||
|
Panel_Page_Component__has_footer__Page_Component = Guid.parse("56E339BD61894BACAB83999543FB8060")
|
||||||
|
|
||||||
|
Element_Page_Component__has__Element = Guid.parse("fe833426e25d4cde89392a6c9baac20c")
|
||||||
|
Element_Page_Component__has__Element_Content_Display_Option = Guid.parse("74e3c13a04fd4f49be7005a32cdcdfe7")
|
||||||
|
Element_Content_Display_Option__for__Element_Page_Component = Guid.parse("7d3a7045092549db9b7d24863c9848a6")
|
||||||
|
|
||||||
|
Element__for__Element_Page_Component = Guid.parse("963c5c60397947fab201a26839b9ded9")
|
||||||
|
|
||||||
|
Tenant__has_logo_image__File = Guid.parse("4C399E80ECA24A68BFB426A5E6E97047")
|
||||||
|
Tenant__has_background_image__File = Guid.parse("39B0D9634BE049C8BFA2607051CB0101")
|
||||||
|
Tenant__has_icon_image__File = Guid.parse("CC4E65BD7AAA40DAAECAC607D7042CE3")
|
||||||
|
Tenant__has_login_header__Translatable_Text_Constant = Guid.parse("41D66ACBAFDE4B6F892DE66255F10DEB")
|
||||||
|
Tenant__has_login_footer__Translatable_Text_Constant = Guid.parse("A6203B6B5BEB4008AE49DB5E7DDBA45B")
|
||||||
|
Tenant__has_application_title__Translation = Guid.parse("7668343767ba46d9a5e72945be635345")
|
||||||
|
Tenant__has_mega__Menu = Guid.parse("cdd743cbc74a46719922652c7db9f2d8")
|
||||||
|
|
||||||
|
Tenant_Type__has_title__Translatable_Text_Constant = Guid.parse("79AAE09C5690471C84421B230610456C")
|
||||||
|
|
||||||
|
Prompt__has_title__Translatable_Text_Constant = Guid.parse("081ee211753443c499b524bd9537babc")
|
||||||
|
|
||||||
|
Report__has_title__Translatable_Text_Constant = Guid.parse("DF93EFB08B5E49E78BC0553F9E7602F9")
|
||||||
|
Report__has_description__Translatable_Text_Constant = Guid.parse("D5AA18A77ACD4792B0396C620A151BAD")
|
||||||
|
Report_Field__has_title__Translatable_Text_Constant = Guid.parse("6780BFC2DBC040AE83EEBFEF979F0054")
|
||||||
|
|
||||||
|
Content_Page_Component__gets_content_from__Method = Guid.parse("0E002E6FAA79457C93B82CCE1AEF5F7E")
|
||||||
|
Method__provides_content_for__Content_Page_Component = Guid.parse("5E75000D24214AD49E5FB9FDD9CB4744")
|
||||||
|
|
||||||
|
Securable_Item__secured_by__Method = Guid.parse("15199c4995954288846d13b0ad5dcd4b")
|
||||||
|
Get_Relationship_Method__has__Relationship = Guid.parse("321581d660c1454783449d5bda027adc")
|
||||||
|
|
||||||
|
Integration_ID__has__Integration_ID_Usage = Guid.parse("6cd30735df834253aabe360d6e1a3701")
|
||||||
|
Integration_ID_Usage__for__Integration_ID = Guid.parse("d8d981ec768640dab89f006c85042444")
|
||||||
|
|
||||||
|
Conditional_Select_from_Instance_Set_Method__has__Conditional_Select_from_Instance_Set_Case = Guid.parse("b6715132b4384073b81d3ecf19584b7d")
|
||||||
|
Conditional_Select_from_Instance_Set_Case__for__Conditional_Select_from_Instance_Set_Method = Guid.parse("1c868a068fb7432d839b7a5a02a50eb6")
|
||||||
|
|
||||||
|
Condition_Group__has_true_condition__Executable_returning_Attribute = Guid.parse("d955da3f7ef443748b86167c73434f75")
|
||||||
|
Executable_returning_Attribute__true_condition_for__Condition_Group = Guid.parse("1acdefd1e1b445bb99e1bf73dea71da5")
|
||||||
|
|
||||||
|
Condition_Group__has_false_condition__Executable_returning_Attribute = Guid.parse("e46dbc4fae8d4ad8b9e610cedfa68b73")
|
||||||
|
Executable_returning_Attribute__false_condition_for__Condition_Group = Guid.parse("633af008bf7f4da194d667a9a80586d6")
|
||||||
|
|
||||||
|
Audit_Line__has__Instance = Guid.parse("c91807ed0d734729990bd90750764fb5")
|
||||||
|
Audit_Line__has__User = Guid.parse("7c1e048d3dcb44739f2ee21014a76aa5")
|
||||||
|
|
||||||
|
Method__has__Method_Parameter = Guid.parse("c455dc79ba9b4a7caf8e9ca59dbe511f")
|
||||||
|
Method_Parameter__for__Method = Guid.parse("0bcb6e5b58854747843ced4c3d3dc234")
|
||||||
|
Method__returns__Attribute = Guid.parse("eb015d320d4f4647b9b8715097f4434b")
|
||||||
|
|
||||||
|
Detail_Page_Component__has_caption__Translation = Guid.parse("4a15fa44fb7b4e268ce2f36652792b48")
|
||||||
|
|
||||||
|
Element__has__Element_Content = Guid.parse("c1d3248102f948c6baf837d93fa8da23")
|
||||||
|
Element_Content__for__Element = Guid.parse("2eff7f580edd40b79c0600774257649e")
|
||||||
|
|
||||||
|
Element__has_label__Translation = Guid.parse("7147ea909f454bb9b151025b6e2bd834")
|
||||||
|
|
||||||
|
Element_Content__has__Instance = Guid.parse("315b71ba953d45fc87e54f0a268242a9")
|
||||||
|
Instance__for__Element_Content = Guid.parse("c3959f84248d4edea3f2f262917c7b56")
|
||||||
|
|
||||||
|
Element_Content__has__Layout = Guid.parse("1ab7412005ea4acab6d3c7e0133e0c4f")
|
||||||
|
Element_Content__has__EC_Dynamic_Display_Option = Guid.parse("{4a41391a-c325-4182-920a-a94ad28c15fa}")
|
||||||
|
|
||||||
|
EC_Dynamic_Display_Option__modifies__Element_Content = Guid.parse("{4d091643-2bfc-4b83-b3e4-8a3b22c665a9}")
|
||||||
|
|
||||||
|
Dynamic_Display_Option__add__Display_Option = Guid.parse("{2ed33b28-f84d-4120-b585-be965cfb691f}")
|
||||||
|
Dynamic_Display_Option__remove__Display_Option = Guid.parse("{dc06bf0b-70dd-4f71-854d-0f5685e2124f}")
|
||||||
|
|
||||||
|
Element_Content__built_from__BEM_Process = Guid.parse("{3d7094ff-33e5-4800-9e4e-93dde0d1d331}")
|
||||||
|
|
||||||
|
BEM_Process__uses_loop__Executable_returning_Instance_Set = Guid.parse("{0fb2b538-eacb-418a-b7d8-43a584b85952}")
|
||||||
|
|
||||||
|
Layout__has__Style = Guid.parse("{e684bb26-7e78-4a21-b8b4-5a550f3053d5}")
|
||||||
|
|
||||||
|
Rotary_Switch_Layout__has__Rotary_Switch_Layout_Option = Guid.parse("{ae716c95-1e26-48f4-9013-001d1a1854aa}")
|
||||||
|
|
||||||
|
Element_Content__has__Element_Content_Display_Option = Guid.parse("f070dfa762604488a779fae291903f2d")
|
||||||
|
|
||||||
|
Element_Content__has__Parameter_Assignment = Guid.parse("51214ef0458a44fa8b9df3d9d2309388")
|
||||||
|
Parameter__assigned_from__Element_Content = Guid.parse("dcef180ba2ca4d87bb05b946c319b562")
|
||||||
|
|
||||||
|
Element_Content__has__Validation = Guid.parse("265637cd2099416b88fa4f5ed88a87e3")
|
||||||
|
Validation__for__Element_Content = Guid.parse("3a4677e89c78414980ad46e5ac3b12f5")
|
||||||
|
|
||||||
|
Instance__has__Instance_Definition = Guid.parse("329c54ee17b84550ae80be5dee9ac53c")
|
||||||
|
|
||||||
|
Task__has_initiating__Element = Guid.parse("78726736f5b74466b11429cbaf6c9329")
|
||||||
|
Element__initiates_for__Task = Guid.parse("36964c5d348e4f888a620a795b43bc14")
|
||||||
|
|
||||||
|
Detail_Page_Component__has_row_source__Method_Binding = Guid.parse("54FBD0560BD444F4921C11FB0C77996E")
|
||||||
|
Detail_Page_Component__has_column_source__Method_Binding = Guid.parse("ddabeedaaa264d87a4574e7da921a293")
|
||||||
|
|
||||||
|
Work_Set__has_valid__Class = Guid.parse("0808746241a5427184bca9bcd31a2c21")
|
||||||
|
Class__valid_for__Work_Set = Guid.parse("73c65dcf781047d498c0898ca1b17a68")
|
||||||
|
|
||||||
|
Conditional_Select_Attribute_Method__returns__Attribute = Guid.parse("{b2b9d9cc-c4dd-491b-853e-e3669ea4e66a}")
|
||||||
|
Attribute__returned_by__Conditional_Select_Attribute_Method = Guid.parse("{e3e734ce-953b-49b8-b50d-b1826b519053}")
|
||||||
|
|
||||||
|
Conditional_Select_Attribute_Method__has__Conditional_Select_Attribute_Case = Guid.parse("{49396bd0-b5a9-4384-99f4-2126d80b3b66}")
|
||||||
|
Conditional_Select_Attribute_Case__for__Conditional_Select_Attribute_Method = Guid.parse("{38e2816e-ccb4-4e89-86ab-4981f5c2d7ac}")
|
||||||
|
|
||||||
|
Conditional_Select_Attribute_Case__invokes__Executable_returning_Attribute = Guid.parse("{dbd97430-9c55-430d-815c-77fce9887ba7}")
|
||||||
|
Executable_returning_Attribute__invoked_by__Conditional_Select_Attribute_Case = Guid.parse("{f4b04072-abe8-452a-b8f8-e0369dde24d4}")
|
||||||
|
|
||||||
|
Style__gets_background_image_File_from__Return_Instance_Set_Method_Binding = Guid.parse("4b4a0a3e426c4f70bc15b6efeb338486")
|
||||||
|
|
||||||
|
Style__has__Style_Class = Guid.parse("2cebd83052aa44ff818db2d6ee273a1f")
|
||||||
|
Style_Class__for__Style = Guid.parse("b2fbce51455a42b59fd1c28bb0cbe613")
|
||||||
|
|
||||||
|
Style__implements__Style = Guid.parse("99b1c16af2cb4cc5a3bb82a96335aa39")
|
||||||
|
Style__implemented_for__Style = Guid.parse("271ef8161e944f02a8054f9536c28dca")
|
||||||
|
|
||||||
|
|
||||||
|
Style__has_horizontal__Alignment = Guid.parse("{cc8d60e3-1b42-4ab1-a918-3d109891bb4e}")
|
||||||
|
Style__has_vertical__Alignment = Guid.parse("{24c175dd-c34c-4ffc-aef0-440aa032ceeb}")
|
||||||
|
|
||||||
|
Get_Attribute_by_System_Routine_Method__uses__System_Attribute_Routine = Guid.parse("{f7aaac2c-0bfd-4b31-8c8c-3a76e9522574}")
|
||||||
|
Get_Attribute_by_System_Routine_Method__returns__Attribute = Guid.parse("{e19cf181-b5bf-4595-b5c6-b9098a7a41bb}")
|
||||||
|
|
||||||
|
Get_Instance_Set_by_System_Routine_Method__uses__System_Instance_Set_Routine = Guid.parse("{085bd706-eece-4604-ac04-b7af114d1d21}")
|
||||||
|
System_Instance_Set_Routine__used_by__Get_Instance_Set_By_System_Routine_Method = Guid.parse("{6fb6534c-2a46-4d6d-b9df-fd581f19efed}")
|
||||||
|
|
||||||
|
Get_Instance_Set_by_System_Routine_Method__returns__Instance_Set = Guid.parse("{84a864fe-84de-4901-a51c-1e103dc56aed}")
|
||||||
|
|
||||||
|
System_Account__has__User_Preferences = Guid.parse("{ada4deb2-adfd-409f-b13a-9856fabd5522}")
|
||||||
|
User_Preferences__for__System_Account = Guid.parse("{ab2372a5-a4c7-488a-89f6-67e5834f8c83}")
|
||||||
|
|
||||||
|
Button_Layout__executes_task_from__Instance_Set = Guid.parse("04d104faa6c4425ea6cd56d847c63e9d")
|
||||||
|
Button_Layout__gets_related_instance_from__Instance_Set = Guid.parse("{462bb1ab-aefa-4455-8d56-eff233e3caa7}")
|
||||||
|
|
||||||
|
Element__processed_by__Process_Related_Updates_Method = Guid.parse("{ed9c836a-04a4-4505-8953-3c567e841c66}")
|
||||||
|
Element__processed_by__Control_Transaction_Method = Guid.parse("{0f182291-6784-47b3-a8d3-d2f6ebf3950c}")
|
||||||
|
|
||||||
|
Control_Transaction_Method__uses__Build_Response_Method_Binding = Guid.parse("{d8f2f0cc-54a2-4004-a383-8c1321495531}")
|
||||||
|
Build_Response_Method_Binding__used_by__Control_Transaction_Method = Guid.parse("{9b83d1f3-6569-4e98-9d88-765684abfd18}")
|
||||||
|
|
||||||
|
Process_Related_Updates_Method__uses__Executable_for_PUMB = Guid.parse("{50e1f14a-d6e5-4c71-b7ab-1755442728dc}")
|
||||||
|
Process_Related_Updates_Method__processes_for__Class = Guid.parse("{436a20fb-f672-4397-aca4-ec0ed6e2280a}")
|
||||||
|
|
||||||
|
Assign_Attribute_Method__uses__Executable_returning_Attribute = Guid.parse("{9313f96e-58af-416f-852e-ef83725057fc}")
|
||||||
|
Assign_Attribute_Method__assigns__Attribute = Guid.parse("{74061875-8a27-403b-9456-02e52cfd13b2}")
|
||||||
|
|
||||||
|
Get_Instances_Method__returns__Work_Set = Guid.parse("{7d0f93b1-8c93-464e-a44d-d674f910b589}")
|
||||||
|
Get_Instances_Method__selects_instances_of__Class = Guid.parse("{c0b85d90-de8c-44c2-9420-c5e724ccdf2c}")
|
||||||
|
|
||||||
|
Build_UI_Response_Method__uses__Executable_returning_Element = Guid.parse("{6f066ec6-b978-4627-81da-78fee1bed5e5}")
|
||||||
|
Executable_returning_Element__used_by__Build_UI_Response_Method = Guid.parse("{0e662556-ca79-43fe-9a50-57ad22df65de}")
|
||||||
|
|
||||||
|
Select_from_Instance_Set_Method__returns__Work_Set = Guid.parse("{e7805b49-0eb3-46ea-bc8a-a5ed676a7726}")
|
||||||
|
Work_Set__returned_by__Select_from_Instance_Set_Method = Guid.parse("{df12608a-e157-4a1b-bae2-0224a18f5b94}")
|
||||||
|
Select_from_Instance_Set_Method__uses__Executable_returning_Instance_Set = Guid.parse("{a907f814-b996-4294-b347-ca16ccaf1f5b}")
|
||||||
|
Executable_returning_Instance_Set__used_by__Select_from_Instance_Set_Method = Guid.parse("{a3ec06f9-54e8-4279-a31d-d221f8697a6a}")
|
||||||
|
Select_from_Instance_Set_Method__uses__Set_Function = Guid.parse("{abda76ae-a969-40e3-aed2-1a20fcec8b31}")
|
||||||
|
Set_Function__used_by__Select_from_Instance_Set_Method = Guid.parse("{753f9f4f-3fe3-470a-890d-d799c24e47af}")
|
||||||
|
Select_from_Instance_Set_Method__uses__Selection_Function = Guid.parse("{6498e72e-f321-4be2-acfd-dfd6f916ce54}")
|
||||||
|
Selection_Function__used_by__Select_from_Instance_Set_Method = Guid.parse("{e5e6a392-a436-41f7-bc80-cb6603503be1}")
|
||||||
|
Select_from_Instance_Set_Method__uses_function__Executable_returning_Attribute = Guid.parse("{30905c53-0d64-4332-9023-12a03e60cd09}")
|
||||||
|
Executable_returning_Attribute__function_used_by__Select_from_Instance_Set_Method = Guid.parse("{79adb5ea-0257-445b-9f7c-e5f8508a59a2}")
|
||||||
|
Select_from_Instance_Set_Method__uses_order__Executable_returning_Attribute = Guid.parse("{c7a5ef47-fce3-4e7c-87b8-f5cab93b1b10}")
|
||||||
|
Executable_returning_Attribute__order_used_by__Select_from_Instance_Set_Method = Guid.parse("{48c984ea-f4da-4090-bdd0-fd659b9be13d}")
|
||||||
|
Select_from_Instance_Set_Method__uses_subset_index__Executable_returning_Attribute = Guid.parse("{b5ef8d8b-683a-4cb9-9e6c-bc470324f4e3}")
|
||||||
|
Executable_returning_Attribute__as_subset_index_for__Select_from_Instance_Set_Method = Guid.parse("{7d03574f-db28-4aff-a96c-8013832b8269}")
|
||||||
|
Select_from_Instance_Set_Method__uses_comparator__Executable_returning_Work_Data = Guid.parse("{974c6e8b-b04f-4e3c-8719-298052afa9c7}")
|
||||||
|
Executable_returning_Work_Data__comparator_for__Select_from_Instance_Set_Method = Guid.parse("{c877ea85-ee9f-4e22-bae7-4a0d7b9272e1}")
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,14 +1,138 @@
|
|||||||
from ..core import InstanceKey, InstanceReference, TenantReference
|
from ..core import InstanceKey, InstanceReference, TenantReference
|
||||||
|
from ..definitions import KnownClassGuids, KnownInstanceGuids, KnownAttributeGuids, KnownRelationshipGuids
|
||||||
|
|
||||||
|
from framework import Guid
|
||||||
|
|
||||||
class Oms:
|
class Oms:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def get_user_by_username(self, username : str):
|
||||||
|
ik_User = self.get_instance_by_global_identifier(KnownClassGuids.User)
|
||||||
|
if ik_User is None:
|
||||||
|
print ("error: class `User` is not defined")
|
||||||
|
return None
|
||||||
|
|
||||||
|
users = self.get_instances(ik_User)
|
||||||
|
for user in users:
|
||||||
|
un = self.get_attribute_value(user, self.get_instance_by_global_identifier(KnownAttributeGuids.UserName))
|
||||||
|
if un == username:
|
||||||
|
return user
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def create_class(self, class_id : int, inst_id : int, name : str, global_identifier : Guid):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_relationship(self, src_class : InstanceReference, type : str, dst_class : InstanceReference, singular : bool = False, sibling_relationship : InstanceReference = None, global_identifier : Guid = None):
|
||||||
|
|
||||||
|
ik_current = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.Relationship), global_identifier)
|
||||||
|
|
||||||
|
self.assign_relationship(ik_current, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_source__Class), src_class)
|
||||||
|
self.assign_attribute(ik_current, self.get_instance_by_global_identifier(KnownAttributeGuids.RelationshipType), type)
|
||||||
|
self.assign_relationship(ik_current, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_destination__Class), dst_class)
|
||||||
|
self.assign_attribute(ik_current, self.get_instance_by_global_identifier(KnownAttributeGuids.Singular), singular)
|
||||||
|
|
||||||
|
if sibling_relationship is not None:
|
||||||
|
self.assign_relationship(ik_current, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_sibling__Relationship), sibling_relationship)
|
||||||
|
|
||||||
|
return ik_current
|
||||||
|
|
||||||
|
def assign_attribute(self, instance : InstanceReference, attribute : InstanceReference, value : str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def assign_relationship(self, instance : InstanceReference, relationship : InstanceReference, related_instances : InstanceReference|list):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_attribute_value(self, inst : InstanceReference, att : InstanceReference, default_value = None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def set_attribute_value(self, inst : InstanceReference, att : InstanceReference, value):
|
||||||
|
pass
|
||||||
|
|
||||||
def get_instance_by_key(self, key : InstanceKey):
|
def get_instance_by_key(self, key : InstanceKey):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def get_instance_by_global_identifier(self, global_identifier : Guid):
|
||||||
|
pass
|
||||||
|
|
||||||
def get_instances(self, of_class : InstanceReference = None):
|
def get_instances(self, of_class : InstanceReference = None):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_tenant_by_name(self, tenant_name : str) -> TenantReference:
|
def get_tenant_by_name(self, tenant_name : str) -> TenantReference:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def create_instance_of(self, class_inst : InstanceReference, global_identifier : Guid = None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def before_init(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _init(self):
|
||||||
|
ik_Class = self.create_class(1, 1, 'Class', KnownClassGuids.Class)
|
||||||
|
self.create_class(1, 2, 'Attribute', KnownClassGuids.Attribute)
|
||||||
|
ik_Relationship = self.create_class(1, 3, 'Relationship', KnownClassGuids.Relationship)
|
||||||
|
|
||||||
|
self.create_class(1, 4, 'Text Attribute', KnownClassGuids.TextAttribute)
|
||||||
|
self.create_class(1, 5, 'Boolean Attribute', KnownClassGuids.BooleanAttribute)
|
||||||
|
self.create_class(1, 6, 'Element', KnownClassGuids.Element)
|
||||||
|
self.create_class(1, 20, 'Numeric Attribute', KnownClassGuids.NumericAttribute)
|
||||||
|
|
||||||
|
self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.Name)
|
||||||
|
self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.Value)
|
||||||
|
self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.Token)
|
||||||
|
|
||||||
|
rel_Relationship__has_source__Class = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.Relationship), KnownRelationshipGuids.Relationship__has_source__Class)
|
||||||
|
rel_Relationship__has_destination__Class = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.Relationship), KnownRelationshipGuids.Relationship__has_destination__Class)
|
||||||
|
rel_Relationship__has_sibling__Relationship = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.Relationship), KnownRelationshipGuids.Relationship__has_sibling__Relationship)
|
||||||
|
|
||||||
|
ik_Singular = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.BooleanAttribute), KnownAttributeGuids.Singular)
|
||||||
|
ik_RelationshipType = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.RelationshipType)
|
||||||
|
|
||||||
|
ik_User = self.create_class(1, 39, 'System User', KnownClassGuids.User)
|
||||||
|
ik_UserLogin = self.create_class(1, 4328, 'System Account Signon', KnownClassGuids.UserLogin)
|
||||||
|
|
||||||
|
ik_UserName = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.UserName)
|
||||||
|
self.assign_attribute(ik_UserName, self.get_instance_by_global_identifier(KnownAttributeGuids.Name), "User Name")
|
||||||
|
|
||||||
|
ik_PasswordHash = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.PasswordHash)
|
||||||
|
self.assign_attribute(ik_PasswordHash, self.get_instance_by_global_identifier(KnownAttributeGuids.Name), "Password Hash")
|
||||||
|
|
||||||
|
ik_PasswordSalt = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.TextAttribute), KnownAttributeGuids.PasswordSalt)
|
||||||
|
self.assign_attribute(ik_PasswordSalt, self.get_instance_by_global_identifier(KnownAttributeGuids.Name), "Password Salt")
|
||||||
|
|
||||||
|
superuser = self.create_instance_of(self.get_instance_by_global_identifier(KnownClassGuids.User), KnownInstanceGuids.User.superuser)
|
||||||
|
self.assign_attribute(superuser, ik_UserName, "superuser")
|
||||||
|
self.assign_attribute(superuser, ik_PasswordHash, "0bdbeeecd24e93a0d84ff2946c519761d4db2c52d9449d2de5bf3b74a8bcdfbee9d72bb88121a63700d09554983e7f881021ecf493f83dec19e8f7e465529c34")
|
||||||
|
self.assign_attribute(superuser, ik_PasswordSalt, "5e28b86839ed4ca9838c112723aeaa27")
|
||||||
|
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(1, 2)), self.get_instance_by_key(InstanceKey(4, 1)), 'Attribute')
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(1, 3)), self.get_instance_by_key(InstanceKey(4, 1)), 'Relationship')
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(1, 4)), self.get_instance_by_key(InstanceKey(4, 1)), 'Text Attribute')
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(4, 1)), self.get_instance_by_key(InstanceKey(4, 1)), 'Name')
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(4, 2)), self.get_instance_by_key(InstanceKey(4, 1)), 'Value')
|
||||||
|
self.assign_attribute(self.get_instance_by_key(InstanceKey(4, 3)), self.get_instance_by_key(InstanceKey(4, 1)), 'Token')
|
||||||
|
|
||||||
|
ik_User_Login__for__User = self.create_relationship(ik_UserLogin, "for", ik_User, False, None, KnownRelationshipGuids.User_Login__has__User)
|
||||||
|
# self.create_relationship(ik_User, "has", ik_UserLogin, False, ik_User_Login__for__User, KnownRelationshipGuids.User__has__User_Login)
|
||||||
|
|
||||||
|
self.update_relationship(rel_Relationship__has_source__Class, ik_Relationship, "has source", ik_Class, True, None)
|
||||||
|
self.update_relationship(rel_Relationship__has_destination__Class, ik_Relationship, "has destination", ik_Class, True, None)
|
||||||
|
self.update_relationship(rel_Relationship__has_sibling__Relationship, ik_Relationship, "has sibling", ik_Relationship, True, None)
|
||||||
|
|
||||||
|
def update_relationship(self, relationship : InstanceReference, src_class : InstanceReference, type : str, dst_class : InstanceReference, singular: bool, sibling_relationship : InstanceReference):
|
||||||
|
self.assign_relationship(relationship, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_source__Class), src_class)
|
||||||
|
self.assign_attribute(relationship, self.get_instance_by_global_identifier(KnownAttributeGuids.RelationshipType), type)
|
||||||
|
self.assign_relationship(relationship, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_destination__Class), dst_class)
|
||||||
|
self.assign_attribute(relationship, self.get_instance_by_global_identifier(KnownAttributeGuids.Singular), singular)
|
||||||
|
|
||||||
|
if sibling_relationship is not None:
|
||||||
|
self.assign_relationship(relationship, self.get_instance_by_global_identifier(KnownRelationshipGuids.Relationship__has_sibling__Relationship), sibling_relationship)
|
||||||
|
|
||||||
|
def after_init(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def init(self):
|
||||||
|
self.before_init()
|
||||||
|
self._init()
|
||||||
|
self.after_init()
|
||||||
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
from .Oms import Oms
|
from ..Oms import Oms
|
||||||
|
|
||||||
class DatabaseOms(Oms):
|
class DatabaseOms(Oms):
|
||||||
pass
|
pass
|
||||||
|
|||||||
BIN
python/mocha/oms/db/__pycache__/DatabaseOms.cpython-311.pyc
Normal file
BIN
python/mocha/oms/db/__pycache__/DatabaseOms.cpython-311.pyc
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
from .Oms import Oms
|
from .Oms import Oms
|
||||||
from ..db.DatabaseOms import DatabaseOms
|
from ..DatabaseOms import DatabaseOms
|
||||||
|
|
||||||
from ...core import InstanceKey, InstanceReference, TenantReference
|
from ...core import InstanceKey, InstanceReference, TenantReference
|
||||||
|
|
||||||
|
|||||||
257
python/mocha/oms/db/sqlite/SQLiteDatabaseOms.py
Normal file
257
python/mocha/oms/db/sqlite/SQLiteDatabaseOms.py
Normal file
@ -0,0 +1,257 @@
|
|||||||
|
from ..DatabaseOms import DatabaseOms
|
||||||
|
|
||||||
|
from ....core.InstanceKey import InstanceKey
|
||||||
|
from ....core.InstanceReference import InstanceReference
|
||||||
|
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
from framework import Guid
|
||||||
|
|
||||||
|
from ....definitions import KnownClassGuids, KnownInstanceGuids, KnownAttributeGuids, KnownRelationshipGuids
|
||||||
|
|
||||||
|
class SQLiteDatabaseOms (DatabaseOms):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.conn = None
|
||||||
|
self.__is_open = False
|
||||||
|
|
||||||
|
def open(self, filename : str):
|
||||||
|
"""
|
||||||
|
Opens the SQLite database with the given filename.
|
||||||
|
"""
|
||||||
|
self.conn = sqlite3.Connection(filename)
|
||||||
|
self.__is_open = True
|
||||||
|
|
||||||
|
def is_open(self):
|
||||||
|
return self.__is_open
|
||||||
|
|
||||||
|
def get_next_instance_index(self, class_inst : InstanceReference):
|
||||||
|
cursor = self.conn.execute("SELECT MAX(inst_id) + 1 FROM instances WHERE class_id = ?", [ class_inst.get_instance_key().get_instance_index() ])
|
||||||
|
result = cursor.fetchone()[0]
|
||||||
|
if result is None:
|
||||||
|
result = 1
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def create_instance_of(self, class_inst : InstanceReference, global_identifier : Guid = None):
|
||||||
|
|
||||||
|
if global_identifier is None:
|
||||||
|
global_identifier = Guid.create()
|
||||||
|
|
||||||
|
next_iid = self.get_next_instance_index(class_inst)
|
||||||
|
result = self.conn.execute("INSERT INTO instances (class_id, inst_id, global_identifier, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [ class_inst.get_instance_key().get_instance_index(), next_iid, global_identifier.strip() ])
|
||||||
|
lastrowid = result.lastrowid
|
||||||
|
|
||||||
|
# self.conn.execute("INSERT INTO attributes (src_inst_id, att_inst_id, att_value, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [ result.lastrowid, 5, name ])
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances WHERE id = ?", [ lastrowid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
result = results[0]
|
||||||
|
|
||||||
|
return self.get_instance_from_database(result)
|
||||||
|
|
||||||
|
|
||||||
|
def create_class(self, class_id : int, inst_id : int, name : str, global_identifier : Guid):
|
||||||
|
print ("create class : " + str(class_id) + "$" + str(inst_id) + " [" + name + "] " + str(global_identifier) + ";")
|
||||||
|
|
||||||
|
result = self.conn.execute("INSERT INTO instances (class_id, inst_id, global_identifier, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [ class_id, inst_id, global_identifier.strip() ])
|
||||||
|
lastrowid = result.lastrowid
|
||||||
|
|
||||||
|
print ("lastrowid: " + str(result.lastrowid))
|
||||||
|
|
||||||
|
self.conn.execute("INSERT INTO attributes (src_inst_id, att_inst_id, att_value, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [ result.lastrowid, 5, name ])
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances WHERE id = ?", [ lastrowid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
result = results[0]
|
||||||
|
|
||||||
|
return self.get_instance_from_database(result)
|
||||||
|
|
||||||
|
def get_attributes(self, instance : InstanceReference):
|
||||||
|
if instance is None:
|
||||||
|
return [ ]
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT DISTINCT att_inst_id FROM attributes WHERE src_inst_id = ? AND effective_date <= CURRENT_TIMESTAMP ORDER BY effective_date DESC", [ instance.dbid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
retval = [ ]
|
||||||
|
for result in results:
|
||||||
|
retval.append(self.get_instance_by_dbid(result[0]))
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def get_relationships(self, instance : InstanceReference):
|
||||||
|
if instance is None:
|
||||||
|
return [ ]
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT DISTINCT rel_inst_id FROM relationships WHERE src_inst_id = ? AND effective_date <= CURRENT_TIMESTAMP ORDER BY effective_date DESC", [ instance.dbid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
retval = [ ]
|
||||||
|
for result in results:
|
||||||
|
retval.append(self.get_instance_by_dbid(result[0]))
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def get_related_instances(self, instance : InstanceReference, relationship : InstanceReference):
|
||||||
|
if instance is None:
|
||||||
|
return [ ]
|
||||||
|
if relationship is None:
|
||||||
|
return [ ]
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT dst_inst_id, remove_flag FROM relationships WHERE src_inst_id = ? AND rel_inst_id = ? AND effective_date <= CURRENT_TIMESTAMP ORDER BY effective_date DESC", [ instance.dbid, relationship.dbid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
retval_ids = [ ]
|
||||||
|
retval = [ ]
|
||||||
|
for result in results:
|
||||||
|
if result[0] in retval_ids:
|
||||||
|
if result[1] == 1:
|
||||||
|
# remove flag
|
||||||
|
retval_ids.remove(result[0])
|
||||||
|
else:
|
||||||
|
retval_ids.append(result[0])
|
||||||
|
|
||||||
|
for id in retval_ids:
|
||||||
|
retval.append(self.get_instance_by_dbid(id))
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def assign_attribute(self, instance : InstanceReference, attribute : InstanceReference, value : str):
|
||||||
|
|
||||||
|
self.conn.execute("INSERT INTO attributes (src_inst_id, att_inst_id, att_value, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [ instance.get_dbid(), attribute.get_dbid(), value ])
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
def assign_relationship(self, instance : InstanceReference, relationship : InstanceReference, related_instances : InstanceReference|list):
|
||||||
|
|
||||||
|
if relationship is None:
|
||||||
|
raise ValueError("relationship for assign_relationship is None")
|
||||||
|
|
||||||
|
if related_instances is None:
|
||||||
|
raise ValueError("related_instances must not be None")
|
||||||
|
|
||||||
|
if isinstance(related_instances, InstanceReference):
|
||||||
|
related_instances = [ related_instances ]
|
||||||
|
|
||||||
|
if isinstance(related_instances, list):
|
||||||
|
for inst in related_instances:
|
||||||
|
if not inst is None:
|
||||||
|
self.conn.execute("INSERT INTO relationships (src_inst_id, rel_inst_id, dst_inst_id, remove_flag, effective_date) VALUES (?, ?, ?, 0, CURRENT_TIMESTAMP)", [ instance.get_dbid(), relationship.get_dbid(), inst.get_dbid() ])
|
||||||
|
else:
|
||||||
|
print("error: target inst for assign_relationship is None")
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("related_instances must be either InstanceReference or list, was " + str(type(inst)))
|
||||||
|
return
|
||||||
|
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
def get_instance_by_dbid(self, dbid : int) -> InstanceReference:
|
||||||
|
if self.conn is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances WHERE id = ? AND (effective_date IS NULL OR effective_date <= CURRENT_TIMESTAMP)", [ dbid ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
if len(results) > 0:
|
||||||
|
return self.get_instance_from_database(results[0])
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_instance_by_key(self, key : InstanceKey) -> InstanceReference:
|
||||||
|
if self.conn is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
qry = "SELECT * FROM instances WHERE class_id = " + str(key.get_class_index()) + " AND inst_id = " + str(key.get_instance_index()) + " AND (effective_date IS NULL OR effective_date <= CURRENT_TIMESTAMP)"
|
||||||
|
result = self.conn.execute(qry)
|
||||||
|
results = result.fetchall()
|
||||||
|
if len(results) > 0:
|
||||||
|
return self.get_instance_from_database(results[0])
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
# retval = [ ]
|
||||||
|
|
||||||
|
# for res in results:
|
||||||
|
# retval.append(InstanceReference(int(res[0]), InstanceKey(int(res[1]), int(res[2])), res[3]))
|
||||||
|
|
||||||
|
# if len(retval) == 1:
|
||||||
|
# return retval[0]
|
||||||
|
# elif len(retval) == 0:
|
||||||
|
# return None
|
||||||
|
|
||||||
|
# return retval
|
||||||
|
|
||||||
|
def get_attribute_value(self, inst : InstanceReference, att : InstanceReference, default_value = None):
|
||||||
|
if inst is None or att is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT att_value FROM attributes WHERE src_inst_id = " + str(inst.dbid) + " AND att_inst_id = " + str(att.dbid) + " AND effective_date <= CURRENT_TIMESTAMP ORDER BY effective_date DESC, id DESC")
|
||||||
|
results = cursor.fetchall()
|
||||||
|
if (len(results) > 0):
|
||||||
|
return results[0][0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def set_attribute_value(self, inst : InstanceReference, att : InstanceReference, value):
|
||||||
|
if inst is None or att is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
cursor = self.conn.execute("INSERT INTO attributes (src_inst_id, att_inst_id, att_value, effective_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP)", [inst.dbid, att.dbid, value])
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
def before_init(self):
|
||||||
|
self.conn.execute("DROP TABLE IF EXISTS instances")
|
||||||
|
self.conn.execute("DROP TABLE IF EXISTS attributes")
|
||||||
|
self.conn.execute("DROP TABLE IF EXISTS relationships")
|
||||||
|
self.conn.execute("DROP TABLE IF EXISTS relationship_instances")
|
||||||
|
|
||||||
|
self.conn.execute("CREATE TABLE instances (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, class_id INT, inst_id INT, global_identifier CHAR(32), effective_date DATETIME)")
|
||||||
|
self.conn.execute("CREATE TABLE attributes (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, src_inst_id INTEGER NOT NULL, att_inst_id INTEGER NOT NULL, att_value TEXT, effective_date DATETIME)")
|
||||||
|
# self.conn.execute("CREATE TABLE relationships (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, src_inst_id INTEGER NOT NULL, rel_inst_id INTEGER NOT NULL, effective_date DATETIME)")
|
||||||
|
# self.conn.execute("CREATE TABLE relationship_instances (rel_id INTEGER NOT NULL, inst_id INTEGER NOT NULL, remove_flag INTEGER NOT NULL, effective_date DATETIME)")
|
||||||
|
self.conn.execute("CREATE TABLE relationships (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, src_inst_id INTEGER NOT NULL, rel_inst_id INTEGER NOT NULL, dst_inst_id INTEGER NOT NULL, remove_flag INTEGER NOT NULL, effective_date DATETIME)")
|
||||||
|
|
||||||
|
def after_init(self):
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def get_instances(self, of_class : InstanceReference = None):
|
||||||
|
|
||||||
|
if of_class is not None:
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances WHERE class_id = ?", [ of_class.get_instance_key().get_instance_index() ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
insts = [ ]
|
||||||
|
|
||||||
|
for result in results:
|
||||||
|
inst = self.get_instance_from_database(result)
|
||||||
|
insts.append(inst)
|
||||||
|
|
||||||
|
return insts
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances")
|
||||||
|
results = cursor.fetchall()
|
||||||
|
insts = [ ]
|
||||||
|
|
||||||
|
for result in results:
|
||||||
|
inst = self.get_instance_from_database(result)
|
||||||
|
insts.append(inst)
|
||||||
|
|
||||||
|
return insts
|
||||||
|
|
||||||
|
|
||||||
|
def get_instance_from_database(self, result):
|
||||||
|
return InstanceReference(int(result[0]), InstanceKey(int(result[1]), int(result[2])), Guid.parse(result[3]))
|
||||||
|
|
||||||
|
def get_instance_by_global_identifier(self, global_identifier : Guid):
|
||||||
|
cursor = self.conn.execute("SELECT * FROM instances WHERE global_identifier = ?", [ global_identifier.strip() ])
|
||||||
|
results = cursor.fetchall()
|
||||||
|
if len(results) > 0:
|
||||||
|
return self.get_instance_from_database(results[0])
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.conn.close()
|
||||||
|
self.__is_open = False
|
||||||
|
|
||||||
1
python/mocha/oms/db/sqlite/__init__.py
Normal file
1
python/mocha/oms/db/sqlite/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .SQLiteDatabaseOms import SQLiteDatabaseOms
|
||||||
Binary file not shown.
BIN
python/mocha/oms/db/sqlite/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
python/mocha/oms/db/sqlite/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/__pycache__/WebPage.cpython-311.pyc
Normal file
BIN
python/mocha/web/__pycache__/WebPage.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/__pycache__/WebScript.cpython-311.pyc
Normal file
BIN
python/mocha/web/__pycache__/WebScript.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/__pycache__/WebStyleSheet.cpython-311.pyc
Normal file
BIN
python/mocha/web/__pycache__/WebStyleSheet.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/ui/__pycache__/WebControl.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/__pycache__/WebControl.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/ui/controls/__pycache__/Box.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/controls/__pycache__/Box.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/ui/controls/__pycache__/Grid.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/controls/__pycache__/Grid.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/ui/controls/__pycache__/Label.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/controls/__pycache__/Label.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/ui/controls/__pycache__/TextBox.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/controls/__pycache__/TextBox.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
python/mocha/web/ui/pages/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
python/mocha/web/ui/pages/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/xml/__pycache__/XmlAttribute.cpython-311.pyc
Normal file
BIN
python/mocha/web/xml/__pycache__/XmlAttribute.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/xml/__pycache__/XmlTag.cpython-311.pyc
Normal file
BIN
python/mocha/web/xml/__pycache__/XmlTag.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/xml/__pycache__/XmlTagStyles.cpython-311.pyc
Normal file
BIN
python/mocha/web/xml/__pycache__/XmlTagStyles.cpython-311.pyc
Normal file
Binary file not shown.
BIN
python/mocha/web/xml/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
python/mocha/web/xml/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
3
python/tenant.yaml
Normal file
3
python/tenant.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
- tenant: 'super'
|
||||||
|
include:
|
||||||
|
- filename: 'test.mql'
|
||||||
BIN
python/test.mql
Normal file
BIN
python/test.mql
Normal file
Binary file not shown.
31
suv/docker-compose.yml
Normal file
31
suv/docker-compose.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx-proxy:
|
||||||
|
image: jwilder/nginx-proxy
|
||||||
|
ports:
|
||||||
|
- "8008:80"
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||||
|
- ./vhost.d:/etc/nginx/vhost.d:ro
|
||||||
|
|
||||||
|
# gateway:
|
||||||
|
# image: httpd
|
||||||
|
# environment:
|
||||||
|
# - VIRTUAL_HOST=mocha.local
|
||||||
|
|
||||||
|
# authgwy:
|
||||||
|
# image: jwilder/whoami
|
||||||
|
|
||||||
|
themes:
|
||||||
|
image: jwilder/whoami
|
||||||
|
volumes:
|
||||||
|
- ../php/mocha/themes:/usr/local/apache2/htdocs/
|
||||||
|
|
||||||
|
tenant:
|
||||||
|
image: php:8.2-apache
|
||||||
|
# environment:
|
||||||
|
# - VIRTUAL_HOST=mocha.local
|
||||||
|
volumes:
|
||||||
|
- ../php/mocha/:/usr/local/apache2/htdocs/
|
||||||
|
- ../apache2/conf/suv.conf:/usr/local/apache2/conf/httpd.conf
|
||||||
12
suv/vhost.d/mocha.local
Normal file
12
suv/vhost.d/mocha.local
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
location /madi/authgwy {
|
||||||
|
proxy_pass http://authgwy:8000;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /tenant {
|
||||||
|
proxy_pass http://tenant:80;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /themes {
|
||||||
|
proxy_pass http://themes:8000;
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user