├── .gitignore ├── IFlow ├── Releases │ ├── Webbrowser_to_CPI_SystemMonitor_1.0.0.zip │ ├── Webbrowser_to_CPI_SystemMonitor_1.0.1.zip │ ├── Webbrowser_to_CPI_SystemMonitor_1.0.2.zip │ ├── Webbrowser_to_CPI_SystemMonitor_1.0.3.zip │ ├── Webbrowser_to_CPI_SystemMonitor_1.0.4.zip │ └── Webbrowser_to_CPI_SystemMonitor_1.0.5-beta01.zip └── Source │ ├── .project │ ├── META-INF │ └── MANIFEST.MF │ └── src │ └── main │ └── resources │ ├── lib │ ├── cron-utils-9.0.2.jar │ ├── jansi-1.18.jar │ └── java-diff-utils-4.0.jar │ ├── mapping │ └── XsltSystemProperties.xsl │ ├── parameters.prop │ ├── parameters.propdef │ ├── scenarioflows │ └── integrationflow │ │ └── Webbrowser_to_CPI_SystemMonitor_Realcore.iflw │ └── script │ ├── alertCalculateAlerts.groovy │ ├── alertCalculateQuery.groovy │ ├── alertCreateAlertConfig.groovy │ ├── artifactsParseDesigntimeArtifacts.groovy │ ├── artifactsParseDesigntimePackages.groovy │ ├── artifactsParseRuntimeArtifacts.groovy │ ├── authExtractRoles.groovy │ ├── authGetBearerToken.groovy │ ├── authPrepareGroups.groovy │ ├── authValidate.groovy │ ├── createExceptionJson.groovy │ ├── createMainPayload.groovy │ ├── deliverStaticContent.groovy │ ├── diffCompareIFlows.groovy │ ├── diffGetIFlowPackageContent.groovy │ ├── downloadFile.groovy │ ├── downloadFixHeaders.groovy │ ├── loadEndpointList.groovy │ ├── mplCalculateQuery.groovy │ ├── mplSetupQuery.groovy │ ├── mplStoreResults.groovy │ ├── perfLogStart.groovy │ ├── remoteTenantArtifactsComparison.groovy │ ├── schedulerCalculateRuntimes.groovy │ ├── secMatGetPasswords.groovy │ └── shellExecuteCommand.groovy ├── LICENSE ├── README.md └── Webfrontend ├── LICENSE ├── build.ps1 ├── build_dist.bat ├── build_full.bat ├── css └── sb-admin-2.css ├── dist └── staticContent.groovy ├── endpoints.json ├── index.html ├── js └── sb-admin-2.min.js ├── vendor ├── bootstrap-table │ ├── bootstrap-table-locale-all.js │ ├── bootstrap-table-locale-all.min.js │ ├── bootstrap-table-vue.esm.js │ ├── bootstrap-table-vue.esm.min.js │ ├── bootstrap-table-vue.js │ ├── bootstrap-table-vue.min.js │ ├── bootstrap-table.css │ ├── bootstrap-table.js │ ├── bootstrap-table.min.css │ ├── bootstrap-table.min.js │ ├── extensions │ │ ├── accent-neutralise │ │ │ ├── bootstrap-table-accent-neutralise.js │ │ │ └── bootstrap-table-accent-neutralise.min.js │ │ ├── addrbar │ │ │ ├── bootstrap-table-addrbar.js │ │ │ └── bootstrap-table-addrbar.min.js │ │ ├── auto-refresh │ │ │ ├── bootstrap-table-auto-refresh.js │ │ │ └── bootstrap-table-auto-refresh.min.js │ │ ├── cell-input │ │ │ ├── bootstrap-table-cell-input.css │ │ │ ├── bootstrap-table-cell-input.js │ │ │ ├── bootstrap-table-cell-input.min.css │ │ │ └── bootstrap-table-cell-input.min.js │ │ ├── cookie │ │ │ ├── bootstrap-table-cookie.js │ │ │ └── bootstrap-table-cookie.min.js │ │ ├── copy-rows │ │ │ ├── bootstrap-table-copy-rows.js │ │ │ └── bootstrap-table-copy-rows.min.js │ │ ├── defer-url │ │ │ ├── bootstrap-table-defer-url.js │ │ │ └── bootstrap-table-defer-url.min.js │ │ ├── editable │ │ │ ├── bootstrap-table-editable.js │ │ │ └── bootstrap-table-editable.min.js │ │ ├── export │ │ │ ├── bootstrap-table-export.js │ │ │ └── bootstrap-table-export.min.js │ │ ├── filter-control │ │ │ ├── bootstrap-table-filter-control.css │ │ │ ├── bootstrap-table-filter-control.js │ │ │ ├── bootstrap-table-filter-control.min.css │ │ │ └── bootstrap-table-filter-control.min.js │ │ ├── fixed-columns │ │ │ ├── bootstrap-table-fixed-columns.css │ │ │ ├── bootstrap-table-fixed-columns.js │ │ │ ├── bootstrap-table-fixed-columns.min.css │ │ │ └── bootstrap-table-fixed-columns.min.js │ │ ├── group-by-v2 │ │ │ ├── bootstrap-table-group-by.css │ │ │ ├── bootstrap-table-group-by.js │ │ │ ├── bootstrap-table-group-by.min.css │ │ │ └── bootstrap-table-group-by.min.js │ │ ├── i18n-enhance │ │ │ ├── bootstrap-table-i18n-enhance.js │ │ │ └── bootstrap-table-i18n-enhance.min.js │ │ ├── key-events │ │ │ ├── bootstrap-table-key-events.js │ │ │ └── bootstrap-table-key-events.min.js │ │ ├── mobile │ │ │ ├── bootstrap-table-mobile.js │ │ │ └── bootstrap-table-mobile.min.js │ │ ├── multiple-sort │ │ │ ├── bootstrap-table-multiple-sort.js │ │ │ └── bootstrap-table-multiple-sort.min.js │ │ ├── natural-sorting │ │ │ ├── bootstrap-table-natural-sorting.js │ │ │ └── bootstrap-table-natural-sorting.min.js │ │ ├── page-jump-to │ │ │ ├── bootstrap-table-page-jump-to.css │ │ │ ├── bootstrap-table-page-jump-to.js │ │ │ ├── bootstrap-table-page-jump-to.min.css │ │ │ └── bootstrap-table-page-jump-to.min.js │ │ ├── pipeline │ │ │ ├── bootstrap-table-pipeline.js │ │ │ └── bootstrap-table-pipeline.min.js │ │ ├── print │ │ │ ├── bootstrap-table-print.js │ │ │ └── bootstrap-table-print.min.js │ │ ├── reorder-columns │ │ │ ├── bootstrap-table-reorder-columns.js │ │ │ └── bootstrap-table-reorder-columns.min.js │ │ ├── reorder-rows │ │ │ ├── bootstrap-table-reorder-rows.css │ │ │ ├── bootstrap-table-reorder-rows.js │ │ │ ├── bootstrap-table-reorder-rows.min.css │ │ │ └── bootstrap-table-reorder-rows.min.js │ │ ├── resizable │ │ │ ├── bootstrap-table-resizable.js │ │ │ └── bootstrap-table-resizable.min.js │ │ ├── sticky-header │ │ │ ├── bootstrap-table-sticky-header.css │ │ │ ├── bootstrap-table-sticky-header.js │ │ │ ├── bootstrap-table-sticky-header.min.css │ │ │ └── bootstrap-table-sticky-header.min.js │ │ ├── toolbar │ │ │ ├── bootstrap-table-toolbar.js │ │ │ └── bootstrap-table-toolbar.min.js │ │ └── treegrid │ │ │ ├── bootstrap-table-treegrid.js │ │ │ └── bootstrap-table-treegrid.min.js │ ├── locale │ │ ├── bootstrap-table-af-ZA.js │ │ ├── bootstrap-table-af-ZA.min.js │ │ ├── bootstrap-table-ar-SA.js │ │ ├── bootstrap-table-ar-SA.min.js │ │ ├── bootstrap-table-ca-ES.js │ │ ├── bootstrap-table-ca-ES.min.js │ │ ├── bootstrap-table-cs-CZ.js │ │ ├── bootstrap-table-cs-CZ.min.js │ │ ├── bootstrap-table-da-DK.js │ │ ├── bootstrap-table-da-DK.min.js │ │ ├── bootstrap-table-de-DE.js │ │ ├── bootstrap-table-de-DE.min.js │ │ ├── bootstrap-table-el-GR.js │ │ ├── bootstrap-table-el-GR.min.js │ │ ├── bootstrap-table-en-US.js │ │ ├── bootstrap-table-en-US.min.js │ │ ├── bootstrap-table-es-AR.js │ │ ├── bootstrap-table-es-AR.min.js │ │ ├── bootstrap-table-es-CL.js │ │ ├── bootstrap-table-es-CL.min.js │ │ ├── bootstrap-table-es-CR.js │ │ ├── bootstrap-table-es-CR.min.js │ │ ├── bootstrap-table-es-ES.js │ │ ├── bootstrap-table-es-ES.min.js │ │ ├── bootstrap-table-es-MX.js │ │ ├── bootstrap-table-es-MX.min.js │ │ ├── bootstrap-table-es-NI.js │ │ ├── bootstrap-table-es-NI.min.js │ │ ├── bootstrap-table-es-SP.js │ │ ├── bootstrap-table-es-SP.min.js │ │ ├── bootstrap-table-et-EE.js │ │ ├── bootstrap-table-et-EE.min.js │ │ ├── bootstrap-table-eu-EU.js │ │ ├── bootstrap-table-eu-EU.min.js │ │ ├── bootstrap-table-fa-IR.js │ │ ├── bootstrap-table-fa-IR.min.js │ │ ├── bootstrap-table-fi-FI.js │ │ ├── bootstrap-table-fi-FI.min.js │ │ ├── bootstrap-table-fr-BE.js │ │ ├── bootstrap-table-fr-BE.min.js │ │ ├── bootstrap-table-fr-CH.js │ │ ├── bootstrap-table-fr-CH.min.js │ │ ├── bootstrap-table-fr-FR.js │ │ ├── bootstrap-table-fr-FR.min.js │ │ ├── bootstrap-table-fr-LU.js │ │ ├── bootstrap-table-fr-LU.min.js │ │ ├── bootstrap-table-he-IL.js │ │ ├── bootstrap-table-he-IL.min.js │ │ ├── bootstrap-table-hr-HR.js │ │ ├── bootstrap-table-hr-HR.min.js │ │ ├── bootstrap-table-hu-HU.js │ │ ├── bootstrap-table-hu-HU.min.js │ │ ├── bootstrap-table-id-ID.js │ │ ├── bootstrap-table-id-ID.min.js │ │ ├── bootstrap-table-it-IT.js │ │ ├── bootstrap-table-it-IT.min.js │ │ ├── bootstrap-table-ja-JP.js │ │ ├── bootstrap-table-ja-JP.min.js │ │ ├── bootstrap-table-ka-GE.js │ │ ├── bootstrap-table-ka-GE.min.js │ │ ├── bootstrap-table-ko-KR.js │ │ ├── bootstrap-table-ko-KR.min.js │ │ ├── bootstrap-table-ms-MY.js │ │ ├── bootstrap-table-ms-MY.min.js │ │ ├── bootstrap-table-nb-NO.js │ │ ├── bootstrap-table-nb-NO.min.js │ │ ├── bootstrap-table-nl-BE.js │ │ ├── bootstrap-table-nl-BE.min.js │ │ ├── bootstrap-table-nl-NL.js │ │ ├── bootstrap-table-nl-NL.min.js │ │ ├── bootstrap-table-pl-PL.js │ │ ├── bootstrap-table-pl-PL.min.js │ │ ├── bootstrap-table-pt-BR.js │ │ ├── bootstrap-table-pt-BR.min.js │ │ ├── bootstrap-table-pt-PT.js │ │ ├── bootstrap-table-pt-PT.min.js │ │ ├── bootstrap-table-ro-RO.js │ │ ├── bootstrap-table-ro-RO.min.js │ │ ├── bootstrap-table-ru-RU.js │ │ ├── bootstrap-table-ru-RU.min.js │ │ ├── bootstrap-table-sk-SK.js │ │ ├── bootstrap-table-sk-SK.min.js │ │ ├── bootstrap-table-sr-Cyrl-RS.js │ │ ├── bootstrap-table-sr-Cyrl-RS.min.js │ │ ├── bootstrap-table-sr-Latn-RS.js │ │ ├── bootstrap-table-sr-Latn-RS.min.js │ │ ├── bootstrap-table-sv-SE.js │ │ ├── bootstrap-table-sv-SE.min.js │ │ ├── bootstrap-table-th-TH.js │ │ ├── bootstrap-table-th-TH.min.js │ │ ├── bootstrap-table-tr-TR.js │ │ ├── bootstrap-table-tr-TR.min.js │ │ ├── bootstrap-table-uk-UA.js │ │ ├── bootstrap-table-uk-UA.min.js │ │ ├── bootstrap-table-ur-PK.js │ │ ├── bootstrap-table-ur-PK.min.js │ │ ├── bootstrap-table-uz-Latn-UZ.js │ │ ├── bootstrap-table-uz-Latn-UZ.min.js │ │ ├── bootstrap-table-vi-VN.js │ │ ├── bootstrap-table-vi-VN.min.js │ │ ├── bootstrap-table-zh-CN.js │ │ ├── bootstrap-table-zh-CN.min.js │ │ ├── bootstrap-table-zh-TW.js │ │ └── bootstrap-table-zh-TW.min.js │ └── themes │ │ ├── bulma │ │ ├── bootstrap-table-bulma.css │ │ ├── bootstrap-table-bulma.js │ │ ├── bootstrap-table-bulma.min.css │ │ └── bootstrap-table-bulma.min.js │ │ ├── foundation │ │ ├── bootstrap-table-foundation.css │ │ ├── bootstrap-table-foundation.js │ │ ├── bootstrap-table-foundation.min.css │ │ └── bootstrap-table-foundation.min.js │ │ ├── materialize │ │ ├── bootstrap-table-materialize.css │ │ ├── bootstrap-table-materialize.js │ │ ├── bootstrap-table-materialize.min.css │ │ └── bootstrap-table-materialize.min.js │ │ └── semantic │ │ ├── bootstrap-table-semantic.css │ │ ├── bootstrap-table-semantic.js │ │ ├── bootstrap-table-semantic.min.css │ │ └── bootstrap-table-semantic.min.js ├── bootstrap │ └── js │ │ ├── bootstrap.bundle.min.js │ │ └── bootstrap.bundle.min.js.map ├── chart.js │ └── Chart.min.js ├── diff2html │ ├── diff2html.min.css │ └── diff2html.min.js ├── jquery-easing │ ├── jquery.easing.compatibility.js │ └── jquery.easing.min.js └── jquery │ ├── jquery.min.js │ └── jquery.min.map └── versionHistory.json /.gitignore: -------------------------------------------------------------------------------- 1 | Webfrontend/status.json 2 | Webfrontend/securitymaterial.json 3 | Webfrontend/scheduler.json 4 | Webfrontend/iFlowPackageContent.json 5 | Webfrontend/diffResult.json 6 | Webfrontend/artifacts.json 7 | Webfrontend/alertrules.json 8 | -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.0.zip -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.1.zip -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.2.zip -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.3.zip -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.4.zip -------------------------------------------------------------------------------- /IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.5-beta01.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Releases/Webbrowser_to_CPI_SystemMonitor_1.0.5-beta01.zip -------------------------------------------------------------------------------- /IFlow/Source/.project: -------------------------------------------------------------------------------- 1 | 2 | Webbrowser_to_CPI_SystemMonitor_RealcoreDashboard 3 | 4 | 5 | 6 | 7 | org.eclipse.jdt.core.javabuilder 8 | 9 | 10 | 11 | 12 | org.eclipse.jdt.core.javanature 13 | com.sap.ide.ifl.project.support.project.nature 14 | com.sap.ide.ifl.bsn 15 | 16 | -------------------------------------------------------------------------------- /IFlow/Source/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | SAP-RuntimeProfile: iflmap 3 | Bundle-SymbolicName: Webbrowser_to_CPI_SystemMonitor_RealcoreDashboard 4 | ; singleton:=true 5 | Bundle-Name: Webbrowser_to_CPI_SystemMonitor_RealcoreDashboard 6 | Bundle-Version: 1.0.46 7 | Bundle-ManifestVersion: 2 8 | SAP-ArtifactTrait: 9 | SAP-NodeType: IFLMAP 10 | Import-Package: com.sap.esb.application.services.cxf.interceptor,com.s 11 | ap.esb.security,com.sap.it.op.agent.api,com.sap.it.op.agent.collector 12 | .camel,com.sap.it.op.agent.collector.cxf,com.sap.it.op.agent.mpl,java 13 | x.jms,javax.jws,javax.wsdl,javax.xml.bind.annotation,javax.xml.namesp 14 | ace,javax.xml.ws,org.apache.camel;version="2.8",org.apache.camel.buil 15 | der;version="2.8",org.apache.camel.builder.xml;version="2.8",org.apac 16 | he.camel.component.cxf,org.apache.camel.model;version="2.8",org.apach 17 | e.camel.processor;version="2.8",org.apache.camel.processor.aggregate; 18 | version="2.8",org.apache.camel.spring.spi;version="2.8",org.apache.co 19 | mmons.logging,org.apache.cxf.binding,org.apache.cxf.binding.soap,org. 20 | apache.cxf.binding.soap.spring,org.apache.cxf.bus,org.apache.cxf.bus. 21 | resource,org.apache.cxf.bus.spring,org.apache.cxf.buslifecycle,org.ap 22 | ache.cxf.catalog,org.apache.cxf.configuration.jsse;version="2.5",org. 23 | apache.cxf.configuration.spring,org.apache.cxf.endpoint,org.apache.cx 24 | f.headers,org.apache.cxf.interceptor,org.apache.cxf.management.counte 25 | rs;version="2.5",org.apache.cxf.message,org.apache.cxf.phase,org.apac 26 | he.cxf.resource,org.apache.cxf.service.factory,org.apache.cxf.service 27 | .model,org.apache.cxf.transport,org.apache.cxf.transport.common.gzip, 28 | org.apache.cxf.transport.http,org.apache.cxf.transport.http.policy,or 29 | g.apache.cxf.workqueue,org.apache.cxf.ws.rm.persistence,org.apache.cx 30 | f.wsdl11,org.osgi.framework;version="1.6.0",org.slf4j;version="1.6",o 31 | rg.springframework.beans.factory.config;version="3.0",com.sap.esb.cam 32 | el.security.cms,org.apache.camel.spi,com.sap.esb.webservice.audit.log 33 | ,com.sap.esb.camel.endpoint.configurator.api,com.sap.esb.camel.jdbc.i 34 | dempotency.reorg,javax.sql,org.apache.camel.processor.idempotent.jdbc 35 | ,org.osgi.service.blueprint;version="[1.0.0,2.0.0)" 36 | SAP-BundleType: IntegrationFlow 37 | Import-Service: com.sap.esb.webservice.audit.log.AuditLogger,com.sap.e 38 | sb.security.KeyManagerFactory;multiple:=false,com.sap.esb.security.Tr 39 | ustManagerFactory;multiple:=false,javax.sql.DataSource;multiple:=fals 40 | e;filter="(dataSourceName=default)",org.apache.cxf.ws.rm.persistence. 41 | RMStore;multiple:=false,com.sap.esb.camel.security.cms.SignatureSplit 42 | ter;multiple:=false 43 | 44 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/lib/cron-utils-9.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Source/src/main/resources/lib/cron-utils-9.0.2.jar -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/lib/jansi-1.18.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Source/src/main/resources/lib/jansi-1.18.jar -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/lib/java-diff-utils-4.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/IFlow/Source/src/main/resources/lib/java-diff-utils-4.0.jar -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/mapping/XsltSystemProperties.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/parameters.prop: -------------------------------------------------------------------------------- 1 | # 2 | #Thu Jan 02 09:51:52 UTC 2020 3 | ROLE_SECURITY_MAT_ACCESS=de.realcore.cpi.dashboard.security 4 | SAP_CPI_AUTH_API_CREDENTIALS_OAUTH= 5 | ALERT_MAIL_SERVER_PROXY_TYPE=none 6 | CACHE_DATASTORE_NAME=CPI_Dashboard_Cache 7 | ROLE_SHELL_ACCESS=de.realcore.cpi.dashboard.shell 8 | DIFF_REMOTE_CPI_TENANTS= 9 | ALERT_TIMER=dateTypetimeTypedayValuemonthValueyearValueonWeeklyonMonthlyOnEveryMinutefromIntervaltoIntervaltimeZone( UTC 0\:00 ) Greenwich Mean Time(Etc/GMT)secondValue0minutesValuehourValuetriggerTypesimplenoOfSchedules1schedule1fireNow\=true 10 | ALERT_MAIL_SENDER= 11 | ROLE_GENERAL_ACCESS=de.realcore.cpi.dashboard 12 | ALERT_MAIL_SERVER_HOSTNAME=smtp.gmail.com\:587 13 | SAP_CPI_TENANT_TECHNICALNAME= 14 | REMOTE_TENANTS_DIRECTION=UP 15 | SAP_CP_HOST=api.eu1.hana.ondemand.com 16 | ROLE_LOG_AND_FILE_ACCESS=de.realcore.cpi.dashboard.logfile 17 | ALERT_MAIL_SERVER_ONPREMISE_LOCATION_ID= 18 | ALERT_MAIL_SERVER_CREDS= 19 | CPU_USAGE_MESEASUREMENT_TIME_IN_MS=3000 20 | SAP_CPI_AUTH_API_CREDENTIALS_TYPE=OAuth2 Client Credentials 21 | ALERT_MAIL_SERVER_SECURITYMODE=starttls_mandatory 22 | ALERT_MAIL_SERVER_AUTHMODE=loginPlain 23 | SAP_CPI_AUTH_API_CREDENTIALS_BASICAUTH= 24 | DASHBOARD_URL_BASE=/realcore/cpidash 25 | SAP_CP_AUTH_API_CREDENTIALS= 26 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/alertCalculateAlerts.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | This script was written and debugged in the SAP_CPI_Groovy_Emulator IntelliJ project developed by Jernej Strazisar 3 | The integration developer needs to create the method processData 4 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 5 | which includes helper methods useful for the content developer: 6 | The methods available are: 7 | public java.lang.Object getBody() 8 | public void setBody(java.lang.Object exchangeBody) 9 | public java.util.Map getHeaders() 10 | public void setHeaders(java.util.Map exchangeHeaders) 11 | public void setHeader(java.lang.String name, java.lang.Object value) 12 | public java.util.Map getProperties() 13 | public void setProperties(java.util.Map exchangeProperties) 14 | public void setProperty(java.lang.String name, java.lang.Object value) 15 | */ 16 | 17 | import com.sap.gateway.ip.core.customdev.util.Message 18 | import groovy.json.* 19 | import groovy.time.TimeCategory; 20 | 21 | def Message processData(Message message) { 22 | 23 | //Container for alerting mails 24 | def alertMails = [] 25 | 26 | new JsonSlurper().parseText(message.getProperty("alertConfig")).rules.each { rule -> 27 | //only process active rules 28 | if (rule.active){ 29 | if (rule.ruletype.equals("message")){ 30 | def tenantHostname = message.getProperty("tenantHostname") 31 | //Check all messages for matches 32 | def matchingMsgs = [] 33 | new JsonSlurper().parseText(message.getProperty("cacheAlertMplResponse")).d.results.each { msg -> 34 | if (rule.state != "ALL" && msg.Status.toLowerCase() != rule.state.toLowerCase()){ return } 35 | if (!isWildcardMatch(rule.artifact_id, msg.IntegrationFlowName)){ return } 36 | if (!isWildcardMatch(rule.sender, msg.Sender)){ return } 37 | if (!isWildcardMatch(rule.receiver, msg.Receiver)){ return } 38 | matchingMsgs.push([id:msg.MessageGuid,name:msg.IntegrationFlowName]) 39 | } 40 | if (matchingMsgs.size() > 0) { 41 | def mailText = "Dear operator(s),

