├── .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=dateType | |
timeType | |
dayValue | |
monthValue | |
yearValue | |
onWeekly | |
onMonthly | |
OnEveryMinute | |
fromInterval | |
toInterval | |
timeZone | ( UTC 0\:00 ) Greenwich Mean Time(Etc/GMT) |
secondValue | 0 |
minutesValue | |
hourValue | |
triggerType | simple |
noOfSchedules | 1 |
schedule1 | fireNow\=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 | 
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 | }
--------------------------------------------------------------------------------