during the alert check for message between ${message.getProperty("alertLastRunBeginDate")}(UTC) and ${message.getProperty("alertLastRunDateNew")}(UTC) there was a problem found in the interface \"${rule.artifact_id}\".

The matching alert rule is: ${rule.name}
The user alert text is: ${rule.alert_receiver_body}

The following ${matchingMsgs.size()} messages are affected:
    " 42 | matchingMsgs.each { msg -> 43 | mailText += "
  • ${msg.id} (Iflow-ID: ${msg.name})
  • " 44 | } 45 | mailText += "
" 46 | rule.put("mailtext",mailText) 47 | alertMails.add(rule) 48 | } 49 | } else if (rule.ruletype.equals("certificate")){ 50 | def matchingCerts = [] 51 | new JsonSlurper().parseText(message.getProperty("cacheAlertCertResponse")).d.results.each { cert -> 52 | if (rule.certificate_id != null && !rule.certificate_id.equals("")){ 53 | //Cert id is given, so check name first 54 | def regPattern = rule.certificate_id.replace("*", ".*?") 55 | if (!cert.Alias.matches(regPattern)){ 56 | return 57 | } 58 | } 59 | //Calculate valid until date 60 | def m = cert.ValidNotAfter =~ /\/Date\((\d+)\)\//; 61 | def ts = Long.valueOf(m[0][1]) 62 | def validUntil = new Date(ts) 63 | 64 | //Calculate alert date 65 | def alertDate = new Date() 66 | use (TimeCategory){ 67 | alertDate = alertDate + rule.warn_days_before.days 68 | } 69 | if (alertDate < validUntil){ 70 | return 71 | } 72 | matchingCerts.push([id:cert.Alias,valid:validUntil.toString()]) 73 | } 74 | if (matchingCerts.size() > 0) { 75 | def mailText = "Dear operator(s),

during the alert checks at ${message.getProperty("alertLastRunDateNew")}(UTC) there was a problem found with the certificate cache.

The matching alert rule is: ${rule.name}
The user alert text is: ${rule.alert_receiver_body}

The following ${matchingCerts.size()} certificates are running out of validity:
    " 76 | matchingCerts.each { cert -> 77 | mailText += "
  • ${cert.id} (Valid until: ${cert.valid})
  • " 78 | } 79 | mailText += "
" 80 | rule.put("mailtext",mailText) 81 | alertMails.add(rule) 82 | } 83 | } 84 | } 85 | } 86 | message.setProperty("numAlertMails", alertMails.size()) 87 | def alertMailsJson = JsonOutput.toJson(alertMails) 88 | message.setBody("{ \"mails\":"+alertMailsJson+" }") 89 | return message 90 | } 91 | 92 | def boolean isWildcardMatch(def rule, def msg){ 93 | if (rule == null || rule.equals("") || rule.equals("*")) //if rule is null/empty it isn't handled as filter and accepts every msg state 94 | return true 95 | if (msg == null || msg.equals("null")) //if msg value is null/empty, but rule is is filled, it can't match 96 | return false 97 | if (!rule.contains("*")){ //if rule as no wildcard we can match directly 98 | return rule == msg 99 | } else { //if rule contains wildcars we have to evaluate them 100 | def regPattern = rule.replace("*", ".*?") 101 | return msg.matches(regPattern) 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/alertCalculateQuery.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | import groovy.time.TimeCategory; 22 | import java.security.MessageDigest; 23 | 24 | def Message processData(Message message) { 25 | 26 | //Calculate query 27 | def body = message.getBody(java.lang.String) as String 28 | 29 | def endDate = new Date() 30 | def fEndDate = endDate.format("yyyy-MM-dd'T'HH:mm:ss") 31 | message.setProperty("alertLastRunDateNew", fEndDate) 32 | 33 | def queryStr = "" 34 | if (body.length() == 19){ 35 | message.setProperty("alertLastRunBeginDate", body) 36 | queryStr = "\$filter=LogStart ge datetime'${body}' and LogStart le datetime'${fEndDate}'" 37 | } else { 38 | def startDate = new Date() 39 | use (TimeCategory){ 40 | startDate = startDate - 1.hours 41 | } 42 | def fStartDate = startDate.format("yyyy-MM-dd'T'HH:mm:ss") 43 | message.setProperty("alertLastRunBeginDate", fStartDate) 44 | queryStr = "\$filter=LogStart ge datetime'${fStartDate}' and LogStart le datetime'${fEndDate}'" 45 | } 46 | message.setProperty("alertQueryMpl", queryStr) 47 | message.setHeader("Accept", "application/json") 48 | 49 | return message; 50 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/alertCreateAlertConfig.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | def body = message.getBody(java.lang.String) as String 25 | def alertJson = new JsonSlurper().parseText(body) 26 | 27 | message.setProperty("numAlertRules", alertJson.rules.size()) 28 | message.setProperty("alertConfig", JsonOutput.toJson(alertJson)) 29 | message.setBody("") 30 | 31 | return message; 32 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/artifactsParseDesigntimeArtifacts.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | def body = message.getBody(java.lang.String) as String 25 | def json = new JsonSlurper().parseText(body) 26 | def artifacts = message.getProperties().get("artifactList") 27 | json.d.results.each{ 28 | if (artifacts.containsKey(it.Name)){ 29 | artifacts[it.Name].ExistsDesigntime = true 30 | artifacts[it.Name].VersionDesigntime = it.Version 31 | artifacts[it.Name].DesigntimePackage = message.getProperties().get("packageDisplaynameList")[0] 32 | } else { 33 | artifacts[it.Name]= [ 34 | Id:it.Name, 35 | Name:it.DisplayName, 36 | DesigntimePackage:message.getProperties().get("packageDisplaynameList")[0], 37 | VersionRuntime:"", 38 | VersionDesigntime:it.Version, 39 | Type:(it.Type=="IFlow"?"INTEGRATION_FLOW":(it.Type=="ValueMapping"?"VALUE_MAPPING":it.Type)), 40 | ExistsRuntime:false, 41 | ExistsDesigntime:true 42 | ] 43 | } 44 | } 45 | message.setProperty("artifactList", artifacts) 46 | 47 | //Remove package from lookup list 48 | def packages = message.getProperties().get("packageNameList").reverse() as Stack 49 | packages.pop() 50 | packages = packages.reverse() as Stack 51 | message.setProperty("packageNameList", packages) 52 | def packagesDisplay = message.getProperties().get("packageDisplaynameList").reverse() as Stack 53 | packagesDisplay.pop() 54 | packagesDisplay = packagesDisplay.reverse() as Stack 55 | message.setProperty("packageDisplaynameList", packagesDisplay) 56 | 57 | return message; 58 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/artifactsParseDesigntimePackages.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | def body = message.getBody(java.lang.String) as String 25 | def json = new JsonSlurper().parseText(body) 26 | def packageNames = [] 27 | def packageDisplaynames = [] 28 | json.d.results.each{ 29 | packageNames.push(it.TechnicalName) 30 | packageDisplaynames.push(it.DisplayName) 31 | } 32 | message.setProperty("packageNameList", packageNames) 33 | message.setProperty("packageDisplaynameList", packageDisplaynames) 34 | return message; 35 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/artifactsParseRuntimeArtifacts.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | def body = message.getBody(java.lang.String) as String 25 | def json = new JsonSlurper().parseText(body) 26 | def artifacts = [:] 27 | json.d.results.each{ 28 | artifacts[it.Id]= [ 29 | Id:it.Id, 30 | Name:it.Name, 31 | DesigntimePackage:"", 32 | VersionRuntime:it.Version, 33 | VersionDesigntime:"", 34 | Type:it.Type, 35 | ExistsRuntime:true, 36 | ExistsDesigntime:false 37 | ] 38 | } 39 | message.setProperty("artifactList", artifacts) 40 | return message; 41 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/authExtractRoles.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | //Handle roles 25 | def body = message.getBody(java.lang.String) as String; 26 | def jsonSlurper = new JsonSlurper() 27 | def roleJson = jsonSlurper.parseText(body) 28 | def roleList = [] 29 | if (message.getProperties().get("userRoles") != null){ 30 | roleList = message.getProperties().get("userRoles"); 31 | } 32 | roleJson.roles.each{ 33 | roleList.push(it.name) 34 | } 35 | message.setProperty("userRoles", roleList); 36 | 37 | //Handle groups (if in role by group loop) 38 | if (message.getProperties().get("userGroups") != null){ 39 | def groupList = message.getProperties().get("userGroups"); 40 | def group = "" 41 | if ((groupList.size() > 0)){ 42 | group = groupList.pop() 43 | } 44 | message.setHeader("nextGroup", group) 45 | message.setProperty("userGroups", groupList) 46 | } 47 | 48 | return message; 49 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/authGetBearerToken.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | //Store token 25 | def body = message.getBody(java.lang.String) as String 26 | def tokenResponse = new JsonSlurper().parseText(body) 27 | message.setProperty("accessToken", "${tokenResponse.access_token}"); 28 | 29 | return message; 30 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/authPrepareGroups.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | 22 | def Message processData(Message message) { 23 | 24 | def body = message.getBody(java.lang.String) as String; 25 | 26 | def jsonSlurper = new JsonSlurper() 27 | def groupJson = jsonSlurper.parseText(body) 28 | def groupList = [] 29 | groupJson.groups.each{ 30 | groupList.push(it.name) 31 | } 32 | 33 | def group = "" 34 | if ((groupList.size() > 0)){ 35 | group = groupList.pop() 36 | } 37 | message.setHeader("nextGroup", group) 38 | message.setProperty("userGroups", groupList) 39 | 40 | return message; 41 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/authValidate.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | def Message processData(Message message) { 21 | 22 | def callingUser = message.getHeaders().get('SapAuthenticatedUserName') 23 | def contextPath = message.getHeaders().get('CamelServletContextPath') 24 | def dashboardUrlBase = message.getProperties().get('dashboardUrlBase') 25 | def generalAccessRole = message.getProperties().get('roleNameGeneralAccess') 26 | def logAndFileAccessRole = message.getProperties().get('roleNameLogAndFileAccess') 27 | def rolePasswordAccess = message.getProperties().get('rolePasswordAccess') 28 | def shellAccessRole = message.getProperties().get('roleNameShellAccess') 29 | 30 | //Check for general access right 31 | if(!message.getProperties().get("userRoles").contains(generalAccessRole)){ 32 | throw new Exception("User ${callingUser} not authorized. Missing role: '${generalAccessRole}'.") 33 | } 34 | 35 | //If the request came via /download-path, check additional role 36 | if (contextPath.startsWith("${dashboardUrlBase}/view") && !message.getProperties().get("userRoles").contains(logAndFileAccessRole)){ 37 | throw new Exception("User ${callingUser} not authorized to download files. Missing role: '${logAndFileAccessRole}'.") 38 | } 39 | 40 | //If the request came via /securitymaterial-path, check additional role 41 | if (contextPath.startsWith("${dashboardUrlBase}/securitymaterial") && !message.getProperties().get("userRoles").contains(rolePasswordAccess)){ 42 | throw new Exception("User ${callingUser} not authorized to read security material. Missing role: '${rolePasswordAccess}'.") 43 | } 44 | 45 | //If the request came via /shell-path, check additional role 46 | if (contextPath.startsWith("${dashboardUrlBase}/shell") && !message.getProperties().get("userRoles").contains(shellAccessRole)){ 47 | throw new Exception("User ${callingUser} not authorized to execute shell commands. Missing role: '${shellAccessRole}'.") 48 | } 49 | 50 | return message; 51 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/createExceptionJson.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | import java.io.StringWriter; 22 | import java.io.PrintWriter; 23 | 24 | def Message processData(Message message) { 25 | 26 | def mapHdr = message.getHeaders() 27 | def mapProp = message.getProperties() 28 | 29 | def httpStatusCode = mapHdr.get("CamelHttpResponseCode"); 30 | if (httpStatusCode == null || httpStatusCode == 200){ 31 | httpStatusCode = 500; 32 | message.setHeader("CamelHttpResponseCode", httpStatusCode) 33 | } 34 | def ex = mapProp.get("CamelExceptionCaught") 35 | def exCaughtText = ex.getMessage() 36 | 37 | StringWriter sw = new StringWriter(); 38 | PrintWriter pw = new PrintWriter(sw); 39 | ex.printStackTrace(pw); 40 | def exCaughtStack = sw.toString(); 41 | 42 | def exception = [] 43 | exception.push(error:[ 44 | code:httpStatusCode, 45 | message:"There was an error. Please contact the dev team.", 46 | dogception:"https://httpstatusdogs.com/img/${httpStatusCode}.jpg", 47 | exception:[ 48 | text:exCaughtText, 49 | stacktrace:exCaughtStack 50 | ] 51 | ]) 52 | 53 | //Set response 54 | message.getHeaders().put("Content-Type", "application/json") 55 | def outJson = JsonOutput.toJson(exception) 56 | message.setBody(outJson); 57 | 58 | return message; 59 | } 60 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/diffGetIFlowPackageContent.groovy: -------------------------------------------------------------------------------- 1 | //internal 2 | import com.sap.gateway.ip.core.customdev.util.Message 3 | import groovy.json.JsonOutput 4 | import groovy.json.JsonSlurper 5 | import com.sap.it.api.ITApi; 6 | import com.sap.it.api.ITApiFactory; 7 | import com.sap.it.api.securestore.*; 8 | 9 | 10 | Message processData(Message message) { 11 | 12 | //Get url parameters 13 | def params = [:] 14 | (message.getHeaders().CamelHttpQuery =~ /(\w+)=?([^&]+)?/)[0..-1].each{ 15 | params[it[1]] = it[2] 16 | } 17 | 18 | //Init variables 19 | def result = [] 20 | def systems = [] 21 | 22 | //Prepare system list 23 | systems << [ //Add own system 24 | credentialName:message.getProperty("ownCredentials"), 25 | hostname:message.getProperty("ownHostname") 26 | ] 27 | def remotes = "${message.getProperty("remoteTenants")}".split(';') 28 | remotes.each{ remote -> 29 | def pts = remote.split('\\|') 30 | if (pts.size() == 2 && pts[0]?.trim() && pts[1]?.trim()){ 31 | systems << [ 32 | credentialName:pts[1].trim(), 33 | hostname:pts[0].trim() 34 | ] 35 | } 36 | } 37 | 38 | 39 | //Package mode 40 | if (params["mode"] == "packages"){ 41 | systems.each{ system -> 42 | result << [system:system.hostname,content:getDesigntimeContent(system)] 43 | } 44 | } else if (params["mode"] == "versions"){ 45 | 46 | //Setup system and environment 47 | def system = systems.find{it -> it.hostname == params['hostname']} 48 | system.credential = getUserCreds(system.credentialName) 49 | def versionUrlStr = "https://${params['hostname']}/itspaces/api/1.0/workspace/${params['pkgId']}/artifacts/${params['iflowId']}?versionhistory=true&webdav=REPORT" 50 | 51 | //Get X-CSRF-Token 52 | def versionUrl = versionUrlStr.toURL().openConnection() 53 | versionUrl.setRequestMethod("GET") 54 | versionUrl.setRequestProperty("Authorization", system.credential.basicAuth.toString()) 55 | versionUrl.setRequestProperty("X-CSRF-Token", "Fetch") 56 | def xsrfToken = versionUrl.getHeaderField("X-CSRF-Token") 57 | def cookies = [] 58 | for (int i = 0;; i++) { 59 | if (versionUrl.getHeaderFieldKey(i) == null && versionUrl.getHeaderField(i) == null) { 60 | break; 61 | } 62 | if ("Set-Cookie".equalsIgnoreCase(versionUrl.getHeaderFieldKey(i))) { 63 | cookies << versionUrl.getHeaderField(i).split(";")[0] 64 | } 65 | } 66 | 67 | //Get artifact history 68 | versionUrl = versionUrlStr.toURL().openConnection() 69 | versionUrl.setRequestMethod("PUT") 70 | versionUrl.setRequestProperty("Authorization", system.credential.basicAuth.toString()) 71 | versionUrl.setRequestProperty("X-CSRF-Token", xsrfToken) 72 | versionUrl.setRequestProperty("Cookie", cookies.join(';')) 73 | def br = new BufferedReader(new InputStreamReader(versionUrl.getInputStream())) 74 | StringBuilder sb = new StringBuilder() 75 | String line 76 | while ((line = br.readLine()) != null) { sb.append(line+"\n") } 77 | br.close() 78 | result = [versionList:new JsonSlurper().parseText(sb.toString())] 79 | } 80 | 81 | def body = JsonOutput.toJson([count:result.size(),result:result]) 82 | message.setBody(body) 83 | message.setHeader('Content-Type', 'application/json') 84 | return message 85 | } 86 | 87 | private getDesigntimeContent(def system){ 88 | //Setup credentials 89 | system.credential = getUserCreds(system.credentialName) 90 | 91 | //Download packages 92 | def pkgUrl = "https://${system.hostname}/itspaces/odata/1.0/workspace.svc/ContentEntities.ContentPackages?\$format=json" 93 | def pkgList = pkgUrl.toURL().getText([requestProperties:[Authorization:system.credential.basicAuth,"Accept":"application/json"]]) 94 | def pkgJson = new JsonSlurper().parseText(pkgList) 95 | def pkgs = [] 96 | pkgJson.d.results.each{ 97 | def pkgContentUrl = "https://${system.hostname}/itspaces/odata/1.0/workspace.svc/ContentEntities.ContentPackages('${it.TechnicalName}')/Artifacts?\$format=json" 98 | def pkgContentList = pkgContentUrl.toURL().getText([requestProperties:[Authorization:system.credential.basicAuth,"Accept":"application/json"]]) 99 | 100 | def iFlowList = [] 101 | def json = new JsonSlurper().parseText(pkgContentList) 102 | json.d.results.each{ iflow -> 103 | iFlowList << [id:iflow.Name,name:iflow.DisplayName,reg_id:iflow.reg_id] 104 | } 105 | pkgs << [id:it.TechnicalName,name:it.DisplayName,reg_id:it.reg_id,iFlows:iFlowList] 106 | } 107 | 108 | //Sort by package name 109 | pkgJson.sort{ a, b -> 110 | a.name <=> b.name 111 | } 112 | return pkgs 113 | } 114 | 115 | private getUserCreds(def credentialName){ 116 | def service = ITApiFactory.getApi(SecureStoreService.class, null) 117 | def credential = service.getUserCredential(credentialName) 118 | return [ 119 | username:credential.getUsername(), 120 | password:new String(credential.getPassword()), 121 | basicAuth:"Basic ${"${credential.getUsername()}:${new String(credential.getPassword())}".bytes.encodeBase64().toString()}" 122 | ] 123 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/downloadFile.groovy: -------------------------------------------------------------------------------- 1 | import com.sap.gateway.ip.core.customdev.util.Message 2 | import java.util.HashMap 3 | import java.text.SimpleDateFormat 4 | 5 | def Message processData(Message message) { 6 | 7 | def fPath = message.getProperties().get('filePath') as String 8 | if (!fPath.startsWith('/')){ 9 | fPath = "/${fPath}" 10 | } 11 | 12 | StringBuilder strBuilder = new StringBuilder() 13 | File file = new File(fPath) 14 | message.setBody(file.bytes) 15 | 16 | if (message.getHeaders().get('CamelHttpQuery') == "download"){ 17 | message.setHeader('Content-Disposition',"attachment; filename=${file.getName()}") 18 | } 19 | 20 | return message 21 | } 22 | 23 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/downloadFixHeaders.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | def Message processData(Message message) { 21 | def filePath = message.getHeaders().get("CamelHttpPath") 22 | message.setProperty("filePath", filePath) 23 | def contextPath = message.getHeaders().get("CamelServletContextPath") 24 | message.setHeader("CamelHttpPath",contextPath) 25 | if (contextPath == filePath || contextPath == "${filePath}/" || contextPath == "/${filePath}" || contextPath == "/${filePath}/"){ 26 | throw new Exception("Lost in integration... Invalid filepath: '${filePath}'") 27 | } 28 | return message; 29 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/loadEndpointList.groovy: -------------------------------------------------------------------------------- 1 | //internal 2 | import com.sap.gateway.ip.core.customdev.util.Message 3 | import groovy.json.JsonOutput 4 | import groovy.json.JsonSlurper 5 | import com.sap.it.api.ITApi; 6 | import com.sap.it.api.ITApiFactory; 7 | import com.sap.it.api.securestore.*; 8 | 9 | Message processData(Message message) { 10 | 11 | //Init variables 12 | def result = [] 13 | def systems = [] 14 | def hostname = message.getProperty("envHostname") 15 | def tenantId = message.getProperty("envTenantId") 16 | def username = message.getProperty("envUser") 17 | 18 | //Prepare system list 19 | systems << [ 20 | credentialName:username, 21 | hostname:hostname, 22 | credential: getUserCreds(username) 23 | ] 24 | 25 | systems.each{ system -> 26 | result << [system:system.hostname,endpoints:getEndpoints(system, tenantId)] 27 | } 28 | 29 | def body = JsonOutput.toJson([count:result.size(),result:result]) 30 | message.setBody(body) 31 | message.setHeader('Content-Type', 'application/json') 32 | return message 33 | } 34 | 35 | private getEndpoints(def system, def tenantId){ 36 | //Basic setup 37 | system.credential = getUserCreds(system.credentialName) 38 | def result = [:] 39 | 40 | //Get list of all deployed IFlows incl. internal ids 41 | def participantListCommandUrlStr = "https://${system.hostname}/itspaces/Operations/com.sap.it.op.srv.commands.dashboard.ParticipantListCommand?tenantId=${tenantId}" 42 | def artListStr = participantListCommandUrlStr.toURL().getText([requestProperties:[Authorization:system.credential.basicAuth,"Accept":"application/json"]]) 43 | def artList = new JsonSlurper().parseText(artListStr) 44 | 45 | artList.participantInformation.nodes.node.deployedArtifacts[0].each { node -> 46 | node.each { iFlow -> 47 | if (!result.any{ it.value.id == iFlow.id } && iFlow.linkedComponentType == "INTEGRATION_FLOW"){ 48 | 49 | //load iflows endpoints 50 | 51 | def integrationComponentDetailCommandUrlStr = "https://${system.hostname}/itspaces/Operations/com.sap.it.op.tmn.commands.dashboard.webui.IntegrationComponentDetailCommand?artifactId=${iFlow.id}" 52 | def artDetailsStr = integrationComponentDetailCommandUrlStr.toURL().getText([requestProperties:[Authorization:system.credential.basicAuth,"Accept":"application/json"]]) 53 | def artDetails = new JsonSlurper().parseText(artDetailsStr) 54 | 55 | def endpointsDetailed = [] 56 | artDetails.endpointInformation.each { ei -> 57 | def singleEndpointDetailsList = [] 58 | ei.endpointInstances.each{ einst -> 59 | def singleEndpointDetails = [:] 60 | singleEndpointDetails << [url:einst.endpointUrl] 61 | singleEndpointDetails << [type:einst.endpointCategory] 62 | singleEndpointDetailsList.push(singleEndpointDetails) 63 | } 64 | endpointsDetailed.push(singleEndpointDetailsList) 65 | } 66 | 67 | result << ["${iFlow.symbolicName}":[ 68 | id: iFlow.id, 69 | symbolicName: iFlow.symbolicName, 70 | name: iFlow.name, 71 | endpointsFlat: artDetails.endpoints, 72 | endpointsDetailed:endpointsDetailed 73 | ] 74 | ] 75 | } 76 | } 77 | } 78 | return result 79 | } 80 | 81 | private getUserCreds(def credentialName){ 82 | def service = ITApiFactory.getApi(SecureStoreService.class, null) 83 | def credential = service.getUserCredential(credentialName) 84 | return [ 85 | username:credential.getUsername(), 86 | password:new String(credential.getPassword()), 87 | basicAuth:"Basic ${"${credential.getUsername()}:${new String(credential.getPassword())}".bytes.encodeBase64().toString()}" 88 | ] 89 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/mplCalculateQuery.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | import groovy.time.TimeCategory; 22 | import java.security.MessageDigest; 23 | 24 | def Message processData(Message message) { 25 | 26 | //Calculate queries 27 | def queries = [] 28 | 0.upto(47, { i-> 29 | 30 | def startDate = new Date() 31 | use (TimeCategory){ 32 | startDate = startDate - i.hours 33 | } 34 | def fStartDate = "${startDate.format("yyyy-MM-dd'T'HH")}:00:00.000"; 35 | 36 | def endDate = new Date() 37 | def fEndDate = endDate.format("yyyy-MM-dd'T'HH:mm:ss.SSS") 38 | if (i != 0){ 39 | use (TimeCategory){ 40 | endDate = endDate - i.hours 41 | } 42 | fEndDate = "${endDate.format("yyyy-MM-dd'T'HH")}:59:59.999"; 43 | } 44 | def queryStr = "\$filter=LogStart ge datetime'${fStartDate}' and LogStart le datetime'${fEndDate}'" 45 | 46 | queries.push([ 47 | startDate:fStartDate, 48 | endDate:fEndDate, 49 | query:queryStr, 50 | hash:calculateMd5(queryStr), 51 | type:"HOURLY" 52 | ]) 53 | }) 54 | 55 | 56 | 0.upto(29, { i-> 57 | 58 | def startDate = new Date() 59 | use (TimeCategory){ 60 | startDate = startDate - i.days 61 | } 62 | def fStartDate = "${startDate.format("yyyy-MM-dd")}T00:00:00.000"; 63 | 64 | def endDate = new Date() 65 | def fEndDate = endDate.format("yyyy-MM-dd'T'HH:mm:ss.SSS") 66 | if (i != 0){ 67 | use (TimeCategory){ 68 | endDate = endDate - i.days 69 | } 70 | fEndDate = "${endDate.format("yyyy-MM-dd")}T23:59:59.999"; 71 | } 72 | def queryStr = "\$filter=LogStart ge datetime'${fStartDate}' and LogStart le datetime'${fEndDate}'" 73 | 74 | queries.push([ 75 | startDate:fStartDate, 76 | endDate:fEndDate, 77 | query:queryStr, 78 | hash:calculateMd5(queryStr), 79 | type:"DAILY" 80 | ]) 81 | }) 82 | 83 | message.setProperty("cacheMplQueries", queries) 84 | 85 | return message; 86 | } 87 | 88 | public String calculateMd5(String s){ 89 | return MessageDigest.getInstance("MD5").digest(s.bytes).encodeHex().toString(); 90 | } 91 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/mplSetupQuery.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | def Message processData(Message message) { 21 | 22 | //Setup query 23 | def queries = message.getProperties().get("cacheMplQueries") 24 | if (queries != null && queries.size() > 0){ 25 | def nextQuery = queries.pop() 26 | message.setProperty("cacheMplQueries",queries) 27 | message.setProperty("mplQuery",nextQuery) 28 | message.setProperty("mplCacheId",nextQuery.hash) 29 | } 30 | 31 | message.setHeader("Accept", "application/json"); 32 | 33 | return message; 34 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/mplStoreResults.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | def Message processData(Message message) { 21 | 22 | def msgCount = Integer.parseInt(message.getBody(java.lang.String) as String) 23 | def query = message.getProperties().get("mplQuery") 24 | 25 | //Add result to main count list 26 | query.count=msgCount 27 | def msgCountList = [] 28 | if (message.getProperties().get("msgCountList") != null){ 29 | msgCountList = message.getProperties().get("msgCountList") 30 | } 31 | msgCountList.push(query) 32 | message.setProperty("msgCountList", msgCountList) 33 | return message; 34 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/perfLogStart.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | def Message processData(Message message) { 21 | 22 | message.setProperty("perfLogStart", System.currentTimeMillis()) 23 | return message; 24 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/schedulerCalculateRuntimes.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message 19 | import groovy.json.JsonOutput 20 | import org.osgi.framework.FrameworkUtil 21 | import java.time.ZonedDateTime 22 | import org.quartz.CronScheduleBuilder 23 | import org.quartz.CronTrigger 24 | import org.quartz.TriggerBuilder 25 | import org.joda.time.DateTime 26 | 27 | import com.cronutils.model.definition.CronDefinitionBuilder 28 | import com.cronutils.model.definition.CronDefinition 29 | import com.cronutils.parser.CronParser 30 | import com.cronutils.descriptor.CronDescriptor 31 | import com.cronutils.model.CronType 32 | import com.cronutils.model.time.ExecutionTime 33 | 34 | Message processData(Message message) { 35 | 36 | def bundleContext = FrameworkUtil.getBundle(Class.forName("com.sap.gateway.ip.core.customdev.util.Message")).getBundleContext() 37 | 38 | def listIFlows = [] 39 | bundleContext.getBundles().each { 40 | def crons = getcronEntriesByBeansXml(it) 41 | if (crons.size() > 0){ 42 | listIFlows.push([ 43 | name:it.getSymbolicName(), 44 | crons:crons 45 | ]) 46 | } 47 | } 48 | 49 | def runs = [] 50 | listIFlows.each{ iflow -> 51 | iflow.crons.each{ cronItem -> 52 | def dtStart = DateTime.now().toDate() 53 | def dtEnd = DateTime.now().plusHours(24).toDate() 54 | CronTrigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(cronItem.cronInfo.cron)).build() 55 | def nextFire = trigger.getFireTimeAfter(dtStart) 56 | if (runs.any{ it.datetime == nextFire }){ 57 | runs.find{ it.datetime == nextFire }.interfaces << iflow.name 58 | } else { 59 | runs << [datetime:nextFire,interfaces:[iflow.name]] 60 | } 61 | while(nextFire && nextFire <= dtEnd){ 62 | nextFire = trigger.getFireTimeAfter(nextFire) 63 | if (runs.any{ it.datetime == nextFire }){ 64 | runs.find{ it.datetime == nextFire }.interfaces << iflow.name 65 | runs.find{ it.datetime == nextFire }.interfaces.sort() 66 | } else { 67 | runs << [datetime:nextFire,interfaces:[iflow.name]] 68 | } 69 | } 70 | } 71 | } 72 | runs.sort{ a, b -> 73 | a.datetime <=> b.datetime 74 | } 75 | 76 | def body = JsonOutput.toJson(byInterface:[count:listIFlows.size(),list:listIFlows],byRunDate:[count:runs.size(),runs:runs]) 77 | message.setBody(body) 78 | message.setHeader('Content-Type', 'application/json') 79 | 80 | return message 81 | } 82 | 83 | def getcronEntriesByBeansXml(bundle){ 84 | def cronEntries = [] 85 | def cronEntry = [:] 86 | 87 | bundle.findEntries("/OSGI-INF/blueprint/", "*.xml", false).each{ filePathBlueprint-> 88 | 89 | //Read beans.xml 90 | def beansXml = readTextFileToString(filePathBlueprint) 91 | 92 | //Parse beans.xml 93 | //blueprint/camel:camelContext/camel:route/camel:from 94 | if (beansXml.find("(?<=cron=)(.+?(?=&))") != null){ 95 | def beansXmlDoc = new XmlSlurper().parseText(beansXml) 96 | beansXmlDoc.'**'.findAll{ node -> node.name() == "from" && node.@uri.text() ==~ /.*?(?<=cron=)(.+?(?=&)).*?/ }.each{ fromRoute -> 97 | //Get cron statement 98 | def cron = fromRoute.@uri.text().find("(?<=cron=)(.+?(?=&))").replace("+"," ") 99 | 100 | //Get id and match it against external properties 101 | def id = fromRoute.@id.text().substring(0, fromRoute.@id.text().lastIndexOf("_")) 102 | def patternName = null 103 | def isExternalized = false 104 | bundle.findEntries("/src/main/resources/scenarioflows/integrationflow", "*.iflw", false).each{ filePathIflw-> 105 | if (!isExternalized){ 106 | def iflwXmlDoc = new XmlSlurper().parseText(readTextFileToString(filePathIflw)) 107 | def startEvent = iflwXmlDoc.'**'.find{ it.name() == "startEvent" && it.@id.text() == id } 108 | if (startEvent != null && startEvent.'**'.findAll{ it.name() == "property" && it.key.text() == "scheduleKey" }.size() > 0){ 109 | def timerConfig = startEvent.'**'.find{ it.name() == "property" && it.key.text() == "scheduleKey" }.value.text() 110 | isExternalized = timerConfig ==~ /\{\{(.+)\}\}/ 111 | if (isExternalized){ 112 | def matcher = timerConfig =~ /\{\{(.+)\}\}/ 113 | patternName = matcher[0][1] 114 | } 115 | } 116 | } 117 | } 118 | 119 | //Create description 120 | def cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ) 121 | def parser = new CronParser(cronDefinition) 122 | def cronObj = parser.parse(cron) 123 | def descriptor = CronDescriptor.instance(Locale.UK) 124 | def description = descriptor.describe(cronObj) 125 | if (description.length() > 1){ 126 | description = "${description.substring(0, 1).toUpperCase() + description.substring(1)}." 127 | } 128 | 129 | //Create next three runs/today's runs 130 | def fireNextThree = [] 131 | def dtStart = DateTime.now().toDate() 132 | CronTrigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(cron)).build() 133 | def nextFire = trigger.getFireTimeAfter(dtStart) 134 | fireNextThree << nextFire 135 | while(nextFire && fireNextThree.size() < 3){ 136 | nextFire = trigger.getFireTimeAfter(nextFire) 137 | fireNextThree << nextFire 138 | } 139 | 140 | cronEntries << [cronInfo: [id:id, cron:cron, cronHumanReadable:description, isExternalized:isExternalized, patternName:patternName, nextThreeFires:fireNextThree]] 141 | } 142 | } 143 | } 144 | return cronEntries 145 | } 146 | 147 | def readTextFileToString(URL file){ 148 | BufferedReader br = new BufferedReader(new InputStreamReader(file.openConnection().getInputStream())) 149 | def fileContent = "" 150 | while(br.ready()){ 151 | fileContent += br.readLine() 152 | } 153 | br.close() 154 | return fileContent 155 | } 156 | -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/secMatGetPasswords.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | The integration developer needs to create the method processData 3 | This method takes Message object of package com.sap.gateway.ip.core.customdev.util 4 | which includes helper methods useful for the content developer: 5 | The methods available are: 6 | public java.lang.Object getBody() 7 | public void setBody(java.lang.Object exchangeBody) 8 | public java.util.Map getHeaders() 9 | public void setHeaders(java.util.Map exchangeHeaders) 10 | public void setHeader(java.lang.String name, java.lang.Object value) 11 | public java.util.Map getProperties() 12 | public void setProperties(java.util.Map exchangeProperties) 13 | public void setProperty(java.lang.String name, java.lang.Object value) 14 | public java.util.List getSoapHeaders() 15 | public void setSoapHeaders(java.util.List soapHeaders) 16 | public void clearSoapHeaders() 17 | */ 18 | import com.sap.gateway.ip.core.customdev.util.Message; 19 | import java.util.HashMap; 20 | import groovy.json.*; 21 | import com.sap.it.api.ITApi; 22 | import com.sap.it.api.ITApiFactory; 23 | import com.sap.it.api.securestore.*; 24 | 25 | def Message processData(Message message) { 26 | 27 | def service = ITApiFactory.getApi(SecureStoreService.class, null) 28 | 29 | def body = message.getBody(java.lang.String) as String 30 | def json = new JsonSlurper().parseText(body) 31 | def keyList = [] 32 | json.d.results.each{ 33 | 34 | def credential = service.getUserCredential(it.Name) 35 | def pw = "" 36 | if (credential != null){ 37 | def pwTmp = credential.getPassword() 38 | if (pwTmp != null && pwTmp.size() > 0){ 39 | pw = new String(credential.getPassword()) 40 | } else { 41 | pw = "" 42 | } 43 | } 44 | 45 | keyList.push([ 46 | id:it.Name, 47 | user:it.User, 48 | password:pw, 49 | type:it.Kind 50 | ]) 51 | } 52 | message.getHeaders().put("Content-Type", "application/json") 53 | def outJson = JsonOutput.toJson(keyList) 54 | message.setBody(outJson) 55 | 56 | return message; 57 | } -------------------------------------------------------------------------------- /IFlow/Source/src/main/resources/script/shellExecuteCommand.groovy: -------------------------------------------------------------------------------- 1 | import com.sap.gateway.ip.core.customdev.util.Message 2 | import groovy.io.GroovyPrintStream 3 | import org.apache.karaf.shell.api.console.Session 4 | import org.apache.karaf.shell.api.console.SessionFactory 5 | import org.osgi.framework.BundleContext 6 | import org.osgi.framework.FrameworkUtil 7 | import groovy.json.* 8 | import org.fusesource.jansi.* 9 | 10 | Message processData(Message message) { 11 | 12 | def result = [] 13 | try { 14 | //Get command and build SessionFactory/Shell 15 | String command = message.getProperty("shellCommand") 16 | ByteArrayOutputStream out = new ByteArrayOutputStream() 17 | ByteArrayOutputStream err = new ByteArrayOutputStream() 18 | BundleContext context = FrameworkUtil.getBundle(Message.class).bundleContext 19 | SessionFactory sessionFactory = (SessionFactory) context.getService(context.getServiceReference(SessionFactory.class)) 20 | 21 | def hOut = new HtmlAnsiOutputStream(out) 22 | def hErr = new HtmlAnsiOutputStream(err) 23 | Session session = sessionFactory.create(new ByteArrayInputStream(), new GroovyPrintStream(hOut, true, "UTF-8"), new GroovyPrintStream(hErr, true, "UTF-8")) 24 | 25 | //Execute command and parse response 26 | session.execute(command) 27 | def cmdResult = out.toString() 28 | def errResult = err.toString() 29 | 30 | //Remove ANSI escapes codes which may be uncovered by Jansi from responses 31 | cmdResult = decolorizeString(cmdResult) 32 | errResult = decolorizeString(errResult) 33 | 34 | //Format the output 35 | cmdResult = cmdResult.replace("\t", "     ").replace("\r\n", "\n").replace("\n", "
").replace(" ", " ") 36 | errResult = ""+errResult.replace("\t", "     ").replace("\r\n", "\n").replace("\n", "
").replace(" ", " ")+"
" 37 | result = [ 38 | outStream: cmdResult, 39 | errStream: errResult 40 | ] 41 | session.close() 42 | } catch (Exception ex) { } 43 | 44 | //Build datatype and set JSON header 45 | def response = JsonOutput.toJson(result) 46 | message.setBody(response) 47 | message.setHeader('Content-Type', 'application/json') 48 | 49 | return message 50 | } 51 | 52 | private decolorizeString(String inStr){ 53 | return inStr.replaceAll("\\u001b\\[[^m]+?m",'') 54 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Raffael Herrmann 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RealCore's SAP CPI Dashboard 2 | This repository contains the "Realcore SAP CPI dashboard" which is an IFlow-based monitoring tool for SAP CPI built by [Raffael Herrmann](https://raffaelherrmann.de)/[RealCoreGroup](https://realcore.de). 3 | ![Realcore's SAP CPI dashboard - Overview](https://blogs.sap.com/wp-content/uploads/2019/08/Dashboard_Overview.png) 4 | 5 | ## Description and Installation 6 | You can find the "opener" article which describes the capabilities and main features of the dashboard in this SAP blog: https://blogs.sap.com/2019/08/19/advanced-monitoring-and-health-check-with-realcores-cpi-dashboard/ 7 | 8 | Detailed installation/setup instructions can be found in this SAP blog: 9 | https://blogs.sap.com/2019/08/22/how-to-install-and-configure-the-realcore-cpi-dashboard/ 10 | 11 | ## Collaboration 12 | Feel free to correct bugs/improve the dashboard/add new features. I would be happy to see your MR (merge requests) incoming. 13 | -------------------------------------------------------------------------------- /Webfrontend/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2019 Blackrock Digital LLC & Raffael Herrmann for Realcore Group 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Webfrontend/build.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$mode = "dist" #Default mode is dist, if not given as start parameter 3 | ) 4 | 5 | function Resolve-Css-References([String] $contents, [ref][int] $pNumRef, $parentPath, $resolveWeb){ 6 | Write-Host "Resolving ($parentPath)" 7 | $regex = [regex] 'url\([''"]?([^)]+?)[''"]?\)' 8 | $allmatches = $regex.Matches($contents); 9 | $allmatches | ForEach-Object { 10 | $url=$_.groups[1].Value 11 | if (!$url.StartsWith("data:")){ 12 | $pNumRef.Value++ 13 | Write-Host $_.groups[0].Value 14 | Write-Host $_.groups[1].Value 15 | $urlContent="" 16 | if ($url.StartsWith("://") -or $url.StartsWith("http")){ 17 | #content is online, get it via http-call 18 | if ($resolveWeb -eq 1){ 19 | $urlContent=(Invoke-webrequest -URI $url).Content 20 | } 21 | } else { 22 | if ($url.StartsWith("..") -or $url.StartsWith("./") -or $url.StartsWith("/")){ 23 | $fPath="$($parentPath.Substring(0, $parentPath.LastIndexOf("/")))/$url" 24 | if ($fPath.Contains('#')){ 25 | $fPath=$fPath.Substring(0,$fPath.IndexOf('#')) 26 | } 27 | if ($fPath.Contains('?')){ 28 | $fPath=$fPath.Substring(0,$fPath.IndexOf('?')) 29 | } 30 | Write-Host "Reading $fPath" 31 | $urlContent=Get-Content -Encoding Byte -Path $fPath 32 | } else { 33 | if ($url.Contains('#')){ 34 | $url=$url.Substring(0,$url.IndexOf('#')) 35 | } 36 | if ($url.Contains('?')){ 37 | $url=$url.Substring(0,$url.IndexOf('?')) 38 | } 39 | Write-Host "Reading $url" 40 | $urlContent=Get-Content -Encoding Byte -Path $url 41 | } 42 | } 43 | if ($urlContent -ne ""){ 44 | $token="url(data:application/octet-stream;base64,$([Convert]::ToBase64String($urlContent)))" 45 | $contents=$contents.Replace($($_.groups[0].Value),$token) 46 | } 47 | } 48 | } 49 | 50 | return $contents 51 | } 52 | 53 | function ConvertTo-Base64 54 | { 55 | param 56 | ( 57 | [string] $SourceFilePath, 58 | [string] $TargetFilePath 59 | ) 60 | 61 | $SourceFilePath = Resolve-PathSafe $SourceFilePath 62 | $TargetFilePath = Resolve-PathSafe $TargetFilePath 63 | 64 | $bufferSize = 9000 # should be a multiplier of 3 65 | $buffer = New-Object byte[] $bufferSize 66 | 67 | $reader = [System.IO.File]::OpenRead($SourceFilePath) 68 | $writer = [System.IO.File]::CreateText($TargetFilePath) 69 | 70 | $bytesRead = 0 71 | do 72 | { 73 | $bytesRead = $reader.Read($buffer, 0, $bufferSize); 74 | $writer.Write([Convert]::ToBase64String($buffer, 0, $bytesRead)); 75 | } while ($bytesRead -eq $bufferSize); 76 | 77 | $reader.Dispose() 78 | $writer.Dispose() 79 | } 80 | 81 | function Resolve-PathSafe 82 | { 83 | param 84 | ( 85 | [string] $Path 86 | ) 87 | 88 | $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path) 89 | } 90 | 91 | function Format-FileSize([int]$size) { 92 | if ($size -gt 1TB) {[string]::Format("{0:0.00} TB", $size / 1TB)} 93 | elseif ($size -gt 1GB) {[string]::Format("{0:0.00} GB", $size / 1GB)} 94 | elseif ($size -gt 1MB) {[string]::Format("{0:0.00} MB", $size / 1MB)} 95 | elseif ($size -gt 1KB) {[string]::Format("{0:0.00} kB", $size / 1KB)} 96 | elseif ($size -gt 0) {[string]::Format("{0:0.00} B", $size)} 97 | else {""} 98 | } 99 | 100 | cls 101 | Write-Host "Running in '${mode}'-mode." 102 | 103 | $resolveWeb=0 104 | $inputfile="index.html" 105 | $delStaticContFile="../IFlow/Source/src/main/resources/script/deliverStaticContent.groovy" 106 | $delStaticContFileWorkingCopy="./dist/deliverStaticContent.groovy" 107 | $content=Get-Content -Path $inputfile 108 | $reg = '<(?script|link)\s+(src|href)="(?[^"]+)".+?((rel|type)="(?[^"]+)")?(|>)' 109 | $numRef=0 110 | 111 | gc $inputfile | Select-String -Pattern $reg -AllMatches | ForEach-Object { 112 | #Write-Host "$($_.matches.groups[6].value)" 113 | #Full match $($_.matches.groups[0].value) 114 | $numRef++ 115 | $url=$($_.matches.groups[6].value) 116 | $inlineContent="" 117 | if ($url.StartsWith("://") -or $url.StartsWith("http")){ 118 | #content is online, get it via http-call 119 | if ($resolveWeb -eq 1){ 120 | Write-Host "Reading from web $url" 121 | $inlineContent=(Invoke-webrequest -URI $url).Content 122 | } 123 | } else { 124 | $inlineContent=Get-Content -Path $url 125 | } 126 | $token="" 127 | if ($($_.matches.groups[5].value) -eq "link"){ 128 | #css 129 | $inlineContent=Resolve-Css-References($inlineContent)([ref] $numRef)($url)($resolveWeb) 130 | $token="" 131 | } else { 132 | #js 133 | if ($url -ne "../../status.json" -and $url -ne "../../securitymaterial.json" -and $url -ne "../../artifacts.json" -and $url -ne "../../alertrules.json" -and $url -ne "../../scheduler.json" -and $url -ne "../../iFlowPackageContent.json" -and $url -ne "../../diffResult.json" -and $url -ne "status.json" -and $url -ne "securitymaterial.json" -and $url -ne "artifacts.json" -and $url -ne "alertrules.json" -and $url -ne "scheduler.json" -and $url -ne "iFlowPackageContent.json" -and $url -ne "diffResult.json" -and $url -ne "versionHistory.json" -and $url -ne "endpoints.json") { 134 | Write-Host "Resolving ($url)" 135 | $token="" 136 | } else { 137 | $token="" 138 | } 139 | } 140 | 141 | if ($inlineContent -ne ""){ 142 | $content=$content.Replace($($_.matches.groups[0].value),$token) 143 | } 144 | } 145 | Write-Host "Writing cleaned and merged HTML file to disk." 146 | $targetfile="./dist/index.html" 147 | $content | out-file $targetfile 148 | Write-Host "=======================================" 149 | Write-Host "Successfully packed '$inputfile' to '$targetfile'. Size of target file: $(Format-FileSize((Get-Item $targetfile).length)). Resolved $numRef references." 150 | Write-Host "=======================================" 151 | Write-Host "Converting index.html to base64-file." 152 | ConvertTo-Base64($targetfile)("./dist/index_base64.txt") 153 | Write-Host "Created Base64 file for CPI import." 154 | 155 | $b64 = get-content -Path "./dist/index_base64.txt" | Out-String 156 | $b64Arr = $b64.ToCharArray() 157 | $out = "def staticContent = " 158 | $blockSize=65000 159 | $factor=$b64Arr.Length/$blockSize 160 | for ($i=0; $i -lt $factor; $i++) { 161 | $start=$i*$blockSize 162 | $end=($i+1)*$blockSize-1 163 | $line=$(-join $b64Arr[$start..$end]) 164 | $line=$line.Replace("`r`n","").Trim() 165 | $out+= "`"$($line)`" +`r`n" 166 | Write-Progress -Activity "Splitting base64 content" -PercentComplete ($i/$factor*100) 167 | } 168 | $start=$factor*$blockSize 169 | $out+= "`"$(-join $b64Arr[$start..$b64Arr.Length])`"" 170 | $out | out-file "./dist/staticContent.groovy" 171 | Write-Host "=======================================" 172 | Write-Host "Cleaning up dist-folder." 173 | Remove-Item $targetfile 174 | Remove-Item "./dist/index_base64.txt" 175 | 176 | if ($mode -eq "integral"){ 177 | Write-Host "Entering integral/full mode." 178 | Copy-Item $delStaticContFile -Destination $delStaticContFileWorkingCopy 179 | $search = "(?ms)//BEGIN_STATIC_CONTENT.*//END_STATIC_CONTENT" 180 | $value = (Get-Content "./dist/staticContent.groovy" -Raw) 181 | $replace = "//BEGIN_STATIC_CONTENT`r`n`t$value`r`n`t//END_STATIC_CONTENT" 182 | $content=((Get-Content $delStaticContFileWorkingCopy -Raw) -replace $search, $replace) 183 | Set-Content $delStaticContFile $content 184 | Remove-Item $delStaticContFileWorkingCopy 185 | } 186 | 187 | -------------------------------------------------------------------------------- /Webfrontend/build_dist.bat: -------------------------------------------------------------------------------- 1 | Powershell.exe -executionpolicy remotesigned -File build.ps1 2 | pause -------------------------------------------------------------------------------- /Webfrontend/build_full.bat: -------------------------------------------------------------------------------- 1 | Powershell.exe -executionpolicy remotesigned -File build.ps1 -mode integral 2 | pause -------------------------------------------------------------------------------- /Webfrontend/dist/staticContent.groovy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebude/cpi-dashboard/269c701af1ad3acecd3b09a66c80fe8a3d52caed/Webfrontend/dist/staticContent.groovy -------------------------------------------------------------------------------- /Webfrontend/js/sb-admin-2.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - SB Admin 2 v4.0.6 (https://startbootstrap.com/template-overviews/sb-admin-2) 3 | * Copyright 2013-2019 Start Bootstrap 4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE) 5 | */ 6 | 7 | !function(t){"use strict";t("#sidebarToggle, #sidebarToggleTop").on("click",function(o){t("body").toggleClass("sidebar-toggled"),t(".sidebar").toggleClass("toggled"),t(".sidebar").hasClass("toggled")&&t(".sidebar .collapse").collapse("hide")}),t(window).resize(function(){t(window).width()<768&&t(".sidebar .collapse").collapse("hide")}),t("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(o){if(768 (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | @charset "UTF-8";.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .search,.bootstrap-table .fixed-table-toolbar .columns{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table th,.bootstrap-table .fixed-table-container .table td{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,0.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:bold;display:inline-block;min-width:30%;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table input[type=radio],.bootstrap-table .fixed-table-container .table input[type=checkbox]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:none;justify-content:center;position:absolute;bottom:0;width:100%;z-index:1000}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{font-size:2rem;margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:LOADING;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination-detail,.bootstrap-table .fixed-table-pagination>.pagination{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination a{padding:6px 12px;line-height:1.428571429}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes LOADING{0%{opacity:0}50%{opacity:1}to{opacity:0}} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/cell-input/bootstrap-table-cell-input.css: -------------------------------------------------------------------------------- 1 | .table-cell-input { 2 | display: block !important; 3 | padding: 5px !important; 4 | margin: 0 !important; 5 | border: 0 !important; 6 | width: 100% !important; 7 | box-sizing: border-box !important; 8 | -moz-box-sizing: border-box !important; 9 | border-radius: 0 !important; 10 | line-height: 1 !important; 11 | white-space: nowrap; 12 | } 13 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/cell-input/bootstrap-table-cell-input.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .table-cell-input{display:block!important;padding:5px!important;margin:0!important;border:0!important;width:100%!important;box-sizing:border-box!important;-moz-box-sizing:border-box!important;border-radius:0!important;line-height:1!important;white-space:nowrap} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: Dennis Hernández 3 | * @webSite: http://djhvscf.github.io/Blog 4 | * @version: v2.1.1 5 | */ 6 | 7 | .no-filter-control { 8 | height: 34px; 9 | } 10 | 11 | .filter-control { 12 | margin: 0 2px 2px 2px; 13 | } 14 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.css: -------------------------------------------------------------------------------- 1 | .fixed-table-header-columns, 2 | .fixed-table-body-columns { 3 | position: absolute; 4 | background-color: #fff; 5 | box-sizing: border-box; 6 | overflow: hidden; 7 | z-index: 1; 8 | } 9 | 10 | .fixed-table-header-columns { 11 | z-index: 2; 12 | } 13 | 14 | .fixed-table-header-columns .table, 15 | .fixed-table-body-columns .table { 16 | border-right: 1px solid #ddd; 17 | } 18 | 19 | .fixed-table-header-columns .table.table-no-bordered, 20 | .fixed-table-body-columns .table.table-no-bordered { 21 | border-right: 1px solid transparent; 22 | } 23 | 24 | .fixed-table-body-columns table { 25 | position: absolute; 26 | animation: none; 27 | } 28 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .fixed-table-header-columns,.fixed-table-body-columns{position:absolute;background-color:#fff;box-sizing:border-box;overflow:hidden;z-index:1}.fixed-table-header-columns{z-index:2}.fixed-table-header-columns .table,.fixed-table-body-columns .table{border-right:1px solid #ddd}.fixed-table-header-columns .table.table-no-bordered,.fixed-table-body-columns .table.table-no-bordered{border-right:1px solid transparent}.fixed-table-body-columns table{position:absolute;animation:none} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.css: -------------------------------------------------------------------------------- 1 | .bootstrap-table .table > tbody > tr.groupBy { 2 | cursor: pointer; 3 | } 4 | 5 | .bootstrap-table .table > tbody > tr.hidden + tr.detail-view { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .bootstrap-table .table>tbody>tr.groupBy{cursor:pointer}.bootstrap-table .table>tbody>tr.hidden+tr.detail-view{display:none} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = global || self, factory(global.jQuery)); 5 | }(this, function ($) { 'use strict'; 6 | 7 | $ = $ && $.hasOwnProperty('default') ? $['default'] : $; 8 | 9 | function _classCallCheck(instance, Constructor) { 10 | if (!(instance instanceof Constructor)) { 11 | throw new TypeError("Cannot call a class as a function"); 12 | } 13 | } 14 | 15 | function _defineProperties(target, props) { 16 | for (var i = 0; i < props.length; i++) { 17 | var descriptor = props[i]; 18 | descriptor.enumerable = descriptor.enumerable || false; 19 | descriptor.configurable = true; 20 | if ("value" in descriptor) descriptor.writable = true; 21 | Object.defineProperty(target, descriptor.key, descriptor); 22 | } 23 | } 24 | 25 | function _createClass(Constructor, protoProps, staticProps) { 26 | if (protoProps) _defineProperties(Constructor.prototype, protoProps); 27 | if (staticProps) _defineProperties(Constructor, staticProps); 28 | return Constructor; 29 | } 30 | 31 | function _inherits(subClass, superClass) { 32 | if (typeof superClass !== "function" && superClass !== null) { 33 | throw new TypeError("Super expression must either be null or a function"); 34 | } 35 | 36 | subClass.prototype = Object.create(superClass && superClass.prototype, { 37 | constructor: { 38 | value: subClass, 39 | writable: true, 40 | configurable: true 41 | } 42 | }); 43 | if (superClass) _setPrototypeOf(subClass, superClass); 44 | } 45 | 46 | function _getPrototypeOf(o) { 47 | _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { 48 | return o.__proto__ || Object.getPrototypeOf(o); 49 | }; 50 | return _getPrototypeOf(o); 51 | } 52 | 53 | function _setPrototypeOf(o, p) { 54 | _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 55 | o.__proto__ = p; 56 | return o; 57 | }; 58 | 59 | return _setPrototypeOf(o, p); 60 | } 61 | 62 | function _assertThisInitialized(self) { 63 | if (self === void 0) { 64 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 65 | } 66 | 67 | return self; 68 | } 69 | 70 | function _possibleConstructorReturn(self, call) { 71 | if (call && (typeof call === "object" || typeof call === "function")) { 72 | return call; 73 | } 74 | 75 | return _assertThisInitialized(self); 76 | } 77 | 78 | /** 79 | * @author: Jewway 80 | * @update zhixin wen 81 | */ 82 | 83 | $.fn.bootstrapTable.methods.push('changeTitle'); 84 | $.fn.bootstrapTable.methods.push('changeLocale'); 85 | 86 | $.BootstrapTable = 87 | /*#__PURE__*/ 88 | function (_$$BootstrapTable) { 89 | _inherits(_class, _$$BootstrapTable); 90 | 91 | function _class() { 92 | _classCallCheck(this, _class); 93 | 94 | return _possibleConstructorReturn(this, _getPrototypeOf(_class).apply(this, arguments)); 95 | } 96 | 97 | _createClass(_class, [{ 98 | key: "changeTitle", 99 | value: function changeTitle(locale) { 100 | $.each(this.options.columns, function (idx, columnList) { 101 | $.each(columnList, function (idx, column) { 102 | if (column.field) { 103 | column.title = locale[column.field]; 104 | } 105 | }); 106 | }); 107 | this.initHeader(); 108 | this.initBody(); 109 | this.initToolbar(); 110 | } 111 | }, { 112 | key: "changeLocale", 113 | value: function changeLocale(localeId) { 114 | this.options.locale = localeId; 115 | this.initLocale(); 116 | this.initPagination(); 117 | this.initBody(); 118 | this.initToolbar(); 119 | } 120 | }]); 121 | 122 | return _class; 123 | }($.BootstrapTable); 124 | 125 | })); 126 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/i18n-enhance/bootstrap-table-i18n-enhance.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t=t||self).jQuery)}(this,(function(t){"use strict";function e(t,e){for(var n=0;n .pagination ul.pagination, 2 | .bootstrap-table.bootstrap3 .fixed-table-pagination > .pagination .page-jump-to { 3 | display: inline; 4 | } 5 | 6 | .bootstrap-table .fixed-table-pagination > .pagination .page-jump-to input { 7 | width: 70px; 8 | margin-left: 5px; 9 | text-align: center; 10 | float: left; 11 | } 12 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .bootstrap-table.bootstrap3 .fixed-table-pagination>.pagination ul.pagination,.bootstrap-table.bootstrap3 .fixed-table-pagination>.pagination .page-jump-to{display:inline}.bootstrap-table .fixed-table-pagination>.pagination .page-jump-to input{width:70px;margin-left:5px;text-align:center;float:left} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.css: -------------------------------------------------------------------------------- 1 | .reorder_rows_onDragClass td { 2 | background-color: #eee; 3 | -webkit-box-shadow: 11px 5px 12px 2px #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 4 | -webkit-box-shadow: 6px 3px 5px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 5 | -moz-box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 6 | -box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 7 | } 8 | 9 | .reorder_rows_onDragClass td:last-child { 10 | -webkit-box-shadow: 8px 7px 12px 0 #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 11 | -webkit-box-shadow: 1px 8px 6px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset; 12 | -moz-box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset; 13 | -box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset; 14 | } 15 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .reorder_rows_onDragClass td{background-color:#eee;-webkit-box-shadow:11px 5px 12px 2px #333,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-webkit-box-shadow:6px 3px 5px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-moz-box-shadow:6px 4px 5px 1px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-box-shadow:6px 4px 5px 1px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset}.reorder_rows_onDragClass td:last-child{-webkit-box-shadow:8px 7px 12px 0 #333,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-webkit-box-shadow:1px 8px 6px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-moz-box-shadow:0 9px 4px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset,-1px 0 0 #ccc inset;-box-shadow:0 9px 4px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset,-1px 0 0 #ccc inset} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/resizable/bootstrap-table-resizable.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t,e){return t(e={exports:{}},e.exports),e.exports}var r,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof e==f&&e)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,y=Object.getOwnPropertyDescriptor,h={f:y&&!p.call({1:2},1)?function(t){var e=y(this,t);return!!e&&e.enumerable}:p},g=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},d={}.toString,b=function(t){return d.call(t).slice(8,-1)},v="".split,m=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==b(t)?v.call(t,""):Object(t)}:Object,w=function(t){return m(function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},j=function(t,e){if(!O(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!O(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!O(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!O(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")},S={}.hasOwnProperty,A=function(t,e){return S.call(t,e)},P=a.document,T=O(P)&&O(P.createElement),x=!s&&!l((function(){return 7!=Object.defineProperty((t="div",T?P.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),E=Object.getOwnPropertyDescriptor,M={f:s?E:function(t,e){if(t=w(t),e=j(e,!0),x)try{return E(t,e)}catch(t){}if(A(t,e))return g(!h.f.call(t,e),t[e])}},_=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},z=Object.defineProperty,C={f:s?z:function(t,e,n){if(_(t),e=j(e,!0),_(n),x)try{return z(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},V=s?function(t,e,n){return C.f(t,e,g(1,n))}:function(t,e,n){return t[e]=n,t},k=function(t,e){try{V(a,t,e)}catch(n){a[t]=e}return e},I=n((function(t){var e=a["__core-js_shared__"]||k("__core-js_shared__",{});(t.exports=function(t,n){return e[t]||(e[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),F=I("native-function-to-string",Function.toString),L=a.WeakMap,N="function"==typeof L&&/native code/.test(F.call(L)),q=0,$=Math.random(),B=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++q+$).toString(36)},D=I("keys"),G={},W=a.WeakMap;if(N){var K=new W,Q=K.get,R=K.has,Y=K.set;r=function(t,e){return Y.call(K,t,e),e},o=function(t){return Q.call(K,t)||{}},i=function(t){return R.call(K,t)}}else{var H=D[u="state"]||(D[u]=B(u));G[H]=!0,r=function(t,e){return V(t,H,e),e},o=function(t){return A(t,H)?t[H]:{}},i=function(t){return A(t,H)}}var J,U={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!O(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},X=n((function(t){var e=U.get,n=U.enforce,r=String(F).split("toString");I("inspectSource",(function(t){return F.call(t)})),(t.exports=function(t,e,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof e||A(o,"name")||V(o,"name",e),n(o).source=r.join("string"==typeof e?e:"")),t!==a?(u?!c&&t[e]&&(f=!0):delete t[e],f?t[e]=o:V(t,e,o)):f?t[e]=o:k(e,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||F.call(this)}))})),Z=a,tt=function(t){return"function"==typeof t?t:void 0},et=Math.ceil,nt=Math.floor,rt=function(t){return isNaN(t=+t)?0:(t>0?nt:et)(t)},ot=Math.min,it=function(t){return t>0?ot(rt(t),9007199254740991):0},ut=Math.max,ft=Math.min,ct=function(t,e){var n=rt(t);return n<0?ut(n+e,0):ft(n,e)},at=function(t){return function(e,n,r){var o,i=w(e),u=it(i.length),f=ct(r,u);if(t&&n!=n){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===n)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,e){var n,r=w(t),o=0,i=[];for(n in r)!A(G,n)&&A(r,n)&&i.push(n);for(;e.length>o;)A(r,n=e[o++])&&(~lt(i,n)||i.push(n));return i}(t,st)}},yt={f:Object.getOwnPropertySymbols},ht=function(t,e){return arguments.length<2?tt(Z[t])||tt(a[t]):Z[t]&&Z[t][e]||a[t]&&a[t][e]}("Reflect","ownKeys")||function(t){var e=pt.f(_(t)),n=yt.f;return n?e.concat(n(t)):e},gt=function(t,e){for(var n=ht(e),r=C.f,o=M.f,i=0;i 3 | * @update zhixin wen 4 | */ 5 | 6 | .fix-sticky { 7 | position: fixed !important; 8 | overflow: hidden; 9 | z-index: 100; 10 | } 11 | 12 | .fix-sticky table thead { 13 | background: #fff; 14 | } 15 | 16 | .fix-sticky table thead.thead-light { 17 | background: #e9ecef; 18 | } 19 | 20 | .fix-sticky table thead.thead-dark { 21 | background: #212529; 22 | } 23 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/extensions/sticky-header/bootstrap-table-sticky-header.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .fix-sticky{position:fixed!important;overflow:hidden;z-index:100}.fix-sticky table thead{background:#fff}.fix-sticky table thead.thead-light{background:#e9ecef}.fix-sticky table thead.thead-dark{background:#212529} -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-ar-SA.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,y={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,_={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return d(!y.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},R=Object.defineProperty,F={f:s?R:function(t,n,r){if(C(t),n=P(n,!0),C(r),E)try{return R(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},N=s?function(t,n,r){return F.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},k=function(t,n){try{N(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||k("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),B=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},H=I("keys"),W={},J=a.WeakMap;if(q){var K=new J,Q=K.get,U=K.has,V=K.set;e=function(t,n){return V.call(K,t,n),n},o=function(t){return Q.call(K,t)||{}},i=function(t){return U.call(K,t)}}else{var Y=H[u="state"]||(H[u]=B(u));W[Y]=!0,e=function(t,n){return N(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||N(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:N(t,n,o)):f?t[n]=o:k(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(W,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},yt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=gt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=yt(n),e=F.f,o=_.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["ar-SA"]={formatLoadingMessage:function(){return"جاري التحميل, يرجى الإنتظار"},formatRecordsPerPage:function(t){return"".concat(t," سجل لكل صفحة")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل ").concat(e," total rows)"):"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"بحث"},formatNoMatches:function(){return"لا توجد نتائج مطابقة للبحث"},formatPaginationSwitch:function(){return"إخفاءإظهار ترقيم الصفحات"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"تحديث"},formatToggle:function(){return"تغيير"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"أعمدة"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ar-SA"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-en-US.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,d={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},h=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},y={}.toString,m=function(t){return y.call(t).slice(8,-1)},v="".split,w=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,b=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return w(b(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},T=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},P={}.hasOwnProperty,j=function(t,n){return P.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,C={f:s?M:function(t,n){if(t=S(t),n=T(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return h(!d.f.call(t,n),t[n])}},R=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},_=Object.defineProperty,N={f:s?_:function(t,n,r){if(R(t),n=T(n,!0),R(r),E)try{return _(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},F=s?function(t,n,r){return N.f(t,n,h(1,r))}:function(t,n,r){return t[n]=r,t},L=function(t,n){try{F(a,t,n)}catch(r){a[t]=n}return n},k=r((function(t){var n=a["__core-js_shared__"]||L("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),I=k("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(I.call(D)),z=0,G=Math.random(),H=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},U=k("keys"),B={},W=a.WeakMap;if(q){var J=new W,K=J.get,Q=J.has,V=J.set;e=function(t,n){return V.call(J,t,n),n},o=function(t){return K.call(J,t)||{}},i=function(t){return Q.call(J,t)}}else{var Y=U[u="state"]||(U[u]=H(u));B[Y]=!0,e=function(t,n){return F(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(I).split("toString");k("inspectSource",(function(t){return I.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||F(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:F(t,n,o)):f?t[n]=o:L(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||I.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(B,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},dt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(R(t)),r=gt.f;return r?n.concat(r(t)):n},ht=function(t,n){for(var r=dt(n),e=N.f,o=C.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["en-US"]={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"Showing ".concat(t," to ").concat(n," of ").concat(r," rows (filtered from ").concat(e," total rows)"):"Showing ".concat(t," to ").concat(n," of ").concat(r," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["en-US"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-fa-IR.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,y={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,R={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return d(!y.f.call(t,n),t[n])}},_=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},C=Object.defineProperty,I={f:s?C:function(t,n,r){if(_(t),n=P(n,!0),_(r),E)try{return C(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},F=s?function(t,n,r){return I.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},N=function(t,n){try{F(a,t,n)}catch(r){a[t]=n}return n},k=r((function(t){var n=a["__core-js_shared__"]||N("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=k("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),B=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},H=k("keys"),W={},J=a.WeakMap;if(q){var K=new J,Q=K.get,U=K.has,V=K.set;e=function(t,n){return V.call(K,t,n),n},o=function(t){return Q.call(K,t)||{}},i=function(t){return U.call(K,t)}}else{var Y=H[u="state"]||(H[u]=B(u));W[Y]=!0,e=function(t,n){return F(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");k("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||F(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:F(t,n,o)):f?t[n]=o:N(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(W,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},yt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(_(t)),r=gt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=yt(n),e=I.f,o=R.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["fa-IR"]={formatLoadingMessage:function(){return"در حال بارگذاری, لطفا صبر کنید"},formatRecordsPerPage:function(t){return"".concat(t," رکورد در صفحه")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف (filtered from ").concat(e," total rows)"):"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"جستجو"},formatNoMatches:function(){return"رکوردی یافت نشد."},formatPaginationSwitch:function(){return"نمایش/مخفی صفحه بندی"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"به روز رسانی"},formatToggle:function(){return"تغییر نمایش"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"سطر ها"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"همه"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fa-IR"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-he-IL.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,y={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,_={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return d(!y.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},R=Object.defineProperty,I={f:s?R:function(t,n,r){if(C(t),n=P(n,!0),C(r),E)try{return R(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},L=s?function(t,n,r){return I.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},F=function(t,n){try{L(a,t,n)}catch(r){a[t]=n}return n},N=r((function(t){var n=a["__core-js_shared__"]||F("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),k=N("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(k.call(D)),z=0,G=Math.random(),B=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},H=N("keys"),W={},J=a.WeakMap;if(q){var K=new J,Q=K.get,U=K.has,V=K.set;e=function(t,n){return V.call(K,t,n),n},o=function(t){return Q.call(K,t)||{}},i=function(t){return U.call(K,t)}}else{var Y=H[u="state"]||(H[u]=B(u));W[Y]=!0,e=function(t,n){return L(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(k).split("toString");N("inspectSource",(function(t){return k.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||L(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:L(t,n,o)):f?t[n]=o:F(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||k.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(W,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},yt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=gt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=yt(n),e=I.f,o=_.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["he-IL"]={formatLoadingMessage:function(){return"טוען, נא להמתין"},formatRecordsPerPage:function(t){return"".concat(t," שורות בעמוד")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"מציג ".concat(t," עד ").concat(n," מ-").concat(r,"שורות").concat(e," total rows)"):"מציג ".concat(t," עד ").concat(n," מ-").concat(r," שורות")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"חיפוש"},formatNoMatches:function(){return"לא נמצאו רשומות תואמות"},formatPaginationSwitch:function(){return"הסתר/הצג מספור דפים"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"רענן"},formatToggle:function(){return"החלף תצוגה"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"עמודות"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"הכל"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["he-IL"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-ja-JP.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,y={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,_={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return d(!y.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},R=Object.defineProperty,F={f:s?R:function(t,n,r){if(C(t),n=P(n,!0),C(r),E)try{return R(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},N=s?function(t,n,r){return F.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},k=function(t,n){try{N(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||k("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),J=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},B=I("keys"),H={},W=a.WeakMap;if(q){var K=new W,Q=K.get,U=K.has,V=K.set;e=function(t,n){return V.call(K,t,n),n},o=function(t){return Q.call(K,t)||{}},i=function(t){return U.call(K,t)}}else{var Y=B[u="state"]||(B[u]=J(u));H[Y]=!0,e=function(t,n){return N(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||N(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:N(t,n,o)):f?t[n]=o:k(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(H,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},yt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=gt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=yt(n),e=F.f,o=_.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["ja-JP"]={formatLoadingMessage:function(){return"読み込み中です。少々お待ちください。"},formatRecordsPerPage:function(t){return"ページ当たり最大".concat(t,"件")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています (filtered from ").concat(e," total rows)"):"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"検索"},formatNoMatches:function(){return"該当するレコードが見つかりません"},formatPaginationSwitch:function(){return"ページ数を表示・非表示"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"更新"},formatToggle:function(){return"トグル"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"すべて"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ja-JP"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-ko-KR.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,d={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},y=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,R={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return y(!d.f.call(t,n),t[n])}},_=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},C=Object.defineProperty,k={f:s?C:function(t,n,r){if(_(t),n=P(n,!0),_(r),E)try{return C(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},F=s?function(t,n,r){return k.f(t,n,y(1,r))}:function(t,n,r){return t[n]=r,t},N=function(t,n){try{F(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||N("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),H=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},K=I("keys"),B={},W=a.WeakMap;if(q){var J=new W,Q=J.get,U=J.has,V=J.set;e=function(t,n){return V.call(J,t,n),n},o=function(t){return Q.call(J,t)||{}},i=function(t){return U.call(J,t)}}else{var Y=K[u="state"]||(K[u]=H(u));B[Y]=!0,e=function(t,n){return F(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||F(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:F(t,n,o)):f?t[n]=o:N(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(B,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},dt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(_(t)),r=gt.f;return r?n.concat(r(t)):n},yt=function(t,n){for(var r=dt(n),e=k.f,o=R.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["ko-KR"]={formatLoadingMessage:function(){return"데이터를 불러오는 중입니다"},formatRecordsPerPage:function(t){return"페이지 당 ".concat(t,"개 데이터 출력")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력, (filtered from ").concat(e," total rows)"):"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력,")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"검색"},formatNoMatches:function(){return"조회된 데이터가 없습니다."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"새로 고침"},formatToggle:function(){return"전환"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"컬럼 필터링"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ko-KR"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-nb-NO.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,d={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},y=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,k={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return y(!d.f.call(t,n),t[n])}},_=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},C=Object.defineProperty,R={f:s?C:function(t,n,r){if(_(t),n=P(n,!0),_(r),E)try{return C(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},N=s?function(t,n,r){return R.f(t,n,y(1,r))}:function(t,n,r){return t[n]=r,t},F=function(t,n){try{N(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||F("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),H=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},V=I("keys"),B={},K=a.WeakMap;if(q){var W=new K,J=W.get,Q=W.has,U=W.set;e=function(t,n){return U.call(W,t,n),n},o=function(t){return J.call(W,t)||{}},i=function(t){return Q.call(W,t)}}else{var Y=V[u="state"]||(V[u]=H(u));B[Y]=!0,e=function(t,n){return N(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||N(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:N(t,n,o)):f?t[n]=o:F(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(B,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},dt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(_(t)),r=gt.f;return r?n.concat(r(t)):n},yt=function(t,n){for(var r=dt(n),e=R.f,o=k.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["nb-NO"]={formatLoadingMessage:function(){return"Oppdaterer, vennligst vent"},formatRecordsPerPage:function(t){return"".concat(t," poster pr side")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker (filtered from ").concat(e," total rows)"):"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Søk"},formatNoMatches:function(){return"Ingen poster funnet"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Oppdater"},formatToggle:function(){return"Endre"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolonner"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["nb-NO"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-sv-SE.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,a="object",f=function(t){return t&&t.Math==Math&&t},c=f(typeof globalThis==a&&globalThis)||f(typeof window==a&&window)||f(typeof self==a&&self)||f(typeof n==a&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,d=Object.getOwnPropertyDescriptor,g={f:d&&!p.call({1:2},1)?function(t){var n=d(this,t);return!!n&&n.enumerable}:p},y=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=c.document,E=O(x)&&O(x.createElement),A=!s&&!l((function(){return 7!=Object.defineProperty((t="div",E?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,_={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),A)try{return M(t,n)}catch(t){}if(j(t,n))return y(!g.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},R=Object.defineProperty,k={f:s?R:function(t,n,r){if(C(t),n=P(n,!0),C(r),A)try{return R(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},F=s?function(t,n,r){return k.f(t,n,y(1,r))}:function(t,n,r){return t[n]=r,t},I=function(t,n){try{F(c,t,n)}catch(r){c[t]=n}return n},L=r((function(t){var n=c["__core-js_shared__"]||I("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),N=L("native-function-to-string",Function.toString),D=c.WeakMap,q="function"==typeof D&&/native code/.test(N.call(D)),z=0,G=Math.random(),H=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},V=L("keys"),B={},U=c.WeakMap;if(q){var W=new U,J=W.get,K=W.has,Q=W.set;e=function(t,n){return Q.call(W,t,n),n},o=function(t){return J.call(W,t)||{}},i=function(t){return K.call(W,t)}}else{var Y=V[u="state"]||(V[u]=H(u));B[Y]=!0,e=function(t,n){return F(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(N).split("toString");L("inspectSource",(function(t){return N.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,a=!!i&&!!i.enumerable,f=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||F(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==c?(u?!f&&t[n]&&(a=!0):delete t[n],a?t[n]=o:F(t,n,o)):a?t[n]=o:I(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||N.call(this)}))})),tt=c,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},at=Math.max,ft=Math.min,ct=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),a=function(t,n){var r=ot(t);return r<0?at(r+n,0):ft(r,n)}(e,u);if(t&&r!=r){for(;u>a;)if((o=i[a++])!=o)return!0}else for(;u>a;a++)if((t||a in i)&&i[a]===r)return t||a||0;return!t&&-1}},lt={includes:ct(!0),indexOf:ct(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(B,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},dt={f:Object.getOwnPropertySymbols},gt=function(t,n){return arguments.length<2?nt(tt[t])||nt(c[t]):tt[t]&&tt[t][n]||c[t]&&c[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=dt.f;return r?n.concat(r(t)):n},yt=function(t,n){for(var r=gt(n),e=k.f,o=_.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(a,f++,i)}return a.length=f,a}}),t.fn.bootstrapTable.locales["sv-SE"]={formatLoadingMessage:function(){return"Laddar, vänligen vänta"},formatRecordsPerPage:function(t){return"".concat(t," rader per sida")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"Visa ".concat(t," till ").concat(n," av ").concat(r," rader (filtered from ").concat(e," total rows)"):"Visa ".concat(t," till ").concat(n," av ").concat(r," rader")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Sök"},formatNoMatches:function(){return"Inga matchande resultat funna."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Uppdatera"},formatToggle:function(){return"Skifta"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"kolumn"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sv-SE"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-ur-PK.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,i,u,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,d={f:g&&!p.call({1:2},1)?function(t){var n=g(this,t);return!!n&&n.enumerable}:p},y=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,A=O(x)&&O(x.createElement),E=!s&&!l((function(){return 7!=Object.defineProperty((t="div",A?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),M=Object.getOwnPropertyDescriptor,_={f:s?M:function(t,n){if(t=S(t),n=P(n,!0),E)try{return M(t,n)}catch(t){}if(j(t,n))return y(!d.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},R=Object.defineProperty,F={f:s?R:function(t,n,r){if(C(t),n=P(n,!0),C(r),E)try{return R(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},N=s?function(t,n,r){return F.f(t,n,y(1,r))}:function(t,n,r){return t[n]=r,t},k=function(t,n){try{N(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||k("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),D=a.WeakMap,q="function"==typeof D&&/native code/.test(L.call(D)),z=0,G=Math.random(),H=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++z+G).toString(36)},K=I("keys"),B={},W=a.WeakMap;if(q){var J=new W,Q=J.get,U=J.has,V=J.set;e=function(t,n){return V.call(J,t,n),n},o=function(t){return Q.call(J,t)||{}},i=function(t){return U.call(J,t)}}else{var Y=K[u="state"]||(K[u]=H(u));B[Y]=!0,e=function(t,n){return N(t,Y,n),n},o=function(t){return j(t,Y)?t[Y]:{}},i=function(t){return j(t,Y)}}var X,Z={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,i){var u=!!i&&!!i.unsafe,f=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||N(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(u?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:N(t,n,o)):f?t[n]=o:k(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},it=Math.min,ut=function(t){return t>0?it(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,i=S(n),u=ut(i.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,u);if(t&&r!=r){for(;u>f;)if((o=i[f++])!=o)return!0}else for(;u>f;f++)if((t||f in i)&&i[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,i=[];for(r in e)!j(B,r)&&j(e,r)&&i.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(i,r)||i.push(r));return i}(t,st)}},gt={f:Object.getOwnPropertySymbols},dt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=gt.f;return r?n.concat(r(t)):n},yt=function(t,n){for(var r=dt(n),e=F.f,o=_.f,i=0;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,i)}return f.length=c,f}}),t.fn.bootstrapTable.locales["ur-PK"]={formatLoadingMessage:function(){return"براۓ مہربانی انتظار کیجئے"},formatRecordsPerPage:function(t){return"".concat(t," ریکارڈز فی صفہ ")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز (filtered from ").concat(e," total rows)"):"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"تلاش"},formatNoMatches:function(){return"کوئی ریکارڈ نہیں ملا"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"تازہ کریں"},formatToggle:function(){return"تبدیل کریں"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"کالم"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ur-PK"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,u,i,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,y=Object.getOwnPropertyDescriptor,g={f:y&&!p.call({1:2},1)?function(t){var n=y(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},P=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},T={}.hasOwnProperty,j=function(t,n){return T.call(t,n)},x=a.document,E=O(x)&&O(x.createElement),M=!s&&!l((function(){return 7!=Object.defineProperty((t="div",E?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),A=Object.getOwnPropertyDescriptor,_={f:s?A:function(t,n){if(t=S(t),n=P(n,!0),M)try{return A(t,n)}catch(t){}if(j(t,n))return d(!g.f.call(t,n),t[n])}},C=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},N=Object.defineProperty,R={f:s?N:function(t,n,r){if(C(t),n=P(n,!0),C(r),M)try{return N(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},k=s?function(t,n,r){return R.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},F=function(t,n){try{k(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||F("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),z=a.WeakMap,D="function"==typeof z&&/native code/.test(L.call(z)),q=0,B=Math.random(),G=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++q+B).toString(36)},W=I("keys"),J={},K=a.WeakMap;if(D){var Q=new K,U=Q.get,V=Q.has,Y=Q.set;e=function(t,n){return Y.call(Q,t,n),n},o=function(t){return U.call(Q,t)||{}},u=function(t){return V.call(Q,t)}}else{var H=W[i="state"]||(W[i]=G(i));J[H]=!0,e=function(t,n){return k(t,H,n),n},o=function(t){return j(t,H)?t[H]:{}},u=function(t){return j(t,H)}}var X,Z={set:e,get:o,has:u,enforce:function(t){return u(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,u){var i=!!u&&!!u.unsafe,f=!!u&&!!u.enumerable,c=!!u&&!!u.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||k(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(i?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:k(t,n,o)):f?t[n]=o:F(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},ut=Math.min,it=function(t){return t>0?ut(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,u=S(n),i=it(u.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,i);if(t&&r!=r){for(;i>f;)if((o=u[f++])!=o)return!0}else for(;i>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,u=[];for(r in e)!j(J,r)&&j(e,r)&&u.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(u,r)||u.push(r));return u}(t,st)}},yt={f:Object.getOwnPropertySymbols},gt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(C(t)),r=yt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=gt(n),e=R.f,o=_.f,u=0;u9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,u)}return f.length=c,f}}),t.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候"},formatRecordsPerPage:function(t){return"每页显示 ".concat(t," 条记录")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录(从 ").concat(e," 总记录中过滤)"):"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录")},formatSRPaginationPreText:function(){return"上一页"},formatSRPaginationPageText:function(t){return"第".concat(t,"页")},formatSRPaginationNextText:function(){return"下一页"},formatDetailPagination:function(t){return"总共 ".concat(t," 条记录")},formatClearSearch:function(){return"清空过滤"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatPaginationSwitchDown:function(){return"显示分页"},formatPaginationSwitchUp:function(){return"隐藏分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatToggleOn:function(){return"显示卡片视图"},formatToggleOff:function(){return"隐藏卡片视图"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切换所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自动刷新"},formatExport:function(){return"导出数据"},formatJumpTo:function(){return"跳转"},formatAdvancedSearch:function(){return"高级搜索"},formatAdvancedCloseButton:function(){return"关闭"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["zh-CN"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/bootstrap-table/locale/bootstrap-table-zh-TW.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) 3 | * 4 | * @version v1.15.5 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t,n){return t(n={exports:{}},n.exports),n.exports}var e,o,u,i,f="object",c=function(t){return t&&t.Math==Math&&t},a=c(typeof globalThis==f&&globalThis)||c(typeof window==f&&window)||c(typeof self==f&&self)||c(typeof n==f&&n)||Function("return this")(),l=function(t){try{return!!t()}catch(t){return!0}},s=!l((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p={}.propertyIsEnumerable,y=Object.getOwnPropertyDescriptor,g={f:y&&!p.call({1:2},1)?function(t){var n=y(this,t);return!!n&&n.enumerable}:p},d=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}},h={}.toString,m=function(t){return h.call(t).slice(8,-1)},v="".split,b=l((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==m(t)?v.call(t,""):Object(t)}:Object,w=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},S=function(t){return b(w(t))},O=function(t){return"object"==typeof t?null!==t:"function"==typeof t},T=function(t,n){if(!O(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!O(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!O(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")},P={}.hasOwnProperty,j=function(t,n){return P.call(t,n)},x=a.document,E=O(x)&&O(x.createElement),M=!s&&!l((function(){return 7!=Object.defineProperty((t="div",E?x.createElement(t):{}),"a",{get:function(){return 7}}).a;var t})),A=Object.getOwnPropertyDescriptor,_={f:s?A:function(t,n){if(t=S(t),n=T(n,!0),M)try{return A(t,n)}catch(t){}if(j(t,n))return d(!g.f.call(t,n),t[n])}},R=function(t){if(!O(t))throw TypeError(String(t)+" is not an object");return t},C=Object.defineProperty,N={f:s?C:function(t,n,r){if(R(t),n=T(n,!0),R(r),M)try{return C(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},k=s?function(t,n,r){return N.f(t,n,d(1,r))}:function(t,n,r){return t[n]=r,t},F=function(t,n){try{k(a,t,n)}catch(r){a[t]=n}return n},I=r((function(t){var n=a["__core-js_shared__"]||F("__core-js_shared__",{});(t.exports=function(t,r){return n[t]||(n[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.1.3",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=I("native-function-to-string",Function.toString),z=a.WeakMap,D="function"==typeof z&&/native code/.test(L.call(z)),q=0,W=Math.random(),B=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++q+W).toString(36)},G=I("keys"),J={},K=a.WeakMap;if(D){var Q=new K,U=Q.get,V=Q.has,Y=Q.set;e=function(t,n){return Y.call(Q,t,n),n},o=function(t){return U.call(Q,t)||{}},u=function(t){return V.call(Q,t)}}else{var H=G[i="state"]||(G[i]=B(i));J[H]=!0,e=function(t,n){return k(t,H,n),n},o=function(t){return j(t,H)?t[H]:{}},u=function(t){return j(t,H)}}var X,Z={set:e,get:o,has:u,enforce:function(t){return u(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!O(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},$=r((function(t){var n=Z.get,r=Z.enforce,e=String(L).split("toString");I("inspectSource",(function(t){return L.call(t)})),(t.exports=function(t,n,o,u){var i=!!u&&!!u.unsafe,f=!!u&&!!u.enumerable,c=!!u&&!!u.noTargetGet;"function"==typeof o&&("string"!=typeof n||j(o,"name")||k(o,"name",n),r(o).source=e.join("string"==typeof n?n:"")),t!==a?(i?!c&&t[n]&&(f=!0):delete t[n],f?t[n]=o:k(t,n,o)):f?t[n]=o:F(n,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&n(this).source||L.call(this)}))})),tt=a,nt=function(t){return"function"==typeof t?t:void 0},rt=Math.ceil,et=Math.floor,ot=function(t){return isNaN(t=+t)?0:(t>0?et:rt)(t)},ut=Math.min,it=function(t){return t>0?ut(ot(t),9007199254740991):0},ft=Math.max,ct=Math.min,at=function(t){return function(n,r,e){var o,u=S(n),i=it(u.length),f=function(t,n){var r=ot(t);return r<0?ft(r+n,0):ct(r,n)}(e,i);if(t&&r!=r){for(;i>f;)if((o=u[f++])!=o)return!0}else for(;i>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}},lt={includes:at(!0),indexOf:at(!1)}.indexOf,st=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),pt={f:Object.getOwnPropertyNames||function(t){return function(t,n){var r,e=S(t),o=0,u=[];for(r in e)!j(J,r)&&j(e,r)&&u.push(r);for(;n.length>o;)j(e,r=n[o++])&&(~lt(u,r)||u.push(r));return u}(t,st)}},yt={f:Object.getOwnPropertySymbols},gt=function(t,n){return arguments.length<2?nt(tt[t])||nt(a[t]):tt[t]&&tt[t][n]||a[t]&&a[t][n]}("Reflect","ownKeys")||function(t){var n=pt.f(R(t)),r=yt.f;return r?n.concat(r(t)):n},dt=function(t,n){for(var r=gt(n),e=N.f,o=_.f,u=0;u9007199254740991)throw TypeError("Maximum allowed index exceeded");for(r=0;r=9007199254740991)throw TypeError("Maximum allowed index exceeded");xt(f,c++,u)}return f.length=c,f}}),t.fn.bootstrapTable.locales["zh-TW"]={formatLoadingMessage:function(){return"正在努力地載入資料,請稍候"},formatRecordsPerPage:function(t){return"每頁顯示 ".concat(t," 項記錄")},formatShowingRows:function(t,n,r,e){return void 0!==e&&e>0&&e>r?"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄(從 ").concat(e," 總記錄中過濾)"):"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄")},formatSRPaginationPreText:function(){return"上一頁"},formatSRPaginationPageText:function(t){return"第".concat(t,"頁")},formatSRPaginationNextText:function(){return"下一頁"},formatDetailPagination:function(t){return"總共 ".concat(t," 項記錄")},formatClearSearch:function(){return"清空過濾"},formatSearch:function(){return"搜尋"},formatNoMatches:function(){return"沒有找到符合的結果"},formatPaginationSwitch:function(){return"隱藏/顯示分頁"},formatPaginationSwitchDown:function(){return"顯示分頁"},formatPaginationSwitchUp:function(){return"隱藏分頁"},formatRefresh:function(){return"重新整理"},formatToggle:function(){return"切換"},formatToggleOn:function(){return"顯示卡片視圖"},formatToggleOff:function(){return"隱藏卡片視圖"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切換所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自動刷新"},formatExport:function(){return"導出數據"},formatJumpTo:function(){return"跳轉"},formatAdvancedSearch:function(){return"高級搜尋"},formatAdvancedCloseButton:function(){return"關閉"}},t.extend(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["zh-TW"])})); 11 | -------------------------------------------------------------------------------- /Webfrontend/vendor/diff2html/diff2html.min.css: -------------------------------------------------------------------------------- 1 | .d2h-wrapper{text-align:left}.d2h-file-header{height:35px;padding:5px 10px;border-bottom:1px solid #d8d8d8;background-color:#f7f7f7}.d2h-file-stats{display:flex;margin-left:auto;font-size:14px}.d2h-lines-added{text-align:right;border:1px solid #b4e2b4;border-radius:5px 0 0 5px;color:#399839;padding:2px;vertical-align:middle}.d2h-lines-deleted{text-align:left;border:1px solid #e9aeae;border-radius:0 5px 5px 0;color:#c33;padding:2px;vertical-align:middle;margin-left:1px}.d2h-file-name-wrapper{display:flex;align-items:center;width:100%;font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px}.d2h-file-name{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.d2h-file-wrapper{border:1px solid #ddd;border-radius:3px;margin-bottom:1em}.d2h-diff-table{width:100%;border-collapse:collapse;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-files-diff{display:block;width:100%;height:100%}.d2h-file-diff{overflow-y:hidden}.d2h-file-side-diff{display:inline-block;overflow-x:scroll;overflow-y:hidden;width:50%;margin-right:-4px;margin-bottom:-8px}.d2h-code-line{display:inline-block;white-space:nowrap;padding:0 8em}.d2h-code-side-line{display:inline-block;white-space:nowrap;padding:0 4.5em}.d2h-code-line del,.d2h-code-side-line del{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#ffb6ba;border-radius:.2em}.d2h-code-line ins,.d2h-code-side-line ins{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#97f295;border-radius:.2em;text-align:left}.d2h-code-line-prefix{display:inline;background:0 0;padding:0;word-wrap:normal;white-space:pre}.d2h-code-line-ctn{display:inline;background:0 0;padding:0;word-wrap:normal;white-space:pre}.line-num1{box-sizing:border-box;float:left;width:3.5em;overflow:hidden;text-overflow:ellipsis;padding:0 .5em 0 .5em}.line-num2{box-sizing:border-box;float:right;width:3.5em;overflow:hidden;text-overflow:ellipsis;padding:0 .5em 0 .5em}.d2h-code-linenumber{box-sizing:border-box;width:7.5em;position:absolute;display:inline-block;background-color:#fff;color:rgba(0,0,0,.3);text-align:right;border:solid #eee;border-width:0 1px 0 1px;cursor:pointer}.d2h-code-linenumber:after{content:'\200b'}.d2h-code-side-linenumber{position:absolute;display:inline-block;box-sizing:border-box;width:4em;background-color:#fff;color:rgba(0,0,0,.3);text-align:right;border:solid #eee;border-width:0 1px 0 1px;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.d2h-code-side-linenumber:after{content:'\200b'}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;border-color:#e1e1e1}.d2h-del{background-color:#fee8e9;border-color:#e9aeae}.d2h-ins{background-color:#dfd;border-color:#b4e2b4}.d2h-info{background-color:#f8fafd;color:rgba(0,0,0,.3);border-color:#d5e4f2}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{text-decoration:none;color:#3572b0}.d2h-file-list-wrapper a:visited{color:#3572b0}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{display:flex;text-align:left}.d2h-file-list{display:block;list-style:none;padding:0;margin:0}.d2h-file-list>li{border-bottom:#ddd solid 1px;padding:5px 10px;margin:0}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{display:none;font-size:10px;cursor:pointer}.d2h-icon{vertical-align:middle;margin-right:10px;fill:currentColor}.d2h-deleted{color:#c33}.d2h-added{color:#399839}.d2h-changed{color:#d0b44c}.d2h-moved{color:#3572b0}.d2h-tag{display:flex;font-size:10px;margin-left:5px;padding:0 2px;background-color:#fff}.d2h-deleted-tag{border:#c33 1px solid}.d2h-added-tag{border:#399839 1px solid}.d2h-changed-tag{border:#d0b44c 1px solid}.d2h-moved-tag{border:#3572b0 1px solid}.selecting-left .d2h-code-line,.selecting-left .d2h-code-line *,.selecting-left .d2h-code-side-line,.selecting-left .d2h-code-side-line *,.selecting-right td.d2h-code-linenumber,.selecting-right td.d2h-code-linenumber *,.selecting-right td.d2h-code-side-linenumber,.selecting-right td.d2h-code-side-linenumber *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.selecting-left .d2h-code-line ::-moz-selection,.selecting-left .d2h-code-line::-moz-selection,.selecting-left .d2h-code-side-line ::-moz-selection,.selecting-left .d2h-code-side-line::-moz-selection,.selecting-right td.d2h-code-linenumber::-moz-selection,.selecting-right td.d2h-code-side-linenumber ::-moz-selection,.selecting-right td.d2h-code-side-linenumber::-moz-selection{background:0 0}.selecting-left .d2h-code-line ::selection,.selecting-left .d2h-code-line::selection,.selecting-left .d2h-code-side-line ::selection,.selecting-left .d2h-code-side-line::selection,.selecting-right td.d2h-code-linenumber::selection,.selecting-right td.d2h-code-side-linenumber ::selection,.selecting-right td.d2h-code-side-linenumber::selection{background:0 0} -------------------------------------------------------------------------------- /Webfrontend/vendor/jquery-easing/jquery.easing.compatibility.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Easing Compatibility v1 - http://gsgd.co.uk/sandbox/jquery/easing 3 | * 4 | * Adds compatibility for applications that use the pre 1.2 easing names 5 | * 6 | * Copyright (c) 2007 George Smith 7 | * Licensed under the MIT License: 8 | * http://www.opensource.org/licenses/mit-license.php 9 | */ 10 | 11 | (function($){ 12 | $.extend( $.easing, 13 | { 14 | easeIn: function (x, t, b, c, d) { 15 | return $.easing.easeInQuad(x, t, b, c, d); 16 | }, 17 | easeOut: function (x, t, b, c, d) { 18 | return $.easing.easeOutQuad(x, t, b, c, d); 19 | }, 20 | easeInOut: function (x, t, b, c, d) { 21 | return $.easing.easeInOutQuad(x, t, b, c, d); 22 | }, 23 | expoin: function(x, t, b, c, d) { 24 | return $.easing.easeInExpo(x, t, b, c, d); 25 | }, 26 | expoout: function(x, t, b, c, d) { 27 | return $.easing.easeOutExpo(x, t, b, c, d); 28 | }, 29 | expoinout: function(x, t, b, c, d) { 30 | return $.easing.easeInOutExpo(x, t, b, c, d); 31 | }, 32 | bouncein: function(x, t, b, c, d) { 33 | return $.easing.easeInBounce(x, t, b, c, d); 34 | }, 35 | bounceout: function(x, t, b, c, d) { 36 | return $.easing.easeOutBounce(x, t, b, c, d); 37 | }, 38 | bounceinout: function(x, t, b, c, d) { 39 | return $.easing.easeInOutBounce(x, t, b, c, d); 40 | }, 41 | elasin: function(x, t, b, c, d) { 42 | return $.easing.easeInElastic(x, t, b, c, d); 43 | }, 44 | elasout: function(x, t, b, c, d) { 45 | return $.easing.easeOutElastic(x, t, b, c, d); 46 | }, 47 | elasinout: function(x, t, b, c, d) { 48 | return $.easing.easeInOutElastic(x, t, b, c, d); 49 | }, 50 | backin: function(x, t, b, c, d) { 51 | return $.easing.easeInBack(x, t, b, c, d); 52 | }, 53 | backout: function(x, t, b, c, d) { 54 | return $.easing.easeOutBack(x, t, b, c, d); 55 | }, 56 | backinout: function(x, t, b, c, d) { 57 | return $.easing.easeInOutBack(x, t, b, c, d); 58 | } 59 | });})(jQuery); 60 | -------------------------------------------------------------------------------- /Webfrontend/vendor/jquery-easing/jquery.easing.min.js: -------------------------------------------------------------------------------- 1 | (function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})}); -------------------------------------------------------------------------------- /Webfrontend/versionHistory.json: -------------------------------------------------------------------------------- 1 | var iFlowVersions = { 2 | "count": 1, 3 | "result": { 4 | "versionList": [ 5 | { 6 | "semanticVersion": "Draft", 7 | "technicalVersion": 1, 8 | "createdDate": "1576829282650", 9 | "createdBy": "S0019443419", 10 | "state": "workingcopy" 11 | }, 12 | { 13 | "comment": "Resource Created", 14 | "semanticVersion": "1.0.0", 15 | "technicalVersion": 1, 16 | "createdDate": "1575368799303", 17 | "createdBy": "S0019443419", 18 | "state": "versioned" 19 | } 20 | ] 21 | } 22 | } --------------------------------------------------------------------------------