Compare commits
7 Commits
edp-punchi
...
report_mig
| Author | SHA1 | Date | |
|---|---|---|---|
| 2c5a7f0311 | |||
| c308171de5 | |||
| 03dfdd6218 | |||
| a757799724 | |||
| 61bea5fb6e | |||
| c835a9deb0 | |||
| b862a3f686 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,4 @@
|
|||||||
/target/
|
/target/
|
||||||
/config/
|
|
||||||
!.mvn/wrapper/maven-wrapper.jar
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
### STS ###
|
### STS ###
|
||||||
|
|||||||
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -71,7 +71,7 @@
|
|||||||
"CYGNUS_LOGIN_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/login-public.pem",
|
"CYGNUS_LOGIN_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/login-public.pem",
|
||||||
"CYGNUS_PAYLOAD_PRIVATE_KEY": "file:${workspaceFolder}/config/keys/case-save-private.pem",
|
"CYGNUS_PAYLOAD_PRIVATE_KEY": "file:${workspaceFolder}/config/keys/case-save-private.pem",
|
||||||
"CYGNUS_PAYLOAD_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/case-save-public.pem",
|
"CYGNUS_PAYLOAD_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/case-save-public.pem",
|
||||||
"CYGNUS_CLOUD_REQUEST_TIMEOUT": "PT10S",
|
"CYGNUS_CLOUD_REQUEST_TIMEOUT": "PT30S",
|
||||||
"CYGNUS_TOKEN_REFRESH_SKEW": "PT30S"
|
"CYGNUS_TOKEN_REFRESH_SKEW": "PT30S"
|
||||||
},
|
},
|
||||||
"vmArgs": "-Dserver.port=8080 -Djava.awt.headless=true -Dmatrix.webapp=${workspaceFolder}/cygnus-onprem-app/build/WebContent -Dmatrix.classes=${workspaceFolder}/cygnus-onprem-app/target/classes",
|
"vmArgs": "-Dserver.port=8080 -Djava.awt.headless=true -Dmatrix.webapp=${workspaceFolder}/cygnus-onprem-app/build/WebContent -Dmatrix.classes=${workspaceFolder}/cygnus-onprem-app/target/classes",
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.rf8bViJPb5bRJHFamVoCftE0TLA1Gz7JyGnfcjtKEx3KiUL4SSbgYSUQlsKhCt8VJMWE--UpgbkM0Bv3pFVsMF_uh693MhFstEy_A6S3MODjoUV_bMLa_Zr1yH2Jwzud4LSyw-ctJ7G-vO8S_I6YML0HV5kNbobdFmMfXFLGKssVmM_Km0m57ZgSjj3zRii0cKpmdwwSbWoJC2y519TpKhIja0OZAoN1oB3IVKvERlFYCQYUpQmcRkzULGrlSoLIm9iqbRX4qMGhGISwVS6JdVtn9WjpSjF3xkUxN_QsVuYKYFL_kEKWSNepIcfoip7Ag9Qw_S1RZA_KO908MgrzGRbs2UIpxY9sAM8yZ-k1NTk0swV836s5pdDIP3PHovcd6iR8mqWBPt7mq7ES98vNeCZxqPLB_b1JuNfKsbLPdRIvEk2DTjZHeEi-yA1yl5uMi_1f4la6mgy65u_jLL_Ow28uZtj-8yQ3dR4lF3K7tkxQaB4LQiH5nl6lXEndpoPe.Cpu6VoHf2ptCue_L.uH-Pq1WZN-x_c71Iyx8X1QJa1JZRp9sYta9iUOmQ4W8x4Qh2wYm-_tpr8FEw56MLvIb8IH_gHVVLAJgXTmCZhyo26vJlPCtnMMPYFDrPRzTJv9Ewg7RMpsAh_kXFFK4UJ6Tgt_r7Tg_bnVOTKXodUjl3wVdMowZRX_ua-gKwLU-2LDWdqIRmuFDSOkMb1sFBZLPyjWHg_rThs-RwVa4YJdDi74s-L0WX0xRPXzeovu1-xvOgZ0xYf0ScbsFQgvK-JwAxOWsB1WKeHRqnnx5-apK6qtzhpiJ30c7ukPlrg2nieuJvkXOVuKBKXLVRLSViOH4HU76DD96btDUA0Cg2kEURpepucX0VWPyB7K3xb9v1AT42TUkW9wZzdmIs9saRo-ItuWzlCezvapLIsbqmYCs_rW2J3KgqXrUyy2mptn32sqaqQZnlNVu4wwboPCCrbl2MG5CYlYKrwaOHNg611j8sCDkIptm_UmPFnOnzvQYwURuDSgzswTIV5bTd_58yxag2yWwiMdGLMDbxxSUPQ6a4EbuDkqwmGBTSLiG7SaSFchSg6o9EflqK6k-u_rlixCxmfg1A6sa7nloW17dOxDzGKtmn9lBoaskL97nNrhP6ptftak7j4TIZulz1FUOSVoR8kXK8RNQMj-b6rg_MdSO9Ecq5hZsza1SzjkzKZvV-tpP6Wl6-rszCH6g3DIQAWN5aWdUkwuya1HqDDyVPbUOVQPsp4nhVC24QmnlbcqFwQdoCrikYKyX3Snc0H6_K4z9c6nURAdj6THwHmA9BfHtJniI_rEIvkmBk3yndi-H5eAjtxIoYSFQrSTWEFhgvk6bAKoR_xb_cHgzKOxYLBiO_FifkjkFDOlkVBuYnZEp3oRePDKgMDfL5Oxjuie4u-8yrH52Cd32yQzbvGplaXLLeEDf3i71dcz4LkO5DknScWG3G_SbKBpjlse-GKe3XYqRXeRIYLpyiX1MXph0b-Q.dvHU75ZR8wJFxoSacfkthw
|
||||||
40
config/clients/matrix/matrix-signing-private.pem
Normal file
40
config/clients/matrix/matrix-signing-private.pem
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
M/D4ZjXsfrW//BMF6+w2Bh4=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
11
config/clients/matrix/matrix-signing-public.pem
Normal file
11
config/clients/matrix/matrix-signing-public.pem
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAloJtGMOLcTNWe1IgdrT8
|
||||||
|
uYucI1Vs02WjyUPZ7Po51iC67QmGdG0InzlBJYdkYtTz8eda+qArZMNGB0ChFs/7
|
||||||
|
xKPKASkMvVcrm4IYbth0DEIkXWAL7YXsWd8qdS+KsnxuC6TqvuA9Xq/PX4RmtAq4
|
||||||
|
bl0/1T2HZjJs53/b73l5NehcseZU129w+5lBqDwW5xh+1VnXNbc96za7BFfQSnfg
|
||||||
|
9WwaWSpo8Y57XATnV7s46yT8gNKM29INHJXs4aIrQ9tcLnTbDz9nhGceNgec3AhO
|
||||||
|
zc4TyCPugUiG9WD4ehsQr+7Cp30RqT5l9ZPvoBTpAdHLZ1r/jB+qY6+WkY6EsOJW
|
||||||
|
2xg9bUYoHXjMiFdi8OLXC4NTAPUquFOaIMfjxGaYQc8NoDMFiq3qdTWi2ndCOoxX
|
||||||
|
yFxYRP5pYs/oA46UAHZsCHaspjvl9jfR/abCALBtsFLwpLA9qqBws5ojXFH//UoX
|
||||||
|
E7dXnJziCFQNyJOhXtIhbQhtb3wJc6WSLtDrRpFtaJudAgMBAAE=
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
40
config/keys/access-token-private.pem
Normal file
40
config/keys/access-token-private.pem
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQC/J+4zrtDESicS
|
||||||
|
8LZV/bU/5/GjjTpngL7M3PEf/y0I+Ewf3hKSW3XRZepJ9AV9luEk9VihkvybQ0Mj
|
||||||
|
ujMjuUgw8CEBV9wU7M7pWqkUavMyAyqadYuvFGwvfLWuMHcucTzhb4BNxL+aWTqv
|
||||||
|
BsJ+tKhFGVjeLv2iXyHfqOGFodPb+IYY7e6+oBArffiVAQ6Wqv5gvgqSv8Yw6bzp
|
||||||
|
sTg9xlImAJMCeUJALtNS7qMZa6hyYjWc3Atc+NC9eBz4cq0kSoUZ/5rR+3L18uBp
|
||||||
|
HbIjOUz2LfWveSN4rOpV7YN4tNu213xtVZTj8qYaDysRyG3ALzBHiKe4NSPAncXC
|
||||||
|
Z0Gu8OkZrUAzzKh91uzvcu/YSCS9Eu+WBpaJfY/op2UoYd5oOP2/RhYluIUzitz3
|
||||||
|
LmEPeUba6eGm8//j04VdUFPb+mbzoubFKXCy6fcbYso05cjrjqOF1UdCQhVwGIdM
|
||||||
|
dhA573/EurHdmIQzvCK1vO4mfEiRuP/w4WAf5YNSZNBVe1vPu90CAwEAAQKCAYAY
|
||||||
|
tKo4c05npDbXH5XNWOBRXWKxcvoasPzYAPFII6SYLXE3SC4pzNjWIsAsZTXFdNft
|
||||||
|
/SjCnzr3PTMC/diItDR0oMB/SjH3YWDfr5g9O5JpgxfBRVJzoyXVYF6h4AEzVy7Z
|
||||||
|
ax4Pzw89fW1UfEDse+Bop91AwB2HXBjGba8SJKd7XWxFchECgbD9UgdsCKowRnLg
|
||||||
|
oYc/zrnojfkc0gsVDtoEr9vQPMhXf8XPyOh7C1tGx1MrDhSI5F6kMk86PCYNE/VV
|
||||||
|
Oiw2GdyvZjZnQ3IVFbCL9aT2xPVQfbHQ4DZrf003GtuuqwKi/jumNOTpzZUd8dy4
|
||||||
|
ruZRik1pyeYklTyxt/FeSof/qJqyG/pLttjWtiWfonRk3Uy+FuHUZ+LcTiTUcN+i
|
||||||
|
Hl35oUq56a9o71avs78QTnQOMiK8Wi7AGUetL7qdPrbnBEyP5gGkLzi0DKUBDnKI
|
||||||
|
jBeEcdOBudum1Dso3vh7zss6T5hGnRIfcNxsFqUIk36niX368oML/YRKBMl6U7EC
|
||||||
|
gcEA5tv5wnrrfFEQDs2+jQoweolchQfTABAMtFpsiQQp50fbrTRccIy4/0EreahD
|
||||||
|
u97JQ1U33vG8p+MnS2uPNqMrt9E0/lCdOp/h0wJqRSso1mgnia22ySvY++FpL1Ey
|
||||||
|
HXbMs3jOHW1x0/D8qKLSzNQAjXoBkM+Gath6jtVdn4c+4s/Qb/orh88WB8twKpXB
|
||||||
|
qQozjt79xaBtgwUlzXhIKPLFE7dkGxIOwsXeNX2NC/vomVz6aHozEzQduGE2nk7d
|
||||||
|
uk4NAoHBANP5FX7fiROdscCV3OsM/hqa2JPAP3MHWUXn8rMZxHgRzoILhqdfC8p2
|
||||||
|
QZTFXii0Jloda0lpRipY7ICRUUHzQ2iWWOw4R6haO+Dbdz1LUk0jJTeotqp00k5h
|
||||||
|
h1W80lNduBeYuFHwj5P3QcBGpILXmox3q2rrxRWbxG4sJVzvcPcluo9UFHcEQXnX
|
||||||
|
WmzM3VdnN1Vt3TXWev1klGyoJM3J/v7cLa6dBJaWVM5gKSdnpBB99J8x0tOxGjWO
|
||||||
|
mNxS2oyBEQKBwDo20j5WXLdWgaQaAajzHtJnfOsW1AA6C9oWyzOp1x85IY4FnCHN
|
||||||
|
eoDzYBEnex0OytWt0Y7oilgTkb8U+mIet1F88c4Haf50fq+E9mNGxN98GCxBn8wO
|
||||||
|
wIKTjsCdyvNfF7NSDTeid4eoRy4HEP0RoKoMUATCL/UVbaJC737gzdzH5pm2DfAL
|
||||||
|
KlUA2eIDLXiA2At486k4ESVu0N+FKz0YKtYT8qxY21wGJUh7xmt1NGwn5AUge2ym
|
||||||
|
QbBS40D8RjFKqQKBwQCcE3hHXdIxllguRGpQy9VBw6gaSmCtksih12J1i1CFVB8o
|
||||||
|
09HG5Q3qel5Za2WkNNlUWvsHJ7OZNLaXB+i71aFZnfJFpD7m7+HM8+t9PzuPPoSF
|
||||||
|
0f0Fz1SWj+s1Lv3ykjwda76z3pvpSBKqv5kcGiJasTaPWKBaA8KDmI++OTOFVsti
|
||||||
|
A3e6FnEbhHy5RbLoS0CL74QEwzL15pv+0WOf/s5526brPgQF2RUCi/1hXUeJOSTo
|
||||||
|
HqhsZKe2rZNSDtOKxvECgcBo5nK1nORHJgXoX84kwNxRaC99RvVEdJck537zCRlv
|
||||||
|
wDBim0HUAvqeTjCBIf9pacxZyuCXys8Qt9Vn5oz9n2i6vGzHvdingwR2+35aDMBY
|
||||||
|
j6Y35PNw13mtg+usASprVsRAwERxBMnv0ALB1a2l7O/+VEZIdJKkEgQyJVnny4bG
|
||||||
|
gABiqI8wvCbCXU+5rgItXctfWkrxAWed0AopQHu5SM2EPQ0wMyP0q0KFoAPMJVqN
|
||||||
|
m/lDtrY4EpMy9FSQD1zb+qE=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
11
config/keys/access-token-public.pem
Normal file
11
config/keys/access-token-public.pem
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyfuM67QxEonEvC2Vf21
|
||||||
|
P+fxo406Z4C+zNzxH/8tCPhMH94Sklt10WXqSfQFfZbhJPVYoZL8m0NDI7ozI7lI
|
||||||
|
MPAhAVfcFOzO6VqpFGrzMgMqmnWLrxRsL3y1rjB3LnE84W+ATcS/mlk6rwbCfrSo
|
||||||
|
RRlY3i79ol8h36jhhaHT2/iGGO3uvqAQK334lQEOlqr+YL4Kkr/GMOm86bE4PcZS
|
||||||
|
JgCTAnlCQC7TUu6jGWuocmI1nNwLXPjQvXgc+HKtJEqFGf+a0fty9fLgaR2yIzlM
|
||||||
|
9i31r3kjeKzqVe2DeLTbttd8bVWU4/KmGg8rEchtwC8wR4inuDUjwJ3FwmdBrvDp
|
||||||
|
Ga1AM8yofdbs73Lv2EgkvRLvlgaWiX2P6KdlKGHeaDj9v0YWJbiFM4rc9y5hD3lG
|
||||||
|
2unhpvP/49OFXVBT2/pm86LmxSlwsun3G2LKNOXI646jhdVHQkIVcBiHTHYQOe9/
|
||||||
|
xLqx3ZiEM7witbzuJnxIkbj/8OFgH+WDUmTQVXtbz7vdAgMBAAE=
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
40
config/keys/assertion-decryption-private.pem
Normal file
40
config/keys/assertion-decryption-private.pem
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
RqsZZ1cLu0TCOoNBkcSr79a6
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
11
config/keys/assertion-decryption-public.pem
Normal file
11
config/keys/assertion-decryption-public.pem
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtZc750+cxwDcG/lvpEHm
|
||||||
|
3fxFgp5X5df90s51R4ShKpV6dmDRYXnVil9GmXrJf/aGAqrsf6ZUvZWJrAJ2OO2X
|
||||||
|
Wt8tcqajnaWdM33BrH/QztTJkoGHZM1xLY5EpRaWo1LaG2gNGsaxG0ON9T1emKi7
|
||||||
|
XDEcI9Lmc/mhP6SuuUnvGwq1Z433vqGodorkU+T2jCfflhwfenvBcOk4GJZoJFlY
|
||||||
|
sjy9Dtlha70MJpdVFWffxs4UBhhkjckb7GbDTVxa3xvz1NEbkY2+oh/tJmuIuupA
|
||||||
|
7A6TnfYP1YPXPMRQFtSPaKMOeKW5J5IorvgQKr4C74HR9iBojJN2oJ6/BjfAaz7P
|
||||||
|
8kywLj2uo9gJemOm1wz8HZyZsz482GHa0wqpUcFfOIr0oTMiJtvLn/FSYVb5xvNg
|
||||||
|
3xWiGPMju32Z49XTX7VxTDsIjGx5wtDd4G8ILS3yUlKw0yufHacmy8Fn+Plk+Xtz
|
||||||
|
Bbz6rq4frV93/3mfVMPGgBDx8mLjVJovPBnXKBSX+SdbAgMBAAE=
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
40
config/keys/case-save-private.pem
Normal file
40
config/keys/case-save-private.pem
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
5PO2cnRk24OsUqAswTBT2qjd
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
11
config/keys/case-save-public.pem
Normal file
11
config/keys/case-save-public.pem
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzpOwECKVW0KdZwlVJtW7
|
||||||
|
tkqqa1wY1J+HhuFf/kbjmJv8fwFcGj+uyy2s5cXzgckNHz3Cv4Ki8VnQakbn83KR
|
||||||
|
TNIuMvYgwnaNY35KvVKU5R8KPJ7wV8yEUyhRyjtauaY9TaVUH0MStD3izcZ7Pfej
|
||||||
|
XJvxRtLjQ9SX/K+joHs3mkWyWDNYm9u6ecLBoPxW6BpAXiUOWnSpc0IO2njGbvnY
|
||||||
|
I7zs5tYdFjVtDTf4TOSIDXeCXc7nNUhf/yQVAEKvGmr64SihZc+11T5AXJy1eVEj
|
||||||
|
Fwj7hWqcZxhgukacOoU8oUORO0O0H1HIS8ICXHBgKL17Jq+furEInlU4Pfp1tkA7
|
||||||
|
dYh9nXQ91+hmRtTSXA1BpzWdIzC3fQqnwTsD6cyIDsPdRB9iSJTywFPbGywMIbh4
|
||||||
|
wIpUOS3s83DBtpxj2qHw7zc5Q99BP4Dd38kl9ejfdYuFYRmbzrq+BZR7ic5/LM7+
|
||||||
|
8iExYGpz3sFCr6qJAlCDK4th6TCl2ZjzgpTOF3pnC1I7AgMBAAE=
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
40
config/keys/login-private.pem
Normal file
40
config/keys/login-private.pem
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
VkpSw8QqBfhHSViEh12BQZa2
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
11
config/keys/login-public.pem
Normal file
11
config/keys/login-public.pem
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2g0IbNxsNIZ6fKaGTHTQ
|
||||||
|
pUFfgJVq3x0SZ458xAQDL0l1PZ+lnMtvS3/ZZpbF99bLuqyzUuHwi+1BJ/Nled61
|
||||||
|
oK8RdJKfUPiQUshXfvWT4/sLsYO6H+v2qw2jBv6kx3h+teDiuHMbw6ikUECr5u1k
|
||||||
|
qkjb+ls3aijtWplmN25HRhwFB/l6/0xAhEQNA36EoNb+ufsDR/2aRQYGQ6qegynp
|
||||||
|
8bUt7JDf3hW1y76UCKlKteFfIOkp4zwY0YYq/NewgKlze08LBrX+zy5xr5Vn8nE0
|
||||||
|
ZtWY8vbNC33Sf6g5D1ZlA+HvquplAWS/rPymj+IN79FeXNegmyCxF/ZafsneaUBn
|
||||||
|
GpSgXYbyASpA+OkqUqJcBEeTI4rfRZPiyx3ztaibg+rgOEM/DUV5le2WyujnsQ75
|
||||||
|
IG4SrVu/XTmF08MN8/hD1+ydBVnhVa7bE4WctqgA1T/5BP7ivAB03a1BJHpKFRh/
|
||||||
|
Q/pO5ONIK8lNGG6aImLPmtJijEvOL0VsUdp+oO87VnTFAgMBAAE=
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
package com.cygnus.client;
|
package com.cygnus.client;
|
||||||
|
|
||||||
import com.cygnus.client.model.CloudIdentitySession;
|
import com.cygnus.client.model.CloudIdentitySession;
|
||||||
|
import com.cygnus.client.model.CloudDataItem;
|
||||||
|
import com.cygnus.client.model.CloudDataRequest;
|
||||||
import com.cygnus.client.model.CloudQueryResponse;
|
import com.cygnus.client.model.CloudQueryResponse;
|
||||||
import com.cygnus.client.model.LoginPayload;
|
import com.cygnus.client.model.LoginPayload;
|
||||||
import com.cygnus.client.security.LoginEnvelopeEncryptor;
|
import com.cygnus.client.security.LoginEnvelopeEncryptor;
|
||||||
import com.cygnus.client.security.MachineTokenProvider;
|
import com.cygnus.client.security.MachineTokenProvider;
|
||||||
import java.time.Clock;
|
import java.time.Clock;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import org.springframework.core.ParameterizedTypeReference;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
@@ -14,6 +19,9 @@ import reactor.core.publisher.Mono;
|
|||||||
|
|
||||||
public class CloudIdentityClient {
|
public class CloudIdentityClient {
|
||||||
|
|
||||||
|
private static final ParameterizedTypeReference<List<CloudDataItem>> CLOUD_DATA_LIST =
|
||||||
|
new ParameterizedTypeReference<>() { };
|
||||||
|
|
||||||
private final WebClient webClient;
|
private final WebClient webClient;
|
||||||
private final MachineTokenProvider tokenProvider;
|
private final MachineTokenProvider tokenProvider;
|
||||||
private final LoginEnvelopeEncryptor encryptor;
|
private final LoginEnvelopeEncryptor encryptor;
|
||||||
@@ -73,4 +81,17 @@ public class CloudIdentityClient {
|
|||||||
.bodyToMono(CloudQueryResponse.class))
|
.bodyToMono(CloudQueryResponse.class))
|
||||||
.timeout(properties.requestTimeout());
|
.timeout(properties.requestTimeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Mono<List<CloudDataItem>> fetchData(String scope, Map<String, Object> data) {
|
||||||
|
return tokenProvider.accessToken()
|
||||||
|
.flatMap(token -> webClient.post()
|
||||||
|
.uri(properties.baseUri().resolve("/api/v1/platform/data"))
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, "Bearer " + token)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.accept(MediaType.APPLICATION_JSON)
|
||||||
|
.bodyValue(new CloudDataRequest(scope, Map.copyOf(data)))
|
||||||
|
.retrieve()
|
||||||
|
.bodyToMono(CLOUD_DATA_LIST))
|
||||||
|
.timeout(properties.requestTimeout());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.cygnus.client.model;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public record CloudDataItem(Object value, String label, String group, Map<String, Object> data) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.cygnus.client.model;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public record CloudDataRequest(String scope, Map<String, Object> data) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package com.cygnus.cloud.platform.api;
|
||||||
|
|
||||||
|
import com.cygnus.cloud.platform.service.ScopedDataException;
|
||||||
|
import com.cygnus.cloud.platform.service.ScopedDataService;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
import org.springframework.security.oauth2.jwt.Jwt;
|
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/platform/data")
|
||||||
|
public class ScopedDataController {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(ScopedDataController.class);
|
||||||
|
private final ScopedDataService service;
|
||||||
|
|
||||||
|
public ScopedDataController(ScopedDataService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
public Flux<ScopedDataItem> data(
|
||||||
|
@AuthenticationPrincipal Jwt machineJwt,
|
||||||
|
@Valid @RequestBody ScopedDataRequest request) {
|
||||||
|
if (machineJwt == null) throw new ScopedDataException("Machine authentication required");
|
||||||
|
try {
|
||||||
|
return service.fetch(UUID.fromString(machineJwt.getClaimAsString("tenant_id")), request);
|
||||||
|
} catch (IllegalArgumentException exception) {
|
||||||
|
throw new ScopedDataException("Machine tenant is invalid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(ScopedDataException.class)
|
||||||
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
|
Map<String, String> invalidRequest(ScopedDataException exception) {
|
||||||
|
LOGGER.warn("Scoped platform-data request rejected: {}", exception.getMessage());
|
||||||
|
return Map.of("code", "PLATFORM_DATA_INVALID", "message", exception.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.cygnus.cloud.platform.api;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public record ScopedDataItem(
|
||||||
|
Object value,
|
||||||
|
String label,
|
||||||
|
String group,
|
||||||
|
Map<String, Object> data) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.cygnus.cloud.platform.api;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public record ScopedDataRequest(
|
||||||
|
@NotBlank String scope,
|
||||||
|
@NotNull Map<String, Object> data) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
package com.cygnus.cloud.platform.repository;
|
||||||
|
|
||||||
|
import com.cygnus.cloud.database.ReactiveDatabaseClient;
|
||||||
|
import com.cygnus.cloud.platform.api.ScopedDataItem;
|
||||||
|
import io.vertx.sqlclient.Row;
|
||||||
|
import io.vertx.sqlclient.Tuple;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class ScopedDataRepository {
|
||||||
|
private static final String COMPANY_OPTIONS = """
|
||||||
|
SELECT ov.opt_value AS value,
|
||||||
|
ov.val_description AS label,
|
||||||
|
lower(o.description) || '.' AS group_name
|
||||||
|
FROM platform.company_options_mapping m
|
||||||
|
JOIN platform.options o ON o.option_id = m.option_id
|
||||||
|
JOIN platform.options_values ov ON ov.opt_value_id = m.opt_value_id
|
||||||
|
JOIN identity.company c ON c.company_id = m.company_id
|
||||||
|
WHERE c.tenant_id = $1
|
||||||
|
AND m.company_id = $2
|
||||||
|
AND o.isactive = 1
|
||||||
|
AND ov.isactive = 1
|
||||||
|
AND o.description = ANY($3::text[])
|
||||||
|
ORDER BY o.description, ov.val_description
|
||||||
|
""";
|
||||||
|
private static final String PORTFOLIO_OPTIONS = """
|
||||||
|
SELECT ov.opt_value AS value,
|
||||||
|
ov.val_description AS label,
|
||||||
|
lower(o.description) || '.' AS group_name
|
||||||
|
FROM platform.options_mapping m
|
||||||
|
JOIN platform.options o ON o.option_id = m.option_id
|
||||||
|
JOIN platform.options_values ov ON ov.opt_value_id = m.opt_value_id
|
||||||
|
JOIN identity.company c ON c.company_id = m.company_id
|
||||||
|
JOIN platform.company_branch_portfolios cbp
|
||||||
|
ON cbp.company_id = m.company_id
|
||||||
|
AND cbp.portfolio_reference = m.portfolio_reference
|
||||||
|
WHERE c.tenant_id = $1
|
||||||
|
AND m.company_id = $2
|
||||||
|
AND cbp.company_branch_id = $3
|
||||||
|
AND m.portfolio_reference = $4
|
||||||
|
AND o.isactive = 1
|
||||||
|
AND ov.isactive = 1
|
||||||
|
AND o.description = ANY($5::text[])
|
||||||
|
ORDER BY o.description, ov.val_description
|
||||||
|
""";
|
||||||
|
private static final String REPORT_DEFINITION = """
|
||||||
|
SELECT r.report_key, r.report_title, r.hide_leading_zero_columns,
|
||||||
|
c.column_key, c.column_label, c.display_order, c.alignment,
|
||||||
|
c.column_width, c.is_visible, c.is_totalled
|
||||||
|
FROM platform.report_definition r
|
||||||
|
JOIN platform.report_column_definition c ON c.report_key = r.report_key
|
||||||
|
WHERE r.report_key = $1
|
||||||
|
AND r.enabled = true
|
||||||
|
ORDER BY c.display_order
|
||||||
|
""";
|
||||||
|
|
||||||
|
private final ReactiveDatabaseClient database;
|
||||||
|
|
||||||
|
public ScopedDataRepository(ReactiveDatabaseClient database) {
|
||||||
|
this.database = database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Flux<ScopedDataItem> companyOptions(
|
||||||
|
UUID tenantId, short companyId, List<String> descriptions) {
|
||||||
|
return rows(COMPANY_OPTIONS, Tuple.of(tenantId, companyId, descriptions.toArray(String[]::new)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Flux<ScopedDataItem> portfolioOptions(
|
||||||
|
UUID tenantId, short companyId, short branchId, UUID portfolioReference,
|
||||||
|
List<String> descriptions) {
|
||||||
|
return rows(PORTFOLIO_OPTIONS,
|
||||||
|
Tuple.of(tenantId, companyId, branchId, portfolioReference,
|
||||||
|
descriptions.toArray(String[]::new)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Flux<ScopedDataItem> reportDefinition(String reportKey) {
|
||||||
|
return database.preparedQuery(REPORT_DEFINITION, Tuple.of(reportKey))
|
||||||
|
.flatMapMany(result -> Flux.fromIterable(result))
|
||||||
|
.map(row -> new ScopedDataItem(null, null, null, Map.of(
|
||||||
|
"reportKey", row.getString("report_key"),
|
||||||
|
"reportTitle", row.getString("report_title"),
|
||||||
|
"hideLeadingZeroColumns", row.getBoolean("hide_leading_zero_columns"),
|
||||||
|
"columnKey", row.getString("column_key"),
|
||||||
|
"columnLabel", row.getString("column_label"),
|
||||||
|
"displayOrder", row.getInteger("display_order"),
|
||||||
|
"alignment", row.getString("alignment"),
|
||||||
|
"columnWidth", row.getInteger("column_width"),
|
||||||
|
"visible", row.getBoolean("is_visible"),
|
||||||
|
"totalled", row.getBoolean("is_totalled"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Flux<ScopedDataItem> rows(String sql, Tuple parameters) {
|
||||||
|
return database.preparedQuery(sql, parameters)
|
||||||
|
.flatMapMany(result -> Flux.fromIterable(result))
|
||||||
|
.map(this::item);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ScopedDataItem item(Row row) {
|
||||||
|
return new ScopedDataItem(
|
||||||
|
row.getValue("value"), row.getString("label"), row.getString("group_name"), Map.of());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.cygnus.cloud.platform.service;
|
||||||
|
|
||||||
|
public class ScopedDataException extends RuntimeException {
|
||||||
|
public ScopedDataException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
package com.cygnus.cloud.platform.service;
|
||||||
|
|
||||||
|
import com.cygnus.cloud.platform.api.ScopedDataItem;
|
||||||
|
import com.cygnus.cloud.platform.api.ScopedDataRequest;
|
||||||
|
import com.cygnus.cloud.platform.repository.ScopedDataRepository;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ScopedDataService {
|
||||||
|
public static final String COMPANY_OPTIONS = "company-options";
|
||||||
|
public static final String PORTFOLIO_OPTIONS = "portfolio-options";
|
||||||
|
public static final String REPORT_DEFINITION = "report-definition";
|
||||||
|
|
||||||
|
private final ScopedDataRepository repository;
|
||||||
|
|
||||||
|
public ScopedDataService(ScopedDataRepository repository) {
|
||||||
|
this.repository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Flux<ScopedDataItem> fetch(UUID tenantId, ScopedDataRequest request) {
|
||||||
|
Map<String, Object> data = request.data();
|
||||||
|
String scope = request.scope().trim().toLowerCase(Locale.ROOT);
|
||||||
|
if (REPORT_DEFINITION.equals(scope)) {
|
||||||
|
return repository.reportDefinition(textValue(data, "reportKey"));
|
||||||
|
}
|
||||||
|
short companyId = shortValue(data, "companyId");
|
||||||
|
List<String> descriptions = descriptions(data);
|
||||||
|
return switch (scope) {
|
||||||
|
case COMPANY_OPTIONS -> repository.companyOptions(tenantId, companyId, descriptions);
|
||||||
|
case PORTFOLIO_OPTIONS -> repository.portfolioOptions(
|
||||||
|
tenantId, companyId, shortValue(data, "branchId"),
|
||||||
|
uuidValue(data, "portfolioReference"), descriptions);
|
||||||
|
default -> Flux.error(new ScopedDataException("Unsupported data scope"));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private String textValue(Map<String, Object> data, String name) {
|
||||||
|
String value = String.valueOf(data.getOrDefault(name, "")).trim();
|
||||||
|
if (value.isEmpty() || value.length() > 100 || !value.matches("[a-z0-9-]+")) {
|
||||||
|
throw new ScopedDataException(name + " is invalid");
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private UUID uuidValue(Map<String, Object> data, String name) {
|
||||||
|
try {
|
||||||
|
return UUID.fromString(String.valueOf(data.get(name)));
|
||||||
|
} catch (RuntimeException exception) {
|
||||||
|
throw new ScopedDataException(name + " must be a valid UUID");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private short shortValue(Map<String, Object> data, String name) {
|
||||||
|
Object value = data.get(name);
|
||||||
|
try {
|
||||||
|
short result = value instanceof Number number
|
||||||
|
? number.shortValue() : Short.parseShort(String.valueOf(value));
|
||||||
|
if (result <= 0) throw new NumberFormatException();
|
||||||
|
return result;
|
||||||
|
} catch (RuntimeException exception) {
|
||||||
|
throw new ScopedDataException(name + " must be a positive number");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> descriptions(Map<String, Object> data) {
|
||||||
|
Object value = data.get("descriptions");
|
||||||
|
if (!(value instanceof List<?> values)) {
|
||||||
|
throw new ScopedDataException("descriptions must be a non-empty list");
|
||||||
|
}
|
||||||
|
List<String> result = values.stream()
|
||||||
|
.map(String::valueOf)
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(text -> !text.isEmpty())
|
||||||
|
.map(text -> text.toUpperCase(Locale.ROOT))
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
if (result.isEmpty() || result.size() > 20) {
|
||||||
|
throw new ScopedDataException("descriptions must contain between 1 and 20 values");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,6 +38,8 @@ public class CloudSecurityConfiguration {
|
|||||||
.hasAuthority("SCOPE_identity.login")
|
.hasAuthority("SCOPE_identity.login")
|
||||||
.pathMatchers("/api/v1/queries/**")
|
.pathMatchers("/api/v1/queries/**")
|
||||||
.hasAuthority("SCOPE_identity.login")
|
.hasAuthority("SCOPE_identity.login")
|
||||||
|
.pathMatchers("/api/v1/platform/data")
|
||||||
|
.hasAuthority("SCOPE_identity.login")
|
||||||
.pathMatchers("/api/v1/admin/**")
|
.pathMatchers("/api/v1/admin/**")
|
||||||
.hasAuthority("SCOPE_cygnus.admin")
|
.hasAuthority("SCOPE_cygnus.admin")
|
||||||
.anyExchange().authenticated())
|
.anyExchange().authenticated())
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS platform.report_definition (
|
||||||
|
report_key varchar(100) PRIMARY KEY,
|
||||||
|
report_title varchar(200) NOT NULL,
|
||||||
|
hide_leading_zero_columns boolean NOT NULL DEFAULT false,
|
||||||
|
enabled boolean NOT NULL DEFAULT true,
|
||||||
|
updated_at timestamptz NOT NULL DEFAULT current_timestamp
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS platform.report_column_definition (
|
||||||
|
report_key varchar(100) NOT NULL REFERENCES platform.report_definition(report_key) ON DELETE CASCADE,
|
||||||
|
column_key varchar(100) NOT NULL,
|
||||||
|
column_label varchar(100) NOT NULL,
|
||||||
|
display_order integer NOT NULL,
|
||||||
|
alignment varchar(10) NOT NULL DEFAULT 'left',
|
||||||
|
column_width integer NOT NULL DEFAULT 80,
|
||||||
|
is_visible boolean NOT NULL DEFAULT true,
|
||||||
|
is_totalled boolean NOT NULL DEFAULT false,
|
||||||
|
PRIMARY KEY (report_key, column_key)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO platform.report_definition(report_key, report_title, hide_leading_zero_columns)
|
||||||
|
VALUES ('hourly-mis', 'HOURLY MIS (EDP)', true)
|
||||||
|
ON CONFLICT (report_key) DO NOTHING;
|
||||||
|
|
||||||
|
INSERT INTO platform.report_column_definition
|
||||||
|
(report_key,column_key,column_label,display_order,alignment,column_width,is_visible,is_totalled)
|
||||||
|
VALUES ('hourly-mis','date','Date',0,'left',110,true,false),
|
||||||
|
('hourly-mis','total','Total',25,'center',70,true,true)
|
||||||
|
ON CONFLICT (report_key,column_key) DO NOTHING;
|
||||||
|
|
||||||
|
INSERT INTO platform.report_column_definition
|
||||||
|
(report_key,column_key,column_label,display_order,alignment,column_width,is_visible,is_totalled)
|
||||||
|
SELECT 'hourly-mis', 'hour'||hour, hour::text, hour+1, 'center', 55, true, true
|
||||||
|
FROM generate_series(0,23) hour
|
||||||
|
ON CONFLICT (report_key,column_key) DO NOTHING;
|
||||||
|
|
||||||
|
DELETE FROM platform.application_query
|
||||||
|
WHERE query_key = 'report-definition';
|
||||||
BIN
cygnus-installer/.DS_Store
vendored
BIN
cygnus-installer/.DS_Store
vendored
Binary file not shown.
@@ -42,8 +42,9 @@ import org.springframework.stereotype.Service;
|
|||||||
public class SwingInstallationWizard {
|
public class SwingInstallationWizard {
|
||||||
|
|
||||||
private static final String WELCOME = "welcome";
|
private static final String WELCOME = "welcome";
|
||||||
|
private static final String DATABASE = "database";
|
||||||
|
private static final String DEPLOYMENT = "deployment";
|
||||||
private static final String DETAILS = "details";
|
private static final String DETAILS = "details";
|
||||||
private static final String RUNTIME = "runtime";
|
|
||||||
private static final String INSTALLING = "installing";
|
private static final String INSTALLING = "installing";
|
||||||
private static final Color ACCENT = new Color(35, 97, 146);
|
private static final Color ACCENT = new Color(35, 97, 146);
|
||||||
private static final Color BACKGROUND = new Color(236, 243, 247);
|
private static final Color BACKGROUND = new Color(236, 243, 247);
|
||||||
@@ -68,7 +69,9 @@ public class SwingInstallationWizard {
|
|||||||
private JPasswordField dockerPassword;
|
private JPasswordField dockerPassword;
|
||||||
private JTextField outputDirectory;
|
private JTextField outputDirectory;
|
||||||
private JTextField containerCloudServiceUrl;
|
private JTextField containerCloudServiceUrl;
|
||||||
private JTextField databaseUrl;
|
private JTextField databaseHost;
|
||||||
|
private JTextField databasePort;
|
||||||
|
private JTextField databaseName;
|
||||||
private JTextField databaseUsername;
|
private JTextField databaseUsername;
|
||||||
private JPasswordField databasePassword;
|
private JPasswordField databasePassword;
|
||||||
private JTextField redisHost;
|
private JTextField redisHost;
|
||||||
@@ -139,8 +142,9 @@ public class SwingInstallationWizard {
|
|||||||
cardPanel = new JPanel(cards);
|
cardPanel = new JPanel(cards);
|
||||||
cardPanel.setBackground(BACKGROUND);
|
cardPanel.setBackground(BACKGROUND);
|
||||||
cardPanel.add(welcomePanel(), WELCOME);
|
cardPanel.add(welcomePanel(), WELCOME);
|
||||||
|
cardPanel.add(databasePanel(), DATABASE);
|
||||||
|
cardPanel.add(deploymentPanel(), DEPLOYMENT);
|
||||||
cardPanel.add(detailsPanel(), DETAILS);
|
cardPanel.add(detailsPanel(), DETAILS);
|
||||||
cardPanel.add(runtimePanel(), RUNTIME);
|
|
||||||
cardPanel.add(installingPanel(), INSTALLING);
|
cardPanel.add(installingPanel(), INSTALLING);
|
||||||
root.add(cardPanel, BorderLayout.CENTER);
|
root.add(cardPanel, BorderLayout.CENTER);
|
||||||
return root;
|
return root;
|
||||||
@@ -197,7 +201,8 @@ public class SwingInstallationWizard {
|
|||||||
JPanel top = new JPanel(new BorderLayout());
|
JPanel top = new JPanel(new BorderLayout());
|
||||||
top.setOpaque(false);
|
top.setOpaque(false);
|
||||||
top.add(heading("Installation details"), BorderLayout.NORTH);
|
top.add(heading("Installation details"), BorderLayout.NORTH);
|
||||||
top.add(text("Enter the activation details supplied by Technobee."), BorderLayout.SOUTH);
|
top.add(text("Review and enter the activation details supplied by Technobee."),
|
||||||
|
BorderLayout.SOUTH);
|
||||||
panel.add(top, BorderLayout.NORTH);
|
panel.add(top, BorderLayout.NORTH);
|
||||||
|
|
||||||
JPanel form = new JPanel(new GridBagLayout());
|
JPanel form = new JPanel(new GridBagLayout());
|
||||||
@@ -209,6 +214,32 @@ public class SwingInstallationWizard {
|
|||||||
licenseKey = new JPasswordField();
|
licenseKey = new JPasswordField();
|
||||||
installationCode = new JTextField();
|
installationCode = new JTextField();
|
||||||
installationName = new JTextField();
|
installationName = new JTextField();
|
||||||
|
int row = 0;
|
||||||
|
row = addField(form, row, "Client code", clientCode, null);
|
||||||
|
row = addField(form, row, "License key", licenseKey, null);
|
||||||
|
row = addField(form, row, "Installation code", installationCode, null);
|
||||||
|
addField(form, row, "Installation name", installationName, null);
|
||||||
|
panel.add(form, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
JButton back = secondaryButton("Back");
|
||||||
|
back.addActionListener(event -> cards.show(cardPanel, DEPLOYMENT));
|
||||||
|
JButton install = primaryButton("Install");
|
||||||
|
install.addActionListener(event -> startInstallation());
|
||||||
|
panel.add(actions(back, install), BorderLayout.SOUTH);
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel deploymentPanel() {
|
||||||
|
JPanel panel = contentPanel();
|
||||||
|
panel.setLayout(new BorderLayout(0, 12));
|
||||||
|
JPanel top = new JPanel(new BorderLayout());
|
||||||
|
top.setOpaque(false);
|
||||||
|
top.add(heading("Docker and deployment"), BorderLayout.NORTH);
|
||||||
|
top.add(text("Configure the container image, registry and deployment location."),
|
||||||
|
BorderLayout.SOUTH);
|
||||||
|
panel.add(top, BorderLayout.NORTH);
|
||||||
|
|
||||||
|
JPanel form = formPanel();
|
||||||
containerCloudServiceUrl =
|
containerCloudServiceUrl =
|
||||||
new JTextField(settings.containerCloudServiceUrl().toString());
|
new JTextField(settings.containerCloudServiceUrl().toString());
|
||||||
containerCloudServiceUrl.setEditable(true);
|
containerCloudServiceUrl.setEditable(true);
|
||||||
@@ -220,10 +251,6 @@ public class SwingInstallationWizard {
|
|||||||
outputDirectory = new JTextField(
|
outputDirectory = new JTextField(
|
||||||
settings.defaultOutputDirectory().toAbsolutePath().normalize().toString());
|
settings.defaultOutputDirectory().toAbsolutePath().normalize().toString());
|
||||||
int row = 0;
|
int row = 0;
|
||||||
row = addField(form, row, "Client code", clientCode, null);
|
|
||||||
row = addField(form, row, "License key", licenseKey, null);
|
|
||||||
row = addField(form, row, "Installation code", installationCode, null);
|
|
||||||
row = addField(form, row, "Installation name", installationName, null);
|
|
||||||
row = addField(
|
row = addField(
|
||||||
form,
|
form,
|
||||||
row,
|
row,
|
||||||
@@ -237,8 +264,11 @@ public class SwingInstallationWizard {
|
|||||||
dockerImage,
|
dockerImage,
|
||||||
null);
|
null);
|
||||||
row = addField(form, row, "Docker registry", dockerRegistry, null);
|
row = addField(form, row, "Docker registry", dockerRegistry, null);
|
||||||
row = addField(form, row, "Docker username", dockerUsername, null);
|
row = addComponentField(
|
||||||
row = addField(form, row, "Docker password", dockerPassword, null);
|
form,
|
||||||
|
row,
|
||||||
|
"Docker credentials",
|
||||||
|
credentialFields(dockerUsername, dockerPassword));
|
||||||
for (String field : profile.optionalInstallationFields()) {
|
for (String field : profile.optionalInstallationFields()) {
|
||||||
JTextField input = new JTextField();
|
JTextField input = new JTextField();
|
||||||
optionalFields.put(field, input);
|
optionalFields.put(field, input);
|
||||||
@@ -254,31 +284,28 @@ public class SwingInstallationWizard {
|
|||||||
panel.add(scroll, BorderLayout.CENTER);
|
panel.add(scroll, BorderLayout.CENTER);
|
||||||
|
|
||||||
JButton back = secondaryButton("Back");
|
JButton back = secondaryButton("Back");
|
||||||
back.addActionListener(event -> cards.show(cardPanel, WELCOME));
|
back.addActionListener(event -> cards.show(cardPanel, DATABASE));
|
||||||
JButton next = primaryButton("Next");
|
JButton next = primaryButton("Next");
|
||||||
next.addActionListener(event -> cards.show(cardPanel, RUNTIME));
|
next.addActionListener(event -> cards.show(cardPanel, DETAILS));
|
||||||
panel.add(actions(back, next), BorderLayout.SOUTH);
|
panel.add(actions(back, next), BorderLayout.SOUTH);
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JPanel runtimePanel() {
|
private JPanel databasePanel() {
|
||||||
JPanel panel = contentPanel();
|
JPanel panel = contentPanel();
|
||||||
panel.setLayout(new BorderLayout(0, 12));
|
panel.setLayout(new BorderLayout(0, 12));
|
||||||
|
|
||||||
JPanel top = new JPanel(new BorderLayout());
|
JPanel top = new JPanel(new BorderLayout());
|
||||||
top.setOpaque(false);
|
top.setOpaque(false);
|
||||||
top.add(heading("Runtime configuration"), BorderLayout.NORTH);
|
top.add(heading("Database and Redis"), BorderLayout.NORTH);
|
||||||
top.add(text("Configure the database and Redis services used by the "
|
top.add(text("Configure the database and Redis services used by the "
|
||||||
+ profile.displayName() + " on-premises container."), BorderLayout.SOUTH);
|
+ profile.displayName() + " on-premises container."), BorderLayout.SOUTH);
|
||||||
panel.add(top, BorderLayout.NORTH);
|
panel.add(top, BorderLayout.NORTH);
|
||||||
|
|
||||||
JPanel form = new JPanel(new GridBagLayout());
|
JPanel form = formPanel();
|
||||||
form.setBackground(PANEL);
|
databaseHost = new JTextField("localhost");
|
||||||
form.setBorder(BorderFactory.createCompoundBorder(
|
databasePort = new JTextField("5432");
|
||||||
BorderFactory.createLineBorder(new Color(205, 217, 225)),
|
databaseName = new JTextField("matrix");
|
||||||
BorderFactory.createEmptyBorder(14, 16, 14, 16)));
|
|
||||||
|
|
||||||
databaseUrl = new JTextField("jdbc:postgresql://localhost:5432/matrix");
|
|
||||||
databaseUsername = new JTextField("postgres");
|
databaseUsername = new JTextField("postgres");
|
||||||
databasePassword = new JPasswordField();
|
databasePassword = new JPasswordField();
|
||||||
redisHost = new JTextField("localhost");
|
redisHost = new JTextField("localhost");
|
||||||
@@ -287,9 +314,16 @@ public class SwingInstallationWizard {
|
|||||||
cloudRequestTimeout = new JTextField("PT10S");
|
cloudRequestTimeout = new JTextField("PT10S");
|
||||||
tokenRefreshSkew = new JTextField("PT30S");
|
tokenRefreshSkew = new JTextField("PT30S");
|
||||||
int row = 0;
|
int row = 0;
|
||||||
row = addField(form, row, "Database URL", databaseUrl, null);
|
row = addComponentField(
|
||||||
row = addField(form, row, "Database username", databaseUsername, null);
|
form,
|
||||||
row = addField(form, row, "Database password", databasePassword, null);
|
row,
|
||||||
|
"Database",
|
||||||
|
databaseConnectionFields());
|
||||||
|
row = addComponentField(
|
||||||
|
form,
|
||||||
|
row,
|
||||||
|
"Database credentials",
|
||||||
|
credentialFields(databaseUsername, databasePassword));
|
||||||
row = addField(form, row, "Redis host", redisHost, null);
|
row = addField(form, row, "Redis host", redisHost, null);
|
||||||
row = addField(form, row, "Redis port", redisPort, null);
|
row = addField(form, row, "Redis port", redisPort, null);
|
||||||
row = addField(form, row, "Redis password", redisPassword, null);
|
row = addField(form, row, "Redis password", redisPassword, null);
|
||||||
@@ -304,10 +338,10 @@ public class SwingInstallationWizard {
|
|||||||
panel.add(form, BorderLayout.CENTER);
|
panel.add(form, BorderLayout.CENTER);
|
||||||
|
|
||||||
JButton back = secondaryButton("Back");
|
JButton back = secondaryButton("Back");
|
||||||
back.addActionListener(event -> cards.show(cardPanel, DETAILS));
|
back.addActionListener(event -> cards.show(cardPanel, WELCOME));
|
||||||
JButton install = primaryButton("Install");
|
JButton next = primaryButton("Next");
|
||||||
install.addActionListener(event -> startInstallation());
|
next.addActionListener(event -> cards.show(cardPanel, DEPLOYMENT));
|
||||||
panel.add(actions(back, install), BorderLayout.SOUTH);
|
panel.add(actions(back, next), BorderLayout.SOUTH);
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,7 +407,7 @@ public class SwingInstallationWizard {
|
|||||||
progressBar.setValue(0);
|
progressBar.setValue(0);
|
||||||
progressPercentage.setText("0%");
|
progressPercentage.setText("0%");
|
||||||
progressMessage.setText("Preparing installation");
|
progressMessage.setText("Preparing installation");
|
||||||
cards.show(cardPanel, RUNTIME);
|
cards.show(cardPanel, DEPLOYMENT);
|
||||||
containerCloudServiceUrl.requestFocusInWindow();
|
containerCloudServiceUrl.requestFocusInWindow();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -415,8 +449,8 @@ public class SwingInstallationWizard {
|
|||||||
button.setText("Check Docker and continue");
|
button.setText("Check Docker and continue");
|
||||||
try {
|
try {
|
||||||
get();
|
get();
|
||||||
cards.show(cardPanel, DETAILS);
|
cards.show(cardPanel, DATABASE);
|
||||||
clientCode.requestFocusInWindow();
|
databaseHost.requestFocusInWindow();
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
showError(message(exception));
|
showError(message(exception));
|
||||||
}
|
}
|
||||||
@@ -445,7 +479,12 @@ public class SwingInstallationWizard {
|
|||||||
optionalValues(),
|
optionalValues(),
|
||||||
new RuntimeConfiguration(
|
new RuntimeConfiguration(
|
||||||
containerCloudServiceUrl.getText(),
|
containerCloudServiceUrl.getText(),
|
||||||
databaseUrl.getText(),
|
"jdbc:postgresql://"
|
||||||
|
+ databaseHost.getText().trim()
|
||||||
|
+ ":"
|
||||||
|
+ databasePort.getText().trim()
|
||||||
|
+ "/"
|
||||||
|
+ databaseName.getText().trim(),
|
||||||
databaseUsername.getText(),
|
databaseUsername.getText(),
|
||||||
new String(databaseSecret),
|
new String(databaseSecret),
|
||||||
redisHost.getText(),
|
redisHost.getText(),
|
||||||
@@ -559,7 +598,9 @@ public class SwingInstallationWizard {
|
|||||||
validateAbsoluteHttpUrl(
|
validateAbsoluteHttpUrl(
|
||||||
runtime.containerCloudServiceUrl(),
|
runtime.containerCloudServiceUrl(),
|
||||||
"Container cloud service URL");
|
"Container cloud service URL");
|
||||||
if (runtime.databaseUrl().isBlank()
|
if (databaseHost.getText().isBlank()
|
||||||
|
|| databasePort.getText().isBlank()
|
||||||
|
|| databaseName.getText().isBlank()
|
||||||
|| runtime.databaseUsername().isBlank()
|
|| runtime.databaseUsername().isBlank()
|
||||||
|| runtime.databasePassword().isBlank()) {
|
|| runtime.databasePassword().isBlank()) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
@@ -632,6 +673,95 @@ public class SwingInstallationWizard {
|
|||||||
return row + 1;
|
return row + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int addComponentField(
|
||||||
|
JPanel form,
|
||||||
|
int row,
|
||||||
|
String label,
|
||||||
|
Component input) {
|
||||||
|
GridBagConstraints labelConstraints = constraints(0, row);
|
||||||
|
labelConstraints.weightx = 0;
|
||||||
|
labelConstraints.fill = GridBagConstraints.NONE;
|
||||||
|
labelConstraints.anchor = GridBagConstraints.LINE_START;
|
||||||
|
JLabel fieldLabel = new JLabel(label);
|
||||||
|
fieldLabel.setFont(fieldLabel.getFont().deriveFont(Font.BOLD, 12f));
|
||||||
|
form.add(fieldLabel, labelConstraints);
|
||||||
|
|
||||||
|
GridBagConstraints inputConstraints = constraints(1, row);
|
||||||
|
inputConstraints.weightx = 1;
|
||||||
|
inputConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||||
|
form.add(input, inputConstraints);
|
||||||
|
return row + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel formPanel() {
|
||||||
|
JPanel form = new JPanel(new GridBagLayout());
|
||||||
|
form.setBackground(PANEL);
|
||||||
|
form.setBorder(BorderFactory.createCompoundBorder(
|
||||||
|
BorderFactory.createLineBorder(new Color(205, 217, 225)),
|
||||||
|
BorderFactory.createEmptyBorder(14, 16, 14, 16)));
|
||||||
|
return form;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel databaseConnectionFields() {
|
||||||
|
JPanel fields = inlineFieldsPanel();
|
||||||
|
addInlineField(fields, databaseHost, 0, 0.50);
|
||||||
|
addInlineSeparator(fields, ":", 1);
|
||||||
|
addInlineField(fields, databasePort, 2, 0.15);
|
||||||
|
addInlineSeparator(fields, "/", 3);
|
||||||
|
addInlineField(fields, databaseName, 4, 0.35);
|
||||||
|
databaseHost.setToolTipText("Database host");
|
||||||
|
databasePort.setToolTipText("Database port");
|
||||||
|
databaseName.setToolTipText("Database name");
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel credentialFields(JTextField username, JTextField password) {
|
||||||
|
JPanel fields = inlineFieldsPanel();
|
||||||
|
addInlineLabel(fields, "Username", 0);
|
||||||
|
addInlineField(fields, username, 1, 0.5);
|
||||||
|
addInlineLabel(fields, "Password", 2);
|
||||||
|
addInlineField(fields, password, 3, 0.5);
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel inlineFieldsPanel() {
|
||||||
|
JPanel fields = new JPanel(new GridBagLayout());
|
||||||
|
fields.setOpaque(false);
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addInlineField(
|
||||||
|
JPanel panel,
|
||||||
|
JTextField field,
|
||||||
|
int column,
|
||||||
|
double weight) {
|
||||||
|
GridBagConstraints constraints = new GridBagConstraints();
|
||||||
|
constraints.gridx = column;
|
||||||
|
constraints.weightx = weight;
|
||||||
|
constraints.fill = GridBagConstraints.HORIZONTAL;
|
||||||
|
constraints.insets = new Insets(0, column == 0 ? 0 : 5, 0, 0);
|
||||||
|
field.setPreferredSize(new Dimension(120, 29));
|
||||||
|
panel.add(field, constraints);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addInlineLabel(JPanel panel, String text, int column) {
|
||||||
|
GridBagConstraints constraints = new GridBagConstraints();
|
||||||
|
constraints.gridx = column;
|
||||||
|
constraints.weightx = 0;
|
||||||
|
constraints.insets = new Insets(0, column == 0 ? 0 : 12, 0, 5);
|
||||||
|
JLabel label = new JLabel(text);
|
||||||
|
label.setForeground(new Color(75, 88, 99));
|
||||||
|
panel.add(label, constraints);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addInlineSeparator(JPanel panel, String text, int column) {
|
||||||
|
GridBagConstraints constraints = new GridBagConstraints();
|
||||||
|
constraints.gridx = column;
|
||||||
|
constraints.weightx = 0;
|
||||||
|
constraints.insets = new Insets(0, 5, 0, 0);
|
||||||
|
panel.add(new JLabel(text), constraints);
|
||||||
|
}
|
||||||
|
|
||||||
private GridBagConstraints constraints(int column, int row) {
|
private GridBagConstraints constraints(int column, int row) {
|
||||||
GridBagConstraints constraints = new GridBagConstraints();
|
GridBagConstraints constraints = new GridBagConstraints();
|
||||||
constraints.gridx = column;
|
constraints.gridx = column;
|
||||||
@@ -664,6 +794,7 @@ public class SwingInstallationWizard {
|
|||||||
JLabel label = new JLabel(value);
|
JLabel label = new JLabel(value);
|
||||||
label.setFont(label.getFont().deriveFont(Font.BOLD, 19f));
|
label.setFont(label.getFont().deriveFont(Font.BOLD, 19f));
|
||||||
label.setForeground(new Color(35, 48, 58));
|
label.setForeground(new Color(35, 48, 58));
|
||||||
|
label.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -677,6 +808,7 @@ public class SwingInstallationWizard {
|
|||||||
private JPanel summaryRow(String label, String value) {
|
private JPanel summaryRow(String label, String value) {
|
||||||
JPanel row = new JPanel(new BorderLayout(18, 0));
|
JPanel row = new JPanel(new BorderLayout(18, 0));
|
||||||
row.setOpaque(false);
|
row.setOpaque(false);
|
||||||
|
row.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||||
row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
|
row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
|
||||||
JLabel name = new JLabel(label);
|
JLabel name = new JLabel(label);
|
||||||
name.setPreferredSize(new Dimension(130, 20));
|
name.setPreferredSize(new Dimension(130, 20));
|
||||||
@@ -691,7 +823,8 @@ public class SwingInstallationWizard {
|
|||||||
JPanel row = new JPanel(new BorderLayout(18, 0));
|
JPanel row = new JPanel(new BorderLayout(18, 0));
|
||||||
row.setOpaque(false);
|
row.setOpaque(false);
|
||||||
row.setAlignmentX(Component.LEFT_ALIGNMENT);
|
row.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||||
row.setMaximumSize(new Dimension(Integer.MAX_VALUE, 34));
|
row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
|
||||||
|
row.setMaximumSize(new Dimension(Integer.MAX_VALUE, 42));
|
||||||
JLabel name = new JLabel(label);
|
JLabel name = new JLabel(label);
|
||||||
name.setFont(name.getFont().deriveFont(Font.BOLD));
|
name.setFont(name.getFont().deriveFont(Font.BOLD));
|
||||||
name.setPreferredSize(new Dimension(130, 28));
|
name.setPreferredSize(new Dimension(130, 28));
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public class TechnobeeServiceInstallerApplication implements CommandLineRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
disableAccidentalSpringDebug(args);
|
||||||
SpringApplication application =
|
SpringApplication application =
|
||||||
new SpringApplication(TechnobeeServiceInstallerApplication.class);
|
new SpringApplication(TechnobeeServiceInstallerApplication.class);
|
||||||
application.setWebApplicationType(WebApplicationType.NONE);
|
application.setWebApplicationType(WebApplicationType.NONE);
|
||||||
@@ -39,6 +40,18 @@ public class TechnobeeServiceInstallerApplication implements CommandLineRunner {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void disableAccidentalSpringDebug(String[] args) {
|
||||||
|
boolean debugRequested = Arrays.stream(args)
|
||||||
|
.anyMatch(argument -> "--debug".equals(argument)
|
||||||
|
|| "--debug=true".equalsIgnoreCase(argument));
|
||||||
|
if (!debugRequested && System.getProperty("debug") == null) {
|
||||||
|
// DEBUG is commonly exported by developer tools with non-boolean
|
||||||
|
// values. Spring maps it to its own debug switch unless a more
|
||||||
|
// specific system property is present.
|
||||||
|
System.setProperty("debug", "false");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String... args) {
|
public void run(String... args) {
|
||||||
boolean cli = Arrays.asList(args).contains("--cli");
|
boolean cli = Arrays.asList(args).contains("--cli");
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.cygnus.installer;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class TechnobeeServiceInstallerApplicationTest {
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
void clearDebugProperty() {
|
||||||
|
System.clearProperty("debug");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void disablesDebugUnlessExplicitlyRequested() {
|
||||||
|
TechnobeeServiceInstallerApplication.disableAccidentalSpringDebug(new String[0]);
|
||||||
|
|
||||||
|
assertThat(System.getProperty("debug")).isEqualTo("false");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preservesExplicitDebugRequest() {
|
||||||
|
TechnobeeServiceInstallerApplication.disableAccidentalSpringDebug(
|
||||||
|
new String[] {"--debug"});
|
||||||
|
|
||||||
|
assertThat(System.getProperty("debug")).isNull();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -42,6 +42,15 @@ public enum ApplicationMessage {
|
|||||||
"The application details were saved successfully.", ""),
|
"The application details were saved successfully.", ""),
|
||||||
APPLICATIONS_LOADED(200, "APP-2002", "Applications loaded",
|
APPLICATIONS_LOADED(200, "APP-2002", "Applications loaded",
|
||||||
"The application records were loaded successfully.", ""),
|
"The application records were loaded successfully.", ""),
|
||||||
|
DEDUPE_CHECK_COMPLETED(200, "DDP-2001", "Dedupe check completed",
|
||||||
|
"The dedupe check completed successfully.", ""),
|
||||||
|
DEDUPE_CHECK_FAILED(500, "DDP-5001", "Dedupe check failed",
|
||||||
|
"Cygnus could not complete the dedupe check.",
|
||||||
|
"Try again. If the issue continues, contact support."),
|
||||||
|
DEDUPE_DETAILS_LOADED(200, "DDP-2002", "Dedupe details loaded",
|
||||||
|
"Matching records were loaded successfully.", ""),
|
||||||
|
DEDUPE_DETAILS_SAVED(200, "DDP-2003", "Dedupe details saved",
|
||||||
|
"Dedupe remarks were saved successfully.", ""),
|
||||||
APPLICATION_LOAD_FAILED(500, "APP-5002", "Applications could not be loaded",
|
APPLICATION_LOAD_FAILED(500, "APP-5002", "Applications could not be loaded",
|
||||||
"Cygnus could not load the application details.",
|
"Cygnus could not load the application details.",
|
||||||
"Try again. If the issue continues, share the reference ID with support."),
|
"Try again. If the issue continues, share the reference ID with support."),
|
||||||
|
|||||||
16
cygnus-lib/src/main/java/lib/models/Allocation.java
Normal file
16
cygnus-lib/src/main/java/lib/models/Allocation.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Allocation {
|
||||||
|
private List<CutOffRecord> allocationlist = new ArrayList<>();
|
||||||
|
private String allocTime;
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
}
|
||||||
13
cygnus-lib/src/main/java/lib/models/CaseGrid.java
Normal file
13
cygnus-lib/src/main/java/lib/models/CaseGrid.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CaseGrid {
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private boolean processFlag;
|
||||||
|
private String portfolioId;
|
||||||
|
private String caseID;
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/CutOffList.java
Normal file
17
cygnus-lib/src/main/java/lib/models/CutOffList.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CutOffList {
|
||||||
|
private List<CutOffRecord> cofflist = new ArrayList<>();
|
||||||
|
private String cutoffTime;
|
||||||
|
private String batch;
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
}
|
||||||
41
cygnus-lib/src/main/java/lib/models/CutOffRecord.java
Normal file
41
cygnus-lib/src/main/java/lib/models/CutOffRecord.java
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CutOffRecord {
|
||||||
|
private List<CutOffRecord> sublist = new ArrayList<>();
|
||||||
|
private String portfolioid;
|
||||||
|
private String portname;
|
||||||
|
private String customername;
|
||||||
|
private String apptype;
|
||||||
|
private String mvcode;
|
||||||
|
private String applno;
|
||||||
|
private boolean allocation;
|
||||||
|
private boolean sms;
|
||||||
|
private boolean telesheet;
|
||||||
|
private boolean earlier;
|
||||||
|
private boolean negative;
|
||||||
|
private int islocked;
|
||||||
|
private String lockedby;
|
||||||
|
private boolean docut;
|
||||||
|
private int ischanged;
|
||||||
|
private int totrv;
|
||||||
|
private int totov;
|
||||||
|
private int totpv;
|
||||||
|
private int totrtv;
|
||||||
|
private int tototv;
|
||||||
|
private int totref;
|
||||||
|
private boolean tv;
|
||||||
|
private boolean oprsend;
|
||||||
|
private String resiloc;
|
||||||
|
private String offloc;
|
||||||
|
private String proploc;
|
||||||
|
private String uuid;
|
||||||
|
private String repformat;
|
||||||
|
private String repfunction;
|
||||||
|
private String message;
|
||||||
|
private String portgroup;
|
||||||
|
}
|
||||||
13
cygnus-lib/src/main/java/lib/models/CutoffPending.java
Normal file
13
cygnus-lib/src/main/java/lib/models/CutoffPending.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CutoffPending {
|
||||||
|
private List<CutoffPendingRecord> pendingList = new ArrayList<>();
|
||||||
|
private String errMsg;
|
||||||
|
private String errCode = "1010";
|
||||||
|
private boolean processFlag;
|
||||||
|
}
|
||||||
20
cygnus-lib/src/main/java/lib/models/CutoffPendingRecord.java
Normal file
20
cygnus-lib/src/main/java/lib/models/CutoffPendingRecord.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CutoffPendingRecord {
|
||||||
|
private List<CutoffPendingRecord> sublist = new ArrayList<>();
|
||||||
|
private String cutoffTime;
|
||||||
|
private int total;
|
||||||
|
private String uuid;
|
||||||
|
private String portfolio;
|
||||||
|
private String customerName;
|
||||||
|
private boolean allocation;
|
||||||
|
private boolean telesheet;
|
||||||
|
private boolean earlier;
|
||||||
|
private boolean negative;
|
||||||
|
private boolean cutoff;
|
||||||
|
}
|
||||||
21
cygnus-lib/src/main/java/lib/models/DedupeBatch.java
Normal file
21
cygnus-lib/src/main/java/lib/models/DedupeBatch.java
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DedupeBatch {
|
||||||
|
private List<DedupeCase> cases = new ArrayList<>();
|
||||||
|
private String cutoffKey;
|
||||||
|
private String cutoffon;
|
||||||
|
private int totalAddresses;
|
||||||
|
private int totalCases;
|
||||||
|
private int islocked;
|
||||||
|
private String lockedby;
|
||||||
|
private Integer lockOwnerId;
|
||||||
|
}
|
||||||
22
cygnus-lib/src/main/java/lib/models/DedupeCase.java
Normal file
22
cygnus-lib/src/main/java/lib/models/DedupeCase.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DedupeCase {
|
||||||
|
private String mvcode;
|
||||||
|
private String applno;
|
||||||
|
private String customername;
|
||||||
|
private String apptype;
|
||||||
|
private String uuid;
|
||||||
|
private int totrv;
|
||||||
|
private int totov;
|
||||||
|
private int totpv;
|
||||||
|
private String earlier;
|
||||||
|
private String negative;
|
||||||
|
private String lockedby;
|
||||||
|
}
|
||||||
20
cygnus-lib/src/main/java/lib/models/DedupeCaseSummary.java
Normal file
20
cygnus-lib/src/main/java/lib/models/DedupeCaseSummary.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DedupeCaseSummary {
|
||||||
|
private String documentCaseId;
|
||||||
|
private Integer portfolioId;
|
||||||
|
private String mvCode;
|
||||||
|
private String fileNumber;
|
||||||
|
private String customerName;
|
||||||
|
private String applicationType;
|
||||||
|
private int residenceVisits;
|
||||||
|
private int officeVisits;
|
||||||
|
private int propertyVisits;
|
||||||
|
private String receivedOn;
|
||||||
|
private String done;
|
||||||
|
}
|
||||||
3
cygnus-lib/src/main/java/lib/models/DedupeCheckData.java
Normal file
3
cygnus-lib/src/main/java/lib/models/DedupeCheckData.java
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
public record DedupeCheckData(String documentCaseId, int operation) { }
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
public record DedupeCheckRequest(String documentCaseId, int operation) { }
|
||||||
20
cygnus-lib/src/main/java/lib/models/DedupeDetails.java
Normal file
20
cygnus-lib/src/main/java/lib/models/DedupeDetails.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DedupeDetails {
|
||||||
|
private String sessuuid;
|
||||||
|
private String uuid;
|
||||||
|
private String mvcode;
|
||||||
|
private String customername;
|
||||||
|
private String dob;
|
||||||
|
private String mobile;
|
||||||
|
private String resiaddress;
|
||||||
|
private String offaddress;
|
||||||
|
private String resiphone;
|
||||||
|
private String offphone;
|
||||||
|
private String earremarks;
|
||||||
|
private String negremarks;
|
||||||
|
private String category;
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/DedupeMatchRecord.java
Normal file
17
cygnus-lib/src/main/java/lib/models/DedupeMatchRecord.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DedupeMatchRecord {
|
||||||
|
private String dedupeType;
|
||||||
|
private String foundOn;
|
||||||
|
private String remarks;
|
||||||
|
private String customerName;
|
||||||
|
private String dob;
|
||||||
|
private String residenceAddress;
|
||||||
|
private String officeAddress;
|
||||||
|
private String residencePhone;
|
||||||
|
private String officePhone;
|
||||||
|
private String mobile;
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/DedupeRun.java
Normal file
17
cygnus-lib/src/main/java/lib/models/DedupeRun.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DedupeRun {
|
||||||
|
private List<DedupeBatch> batches = new ArrayList<>();
|
||||||
|
private String dedcutTime;
|
||||||
|
private String errMsg;
|
||||||
|
private String csrfToken;
|
||||||
|
}
|
||||||
21
cygnus-lib/src/main/java/lib/models/DedupeSendCase.java
Normal file
21
cygnus-lib/src/main/java/lib/models/DedupeSendCase.java
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DedupeSendCase {
|
||||||
|
private String uuid;
|
||||||
|
private String mvcode;
|
||||||
|
private String applno;
|
||||||
|
private String customername;
|
||||||
|
private String apptype;
|
||||||
|
private String product;
|
||||||
|
private String earlier;
|
||||||
|
private String negative;
|
||||||
|
private String deduperunon;
|
||||||
|
private String bkbranchname;
|
||||||
|
private String fid;
|
||||||
|
private int dqid;
|
||||||
|
private String portname;
|
||||||
|
private String supervisor;
|
||||||
|
}
|
||||||
16
cygnus-lib/src/main/java/lib/models/DedupeWorkspace.java
Normal file
16
cygnus-lib/src/main/java/lib/models/DedupeWorkspace.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DedupeWorkspace {
|
||||||
|
private Integer portfolioId;
|
||||||
|
private List<Option> portfolios = new ArrayList<>();
|
||||||
|
private List<DedupeCaseSummary> cases = new ArrayList<>();
|
||||||
|
}
|
||||||
49
cygnus-lib/src/main/java/lib/models/HourlyMisRecord.java
Normal file
49
cygnus-lib/src/main/java/lib/models/HourlyMisRecord.java
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public final class HourlyMisRecord {
|
||||||
|
private final long userId;
|
||||||
|
private final String displayName;
|
||||||
|
private final LocalDate receivedDate;
|
||||||
|
private final int[] hours = new int[24];
|
||||||
|
|
||||||
|
public HourlyMisRecord(long userId, String displayName, LocalDate receivedDate) {
|
||||||
|
this.userId = userId;
|
||||||
|
this.displayName = displayName;
|
||||||
|
this.receivedDate = receivedDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getUserId() { return userId; }
|
||||||
|
public String getDisplayName() { return displayName; }
|
||||||
|
public LocalDate getReceivedDate() { return receivedDate; }
|
||||||
|
public int getHour(int hour) { return hours[hour]; }
|
||||||
|
public void addCases(int hour, int cases) { hours[hour] += cases; }
|
||||||
|
public int getTotal() { return Arrays.stream(hours).sum(); }
|
||||||
|
|
||||||
|
public int getHour00() { return hours[0]; }
|
||||||
|
public int getHour01() { return hours[1]; }
|
||||||
|
public int getHour02() { return hours[2]; }
|
||||||
|
public int getHour03() { return hours[3]; }
|
||||||
|
public int getHour04() { return hours[4]; }
|
||||||
|
public int getHour05() { return hours[5]; }
|
||||||
|
public int getHour06() { return hours[6]; }
|
||||||
|
public int getHour07() { return hours[7]; }
|
||||||
|
public int getHour08() { return hours[8]; }
|
||||||
|
public int getHour09() { return hours[9]; }
|
||||||
|
public int getHour10() { return hours[10]; }
|
||||||
|
public int getHour11() { return hours[11]; }
|
||||||
|
public int getHour12() { return hours[12]; }
|
||||||
|
public int getHour13() { return hours[13]; }
|
||||||
|
public int getHour14() { return hours[14]; }
|
||||||
|
public int getHour15() { return hours[15]; }
|
||||||
|
public int getHour16() { return hours[16]; }
|
||||||
|
public int getHour17() { return hours[17]; }
|
||||||
|
public int getHour18() { return hours[18]; }
|
||||||
|
public int getHour19() { return hours[19]; }
|
||||||
|
public int getHour20() { return hours[20]; }
|
||||||
|
public int getHour21() { return hours[21]; }
|
||||||
|
public int getHour22() { return hours[22]; }
|
||||||
|
public int getHour23() { return hours[23]; }
|
||||||
|
}
|
||||||
12
cygnus-lib/src/main/java/lib/models/PhotoCases.java
Normal file
12
cygnus-lib/src/main/java/lib/models/PhotoCases.java
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PhotoCases {
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/ReferenceSheet.java
Normal file
17
cygnus-lib/src/main/java/lib/models/ReferenceSheet.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ReferenceSheet {
|
||||||
|
private List<CutOffRecord> tvrlist = new ArrayList<>();
|
||||||
|
private String teleSheetTime;
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
private String telePDFLink;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
public record ReportColumnDefinition(
|
||||||
|
String columnKey, String label, int displayOrder, String alignment,
|
||||||
|
int width, boolean visible, boolean totalled) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public record ReportDefinition(
|
||||||
|
String reportKey, String title, boolean hideLeadingZeroColumns,
|
||||||
|
List<ReportColumnDefinition> columns) {
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/SendDedupe.java
Normal file
17
cygnus-lib/src/main/java/lib/models/SendDedupe.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SendDedupe {
|
||||||
|
private Integer portfolioid;
|
||||||
|
private String portname;
|
||||||
|
private String supervisor;
|
||||||
|
private int dqid;
|
||||||
|
private String fid;
|
||||||
|
private List<DedupeSendCase> caselist = new ArrayList<>();
|
||||||
|
private String suuid;
|
||||||
|
private String uuids;
|
||||||
|
}
|
||||||
16
cygnus-lib/src/main/java/lib/models/SendToOperation.java
Normal file
16
cygnus-lib/src/main/java/lib/models/SendToOperation.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SendToOperation {
|
||||||
|
private List<CutOffRecord> caselist = new ArrayList<>();
|
||||||
|
private String sendTime;
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
}
|
||||||
17
cygnus-lib/src/main/java/lib/models/Telesheet.java
Normal file
17
cygnus-lib/src/main/java/lib/models/Telesheet.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package lib.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Telesheet {
|
||||||
|
private List<CutOffRecord> tvrlist = new ArrayList<>();
|
||||||
|
private String teleSheetTime;
|
||||||
|
private String errMsg;
|
||||||
|
private String errDesc;
|
||||||
|
private String errCode;
|
||||||
|
private String sessUUID;
|
||||||
|
private boolean processFlag;
|
||||||
|
private String telePDFLink;
|
||||||
|
}
|
||||||
@@ -9,12 +9,13 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -27,7 +28,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -41,13 +42,14 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
||||||
<form:form method="post" name="allocation" id="allocation" modelAttribute="allocation" >
|
<form:form method="post" name="allocation" id="allocation" modelAttribute="allocation" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/alloc.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/alloc.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Allocation</span>
|
<span class="matrix-title-text" align="absmiddle">Allocation</span>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('allocation','_parent','allocation')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('allocation','allocation')"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -172,8 +174,9 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitAllocation('allocation');" />
|
<div class="matrix-workflow-actions">
|
||||||
<form:hidden path="SessUUID" value="${allocation.getSessUUID()}"/>
|
<input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitAllocation('allocation');" />
|
||||||
|
</div>
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
@@ -187,7 +190,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty allocation.getErrMsg()}">
|
<c:if test="${not empty allocation.getErrMsg()}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${allocation.getErrMsg()}',5000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${allocation.getErrMsg()}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -10,12 +10,13 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=3" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -42,20 +43,23 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1100px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1100px">
|
||||||
<form:form method="post" name="cutOff" id="cutOff" modelAttribute="cutOff" >
|
<form:form method="post" name="cutOff" id="cutOff" modelAttribute="cutOff" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/cutlist.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/cutlist.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Cut-Off List</span>
|
<span class="matrix-title-text" align="absmiddle">Cut-Off List</span>
|
||||||
<div class="divselect" id="divbatch" style="width:85px;position:absolute;top:3px;right:30px;">
|
<div class="matrix-cutoff-title-actions">
|
||||||
|
<div class="divselect" id="divbatch">
|
||||||
<form:select path="Batch" multiple="false" id="batchlist" style="width:103px" onblur="validate(this,'t','');">
|
<form:select path="Batch" multiple="false" id="batchlist" style="width:103px" onblur="validate(this,'t','');">
|
||||||
<form:option value="-1" label="BATCH" selected="true"/>
|
<form:option value="-1" label="BATCH" selected="true"/>
|
||||||
<form:option value="AM" label="AM" />
|
<form:option value="AM" label="AM" />
|
||||||
<form:option value="PM" label="PM" />
|
<form:option value="PM" label="PM" />
|
||||||
</form:select>
|
</form:select>
|
||||||
</div>
|
</div>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('cutoff','_parent','cutOff')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('cutOff','cutoff')"/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -88,7 +92,9 @@
|
|||||||
<form:checkbox path="cofflist[${mystatus.index}].sms" id="sms${mystatus.count}" value="true" />
|
<form:checkbox path="cofflist[${mystatus.index}].sms" id="sms${mystatus.count}" value="true" />
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<form:checkbox path="cofflist[${mystatus.index}].telesheet" id="ts${mystatus.count}" value="true" />
|
<form:checkbox path="cofflist[${mystatus.index}].telesheet" id="ts${mystatus.count}" value="true"
|
||||||
|
disabled="${record.totrtv le 0 and record.tototv le 0}"
|
||||||
|
title="${record.totrtv le 0 and record.tototv le 0 ? 'Tele-Sheet requires RTV or OTV' : ''}" />
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<form:checkbox path="cofflist[${mystatus.index}].earlier" id="ear${mystatus.count}" value="true" />
|
<form:checkbox path="cofflist[${mystatus.index}].earlier" id="ear${mystatus.count}" value="true" />
|
||||||
@@ -114,9 +120,10 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitCutOff('cutOff');" />
|
<div class="matrix-workflow-actions">
|
||||||
|
<input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitCutOff('cutOff');" />
|
||||||
|
</div>
|
||||||
<form:hidden path="CutoffTime" value="${cutOff.getCutoffTime()}"/>
|
<form:hidden path="CutoffTime" value="${cutOff.getCutoffTime()}"/>
|
||||||
<form:hidden path="SessUUID" value="${cutOff.getSessUUID()}"/>
|
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
@@ -130,7 +137,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty cutOff.getErrMsg()}">
|
<c:if test="${not empty cutOff.getErrMsg()}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${cutOff.getErrMsg()}',3000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${fn:escapeXml(cutOff.getErrMsg())}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" session="true" %>
|
||||||
|
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
||||||
|
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||||
|
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="ISO-8859-1">
|
||||||
|
<title>Cygnus 1.0 | Cut-Off Pending</title>
|
||||||
|
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet">
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1"></script>
|
||||||
|
<script src="/matrix/js/edp/cutoff/cutoff-pending.js?v=1" defer></script>
|
||||||
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow matrix-cutoff-pending">
|
||||||
|
<div id="PageFrame">
|
||||||
|
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
||||||
|
<main id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
|
<form:form method="post" id="cutoffpending" modelAttribute="cutoffpending">
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"></c:if>
|
||||||
|
<section>
|
||||||
|
<header class="title">
|
||||||
|
<img class="matrix-title-icon" src="/matrix/images/cutlist.png" alt="">
|
||||||
|
<span class="matrix-title-text">Cut-Off Pending</span>
|
||||||
|
<button type="button" class="matrix-title-action matrix-icon-button" title="Refresh grid"
|
||||||
|
aria-label="Refresh grid" data-action="refresh">
|
||||||
|
<img src="/matrix/images/reload.png" alt="">
|
||||||
|
</button>
|
||||||
|
</header>
|
||||||
|
<div class="tableContainer">
|
||||||
|
<table id="cutlist">
|
||||||
|
<thead class="thead"><tr>
|
||||||
|
<th>S.No</th><th>Cut-Off Time</th><th>Allocation</th><th>Tele-Sheet</th>
|
||||||
|
<th>Earlier</th><th>Negative</th><th>Cut-Off</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach items="${cutoffpending.pendingList}" var="record" varStatus="parentStatus">
|
||||||
|
<tr class="matrix-parent-row" data-parent-index="${parentStatus.index}">
|
||||||
|
<td>${parentStatus.count}</td>
|
||||||
|
<td>
|
||||||
|
<form:hidden path="pendingList[${parentStatus.index}].cutoffTime"/>
|
||||||
|
<form:hidden path="pendingList[${parentStatus.index}].total"/>
|
||||||
|
<button type="button" class="matrix-row-toggle" data-action="toggle" aria-expanded="false">
|
||||||
|
<span class="matrix-row-toggle__chevron">▶</span>
|
||||||
|
<span>${fn:escapeXml(record.cutoffTime)} <strong>(${record.total})</strong></span>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].allocation" data-parent-field="allocation"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].telesheet" data-parent-field="telesheet"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].earlier" data-parent-field="earlier"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].negative" data-parent-field="negative"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].cutoff" data-parent-field="cutoff"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="matrix-expanded-row" data-child-row="${parentStatus.index}" hidden>
|
||||||
|
<td colspan="7">
|
||||||
|
<table class="matrix-nested-table">
|
||||||
|
<thead><tr>
|
||||||
|
<th>S.No</th><th>Portfolio</th><th>Customer Name</th><th>Allocation</th>
|
||||||
|
<th>Tele-Sheet</th><th>Earlier</th><th>Negative</th><th>Cut-Off</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach items="${record.sublist}" var="child" varStatus="childStatus">
|
||||||
|
<tr data-child-index="${childStatus.index}">
|
||||||
|
<td>${childStatus.count}</td>
|
||||||
|
<td><form:hidden path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].uuid"/>${fn:escapeXml(child.portfolio)}</td>
|
||||||
|
<td>${fn:escapeXml(child.customerName)}</td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].allocation" data-child-field="allocation"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].telesheet" data-child-field="telesheet"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].earlier" data-child-field="earlier"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].negative" data-child-field="negative"/></td>
|
||||||
|
<td><form:checkbox path="pendingList[${parentStatus.index}].sublist[${childStatus.index}].cutoff" data-child-field="cutoff"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty record.sublist}"><tr><td colspan="8" class="matrix-empty-row">No records found.</td></tr></c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty cutoffpending.pendingList}"><tr><td colspan="7" class="matrix-empty-row">No pending cut-offs found.</td></tr></c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<c:if test="${not empty cutoffpending.pendingList}">
|
||||||
|
<footer class="matrix-workflow-actions"><button type="button" class="button" data-action="save">Save</button></footer>
|
||||||
|
</c:if>
|
||||||
|
</form:form>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
<c:if test="${not empty cutoffpending.errMsg}"><script>CygnusNotifications.showLegacy('${fn:escapeXml(cutoffpending.errMsg)}');</script></c:if>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -9,11 +9,12 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
<div id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
|
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
<table border="0" cellspacing="0" width="100%" id="cutlist">
|
<table border="0" cellspacing="0" width="100%" id="cutlist">
|
||||||
<thead class="thead">
|
<thead class="thead">
|
||||||
@@ -111,7 +113,9 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<!-- <input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" /> -->
|
<!-- <input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" /> -->
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return SendToMnimble();" />
|
<div class="matrix-workflow-actions">
|
||||||
|
<input type="button" class="button" name="btnsave" value="Upload & Update" id="btnsave" accesskey="S" onclick="return SendToMnimble();" />
|
||||||
|
</div>
|
||||||
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
|
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
|
||||||
</form:form>
|
</form:form>
|
||||||
</div>
|
</div>
|
||||||
@@ -124,7 +128,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty msg}">
|
<c:if test="${not empty msg}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${msg}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -9,11 +9,12 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
<div id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
|
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
<table border="0" cellspacing="0" width="100%" id="cutlist">
|
<table border="0" cellspacing="0" width="100%" id="cutlist">
|
||||||
<thead class="thead">
|
<thead class="thead">
|
||||||
@@ -100,8 +102,10 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" />
|
<div class="matrix-workflow-actions">
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnexcel" accesskey="G" onclick="tableToExcel(document.getElementsByTagName('table'),'sheet1')" />
|
<input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" />
|
||||||
|
<input type="button" class="button" name="btnsave" value="Generate" id="btnexcel" accesskey="G" onclick="tableToExcel(document.getElementsByTagName('table'),'sheet1')" />
|
||||||
|
</div>
|
||||||
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
|
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
|
||||||
</form:form>
|
</form:form>
|
||||||
</div>
|
</div>
|
||||||
@@ -114,7 +118,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty msg}">
|
<c:if test="${not empty msg}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${msg}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/allocation.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -42,13 +42,14 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
||||||
<form:form method="post" name="refsheet" id="refsheet" modelAttribute="refsheet" >
|
<form:form method="post" name="refsheet" id="refsheet" modelAttribute="refsheet" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Reference-Verification Sheet</span>
|
<span class="matrix-title-text" align="absmiddle">Reference-Verification Sheet</span>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('refsheet','_parent','refsheet')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('refsheet','refsheet')"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -162,8 +163,9 @@
|
|||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitRefsheet('refsheet');" />
|
<div class="matrix-workflow-actions">
|
||||||
<form:hidden path="SessUUID" />
|
<input type="button" class="button" name="btnsave" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitRefsheet('refsheet');" />
|
||||||
|
</div>
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
@@ -177,7 +179,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty refsheet.getErrMsg()}">
|
<c:if test="${not empty refsheet.getErrMsg()}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${telesheet.getErrMsg()}',3000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${refsheet.getErrMsg()}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -9,12 +9,13 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -27,7 +28,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -41,13 +42,14 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
||||||
<form:form method="post" name="sendtoopr" id="sendtoopr" modelAttribute="sendtoopr" >
|
<form:form method="post" name="sendtoopr" id="sendtoopr" modelAttribute="sendtoopr" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/oprupd.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/oprupd.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Send To Operation</span>
|
<span class="matrix-title-text" align="absmiddle">Send To Operation</span>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('sendtoopr','_parent','sendtoopr')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('sendtoopr','sendtoopr')"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -192,8 +194,9 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitSopr('sendtoopr');" />
|
<div class="matrix-workflow-actions">
|
||||||
<form:hidden path="SessUUID" value="${sendtoopr.getSessUUID()}"/>
|
<input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitSopr('sendtoopr');" />
|
||||||
|
</div>
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
@@ -207,7 +210,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty sendtoopr.getErrMsg()}">
|
<c:if test="${not empty sendtoopr.getErrMsg()}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${sendtoopr.getErrMsg()}',5000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${sendtoopr.getErrMsg()}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/allocation.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -42,13 +42,14 @@
|
|||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
||||||
<form:form method="post" name="telesheet" id="telesheet" modelAttribute="telesheet" >
|
<form:form method="post" name="telesheet" id="telesheet" modelAttribute="telesheet" >
|
||||||
|
<c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Tele-Verification Sheet</span>
|
<span class="matrix-title-text" align="absmiddle">Tele-Verification Sheet</span>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('telesheet','_parent','telesheet')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('telesheet','telesheet')"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -178,8 +179,9 @@
|
|||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitTelesheet('telesheet');" />
|
<div class="matrix-workflow-actions">
|
||||||
<form:hidden path="SessUUID" />
|
<input type="button" class="button" name="btnsave" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitTelesheet('telesheet');" />
|
||||||
|
</div>
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
@@ -193,7 +195,7 @@
|
|||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty telesheet.getErrMsg()}">
|
<c:if test="${not empty telesheet.getErrMsg()}">
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${telesheet.getErrMsg()}',3000,200,300); </script>
|
<script>CygnusNotifications.showLegacy('${telesheet.getErrMsg()}');</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,112 +1,85 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" %>
|
||||||
pageEncoding="ISO-8859-1"%>
|
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
|
||||||
<%@page language="java" session="true" %>
|
|
||||||
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
|
||||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta charset="UTF-8">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<title>Cygnus 1.0 | Dedupe</title>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet">
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet">
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet">
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet">
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<link href="/matrix/css/dedupe-workflows-v1.css?v=12" rel="stylesheet">
|
||||||
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script>
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet">
|
||||||
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet">
|
||||||
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
|
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
||||||
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
<title>Cygnus 1.0 | Dedupe Do</title>
|
<script src="/matrix/js/edp/dedupe/dedupe-do.js?v=2" defer></script>
|
||||||
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
|
||||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
</head>
|
||||||
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
|
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow"
|
||||||
<div id='PageFrame'>
|
data-context-path="${pageContext.request.contextPath}">
|
||||||
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
<div id="PageFrame">
|
||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
<main id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
<form:form method="post" name="caseGrid" id="caseGrid" modelAttribute="caseGrid" >
|
<form:form method="post" action="${pageContext.request.contextPath}/ver/dedupecaselist"
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
id="dedupeWorkspace" modelAttribute="dedupeWorkspace">
|
||||||
<div>
|
<section class="matrix-dedupe-worklist">
|
||||||
<!-- Title -->
|
<header class="title matrix-dedupe-worklist__header">
|
||||||
<div class="title">
|
<span class="matrix-dedupe-worklist__heading">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/commondet.png" alt="">
|
||||||
<span class="matrix-title-text" align="absmiddle">List of Cases</span>
|
<span class="matrix-title-text">Dedupe Cases</span>
|
||||||
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;">
|
</span>
|
||||||
<form:select path="PortfolioId" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('dedupecaselist','_parent','caseGrid')">
|
<span class="matrix-dedupe-worklist__actions">
|
||||||
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
|
<form:select path="portfolioId" id="portfolioId"
|
||||||
<c:forEach items="${portlist}" var="port">
|
cssClass="form-select form-select-sm matrix-dedupe-worklist__portfolio"
|
||||||
<form:option value="${port[0]}" label="${port[1]}" />
|
aria-label="Portfolio">
|
||||||
</c:forEach>
|
<form:option value="-1" label="SELECT PORTFOLIO" />
|
||||||
</form:select>
|
<c:forEach items="${dedupeWorkspace.portfolios}" var="portfolio">
|
||||||
</div>
|
<form:option value="${portfolio.value}" label="${portfolio.label}" />
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('dedupecaselist','_parent','caseGrid')"/>
|
</c:forEach>
|
||||||
</div>
|
</form:select>
|
||||||
<!-- -->
|
<button type="submit" class="matrix-dedupe-worklist__refresh"
|
||||||
<div id="TablePanel" class="tableContainer">
|
title="Refresh cases" aria-label="Refresh cases">
|
||||||
<table border="0" cellspacing="0" width="100%" id="casetable">
|
<img src="/matrix/images/reload.png" alt="">
|
||||||
<thead class="thead">
|
</button>
|
||||||
<tr title="Row Title">
|
</span>
|
||||||
<td>S.No</td>
|
</header>
|
||||||
<td>MV Code</td>
|
|
||||||
<td>File No.</td>
|
<div class="table-responsive matrix-dedupe-worklist__table-wrap">
|
||||||
<td>Customer Name</td>
|
<table class="table table-sm align-middle mb-0" id="dedupeCaseTable">
|
||||||
<td>Type</td>
|
<thead>
|
||||||
<td>RV</td>
|
<tr>
|
||||||
<td>OV</td>
|
<th>S.No</th><th>MV Code</th><th>File No.</th><th>Customer Name</th>
|
||||||
<td>PV</td>
|
<th>Type</th><th class="text-center">RV</th><th class="text-center">OV</th>
|
||||||
<td>Received Date</td>
|
<th class="text-center">PV</th><th>Received On</th><th>Done</th>
|
||||||
<td>Done</td>
|
</tr>
|
||||||
<td></td>
|
</thead>
|
||||||
</tr>
|
<tbody>
|
||||||
</thead>
|
<c:forEach items="${dedupeWorkspace.cases}" var="caseItem" varStatus="status">
|
||||||
<tbody class="scrollContent">
|
<tr class="matrix-dedupe-worklist__row" tabindex="0"
|
||||||
<c:forEach items="${caseList}" var="casedet" varStatus="status">
|
data-case-id="${caseItem.documentCaseId}"
|
||||||
<tr id="row${status.count}">
|
title="Open dedupe details">
|
||||||
<td>
|
<td>${status.count}</td><td>${caseItem.mvCode}</td>
|
||||||
<input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet[0]}" />
|
<td>${caseItem.fileNumber}</td><td>${caseItem.customerName}</td>
|
||||||
<input type="hidden" name="portid" id="row${status.count}portid" value="${casedet[1]}" />
|
<td>${caseItem.applicationType}</td>
|
||||||
${status.count}</td>
|
<td class="text-center">${caseItem.residenceVisits}</td>
|
||||||
<td>${casedet[2]}</td>
|
<td class="text-center">${caseItem.officeVisits}</td>
|
||||||
<td>${casedet[3]}</td>
|
<td class="text-center">${caseItem.propertyVisits}</td>
|
||||||
<td>${casedet[4]}</td>
|
<td>${caseItem.receivedOn}</td><td>${caseItem.done}</td>
|
||||||
<td>${casedet[5]}</td>
|
</tr>
|
||||||
<td>${casedet[6]}</td>
|
</c:forEach>
|
||||||
<td>${casedet[7]}</td>
|
<c:if test="${dedupeWorkspace.portfolioId gt 0 and empty dedupeWorkspace.cases}">
|
||||||
<td>${casedet[8]}</td>
|
<tr><td colspan="10" class="matrix-dedupe-worklist__empty">No cases found.</td></tr>
|
||||||
<td>${casedet[9]}</td>
|
</c:if>
|
||||||
<td>${casedet[10]}</td>
|
</tbody>
|
||||||
<td id="row${status.count}col"></td>
|
</table>
|
||||||
</tr>
|
</div>
|
||||||
</c:forEach>
|
</section>
|
||||||
</tbody>
|
</form:form>
|
||||||
</table>
|
</main>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form:form>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<!-- Page Load Javascript -->
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
InitPage();
|
|
||||||
</script>
|
|
||||||
<!-- -->
|
|
||||||
|
|
||||||
<!-- Process Message -->
|
|
||||||
<c:if test="${not empty caseGrid.getErrMsg()}">
|
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${caseGrid.getErrMsg()}',3000,200,300); </script>
|
|
||||||
</c:if>
|
|
||||||
<!-- -->
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -12,10 +12,9 @@
|
|||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/progressbar.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/deduperun.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
|
<script language="javascript" src="/matrix/js/edp/dedupe/dedupe-run.js?ver=1" type="text/javascript" defer></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -28,7 +27,7 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/dedupe-workflows-v1.css?v=12" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
@@ -39,16 +38,16 @@
|
|||||||
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
|
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
|
||||||
<div id='PageFrame'>
|
<div id='PageFrame'>
|
||||||
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns the authenticated user menu. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
|
||||||
<form:form method="post" name="deduperun" id="deduperun" modelAttribute="dedupeRun" >
|
<form:form method="post" name="deduperun" id="deduperun" modelAttribute="dedupeRun" >
|
||||||
<input type="hidden" name="curu" id="curu" value="${Sessvals.getUserID()}" />
|
<input type="hidden" id="dedupe-csrf-token" value="${dedupeRun.csrfToken}" />
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title matrix-dedupe-run__title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/dedupe.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/dedupe.png" alt="" />
|
||||||
<span class="matrix-title-text" align="absmiddle">Dedupe Run</span>
|
<span class="matrix-title-text">Dedupe Run</span>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('rundedupe','_parent','deduperun')"/>
|
<img class="matrix-title-action" src="/matrix/images/reload.png" alt="" title="Refresh Grid" onclick="SubmitForm('rundedupe','_parent','deduperun')"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -63,28 +62,28 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="scrollContent">
|
<tbody class="scrollContent">
|
||||||
<c:forEach items="${dedupeRun.dedupelist}" var="record" varStatus="mystatus">
|
<c:forEach items="${dedupeRun.batches}" var="record" varStatus="mystatus">
|
||||||
<tr title="${record.lockedby}">
|
<tr title="${record.lockedby}">
|
||||||
<td>${mystatus.count}</td>
|
<td>${mystatus.count}</td>
|
||||||
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
|
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
|
<form:hidden path="batches[${mystatus.index}].lockedby" id="locby${mystatus.count}"/>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].cutoffon" id="cuttime${mystatus.count}" value="${status.value}"/>
|
<form:hidden path="batches[${mystatus.index}].cutoffon" id="cuttime${mystatus.count}"/>
|
||||||
<span class="customLink" style="cursor:pointer">${record.cutoffon}</span>
|
<span class="customLink" style="cursor:pointer">${record.cutoffon}</span>
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].totaddr" id="totaddr${mystatus.count}" value="${status.value}"/>${record.totaddr}
|
<form:hidden path="batches[${mystatus.index}].totalAddresses" id="totaddr${mystatus.count}"/>${record.totalAddresses}
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].totcase" id="totcase${mystatus.count}" value="${status.value}"/>${record.totcase}
|
<form:hidden path="batches[${mystatus.index}].totalCases" id="totcase${mystatus.count}"/>${record.totalCases}
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
|
<form:hidden path="batches[${mystatus.index}].islocked" id="locked${mystatus.count}"/>
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${record.islocked gt 0}">
|
<c:when test="${record.islocked gt 0}">
|
||||||
<img src="/matrix/images/locked.png"/>
|
<img src="/matrix/images/locked.png"/>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
<input type="button" id="btndedupe" class="button" value="Run Earlier & Negative" onclick="showDedupePanel('cutlist${mystatus.count}')" />
|
<button type="button" class="btn btn-primary btn-sm js-run-dedupe" data-table="cutlist${mystatus.count}">Run Earlier & Negative</button>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</td>
|
</td>
|
||||||
@@ -112,38 +111,39 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="scrollContent">
|
<tbody class="scrollContent">
|
||||||
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1">
|
<c:forEach items="${record.cases}" var="record1" varStatus="mystatus1">
|
||||||
<tr title="${record1.lockedby}child" id="row${mystatus1.count}${mystatus.count}">
|
<tr title="${record1.lockedby}child" id="row${mystatus1.count}${mystatus.count}"
|
||||||
|
data-document-case-id="${record1.uuid}" data-earlier="${record1.earlier}" data-negative="${record1.negative}">
|
||||||
<td>${mystatus1.count}</td>
|
<td>${mystatus1.count}</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/>
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child"/>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/>
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child"/>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}${mystatus.count}" value="${status.value}"/>
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].uuid" id="uuid${mystatus1.count}${mystatus.count}"/>
|
||||||
<span>${record1.mvcode}</span>
|
<span>${record1.mvcode}</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].applno" id="applno${mystatus1.count}child"/>${record1.applno}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].customername" id="cname${mystatus1.count}child"/>${record1.customername}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child"/>${record1.apptype}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child"/>${record1.totrv}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totov" id="totov${mystatus1.count}child"/>${record1.totov}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv}
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child"/>${record1.totpv}
|
||||||
</td>
|
</td>
|
||||||
<td id="td${mystatus1.count}${mystatus.count}ear">
|
<td id="td${mystatus1.count}${mystatus.count}ear">
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].earlier" id="row${mystatus1.count}${mystatus.count}ear" value="${status.value}"/><span id="sp${mystatus1.count}${mystatus.count}ear">${record1.earlier}</span>
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].earlier" id="row${mystatus1.count}${mystatus.count}ear"/><span id="sp${mystatus1.count}${mystatus.count}ear">${record1.earlier}</span>
|
||||||
</td>
|
</td>
|
||||||
<td id="td${mystatus1.count}${mystatus.count}neg">
|
<td id="td${mystatus1.count}${mystatus.count}neg">
|
||||||
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].negative" id="row${mystatus1.count}${mystatus.count}neg" value="${status.value}"/><span id="sp${mystatus1.count}${mystatus.count}neg">${record1.negative}</span>
|
<form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].negative" id="row${mystatus1.count}${mystatus.count}neg"/><span id="sp${mystatus1.count}${mystatus.count}neg">${record1.negative}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -158,20 +158,10 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<form:hidden path="SessUUID" value="${dedupeRun.getSessUUID()}"/>
|
|
||||||
</form:form>
|
</form:form>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
<input type="hidden" id="selectedports" value="0" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<!-- Page Load Javascript -->
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
</script>
|
|
||||||
<!-- -->
|
|
||||||
<!-- Process Message -->
|
|
||||||
<c:if test="${not empty dedupeRun.getErrMsg()}">
|
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${dedupeRun.getErrMsg()}',5000,200,300); </script>
|
|
||||||
</c:if>
|
|
||||||
<!-- -->
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -8,12 +8,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
|
||||||
|
|
||||||
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -25,12 +20,13 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/dedupe-workflows-v1.css?v=3" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
|
<script src="/matrix/js/edp/dedupe/dedupe-send.js?v=1" defer></script>
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
</head>
|
</head>
|
||||||
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
|
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
|
||||||
@@ -38,7 +34,9 @@
|
|||||||
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
<div id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
<form:form method="post" name="senddedupe" id="senddedupe" modelAttribute="senddedupe" >
|
<form:form method="post" name="senddedupe" id="senddedupe" modelAttribute="senddedupe"
|
||||||
|
data-list-url="${pageContext.request.contextPath}/ver/dedupetosend"
|
||||||
|
data-generate-url="${pageContext.request.contextPath}/ver/senddedreports">
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||||
<div>
|
<div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
@@ -46,14 +44,13 @@
|
|||||||
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
|
||||||
<span class="matrix-title-text" align="absmiddle">List of Cases</span>
|
<span class="matrix-title-text" align="absmiddle">List of Cases</span>
|
||||||
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;">
|
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;">
|
||||||
<form:select path="portfolioid" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('dedupetosend','_parent','senddedupe')">
|
<form:select path="portfolioid" multiple="false" id="portlist" style="width:185px">
|
||||||
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
|
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
|
||||||
<c:forEach items="${portlist}" var="port">
|
<c:forEach items="${portlist}" var="port">
|
||||||
<form:option value="${port[0]}" label="${port[1]}" />
|
<form:option value="${port.value}" label="${port.label}" />
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</form:select>
|
</form:select>
|
||||||
</div>
|
</div>
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('senddedupe','_parent','senddedupe')"/>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<div id="TablePanel" class="tableContainer">
|
<div id="TablePanel" class="tableContainer">
|
||||||
@@ -75,26 +72,28 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody class="scrollContent">
|
<tbody class="scrollContent">
|
||||||
<c:forEach items="${senddedupe.caselist}" var="casedet" varStatus="status">
|
<c:forEach items="${senddedupe.caselist}" var="casedet" varStatus="status">
|
||||||
<tr id="row${status.count}">
|
<tr id="row${status.count}" data-case-id="${casedet.uuid}">
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet[0]}" />
|
<input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet.uuid}" />
|
||||||
${status.count}</td>
|
${status.count}</td>
|
||||||
<td>${casedet[1]}</td>
|
<td>${casedet.mvcode}</td>
|
||||||
<td>${casedet[2]}</td>
|
<td>${casedet.applno}</td>
|
||||||
<td>${casedet[3]}</td>
|
<td>${casedet.customername}</td>
|
||||||
<td>${casedet[4]}</td>
|
<td>${casedet.apptype}</td>
|
||||||
<td>${casedet[5]}</td>
|
<td>${casedet.product}</td>
|
||||||
<td>${casedet[6]}</td>
|
<td>${casedet.earlier}</td>
|
||||||
<td>${casedet[7]}</td>
|
<td>${casedet.negative}</td>
|
||||||
<td>${casedet[8]}</td>
|
<td>${casedet.deduperunon}</td>
|
||||||
<td>${casedet[9]}</td>
|
<td>${casedet.bkbranchname}</td>
|
||||||
<td align="center"><input type="checkbox" name="chkrow${status.count}" id="chkrow${status.count}" checked onclick="checkList('chkrow','selall')" /></td>
|
<td align="center"><input type="checkbox" value="${casedet.uuid}" checked /></td>
|
||||||
</tr>
|
</tr>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<input type="button" class="button" name="btngenreport" style="float:right;margin-top:10px" value="Generate Report" id="btngenreport" accesskey="G" onclick="return ValidateSendDedupe('senddedupe');" />
|
<div class="matrix-workflow-actions">
|
||||||
|
<button type="button" class="button" name="btngenreport" id="btngenreport" accesskey="G">Generate Report</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<form:hidden path="uuids" id="hfdelstat" />
|
<form:hidden path="uuids" id="hfdelstat" />
|
||||||
<form:hidden path="suuid" />
|
<form:hidden path="suuid" />
|
||||||
@@ -103,15 +102,9 @@
|
|||||||
</form:form>
|
</form:form>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<!-- Page Load Javascript -->
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
InitSendDedupe();
|
|
||||||
</script>
|
|
||||||
<!-- -->
|
|
||||||
|
|
||||||
<!-- Process Message -->
|
<!-- Process Message -->
|
||||||
<c:if test="${not empty msg}">
|
<c:if test="${not empty msg}">
|
||||||
<script language="javascript" type="text/javascript">contentType="html"; CallMessage('${msg}',3000,200,300); </script>
|
<script>CygnusNotifications.show({type:"success", message:"${msg}"});</script>
|
||||||
</c:if>
|
</c:if>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -9,12 +9,7 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
<title>Cygnus 1.0 | Dedupe Viewer</title>
|
<title>Cygnus 1.0 | Dedupe Viewer</title>
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
<script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
|
||||||
|
|
||||||
|
|
||||||
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
||||||
@@ -24,23 +19,22 @@
|
|||||||
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/dedupe-workflows-v1.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
|
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
|
||||||
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
|
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
|
<script src="/matrix/js/edp/dedupe/dedupe-match.js?v=1" defer></script>
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-dedupe-workflow matrix-dedupe-match">
|
<body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-dedupe-workflow matrix-dedupe-match">
|
||||||
<div id='PageFrame'>
|
<div id='PageFrame'>
|
||||||
<!-- Title Bar -->
|
|
||||||
<%@ include file="/WEB-INF/app/fragments/app-title.jspf" %>
|
|
||||||
<!-- -->
|
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
<div id="formcontainer" class="matrix-tool-workspace__content">
|
||||||
<form:form method="post" name="dedupeDetails" id="dedupeDetails" modelAttribute="dedupeDetails" >
|
<form:form method="post" action="${pageContext.request.contextPath}/ver/updatededupe"
|
||||||
|
name="dedupeDetails" id="dedupeDetails" modelAttribute="dedupeDetails"
|
||||||
|
data-records-url="${pageContext.request.contextPath}/ver/deduperecords">
|
||||||
<!-- Parent Record Details -->
|
<!-- Parent Record Details -->
|
||||||
<div>
|
<div class="matrix-dedupe-match__source">
|
||||||
<form:hidden path="customername"/>
|
<form:hidden path="customername"/>
|
||||||
<form:hidden path="dob" id="cdob"/>
|
<form:hidden path="dob" id="cdob"/>
|
||||||
<form:hidden path="mobile" id="mob"/>
|
<form:hidden path="mobile" id="mob"/>
|
||||||
@@ -50,8 +44,8 @@
|
|||||||
<form:hidden path="offaddress" id="oaddress"/>
|
<form:hidden path="offaddress" id="oaddress"/>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/page.png" />
|
<img class="matrix-title-icon" src="/matrix/images/page.png" alt="" />
|
||||||
<span class="matrix-title-text">Source Record (MV Code - ${dedupeDetails.mvcode}) (Category - ${dedupeDetails.category})</span>
|
<span class="matrix-title-text fw-bold">Source Record (MV Code - ${dedupeDetails.mvcode}) (Category - ${dedupeDetails.category})</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Form (Source Record) -->
|
<!-- Form (Source Record) -->
|
||||||
@@ -85,13 +79,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Earlier / Negative Details Container -->
|
<!-- Earlier / Negative Details Container -->
|
||||||
<div style="border:1px solid #a7abb4;">
|
<div class="matrix-dedupe-match__comparison">
|
||||||
<table style="width:100%" border="0" cellspacing="0" >
|
<table style="width:100%" border="0" cellspacing="0" >
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:50%" valign="top">
|
<td style="width:50%" valign="top">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/ear_details.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/ear_details.png" alt="" />
|
||||||
<span class="matrix-title-text">Earlier Details <span id='efound'></span></span>
|
<span class="matrix-title-text">Earlier Details <span id='efound'></span></span>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
@@ -117,24 +111,21 @@
|
|||||||
<td colspan="4"><textarea style="width:443px;font-size:12pt" rows="4" id="earaddress" readonly="readonly" ></textarea></td>
|
<td colspan="4"><textarea style="width:443px;font-size:12pt" rows="4" id="earaddress" readonly="readonly" ></textarea></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Residence Phone</td>
|
<td colspan="4">
|
||||||
<td>Office Phone</td>
|
<div class="matrix-phone-grid">
|
||||||
<td>Mobile Number</td>
|
<label>Residence Phone<input id="earrphone" readonly="readonly" /></label>
|
||||||
<td></td>
|
<label>Office Phone<input id="earophone" readonly="readonly" /></label>
|
||||||
|
<label>Mobile Number<input id="earmobile" readonly="readonly" /></label>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input style="width:150px;font-size:12pt" id="earrphone" readonly="readonly" /></td>
|
<td colspan="4" class="matrix-record-navigation">
|
||||||
<td><input style="width:150px;font-size:12pt" id="earophone" readonly="readonly" /></td>
|
<button type="button" class="matrix-record-nav matrix-record-nav--first" aria-label="First earlier match" accesskey="H" onclick="findRecord(1,1)"></button>
|
||||||
<td><input style="width:112px;font-size:12pt" id="earmobile" readonly="readonly" /></td>
|
<button type="button" class="matrix-record-nav matrix-record-nav--previous" aria-label="Previous earlier match" accesskey="J" onclick="findRecord(2,1)"></button>
|
||||||
<td></td>
|
<button type="button" class="matrix-record-nav matrix-record-nav--next" aria-label="Next earlier match" accesskey="K" onclick="findRecord(3,1)"></button>
|
||||||
</tr>
|
<button type="button" class="matrix-record-nav matrix-record-nav--last" aria-label="Last earlier match" accesskey="L" onclick="findRecord(4,1)"></button>
|
||||||
<tr>
|
<button type="button" class="button matrix-match-action" id="btnear" accesskey="9" onclick="addRemarks(1,'earremarks')">Match Found</button>
|
||||||
<td colspan="4">
|
|
||||||
<input type="button" class="button" name="btnfirst1" style="margin-top:5px;float:left" value="" id="btnfirst" accesskey="H" onclick="findRecord(1,1)" />
|
|
||||||
<input type="button" class="button" name="btnprev1" style="margin-top:5px;float:left" value="" id="btnprev" accesskey="J" onclick="findRecord(2,1)" />
|
|
||||||
<input type="button" class="button" name="btnnext1" style="margin-top:5px;float:left" value="" id="btnnext" accesskey="K" onclick="findRecord(3,1)" />
|
|
||||||
<input type="button" class="button" name="btnlast1" style="margin-top:5px;float:left" value="" id="btnlast" accesskey="L" onclick="findRecord(4,1)" />
|
|
||||||
<input type="button" class="button" name="btnear" style="margin-top:5px;float:right;margin-right:7px" value="Match Found" id="btnear" accesskey="9" onclick="addRemarks(1,'earremarks')" />
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -148,7 +139,7 @@
|
|||||||
<td valign="top" style="width:50%" id="tdneg">
|
<td valign="top" style="width:50%" id="tdneg">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/neg_details.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/neg_details.png" alt="" />
|
||||||
<span class="matrix-title-text">Negative Details <span id='nfound'></span></span>
|
<span class="matrix-title-text">Negative Details <span id='nfound'></span></span>
|
||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
@@ -173,25 +164,22 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td colspan="4"><textarea style="width:438px;font-size:12pt" rows="4" id="negaddress" readonly="readonly" ></textarea></td>
|
<td colspan="4"><textarea style="width:438px;font-size:12pt" rows="4" id="negaddress" readonly="readonly" ></textarea></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>Residence Phone</td>
|
|
||||||
<td>Office Phone</td>
|
|
||||||
<td>Mobile Number</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input style="width:150px;font-size:12pt" id="negrphone" readonly="readonly" /></td>
|
|
||||||
<td><input style="width:150px;font-size:12pt" id="negophone" readonly="readonly" /></td>
|
|
||||||
<td><input style="width:112px;font-size:12pt" id="negmobile" readonly="readonly" /></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4">
|
<td colspan="4">
|
||||||
<input type="button" class="button" name="btnfirst" style="margin-top:5px;float:left" value="" id="btnfirst" accesskey="U" onclick="findRecord(1,2)" />
|
<div class="matrix-phone-grid">
|
||||||
<input type="button" class="button" name="btnprev" style="margin-top:5px;float:left" value="" id="btnprev" accesskey="I" onclick="findRecord(2,2)" />
|
<label>Residence Phone<input id="negrphone" readonly="readonly" /></label>
|
||||||
<input type="button" class="button" name="btnnext" style="margin-top:5px;float:left" value="" id="btnnext" accesskey="O" onclick="findRecord(3,2)" />
|
<label>Office Phone<input id="negophone" readonly="readonly" /></label>
|
||||||
<input type="button" class="button" name="btnlast" style="margin-top:5px;float:left" value="" id="btnlast" accesskey="P" onclick="findRecord(4,2)" />
|
<label>Mobile Number<input id="negmobile" readonly="readonly" /></label>
|
||||||
<input type="button" class="button" name="btnear" style="margin-top:5px;float:right;margin-right:7px" value="Match Found" id="btnneg" accesskey="0" onclick="addRemarks(2,'negremarks')" />
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="matrix-record-navigation">
|
||||||
|
<button type="button" class="matrix-record-nav matrix-record-nav--first" aria-label="First negative match" accesskey="U" onclick="findRecord(1,2)"></button>
|
||||||
|
<button type="button" class="matrix-record-nav matrix-record-nav--previous" aria-label="Previous negative match" accesskey="I" onclick="findRecord(2,2)"></button>
|
||||||
|
<button type="button" class="matrix-record-nav matrix-record-nav--next" aria-label="Next negative match" accesskey="O" onclick="findRecord(3,2)"></button>
|
||||||
|
<button type="button" class="matrix-record-nav matrix-record-nav--last" aria-label="Last negative match" accesskey="P" onclick="findRecord(4,2)"></button>
|
||||||
|
<button type="button" class="button matrix-match-action" id="btnneg" accesskey="0" onclick="addRemarks(2,'negremarks')">Match Found</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -207,13 +195,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Earlier / Negative Details Container -->
|
<!-- Earlier / Negative Details Container -->
|
||||||
<div style="border:1px solid #a7abb4;">
|
<div class="matrix-dedupe-match__remarks">
|
||||||
<table style="width:100%" border="0" cellspacing="0" >
|
<table style="width:100%" border="0" cellspacing="0" >
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:50%" valign="top">
|
<td style="width:50%" valign="top">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/ear_rem.png" id="earimg" align="absmiddle" onclick="editRemarks('earremarks')" />
|
<img class="matrix-title-icon" src="/matrix/images/ear_rem.png" id="earimg" alt="" onclick="editRemarks('earremarks')" />
|
||||||
<span class="matrix-title-text">Earlier Match Remarks</span>
|
<span class="matrix-title-text">Earlier Match Remarks</span>
|
||||||
<div class="nedtrem" id="ctrldiv">
|
<div class="nedtrem" id="ctrldiv">
|
||||||
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('earremarks',1)" title="Remove current record remarks" />
|
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('earremarks',1)" title="Remove current record remarks" />
|
||||||
@@ -224,7 +212,7 @@
|
|||||||
<div id="FormPanel2" class="FormPanel">
|
<div id="FormPanel2" class="FormPanel">
|
||||||
<table align="center" class="matrix-form-controls" style="width:100%">
|
<table align="center" class="matrix-form-controls" style="width:100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td><form:textarea path="earremarks" style="width:98%" rows="3" readonly="true" ></form:textarea></td>
|
<td><form:textarea path="earremarks" style="width:98%" rows="8" readonly="true" ></form:textarea></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -233,7 +221,7 @@
|
|||||||
<td style="width:50%" valign="top">
|
<td style="width:50%" valign="top">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="matrix-title-icon" src="/matrix/images/neg_rem.png" align="absmiddle" />
|
<img class="matrix-title-icon" src="/matrix/images/neg_rem.png" alt="" />
|
||||||
<span class="matrix-title-text">Negative Match Remarks</span>
|
<span class="matrix-title-text">Negative Match Remarks</span>
|
||||||
<div class="nedtrem" id="ctrldiv">
|
<div class="nedtrem" id="ctrldiv">
|
||||||
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('negremarks',2)" title="Remove current record remarks" />
|
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('negremarks',2)" title="Remove current record remarks" />
|
||||||
@@ -244,7 +232,7 @@
|
|||||||
<div id="FormPanel2" class="FormPanel">
|
<div id="FormPanel2" class="FormPanel">
|
||||||
<table align="center" class="matrix-form-controls" style="width:100%">
|
<table align="center" class="matrix-form-controls" style="width:100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td><form:textarea path="negremarks" style="width:98%" rows="3" readonly="true" ></form:textarea></td>
|
<td><form:textarea path="negremarks" style="width:98%" rows="8" readonly="true" ></form:textarea></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -259,23 +247,12 @@
|
|||||||
<form:hidden path="uuid" />
|
<form:hidden path="uuid" />
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<input type="button" class="button" name="btncancel" style="margin-left:1px;margin-top:5px;float:right" value="Close" id="btncancel" accesskey="C" onclick="MatrixDialog.close(0)" />
|
<div class="matrix-workflow-actions">
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return SubmitForm('updatededupe','_parent','dedupeDetails');" />
|
<input type="button" class="button" name="btncancel" value="Close" id="btncancel" accesskey="C" onclick="MatrixDialog.close(0)" />
|
||||||
|
<button type="submit" class="button" name="btnsave" id="btnsave" accesskey="S">Save</button>
|
||||||
|
</div>
|
||||||
</form:form>
|
</form:form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<!-- Page Load Javascript -->
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
FindMatchedRecords('${dedupeDetails.uuid}');
|
|
||||||
</script>
|
|
||||||
<!-- -->
|
|
||||||
<!-- Process Message -->
|
|
||||||
<c:if test="${not empty msg}">
|
|
||||||
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
|
|
||||||
<c:if test="${status == true}">
|
|
||||||
<script language="javascript" type="text/javascript">MatrixDialog.close(1);</script>
|
|
||||||
</c:if>
|
|
||||||
</c:if>
|
|
||||||
<!-- -->
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -41,11 +41,13 @@
|
|||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/punch-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/punch-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/add-cases-v4.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/add-cases-v4.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/matrix/css/date-time-input-v1.css?v=1" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
|
<script src="/matrix/js/lib/date-time-input-v1.js?v=1" defer></script>
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
@@ -219,7 +221,7 @@
|
|||||||
DOB
|
DOB
|
||||||
</div>
|
</div>
|
||||||
<div class="inputcontainer">
|
<div class="inputcontainer">
|
||||||
<input type="text" id="dob" name="dob" maxlength="10" style="width:80px" value="" onkeydown="return addSlashes(this,event)" onblur="validate(this,'f','Date')" />
|
<input type="text" id="dob" name="dob" class="matrix-date-input" data-date-mode="date" maxlength="10" style="width:80px" value="" autocomplete="off" inputmode="numeric" placeholder="DD/MM/YYYY" onkeydown="return addSlashes(this,event)" onblur="validate(this,'f','Date')" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="widget">
|
<div class="widget">
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
|
|||||||
@@ -1,168 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
|
||||||
pageEncoding="ISO-8859-1"%>
|
|
||||||
<%@page language="java" session="true" %>
|
|
||||||
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
|
||||||
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
|
||||||
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
||||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
|
|
||||||
<title>Cygnus 1.0 | Cutoff Pending</title>
|
|
||||||
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/matrix/css/edp-support-v1.css?v=1" rel="stylesheet" type="text/css" />
|
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
|
||||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-edp-support matrix-edp-process">
|
|
||||||
<div id='PageFrame'>
|
|
||||||
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
|
||||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
|
||||||
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1100px">
|
|
||||||
<form:form method="post" name="cutoffpending" id="cutoffpending" modelAttribute="cutoffpending" >
|
|
||||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
|
||||||
<div>
|
|
||||||
<!-- Title -->
|
|
||||||
<div class="title">
|
|
||||||
<img class="matrix-title-icon" src="/matrix/images/cutlist.png" align="absmiddle" />
|
|
||||||
<span class="matrix-title-text" align="absmiddle">Cut-Off Pending</span>
|
|
||||||
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('cutoffpending','_parent','cutoffpending')"/>
|
|
||||||
</div>
|
|
||||||
<!-- -->
|
|
||||||
<div id="TablePanel" class="tableContainer">
|
|
||||||
<table border="0" cellspacing="0" width="100%" id="cutlist">
|
|
||||||
<thead class="thead">
|
|
||||||
<tr title="Row Title">
|
|
||||||
<td width="6%">S.No</td>
|
|
||||||
<td width="65%">Cutoff Time</td>
|
|
||||||
<td>Allocation</td>
|
|
||||||
<td>Telesheet</td>
|
|
||||||
<td>Earlier</td>
|
|
||||||
<td>Negative</td>
|
|
||||||
<td>CutOff</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="scrollContent">
|
|
||||||
<c:forEach items="${cutoffpending.pendinglist}" var="record" varStatus="mystatus">
|
|
||||||
<tr title="parent">
|
|
||||||
<td>${mystatus.count}</td>
|
|
||||||
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
|
|
||||||
<form:hidden path="pendinglist[${mystatus.index}].cutofftime" id="cutofftime${mystatus.count}" value="${status.value}"/>
|
|
||||||
<form:hidden path="pendinglist[${mystatus.index}].total" id="total${mystatus.count}" value="${status.value}"/>
|
|
||||||
<span class="customLink" style="cursor:pointer">${record.cutofftime} <b>(${record.total})</b></span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].allocation" id="chkalloc${mystatus.count}" value="false" onclick="ToggleChecks('chkalloc${mystatus.count}child',this.checked);checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].telesheet" id="chktelesheet${mystatus.count}" value="false" onclick="ToggleChecks('chktelesheet${mystatus.count}child',this.checked);checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].earlier" id="chkear${mystatus.count}" value="false" onclick="ToggleChecks('chkear${mystatus.count}child',this.checked);checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].negative" id="chkneg${mystatus.count}" value="false" onclick="ToggleChecks('chkneg${mystatus.count}child',this.checked);checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].cutoff" id="chkcutoff${mystatus.count}" value="false" onclick="ToggleMatrix('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child',this.checked,',');checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="display:none" id="parent${mystatus.count}child" >
|
|
||||||
<c:choose>
|
|
||||||
<c:when test="${record.total lt 1}">
|
|
||||||
<td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">There are no Records.</td>
|
|
||||||
</c:when>
|
|
||||||
<c:otherwise>
|
|
||||||
<td colspan="8" align="right">
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df">
|
|
||||||
<thead class="thead">
|
|
||||||
<tr title="Heading">
|
|
||||||
<td width="6%">S.No</td>
|
|
||||||
<td>Portfolio</td>
|
|
||||||
<td width="60%">Name</td>
|
|
||||||
<td>Allocation</td>
|
|
||||||
<td>Telesheet</td>
|
|
||||||
<td>Earlier</td>
|
|
||||||
<td>Negative</td>
|
|
||||||
<td>Cutoff</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="scrollContent">
|
|
||||||
<c:forEach items="${record.pendingsublist}" var="record1" varStatus="mystatus1">
|
|
||||||
<tr title="child">
|
|
||||||
<td>${mystatus1.count}</td>
|
|
||||||
<td>
|
|
||||||
<form:hidden path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/>
|
|
||||||
<span>${record1.portfolio}</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span>${record1.customername}</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].allocation" id="chkalloc${mystatus.count}child${mystatus1.count}" value="${status.value}" onclick="checkList('chkalloc${mystatus.count}child','chkalloc${mystatus.count}');checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].telesheet" id="chktelesheet${mystatus.count}child${mystatus1.count}" value="${status.value}" onclick="checkList('chktelesheet${mystatus.count}child','chktelesheet${mystatus.count}');checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].earlier" id="chkear${mystatus.count}child${mystatus1.count}" value="${status.value}" onclick="checkList('chkear${mystatus.count}child','chkear${mystatus.count}');checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].negative" id="chkneg${mystatus.count}child${mystatus1.count}" value="${status.value}" onclick="checkList('chkneg${mystatus.count}child','chkneg${mystatus.count}');checkUncheckList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child','chkalloc${mystatus.count},chktelesheet${mystatus.count},chkear${mystatus.count},chkneg${mystatus.count},chkcutoff${mystatus.count}',',',',',${record.total},0);"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<form:checkbox path="pendinglist[${mystatus.index}].pendingsublist[${mystatus1.index}].cutoff" id="chkcutoff${mystatus.count}child${mystatus1.count}" value="${status.value}" onclick="checkList('chkcutoff${mystatus.count}child','chkcutoff${mystatus.count}');checkRowList('chkalloc${mystatus.count}child,chktelesheet${mystatus.count}child,chkear${mystatus.count}child,chkneg${mystatus.count}child,chkcutoff${mystatus.count}child',',',this.checked,${mystatus1.count});"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</c:forEach>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</c:otherwise>
|
|
||||||
</c:choose>
|
|
||||||
</tr>
|
|
||||||
</c:forEach>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return SubmitForm('savecutoffpending','_parent','cutoffpending');" />
|
|
||||||
<form:hidden path="SessUUID" value=""/>
|
|
||||||
</form:form>
|
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
|
||||||
<input type="hidden" id="selectedports" value="0" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
<!-- Page Load Javascript -->
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
InitPage();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Process Message -->
|
|
||||||
<c:if test="${not empty cutoffpending.getErrMsg()}">
|
|
||||||
<script language="javascript" type="text/javascript">contentType="html"; CallMessage('${cutoffpending.getErrMsg()}',8000,200,300); </script>
|
|
||||||
</c:if>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -6,10 +6,12 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link href="<c:url value='/css/bootstrap-5.3.8.min.css' />" rel="stylesheet" />
|
<link href="<c:url value='/css/bootstrap-5.3.8.min.css' />" rel="stylesheet" />
|
||||||
<link href="<c:url value='/css/matrix-v2.css' />" rel="stylesheet" />
|
<link href="<c:url value='/css/matrix-v2.css?v=6' />" rel="stylesheet" />
|
||||||
<link href="<c:url value='/css/matrix-shell-v2.css' />" rel="stylesheet" />
|
<link href="<c:url value='/css/matrix-shell-v2.css?v=7' />" rel="stylesheet" />
|
||||||
<link href="<c:url value='/css/matrix-theme-v2.css' />" rel="stylesheet" />
|
<link href="<c:url value='/css/matrix-frame-dialog.css?v=6' />" rel="stylesheet" />
|
||||||
|
<link href="<c:url value='/css/matrix-theme-v2.css?v=4' />" rel="stylesheet" />
|
||||||
<script src="<c:url value='/js/matrix-shell-v2.js' />" defer></script>
|
<script src="<c:url value='/js/matrix-shell-v2.js' />" defer></script>
|
||||||
|
<script src="<c:url value='/js/matrix-frame-dialog.js?v=2' />" defer></script>
|
||||||
<title>Cygnus 1.0 | <c:out value="${empty messageDetails.title ? 'Page unavailable' : messageDetails.title}" /></title>
|
<title>Cygnus 1.0 | <c:out value="${empty messageDetails.title ? 'Page unavailable' : messageDetails.title}" /></title>
|
||||||
</head>
|
</head>
|
||||||
<body class="matrix-v2 matrix-shell matrix-error-page matrix-error-page--${empty messageDetails.httpStatus ? 404 : messageDetails.httpStatus}">
|
<body class="matrix-v2 matrix-shell matrix-error-page matrix-error-page--${empty messageDetails.httpStatus ? 404 : messageDetails.httpStatus}">
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/progressbar.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/progressbar.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script>
|
<script src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
|
||||||
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
|
||||||
|
|||||||
@@ -26,12 +26,14 @@
|
|||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/mis-filter-v4.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/mis-filter-v4.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/matrix/css/date-time-input-v1.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
|
<script src="/matrix/js/lib/date-time-input-v1.js?v=2" defer></script>
|
||||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||||
<link href="/matrix/css/mis-output-v1.css?v=1" rel="stylesheet" type="text/css" />
|
<link href="/matrix/css/mis-output-v1.css?v=7" rel="stylesheet" type="text/css" />
|
||||||
<title>Cygnus 1.0 | ${filter.title }</title>
|
<title>Cygnus 1.0 | ${filter.title }</title>
|
||||||
|
|
||||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||||
@@ -25,7 +25,16 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="matrix-v2 matrix-mis-output">
|
<body class="matrix-v2 matrix-mis-output">
|
||||||
<form:form method="post" name="filter" id="filter" modelAttribute="filter" >
|
<form:form method="post" name="filter" id="filter" modelAttribute="filter" >
|
||||||
|
<c:if test="${hourlyJasperReport}">
|
||||||
|
<div class="matrix-report-actions">
|
||||||
|
<button type="submit" class="btn btn-primary btn-sm" formaction="${pageContext.request.contextPath}/ver/dtmis/xlsx">Export XLSX</button>
|
||||||
|
<button type="submit" class="btn btn-outline-primary btn-sm" formaction="${pageContext.request.contextPath}/ver/dtmis/pdf">Export PDF</button>
|
||||||
|
<button type="submit" class="btn btn-outline-primary btn-sm" formaction="${pageContext.request.contextPath}/ver/dtmis/csv">Export CSV</button>
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
<div class="matrix-report-scroll">
|
||||||
${filter.html}
|
${filter.html}
|
||||||
|
</div>
|
||||||
<input type="hidden" id="invalidfields" value="0" />
|
<input type="hidden" id="invalidfields" value="0" />
|
||||||
<form:hidden path="qid" />
|
<form:hidden path="qid" />
|
||||||
<form:hidden path="title" />
|
<form:hidden path="title" />
|
||||||
|
|||||||
@@ -4,16 +4,57 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow .title {
|
.matrix-cutoff-workflow .title {
|
||||||
margin-bottom: 10px;
|
display: flex !important;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 38px;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 6px 10px !important;
|
||||||
|
gap: 8px;
|
||||||
|
border: 1px solid #aebfce !important;
|
||||||
|
border-radius: 6px 6px 0 0;
|
||||||
|
background: #f7f9fb !important;
|
||||||
|
color: #263746 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow .title > .divselect {
|
.matrix-cutoff-workflow .matrix-cutoff-title-actions {
|
||||||
width: 132px !important;
|
display: flex;
|
||||||
margin-left: auto !important;
|
align-items: center;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
gap: 8px;
|
||||||
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow .title > .divselect select {
|
.matrix-cutoff-workflow .matrix-cutoff-title-actions > .divselect {
|
||||||
|
position: static !important;
|
||||||
|
width: 150px !important;
|
||||||
|
height: 28px !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .matrix-cutoff-title-actions > .divselect select {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
|
height: 28px !important;
|
||||||
|
padding: 2px 28px 2px 8px !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .matrix-title-action {
|
||||||
|
position: static !important;
|
||||||
|
flex: 0 0 28px;
|
||||||
|
width: 28px !important;
|
||||||
|
height: 28px !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 6px !important;
|
||||||
|
border: 0 !important;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .matrix-title-action:hover,
|
||||||
|
.matrix-cutoff-workflow .matrix-title-action:focus {
|
||||||
|
background: #e5edf4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow .tableContainer {
|
.matrix-cutoff-workflow .tableContainer {
|
||||||
@@ -21,7 +62,7 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border: 1px solid #c3d0da !important;
|
border: 1px solid #c3d0da !important;
|
||||||
border-radius: 6px;
|
border-radius: 0 0 6px 6px;
|
||||||
background: #f4f8fb !important;
|
background: #f4f8fb !important;
|
||||||
box-shadow: 0 2px 8px rgba(31, 52, 72, .08);
|
box-shadow: 0 2px 8px rgba(31, 52, 72, .08);
|
||||||
}
|
}
|
||||||
@@ -77,9 +118,23 @@
|
|||||||
.matrix-cutoff-workflow .tableContainer table table {
|
.matrix-cutoff-workflow .tableContainer table table {
|
||||||
width: calc(100% - 18px) !important;
|
width: calc(100% - 18px) !important;
|
||||||
margin: 8px 0 8px auto;
|
margin: 8px 0 8px auto;
|
||||||
border: 1px solid #c7d4df;
|
border: 1px solid #9fb2c3;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: #f8fafc;
|
background: #fff !important;
|
||||||
|
box-shadow: 0 2px 6px rgba(31, 52, 72, .12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .tableContainer > table > tbody > tr[id$="child"] > td {
|
||||||
|
padding: 6px 10px 8px !important;
|
||||||
|
background: #dfeaf3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .tableContainer table table > tbody > tr > td {
|
||||||
|
background: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .tableContainer table table > tbody > tr:nth-child(even) > td {
|
||||||
|
background: #f1f6fa !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow .tableContainer input[type="checkbox"] {
|
.matrix-cutoff-workflow .tableContainer input[type="checkbox"] {
|
||||||
@@ -89,10 +144,42 @@
|
|||||||
accent-color: #245a91;
|
accent-color: #245a91;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow form > input.button {
|
.matrix-cutoff-workflow .matrix-workflow-actions {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
min-height: 46px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
border-top: 1px solid #b8c9d8;
|
||||||
|
background: #f7fafd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .matrix-workflow-actions > input.button {
|
||||||
min-width: 96px;
|
min-width: 96px;
|
||||||
margin: 10px 0 0 8px !important;
|
margin: 0 !important;
|
||||||
float: right !important;
|
float: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .matrix-workflow-actions .matrix-button,
|
||||||
|
.matrix-cutoff-workflow .matrix-workflow-actions > input.button,
|
||||||
|
.matrix-cutoff-workflow form > input.button,
|
||||||
|
.matrix-cutoff-workflow form > a.button {
|
||||||
|
min-height: 30px;
|
||||||
|
padding: 5px 14px !important;
|
||||||
|
border: 1px solid #245a91 !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
color: #fff !important;
|
||||||
|
background: #28639b !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
line-height: 18px !important;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-workflow .customLink {
|
||||||
|
color: #245a91;
|
||||||
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-cutoff-workflow form::after {
|
.matrix-cutoff-workflow form::after {
|
||||||
@@ -114,3 +201,62 @@
|
|||||||
width: calc(100% - 12px) !important;
|
width: calc(100% - 12px) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-icon-button {
|
||||||
|
margin-left: auto !important;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-icon-button img {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-parent-row td:not(:nth-child(2)),
|
||||||
|
.matrix-cutoff-pending .matrix-nested-table td:not(:nth-child(2)):not(:nth-child(3)) {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-row-toggle {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 7px;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
color: #245a91;
|
||||||
|
background: transparent;
|
||||||
|
font: inherit;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-row-toggle__chevron {
|
||||||
|
width: 12px;
|
||||||
|
color: #516c82;
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-expanded-row > td {
|
||||||
|
padding: 8px 10px !important;
|
||||||
|
background: #dfeaf3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-nested-table {
|
||||||
|
width: 100% !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
border: 1px solid #9fb2c3 !important;
|
||||||
|
background: #fff !important;
|
||||||
|
box-shadow: 0 2px 6px rgba(31, 52, 72, .12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-nested-table tbody tr:nth-child(even) td {
|
||||||
|
background: #f1f6fa !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-cutoff-pending .matrix-empty-row {
|
||||||
|
padding: 18px !important;
|
||||||
|
text-align: center !important;
|
||||||
|
color: #65798a;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
.matrix-date-control {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-date-control > .matrix-date-input {
|
||||||
|
min-width: 0;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
padding-right: 38px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-date-control__button {
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
bottom: 1px;
|
||||||
|
display: grid;
|
||||||
|
width: 34px;
|
||||||
|
padding: 0;
|
||||||
|
place-items: center;
|
||||||
|
border: 0;
|
||||||
|
border-left: 1px solid #c4d0da;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
background: #edf3f7;
|
||||||
|
color: #285f8f;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-date-control__button:hover,
|
||||||
|
.matrix-date-control__button:focus-visible {
|
||||||
|
background: #dfeaf3;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-date-control__picker {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-mis-filter .FormPanel .matrix-date-field {
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
@@ -1,12 +1,161 @@
|
|||||||
|
.matrix-tool-workspace.matrix-dedupe-workflow {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.matrix-dedupe-workflow .matrix-tool-workspace__content {
|
.matrix-dedupe-workflow .matrix-tool-workspace__content {
|
||||||
width: calc(100% - 24px) !important;
|
width: calc(100% - 24px) !important;
|
||||||
max-width: 1380px !important;
|
max-width: 1380px !important;
|
||||||
|
margin: 10px auto 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-workflow .title {
|
.matrix-dedupe-workflow .title {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-tool-workspace__content .title > .matrix-title-icon {
|
||||||
|
display: block;
|
||||||
|
width: 17px !important;
|
||||||
|
height: 17px !important;
|
||||||
|
flex: 0 0 17px;
|
||||||
|
margin: 0 !important;
|
||||||
|
object-fit: contain;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-tool-workspace__content .title > .matrix-title-text {
|
||||||
|
line-height: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-dedupe-run__title {
|
||||||
|
display: flex !important;
|
||||||
|
min-height: 38px;
|
||||||
|
align-items: center;
|
||||||
|
gap: 7px;
|
||||||
|
padding: 5px 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-dedupe-run__title > .matrix-title-action {
|
||||||
|
width: 17px !important;
|
||||||
|
height: 17px !important;
|
||||||
|
margin-left: auto !important;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist {
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid #aebfcd;
|
||||||
|
border-radius: 5px;
|
||||||
|
background: #f4f8fb;
|
||||||
|
box-shadow: 0 3px 10px rgba(31, 52, 72, .09);
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__header {
|
||||||
|
display: flex !important;
|
||||||
|
min-height: 38px;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 4px 8px !important;
|
||||||
|
flex-wrap: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__heading,
|
||||||
|
.matrix-dedupe-worklist__actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__heading {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
gap: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-dedupe-worklist__header > .matrix-dedupe-worklist__actions {
|
||||||
|
min-width: 0;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
gap: 7px;
|
||||||
|
flex-wrap: nowrap !important;
|
||||||
|
width: auto !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__portfolio {
|
||||||
|
min-width: 0;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
height: 29px !important;
|
||||||
|
padding: 2px 28px 2px 8px !important;
|
||||||
|
font-size: 13px !important;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__refresh {
|
||||||
|
display: inline-flex;
|
||||||
|
width: 29px;
|
||||||
|
height: 29px;
|
||||||
|
flex: 0 0 29px;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__refresh:hover,
|
||||||
|
.matrix-dedupe-worklist__refresh:focus-visible {
|
||||||
|
background: #e2ebf3;
|
||||||
|
outline: 1px solid #9fb5c7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__refresh img {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__table-wrap {
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #c3d0da;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__table-wrap thead th {
|
||||||
|
padding: 7px 9px;
|
||||||
|
color: #31475b;
|
||||||
|
background: #e8eef4;
|
||||||
|
border-color: #d3dce5;
|
||||||
|
font-size: 11px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__table-wrap tbody td {
|
||||||
|
padding: 6px 9px;
|
||||||
|
border-color: #dce4eb;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__row {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__row:nth-child(even) td {
|
||||||
|
background: #edf3f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__row:hover td,
|
||||||
|
.matrix-dedupe-worklist__row:focus td {
|
||||||
|
background: #dfedf8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-worklist__empty {
|
||||||
|
padding: 24px !important;
|
||||||
|
color: #637586;
|
||||||
|
text-align: center;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
.matrix-dedupe-workflow .title > .divselect {
|
.matrix-dedupe-workflow .title > .divselect {
|
||||||
width: min(320px, 38vw) !important;
|
width: min(320px, 38vw) !important;
|
||||||
margin-left: auto !important;
|
margin-left: auto !important;
|
||||||
@@ -70,14 +219,50 @@
|
|||||||
.matrix-dedupe-workflow .tableContainer table table {
|
.matrix-dedupe-workflow .tableContainer table table {
|
||||||
width: calc(100% - 18px) !important;
|
width: calc(100% - 18px) !important;
|
||||||
margin: 8px 0 8px auto;
|
margin: 8px 0 8px auto;
|
||||||
border: 1px solid #c7d4df;
|
border: 1px solid #9fb2c3;
|
||||||
background: #f8fafc;
|
border-radius: 4px;
|
||||||
|
background: #fff !important;
|
||||||
|
box-shadow: 0 2px 6px rgba(31, 52, 72, .12);
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-workflow form > input.button {
|
/* Migration convention: nested data grids must remain visually distinct. */
|
||||||
|
.matrix-dedupe-workflow .tableContainer > table > tbody > tr:has(> td > table) > td {
|
||||||
|
padding: 6px 10px 8px !important;
|
||||||
|
background: #dfeaf3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .tableContainer table table > tbody > tr > td {
|
||||||
|
background: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .tableContainer table table > tbody > tr:nth-child(even) > td {
|
||||||
|
background: #f1f6fa !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-workflow-actions {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
min-height: 46px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
border-top: 1px solid #b8c9d8;
|
||||||
|
background: #f7fafd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-workflow .matrix-workflow-actions .button {
|
||||||
min-width: 108px;
|
min-width: 108px;
|
||||||
margin: 10px 0 0 8px !important;
|
margin: 0 !important;
|
||||||
float: right !important;
|
float: none !important;
|
||||||
|
min-height: 30px;
|
||||||
|
padding: 5px 14px !important;
|
||||||
|
border: 1px solid #245a91 !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
color: #fff !important;
|
||||||
|
background: #28639b !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
line-height: 18px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-workflow form::after {
|
.matrix-dedupe-workflow form::after {
|
||||||
@@ -106,39 +291,187 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match #dedupeDetails .title {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
min-height: 36px;
|
||||||
|
align-items: center;
|
||||||
|
gap: 7px;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 6px 9px !important;
|
||||||
|
border-bottom: 1px solid #aebfcd !important;
|
||||||
|
background: #eef3f7 !important;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match #dedupeDetails .title > .matrix-title-icon {
|
||||||
|
display: block;
|
||||||
|
width: 17px !important;
|
||||||
|
height: 17px !important;
|
||||||
|
flex: 0 0 17px;
|
||||||
|
margin: 0 !important;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match #dedupeDetails .title > .matrix-title-text {
|
||||||
|
min-width: 0;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match #dedupeDetails .title > .nedtrem {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match #dedupeDetails .title > .nedtrem img {
|
||||||
|
width: 17px;
|
||||||
|
height: 17px;
|
||||||
|
object-fit: contain;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.matrix-dedupe-match .FormPanel {
|
.matrix-dedupe-match .FormPanel {
|
||||||
padding: 10px 12px;
|
padding: 5px 10px;
|
||||||
border: 0 !important;
|
border: 0 !important;
|
||||||
|
background: #f4f8fb !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-match .matrix-form-controls {
|
.matrix-dedupe-match .matrix-form-controls {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
border-spacing: 7px 4px;
|
table-layout: fixed;
|
||||||
|
border-spacing: 8px 2px;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-form-controls td {
|
||||||
|
height: auto !important;
|
||||||
|
padding: 1px 8px !important;
|
||||||
|
color: #34495b;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 14px;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-match .matrix-form-controls input:not([type="hidden"]),
|
.matrix-dedupe-match .matrix-form-controls input:not([type="hidden"]),
|
||||||
.matrix-dedupe-match .matrix-form-controls textarea {
|
.matrix-dedupe-match .matrix-form-controls textarea {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
width: 100% !important;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
min-height: 30px;
|
||||||
|
padding: 4px 7px !important;
|
||||||
border: 1px solid #b8c7d3 !important;
|
border: 1px solid #b8c7d3 !important;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background: #fff !important;
|
background: #fff !important;
|
||||||
|
color: #24313d;
|
||||||
|
font-size: 12px !important;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-form-controls input:not([type="hidden"]) {
|
||||||
|
width: 100% !important;
|
||||||
|
height: 30px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__comparison,
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__remarks {
|
||||||
|
border: 1px solid #aebfcd !important;
|
||||||
|
background: #dfeaf3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__comparison > table,
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__remarks > table {
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__comparison > table > tbody > tr > td + td,
|
||||||
|
.matrix-dedupe-match .matrix-dedupe-match__remarks > table > tbody > tr > td + td {
|
||||||
|
border-left: 1px solid #b8c9d8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-record-navigation {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-phone-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
|
gap: 10px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-phone-grid label {
|
||||||
|
display: flex;
|
||||||
|
min-width: 0;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 3px;
|
||||||
|
margin: 0;
|
||||||
|
color: #34495b;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-phone-grid input {
|
||||||
|
width: 100% !important;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-record-nav {
|
||||||
|
width: 32px;
|
||||||
|
height: 29px;
|
||||||
|
flex: 0 0 32px;
|
||||||
|
padding: 0;
|
||||||
|
border: 1px solid #9fb3c4;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #f7fafc;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-record-nav:hover,
|
||||||
|
.matrix-dedupe-match .matrix-record-nav:focus-visible {
|
||||||
|
border-color: #28699d;
|
||||||
|
background-color: #e2edf6;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-record-nav--first { background-image: url('/matrix/images/first.png'); }
|
||||||
|
.matrix-dedupe-match .matrix-record-nav--previous { background-image: url('/matrix/images/prev.png'); }
|
||||||
|
.matrix-dedupe-match .matrix-record-nav--next { background-image: url('/matrix/images/next.png'); }
|
||||||
|
.matrix-dedupe-match .matrix-record-nav--last { background-image: url('/matrix/images/last.png'); }
|
||||||
|
|
||||||
|
.matrix-dedupe-match .matrix-match-action {
|
||||||
|
width: auto !important;
|
||||||
|
min-width: 108px;
|
||||||
|
min-height: 29px;
|
||||||
|
margin: 0 0 0 auto !important;
|
||||||
|
padding: 4px 12px !important;
|
||||||
|
float: none !important;
|
||||||
|
background-image: none !important;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-match .matrix-form-controls textarea {
|
.matrix-dedupe-match .matrix-form-controls textarea {
|
||||||
resize: vertical;
|
resize: vertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-dedupe-match :is(#btnfirst, #btnprev, #btnnext, #btnlast) {
|
|
||||||
width: 30px !important;
|
|
||||||
min-width: 30px;
|
|
||||||
padding: 3px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.matrix-dedupe-match :is(#btnear, #btnneg) {
|
.matrix-dedupe-match :is(#btnear, #btnneg) {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
|
background-image: none !important;
|
||||||
background-color: #245a91 !important;
|
background-color: #245a91 !important;
|
||||||
border-color: #245a91 !important;
|
border-color: #245a91 !important;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 760px) {
|
@media (max-width: 760px) {
|
||||||
|
|||||||
@@ -64,25 +64,43 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel {
|
.matrix-mis-filter .FormPanel {
|
||||||
padding: 20px 18px;
|
height: auto !important;
|
||||||
|
min-height: 0 !important;
|
||||||
|
padding: 16px 18px;
|
||||||
border: 1px solid #c9d4de;
|
border: 1px solid #c9d4de;
|
||||||
border-radius: 0 0 5px 5px;
|
border-radius: 0 0 5px 5px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel table {
|
.matrix-mis-filter .FormPanel table {
|
||||||
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.matrix-mis-filter .FormPanel table tbody,
|
||||||
|
.matrix-mis-filter .FormPanel table tr,
|
||||||
|
.matrix-mis-filter .FormPanel table tr td {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel table tr td {
|
.matrix-mis-filter .FormPanel table tr td {
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-items: end;
|
|
||||||
gap: 14px 18px;
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.matrix-mis-filter .FormPanel table tr:first-child td {
|
||||||
|
display: grid;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-mis-filter .FormPanel table tr:last-child td {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding-top: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel .widget {
|
.matrix-mis-filter .FormPanel .widget {
|
||||||
display: flex;
|
display: flex;
|
||||||
min-width: 230px;
|
min-width: 230px;
|
||||||
@@ -124,12 +142,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel input.button {
|
.matrix-mis-filter .FormPanel input.button {
|
||||||
|
width: auto !important;
|
||||||
min-width: 96px;
|
min-width: 96px;
|
||||||
min-height: 34px;
|
min-height: 34px;
|
||||||
padding: 6px 14px 6px 30px !important;
|
padding: 6px 14px 6px 30px !important;
|
||||||
border-color: #7f8b96;
|
border-color: #7f8b96;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #e5e8eb;
|
background-color: #e5e8eb;
|
||||||
|
float: none !important;
|
||||||
|
margin: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.matrix-mis-filter .FormPanel br {
|
.matrix-mis-filter .FormPanel br {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
.matrix-mis-output form {
|
.matrix-mis-output form {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 1600px;
|
max-width: none;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
@@ -129,3 +129,43 @@
|
|||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.matrix-report-actions {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 6px;
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-report-scroll {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-report-scroll .jrPage {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.matrix-mis-output .jrPage {
|
||||||
|
margin: 0 auto;
|
||||||
|
background: #f7fafc;
|
||||||
|
border: 1px solid #9fb2c3;
|
||||||
|
box-shadow: 0 2px 8px rgba(38, 66, 89, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hourly-mis { width: 100%; box-sizing: border-box; padding: 18px; background: #f7fafc; border: 1px solid #9fb2c3; }
|
||||||
|
.hourly-mis__header { text-align: center; }
|
||||||
|
.hourly-mis__header h1 { margin: 0; font-size: 18px; font-weight: 700; }
|
||||||
|
.hourly-mis__header h2 { margin: 3px 0; font-size: 14px; font-weight: 700; }
|
||||||
|
.hourly-mis__header p, .hourly-mis__branch { margin: 5px 0; font-size: 14px; }
|
||||||
|
.hourly-mis__branch { font-weight: 700; }
|
||||||
|
.hourly-mis__table { width: 100%; table-layout: fixed; border-collapse: collapse; background: #fff; }
|
||||||
|
.hourly-mis__table th, .hourly-mis__table td { padding: 5px 4px; border: 1px solid #9fb2c3; font-size: 12px; text-align: center; }
|
||||||
|
.hourly-mis__table thead th { background: #dce7f1; font-weight: 700; }
|
||||||
|
.hourly-mis__table th:first-child, .hourly-mis__table td:first-child { width: 110px; text-align: left; }
|
||||||
|
.hourly-mis__operator th { background: #e3e8ed; text-align: left; }
|
||||||
|
.hourly-mis__operator span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||||
|
.hourly-mis__total th, .hourly-mis__total td { background: #dde8f1; font-weight: 700; }
|
||||||
|
.hourly-mis__empty { padding: 28px !important; color: #73808b; font-style: italic; text-align: center !important; }
|
||||||
|
|||||||
@@ -1,383 +0,0 @@
|
|||||||
var currow=0;
|
|
||||||
var lastrow=0;
|
|
||||||
var negIndx=0;
|
|
||||||
var earIndx=0;
|
|
||||||
var earlier= new Array(1);
|
|
||||||
var negative= new Array(1);
|
|
||||||
var earpos=0;
|
|
||||||
var negpos=0;
|
|
||||||
var ctrlear="";
|
|
||||||
var ctrlneg="";
|
|
||||||
function InitPage()
|
|
||||||
{
|
|
||||||
$('form tbody.scrollContent tr').hover(function () {
|
|
||||||
$(this).addClass('rowhover');
|
|
||||||
}, function () {
|
|
||||||
$(this).removeClass('rowhover');
|
|
||||||
});
|
|
||||||
$('form tbody.scrollContent tr').click(function () {
|
|
||||||
currow=$(this).index();
|
|
||||||
GetRowData(this);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function ResetRow()
|
|
||||||
{
|
|
||||||
currow=0;
|
|
||||||
lastrow=$('#casetable tr').length-1;
|
|
||||||
}
|
|
||||||
function GetRowData(SelectedRow)
|
|
||||||
{
|
|
||||||
var rowId=$(SelectedRow).attr('id');
|
|
||||||
QueryStr="rand="+Math.round(Math.random()*4+1)+"&uuid="+$("#"+rowId+"uuid").val();
|
|
||||||
OpenMatrixDialog("dedupefound?"+QueryStr,"Dedupe Details").then(function(retVal) {
|
|
||||||
if(retVal==1)
|
|
||||||
{
|
|
||||||
$(SelectedRow).remove();
|
|
||||||
lastrow=currow-1;
|
|
||||||
changeRow();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function keyListen(param1,param2,e) {
|
|
||||||
var keycode = e.keyCode;
|
|
||||||
if(keycode==13)
|
|
||||||
{
|
|
||||||
GetRowData($('tr:eq('+currow+')', $("#casetable")));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(keycode==40)
|
|
||||||
{
|
|
||||||
currow=currow+1;
|
|
||||||
if(currow>=$('#casetable tr').length){currow=1;lastrow=$('#casetable tr').length-1;}
|
|
||||||
changeRow();
|
|
||||||
}
|
|
||||||
if(keycode==38)
|
|
||||||
{
|
|
||||||
currow=currow-1;
|
|
||||||
if(currow<=0){currow=$('#casetable tr').length-1;lastrow=1;}
|
|
||||||
changeRow();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function changeRow()
|
|
||||||
{
|
|
||||||
$('tr:eq('+currow+')', $("#casetable")).addClass('rowhover');
|
|
||||||
$('tr:eq('+lastrow+')', $("#casetable")).removeClass('rowhover');
|
|
||||||
$('tr:eq('+currow+')', $("#casetable")).focus();
|
|
||||||
lastrow=currow;
|
|
||||||
}
|
|
||||||
function callkeydownhandler(evnt) {
|
|
||||||
var ev = evnt;
|
|
||||||
keyListen('','',ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
window.document.addEventListener("keydown", callkeydownhandler, false);
|
|
||||||
|
|
||||||
function FindMatchedRecords(uuid)
|
|
||||||
{
|
|
||||||
$("#efoundon").html("<b>Loading</b> <img src='/matrix/images/loading.gif' align='absmiddle' />");
|
|
||||||
$("#nfoundon").html("<b>Loading</b> <img src='/matrix/images/loading.gif' align='absmiddle' />");
|
|
||||||
RunAjax("GET","deduperecords","uuid="+uuid,1);
|
|
||||||
}
|
|
||||||
function AfterResponse(response,oprID)
|
|
||||||
{
|
|
||||||
if(oprID==1)
|
|
||||||
{
|
|
||||||
negIndx=0;
|
|
||||||
earIndx=0;
|
|
||||||
if(response.trim()!='')
|
|
||||||
{
|
|
||||||
var rows=response.split(RowDelim);
|
|
||||||
for(rindx=0;rindx<rows.length;rindx++)
|
|
||||||
{
|
|
||||||
var cols=rows[rindx].split(ColDelim);
|
|
||||||
if(cols[0]=='EAR')
|
|
||||||
{
|
|
||||||
earlier[earIndx]=new Array(cols.length);
|
|
||||||
for(cindx=0;cindx<cols.length;cindx++)
|
|
||||||
{
|
|
||||||
earlier[earIndx][cindx]=cols[cindx];
|
|
||||||
}
|
|
||||||
earIndx=earIndx+1;
|
|
||||||
}
|
|
||||||
else if(cols[0]=='NEG')
|
|
||||||
{
|
|
||||||
negative[negIndx]=new Array(cols.length);
|
|
||||||
for(cindx=0;cindx<cols.length;cindx++)
|
|
||||||
{
|
|
||||||
negative[negIndx][cindx]=cols[cindx];
|
|
||||||
}
|
|
||||||
negIndx=negIndx+1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//earIndx= earIndx==0 ? earIndx : earIndx-1;
|
|
||||||
//negIndx= negIndx==0 ? negIndx : negIndx-1;
|
|
||||||
$("#efound").html("<b>("+(earIndx==0 ? "No" : earIndx)+" Match Found)</b>");
|
|
||||||
$("#nfound").html("<b>("+(negIndx==0 ? "No" : negIndx)+" Match Found)</b>");
|
|
||||||
|
|
||||||
FillDetails(1);
|
|
||||||
FillDetails(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function findRecord(arrOpr,opr)
|
|
||||||
{
|
|
||||||
tempPos= opr==1 ? earpos:negpos;
|
|
||||||
maxLen= opr==1 ? earIndx-1:negIndx-1;
|
|
||||||
if(arrOpr==1) tempPos=0;
|
|
||||||
if(arrOpr==2)
|
|
||||||
{
|
|
||||||
if(tempPos>0) tempPos=tempPos-1;
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
if(arrOpr==3)
|
|
||||||
{
|
|
||||||
if(tempPos<maxLen) tempPos=tempPos+1;
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
if(arrOpr==4) tempPos=maxLen;
|
|
||||||
earpos= opr==1 ? tempPos:earpos;
|
|
||||||
negpos= opr==2 ? tempPos:negpos;
|
|
||||||
FillDetails(opr);
|
|
||||||
}
|
|
||||||
function FillDetails(opr)
|
|
||||||
{
|
|
||||||
if(opr==1)
|
|
||||||
{
|
|
||||||
if(earIndx > 0)
|
|
||||||
{
|
|
||||||
var addropt=MatchWith(earlier[earpos][1],'ear');
|
|
||||||
MatchFoundOn(earlier[earpos][2],'ear');
|
|
||||||
$("#earname").val(earlier[earpos][6]);
|
|
||||||
$("#eardob").val(earlier[earpos][7]);
|
|
||||||
if(addropt==1)
|
|
||||||
{
|
|
||||||
$("#earaddress").val(earlier[earpos][8]+" "+earlier[earpos][9]+" "+earlier[earpos][10]);
|
|
||||||
}
|
|
||||||
else if(addropt==2)
|
|
||||||
{
|
|
||||||
$("#earaddress").val(earlier[earpos][14]+" "+earlier[earpos][15]+" "+earlier[earpos][16]);
|
|
||||||
}
|
|
||||||
else if(addropt==3)
|
|
||||||
{
|
|
||||||
addr=earlier[earpos][8].trim()!='' ? ('Residence Address: '+earlier[earpos][8]+" "+earlier[earpos][9]+" "+earlier[earpos][10]):'';
|
|
||||||
addr=(addr.length > 0 ? addr+'\n\n':'')+(earlier[earpos][14].trim()!='' ? ('Office Address: '+earlier[earpos][14]+" "+earlier[earpos][15]+" "+earlier[earpos][16]):'');
|
|
||||||
$("#earaddress").val(addr);
|
|
||||||
}
|
|
||||||
$("#earrphone").val(earlier[earpos][11]);
|
|
||||||
$("#earophone").val(earlier[earpos][12]);
|
|
||||||
$("#earmobile").val(earlier[earpos][13]);
|
|
||||||
$("#efoundon").html("Match Found On : <b>"+earlier[earpos][1]+"</b>");
|
|
||||||
$("#efound").html("<b>("+(Number(earpos)+1)+" / "+ earIndx+" Match Found)</b>");
|
|
||||||
//$("#ecurrecord").html("Current Record : <b>"+(Number(earpos)+1)+"</b>");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#efoundon").html("<b>No Match Found</b>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(opr==2)
|
|
||||||
{
|
|
||||||
if(negIndx > 0)
|
|
||||||
{
|
|
||||||
var addropt=MatchWith(negative[negpos][1],'neg');
|
|
||||||
MatchFoundOn(negative[negpos][1],'neg');
|
|
||||||
$("#negname").val(negative[negpos][6]);
|
|
||||||
$("#negdob").val(negative[negpos][7]);
|
|
||||||
if(addropt==1)
|
|
||||||
{
|
|
||||||
$("#negaddress").val(negative[negpos][8]+" "+negative[negpos][9]+" "+negative[negpos][10]);
|
|
||||||
}
|
|
||||||
else if(addropt==2)
|
|
||||||
{
|
|
||||||
$("#negaddress").val(negative[negpos][14]+" "+negative[negpos][15]+" "+negative[negpos][16]);
|
|
||||||
}
|
|
||||||
else if(addropt==3)
|
|
||||||
{
|
|
||||||
addr=negative[negpos][8].trim()!='' ? ('Residence Address: '+negative[negpos][8]+" "+negative[negpos][9]+" "+negative[negpos][10]):'';
|
|
||||||
addr=(addr.length > 0 ? addr+'\n\n':'')+(negative[negpos][14].trim()!='' ? ('Office Address: '+negative[negpos][14]+" "+negative[negpos][15]+" "+negative[negpos][16]):'');
|
|
||||||
$("#negaddress").val(addr);
|
|
||||||
}
|
|
||||||
$("#negrphone").val(negative[negpos][11]);
|
|
||||||
$("#negophone").val(negative[negpos][12]);
|
|
||||||
$("#negmobile").val(negative[negpos][13]);
|
|
||||||
$("#nfoundon").html("Match Found On : <b>"+negative[negpos][1]+"</b>");
|
|
||||||
$("#nfound").html("<b>("+(Number(negpos)+1)+" / "+negIndx+" Match Found)</b>");
|
|
||||||
//$("#efound").html("Current Record : <b>"+(Number(negpos)+1)+"</b>");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#nfoundon").html("<b>No Match Found</b>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function MatchFoundOn(MatchFoundOn,Opr)
|
|
||||||
{
|
|
||||||
if(MatchFoundOn.search("MATCH WITH SAME RESIDENCE ADDRESS") > -1)
|
|
||||||
{
|
|
||||||
Opr=="ear" ? ctrlear=ctrlear+",resiaddress" : ctrlneg=ctrlneg+",resiaddress";
|
|
||||||
$("#resiaddress").addClass(Opr+"match");
|
|
||||||
}
|
|
||||||
if(MatchFoundOn.search("MATCH WITH SAME OFFICE ADDRESS") > -1)
|
|
||||||
{
|
|
||||||
Opr=="ear" ? ctrlear=ctrlear+",offaddress" : ctrlneg=ctrlneg+",offaddress";
|
|
||||||
$("#offaddress").addClass(Opr+"match");
|
|
||||||
}
|
|
||||||
if(MatchFoundOn.search("MATCH WITH SAME RESIDENCE PHONE") > -1)
|
|
||||||
{
|
|
||||||
Opr=="ear" ? ctrlear=ctrlear+",rphone" : ctrlneg=ctrlneg+",rphone";
|
|
||||||
$("#rphone").addClass(Opr+"match");
|
|
||||||
}
|
|
||||||
if(MatchFoundOn.search("MATCH WITH SAME OFFICE PHONE") > -1)
|
|
||||||
{
|
|
||||||
Opr=="ear" ? ctrlear=ctrlear+",ophone" : ctrlneg=ctrlneg+",ophone";
|
|
||||||
$("#ophone").addClass(Opr+"match");
|
|
||||||
}
|
|
||||||
if(MatchFoundOn.search("MATCH WITH SAME MOBILE PHONE NUMBER") > -1)
|
|
||||||
{
|
|
||||||
Opr=="ear" ? ctrlear=ctrlear+",mobile" : ctrlneg=ctrlneg+",mobile";
|
|
||||||
$("#mobile").addClass(Opr+"match");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function MatchWith(MatchWith,Opr)
|
|
||||||
{
|
|
||||||
resetMarking(Opr);
|
|
||||||
Opr=="ear" ? ctrlear="" : ctrlneg="";
|
|
||||||
if(MatchWith=="RESIDENCE ADDRESS")
|
|
||||||
{
|
|
||||||
temp=Opr+"address";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"address").addClass(Opr+"match");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(MatchWith=="OFFICE ADDRESS")
|
|
||||||
{
|
|
||||||
temp=Opr+"address";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"address").addClass(Opr+"match");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if(MatchWith=="RESIDENCE PHONE")
|
|
||||||
{
|
|
||||||
temp=Opr+"rphone";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"rphone").addClass(Opr+"match");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(MatchWith=="OFFICE PHONE")
|
|
||||||
{
|
|
||||||
temp=Opr+"ophone";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"ophone").addClass(Opr+"match");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if(MatchWith=="MOBILE NUMBER")
|
|
||||||
{
|
|
||||||
temp=Opr+"mobile";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"mobile").addClass(Opr+"match");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
if(MatchWith=="NAME AND DOB")
|
|
||||||
{
|
|
||||||
temp="name,"+Opr+"name,dob,"+Opr+"dob";
|
|
||||||
Opr=="ear" ? ctrlear=temp : ctrlneg=temp;
|
|
||||||
$("#"+Opr+"name").addClass(Opr+"match");
|
|
||||||
$("#name").addClass(Opr+"match");
|
|
||||||
$("#"+Opr+"dob").addClass(Opr+"match");
|
|
||||||
$("#dob").addClass(Opr+"match");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resetMarking(Opr)
|
|
||||||
{
|
|
||||||
var ctrls=null;
|
|
||||||
if(ctrlear.length!="" && Opr=="ear")
|
|
||||||
{
|
|
||||||
ctrls=ctrlear.split(",");
|
|
||||||
}
|
|
||||||
if(ctrlneg.length!="" && Opr=="neg")
|
|
||||||
{
|
|
||||||
ctrls=ctrlneg.split(",");
|
|
||||||
}
|
|
||||||
if(ctrls!=null)
|
|
||||||
{
|
|
||||||
for(i=0;i<ctrls.length;i++)
|
|
||||||
{
|
|
||||||
if(ctrls[i]!='')
|
|
||||||
{
|
|
||||||
$("#"+ctrls[i]).removeClass(Opr+"match");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function addRemarks(Opr,elemId)
|
|
||||||
{
|
|
||||||
var val=$("#"+elemId).val();
|
|
||||||
if(Opr==1 && earIndx > 0)
|
|
||||||
{
|
|
||||||
val= val.trim()=='' ? '':val+"\n\n";
|
|
||||||
$("#"+elemId).val(val+""+earlier[earpos][2]);
|
|
||||||
findRecord(3,Opr);
|
|
||||||
}
|
|
||||||
else if(Opr==2 && negIndx > 0)
|
|
||||||
{
|
|
||||||
val= val.trim()=='' ? '':val+"\n\n";
|
|
||||||
$("#"+elemId).val(val+""+negative[negpos][2]);
|
|
||||||
findRecord(3,Opr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('DEDDO:info:No match found.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function editRemarks(elmId,Opr)
|
|
||||||
{
|
|
||||||
if(confirm("Are you sure to remove current record remarks?"))
|
|
||||||
{
|
|
||||||
var rem=$("#"+elmId).val();
|
|
||||||
if(Opr==1 && rem.length > 0)
|
|
||||||
{
|
|
||||||
rem=rem.replace(earlier[earpos][2],"");
|
|
||||||
}
|
|
||||||
else if(Opr==2 && rem.length > 0)
|
|
||||||
{
|
|
||||||
rem=rem.replace(negative[negpos][2],"");
|
|
||||||
}
|
|
||||||
$("#"+elmId).val(rem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function InitSendDedupe()
|
|
||||||
{
|
|
||||||
if($("#casetobesend >tbody >tr").length<1)
|
|
||||||
{
|
|
||||||
$("#btngenreport").hide();
|
|
||||||
}
|
|
||||||
$('form tbody.scrollContent tr').hover(function () {
|
|
||||||
$(this).addClass('rowhover');
|
|
||||||
}, function () {
|
|
||||||
$(this).removeClass('rowhover');
|
|
||||||
});
|
|
||||||
$('form tbody.scrollContent tr').click(function(event) {
|
|
||||||
if (event.target.type !== 'checkbox') {
|
|
||||||
$(':checkbox', this).trigger('click');
|
|
||||||
}
|
|
||||||
checkList('chkrow','selall');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function ValidateSendDedupe(formname)
|
|
||||||
{
|
|
||||||
setHFList("casetobesend");
|
|
||||||
var uuids=$("#hfdelstat").val();
|
|
||||||
if(uuids=='')
|
|
||||||
{
|
|
||||||
CallMessage('BKLIST:error:Please select atleast one case to start report generation process.',3000,200,300);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SubmitForm('senddedreports', '_parent', formname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
var childCnt='';
|
|
||||||
var curProc='ear';
|
|
||||||
var curStatus='Waiting';
|
|
||||||
|
|
||||||
function ExpandList(elmId)
|
|
||||||
{
|
|
||||||
$("#"+elmId+"child").toggle();
|
|
||||||
}
|
|
||||||
function showDedupePanel(cutList)
|
|
||||||
{
|
|
||||||
var optDiv=document.createElement("div");
|
|
||||||
optDiv.setAttribute("id","FormPanel");
|
|
||||||
optDiv.setAttribute("class","FormPanel");
|
|
||||||
optDiv.setAttribute("style","font-family:Tahoma;overflow:visible;padding-right:3px;width:480px");
|
|
||||||
var ControlsPanel="<table border='0' cellspacing='0' width='100%' class='matrix-form-controls'>";
|
|
||||||
ControlsPanel=ControlsPanel+"<tr><td style='height:5px;width:210px'></td><td></td></tr>";
|
|
||||||
ControlsPanel=ControlsPanel+"<tr><td id='tdearlabel' style='height:35px;padding-left:15px;font-weight:normal;font-size:13px' valign='center'>Checking for Earlier</td><td id='tdearrun' height='30' valign='center' style='font-weight:normal;font-size:13px'><font color='#fe8900'>Waiting...</font></td></tr>";
|
|
||||||
ControlsPanel=ControlsPanel+"<tr><td id='tdneglabel' style='height:35px;font-weight:normal;padding-left:15px;font-size:13px' valign='center'>Checking for Negative</td><td id='tdnegrun' height='30' valign='center' style='font-weight:normal;font-size:13px'><font color='#fe8900'>Waiting...</font></td></tr>";
|
|
||||||
ControlsPanel=ControlsPanel+"<tr><td colspan='2'><input type='button' class='button' name='btncancel' style='margin-top:5px;float:right' value='Close' id='btncancel' accesskey='C' onclick=\"RemoveDialog(document.getElementById('ProcDialog'))\" /> <input type='button' class='button' name='btnstart' style='margin-top:5px;float:right' value='Start' id='btnstart' accesskey='S' onclick=\"StartDedupeRun('"+cutList+"',document.getElementById('ProcDialog'))\" /></td></tr>";
|
|
||||||
ControlsPanel=ControlsPanel+"</table>";
|
|
||||||
optDiv.innerHTML=ControlsPanel;
|
|
||||||
ShowInputDialog(optDiv,"Checking Earlier and Negative","dedupe","ProcDialog");
|
|
||||||
}
|
|
||||||
function StartDedupeRun(cutList,ProcDialog)
|
|
||||||
{
|
|
||||||
StartEarlierRun(cutList);
|
|
||||||
}
|
|
||||||
function StartEarlierRun(cutList)
|
|
||||||
{
|
|
||||||
curProc='ear';
|
|
||||||
curStatus='Checking for Earlier';
|
|
||||||
var label="<img src='/matrix/images/arrow_green_r.png' align='absmiddle'/> <font color='black'><b>"+curStatus+"</b></font>";
|
|
||||||
$("#tdearlabel").html(label);
|
|
||||||
ProgressBar("tdearrun","Record",cutList,12,"REGULAR");
|
|
||||||
StartDedupeProcess(cutList,'ear',1);
|
|
||||||
}
|
|
||||||
function StartNegativeRun(cutList)
|
|
||||||
{
|
|
||||||
curProc='neg';
|
|
||||||
curStatus='Checking for Negative';
|
|
||||||
var label="<img src='/matrix/images/arrow_green_r.png' align='absmiddle'/> <font color='black'><b>"+curStatus+"</b></font>";
|
|
||||||
$("#tdneglabel").html(label);
|
|
||||||
ProgressBar("tdnegrun","Record",cutList,12,"REGULAR");
|
|
||||||
StartDedupeProcess(cutList,'neg',2);
|
|
||||||
}
|
|
||||||
function updateLabels(Proc)
|
|
||||||
{
|
|
||||||
var label="<img src='/matrix/images/check.png' align='absmiddle'/> <font color='black'><b>"+curStatus+"</b></font>";
|
|
||||||
$("#td"+Proc+"label").html(label);
|
|
||||||
$("#td"+Proc+"run").html("<font size='1'>Processed : <b>"+nextPos+"</b> Success : <font color='green'><b>"+success+"</b></font> Failed : <font color='red'><b>"+failed+"</b></font> Skipped : <font color='blue'><b>"+skipped+"</b></font></font>");
|
|
||||||
}
|
|
||||||
function StartDedupeProcess(cutList,Childid,OprID)
|
|
||||||
{
|
|
||||||
success=0;
|
|
||||||
failed=0;
|
|
||||||
nextPos=1;
|
|
||||||
skipped=0;
|
|
||||||
progresswidth=0;
|
|
||||||
curPos=1;
|
|
||||||
SourceTable=cutList;
|
|
||||||
RowId='';
|
|
||||||
found=$("#"+SourceTable+" tr").length-1;
|
|
||||||
progbarwidth=$("#progressbar").width();
|
|
||||||
ProgPerRec=(progbarwidth/found).toFixed(2);
|
|
||||||
if(found>0)
|
|
||||||
{
|
|
||||||
ExtractSendRecord(Childid,OprID);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('EMPTOBX:info:List is empty or already processed.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function ExtractSendRecord(Childid,oprId)
|
|
||||||
{
|
|
||||||
RowId=$("#"+SourceTable+" tr:eq("+curPos+")").attr("id").replace("row","");
|
|
||||||
var uuid=$("#uuid"+RowId).val();
|
|
||||||
var process=$("#row"+RowId+""+Childid);
|
|
||||||
var val3=$("#curu").val();
|
|
||||||
childCnt=Childid;
|
|
||||||
if($(process).val()=="Y")
|
|
||||||
{
|
|
||||||
QryStr="val="+uuid+"&val1="+oprId+"&val2=Y&val3="+val3;
|
|
||||||
RunAjax("GET","checkdedupe",QryStr,oprId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AfterResponse('skipped:',oprId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function AfterResponse(AjaxResponse,OprID)
|
|
||||||
{
|
|
||||||
if(OprID==1 || OprID==2)
|
|
||||||
{
|
|
||||||
if(AjaxResponse.search("success:")==0)
|
|
||||||
{
|
|
||||||
success=success+1;
|
|
||||||
$("#td"+RowId+""+childCnt).attr("bgcolor", '#a6fc8e');
|
|
||||||
$("#sp"+RowId+""+childCnt).html("D");
|
|
||||||
$("#row"+RowId+""+childCnt).val("D");
|
|
||||||
}
|
|
||||||
else if(AjaxResponse.search("skipped:")==0)
|
|
||||||
{
|
|
||||||
skipped=skipped+1;
|
|
||||||
/*if(OprID==1)
|
|
||||||
{
|
|
||||||
curPos=curPos+1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#row"+RowId).remove();
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
failed=failed+1;
|
|
||||||
///$("#imgstatus"+RowId).attr("src", "/matrix/images/smsfailed.png");
|
|
||||||
$("#row"+RowId).attr("title", AjaxResponse);
|
|
||||||
$("#sp"+RowId+""+childCnt).html("F");
|
|
||||||
$("#td"+RowId+""+childCnt).attr("bgcolor", "#ffcabf");
|
|
||||||
}
|
|
||||||
if((nextPos==found))
|
|
||||||
{
|
|
||||||
if(OprID==1)
|
|
||||||
{
|
|
||||||
curStatus='Earlier Check Completed.';
|
|
||||||
updateLabels(curProc);
|
|
||||||
StartNegativeRun(SourceTable);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
curStatus='Negative Check Completed.';
|
|
||||||
updateLabels(curProc);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
curPos=curPos+1;
|
|
||||||
UpdateProgress();
|
|
||||||
nextPos=nextPos+1;
|
|
||||||
ExtractSendRecord(childCnt,OprID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
(() => {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const form = document.getElementById("cutoffpending");
|
||||||
|
if (!form) return;
|
||||||
|
|
||||||
|
const submit = (endpoint) => {
|
||||||
|
form.action = endpoint;
|
||||||
|
form.target = "_self";
|
||||||
|
form.submit();
|
||||||
|
};
|
||||||
|
|
||||||
|
const parentRow = (element) => element.closest("tr[data-parent-index]");
|
||||||
|
const children = (row) => form.querySelector(`tr[data-child-row="${row.dataset.parentIndex}"]`);
|
||||||
|
const childInputs = (row, field) => children(row)?.querySelectorAll(`[data-child-field="${field}"]`) || [];
|
||||||
|
const parentInput = (row, field) => row.querySelector(`[data-parent-field="${field}"]`);
|
||||||
|
const fields = ["allocation", "telesheet", "earlier", "negative", "cutoff"];
|
||||||
|
|
||||||
|
const syncParent = (row, field) => {
|
||||||
|
const inputs = [...childInputs(row, field)];
|
||||||
|
parentInput(row, field).checked = inputs.length > 0 && inputs.every((input) => input.checked);
|
||||||
|
};
|
||||||
|
|
||||||
|
form.addEventListener("click", (event) => {
|
||||||
|
const action = event.target.closest("[data-action]")?.dataset.action;
|
||||||
|
if (action === "refresh") return submit("cutoffpending");
|
||||||
|
if (action === "save") return submit("savecutoffpending");
|
||||||
|
if (action !== "toggle") return;
|
||||||
|
const button = event.target.closest("[data-action='toggle']");
|
||||||
|
const detail = children(parentRow(button));
|
||||||
|
detail.hidden = !detail.hidden;
|
||||||
|
button.setAttribute("aria-expanded", String(!detail.hidden));
|
||||||
|
button.querySelector(".matrix-row-toggle__chevron").textContent = detail.hidden ? "▶" : "▼";
|
||||||
|
});
|
||||||
|
|
||||||
|
form.addEventListener("change", (event) => {
|
||||||
|
const parentField = event.target.dataset.parentField;
|
||||||
|
if (parentField) {
|
||||||
|
const row = parentRow(event.target);
|
||||||
|
const affected = parentField === "cutoff" ? fields : [parentField];
|
||||||
|
affected.forEach((field) => {
|
||||||
|
parentInput(row, field).checked = event.target.checked;
|
||||||
|
childInputs(row, field).forEach((input) => { input.checked = event.target.checked; });
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const childField = event.target.dataset.childField;
|
||||||
|
if (!childField) return;
|
||||||
|
const detail = event.target.closest("tr[data-child-row]");
|
||||||
|
const row = form.querySelector(`tr[data-parent-index="${detail.dataset.childRow}"]`);
|
||||||
|
if (childField === "cutoff") {
|
||||||
|
fields.forEach((field) => {
|
||||||
|
const input = event.target.closest("tr[data-child-index]").querySelector(`[data-child-field="${field}"]`);
|
||||||
|
input.checked = event.target.checked;
|
||||||
|
syncParent(row, field);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
syncParent(row, childField);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
@@ -1,83 +1,73 @@
|
|||||||
var curPos=0;
|
"use strict";
|
||||||
var maxRow=0;
|
|
||||||
function ValidateSubmitCutOff(FormName)
|
var curPos = 0;
|
||||||
{
|
var maxRow = 0;
|
||||||
if(ValidateList('chkrow')>0)
|
|
||||||
{
|
function cutoffMessage(message) {
|
||||||
validate(document.getElementById('batchlist'),'t','');
|
if (window.CygnusNotifications) {
|
||||||
if (invalidFields>0)
|
window.CygnusNotifications.showLegacy(message);
|
||||||
{
|
return;
|
||||||
CallMessage('VLFRM:error:There are one or more error(s) in form. Please correct them and try again.',3000,200,300);
|
}
|
||||||
}
|
CallMessage(message, 4000, 200, 300);
|
||||||
else
|
|
||||||
{
|
|
||||||
SubmitForm('savecut','_parent',FormName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('VLFRM:error:Please select atleast one portfolio to start cut-off process.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function ValidateSubmitSms(FormName)
|
|
||||||
{
|
function submitCutoffForm(formName, endpoint) {
|
||||||
SubmitForm('Sms','_parent',FormName);
|
var form = document.forms[formName] || document.getElementById(formName);
|
||||||
|
if (!form) return false;
|
||||||
|
form.action = endpoint;
|
||||||
|
form.target = "_self";
|
||||||
|
form.submit();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
function ValidateSubmitAllocation(FormName)
|
|
||||||
{
|
function withCsrf(parameters) {
|
||||||
if(ValidateList('chkchild')>0)
|
var token = document.querySelector('input[name="_csrf"]');
|
||||||
{
|
if (!token) return parameters;
|
||||||
SubmitForm('savealloc','_parent',FormName);
|
return parameters + "&" + encodeURIComponent(token.name) + "=" + encodeURIComponent(token.value);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('VLFRM:error:Please select atleast one portfolio to start allocation process.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function ValidateSubmitSopr(FormName)
|
|
||||||
{
|
function requireSelection(prefix, message, formName, endpoint) {
|
||||||
if(ValidateList('chkchild')>0)
|
if (ValidateList(prefix) > 0) return submitCutoffForm(formName, endpoint);
|
||||||
{
|
cutoffMessage(message);
|
||||||
SubmitForm('sendcasestoopr','_parent',FormName);
|
return false;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('VLFRM:error:Please select atleast one portfolio to start send to operation process.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function ValidateSubmitTelesheet(FormName)
|
|
||||||
{
|
function ValidateSubmitCutOff(formName) {
|
||||||
if(ValidateList('chkchild')>0)
|
if (ValidateList("chkrow") < 1) {
|
||||||
{
|
cutoffMessage("VLFRM:error:Please select at least one portfolio to start the cut-off process.");
|
||||||
SubmitForm('gentelesheet','_parent',FormName);
|
return false;
|
||||||
}
|
}
|
||||||
else
|
validate(document.getElementById("batchlist"), "t", "");
|
||||||
{
|
if (invalidFields > 0) {
|
||||||
CallMessage('VLFRM:error:Please select atleast one portfolio to start telesheet process.',3000,200,300);
|
cutoffMessage("VLFRM:error:Correct the highlighted fields and try again.");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
return submitCutoffForm(formName, "savecut");
|
||||||
}
|
}
|
||||||
function ValidateSubmitRefsheet(FormName)
|
|
||||||
{
|
function ValidateSubmitSms(formName) { return submitCutoffForm(formName, "Sms"); }
|
||||||
if(ValidateList('chkchild')>0)
|
function ValidateSubmitAllocation(formName) {
|
||||||
{
|
return requireSelection("chkchild", "VLFRM:error:Select at least one case to allocate.", formName, "savealloc");
|
||||||
SubmitForm('genrefsheet','_parent',FormName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CallMessage('VLFRM:error:Please select atleast one portfolio to start reference sheet process.',3000,200,300);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function InitPage()
|
function ValidateSubmitSopr(formName) {
|
||||||
{
|
return requireSelection("chkchild", "VLFRM:error:Select at least one case to send to operations.", formName, "sendcasestoopr");
|
||||||
maxRow=$("#cutlist >tbody >tr").length;
|
|
||||||
if(maxRow<1)
|
|
||||||
{
|
|
||||||
document.getElementById("btnsave").style.display="none";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function ExpandList(elmId)
|
function ValidateSubmitTelesheet(formName) {
|
||||||
{
|
return requireSelection("chkchild", "VLFRM:error:Select at least one case for the Tele-Sheet.", formName, "gentelesheet");
|
||||||
$("#"+elmId+"child").toggle();
|
}
|
||||||
|
function ValidateSubmitRefsheet(formName) {
|
||||||
|
return requireSelection("chkchild", "VLFRM:error:Select at least one case for the Reference Sheet.", formName, "genrefsheet");
|
||||||
|
}
|
||||||
|
|
||||||
|
function InitPage() {
|
||||||
|
maxRow = document.querySelectorAll("#cutlist > tbody > tr").length;
|
||||||
|
var saveButton = document.getElementById("btnsave");
|
||||||
|
if (saveButton) saveButton.hidden = maxRow < 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ExpandList(elementId) {
|
||||||
|
var child = document.getElementById(elementId + "child");
|
||||||
|
if (child) child.style.display = child.style.display === "none" ? "table-row" : "none";
|
||||||
}
|
}
|
||||||
function editMessage(elm,msgfieldId)
|
function editMessage(elm,msgfieldId)
|
||||||
{
|
{
|
||||||
@@ -141,7 +131,7 @@ function sendSMS(tableId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CallMessage('EMPTOBX:info:Outbox is empty.',3000,200,300);
|
cutoffMessage('EMPTOBX:info:Outbox is empty.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getExtractMessage(oprId)
|
function getExtractMessage(oprId)
|
||||||
@@ -181,7 +171,7 @@ function FinalizePhotoCase()
|
|||||||
if(svstatus==0 && upstatus==1)
|
if(svstatus==0 && upstatus==1)
|
||||||
{
|
{
|
||||||
$("#vid-"+curPos).html("<img src='/matrix/images/loading_small.gif' width='16' height='7' title='please wait, it will take few minutes' />");
|
$("#vid-"+curPos).html("<img src='/matrix/images/loading_small.gif' width='16' height='7' title='please wait, it will take few minutes' />");
|
||||||
QryStr="val0="+uuid+"&val1="+mvcode+"&val2="+($("#usid").val());
|
QryStr=withCsrf("val0="+encodeURIComponent(uuid)+"&val1="+encodeURIComponent(mvcode)+"&val2="+encodeURIComponent($("#usid").val()));
|
||||||
RunAjax("POST","finalizepcases",QryStr,2);
|
RunAjax("POST","finalizepcases",QryStr,2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
(() => {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const form = document.getElementById("dedupeWorkspace");
|
||||||
|
const portfolio = document.getElementById("portfolioId");
|
||||||
|
const table = document.getElementById("dedupeCaseTable");
|
||||||
|
if (!form || !portfolio || !table) return;
|
||||||
|
|
||||||
|
portfolio.addEventListener("change", () => form.requestSubmit());
|
||||||
|
|
||||||
|
const openCase = (row) => {
|
||||||
|
const caseId = row?.dataset.caseId;
|
||||||
|
if (!caseId) return;
|
||||||
|
const contextPath = document.body.dataset.contextPath || "";
|
||||||
|
const url = `${contextPath}/ver/dedupefound?uuid=${encodeURIComponent(caseId)}`;
|
||||||
|
const dialog = window.MatrixFrameDialog;
|
||||||
|
if (!dialog?.open) {
|
||||||
|
window.location.assign(url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dialog.open(url, "Dedupe Details").then((result) => {
|
||||||
|
if (Number(result) === 1) row.remove();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
table.addEventListener("click", (event) =>
|
||||||
|
openCase(event.target.closest("tr[data-case-id]")));
|
||||||
|
table.addEventListener("keydown", (event) => {
|
||||||
|
if (event.key === "Enter" || event.key === " ") {
|
||||||
|
event.preventDefault();
|
||||||
|
openCase(event.target.closest("tr[data-case-id]"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
101
cygnus-onprem-app/build/WebContent/js/edp/dedupe/dedupe-match.js
Normal file
101
cygnus-onprem-app/build/WebContent/js/edp/dedupe/dedupe-match.js
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
(() => {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const form = document.getElementById("dedupeDetails");
|
||||||
|
if (!form) return;
|
||||||
|
|
||||||
|
const state = { EAR: { rows: [], index: 0 }, NEG: { rows: [], index: 0 } };
|
||||||
|
const value = (id, next) => {
|
||||||
|
const element = document.getElementById(id);
|
||||||
|
if (element && next !== undefined) element.value = next || "";
|
||||||
|
return element?.value || "";
|
||||||
|
};
|
||||||
|
const notify = (type, message, code, referenceId) =>
|
||||||
|
window.CygnusNotifications?.show({ type, message, code, referenceId });
|
||||||
|
|
||||||
|
function address(record) {
|
||||||
|
return record?.residenceAddress || record?.officeAddress || "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function render(type) {
|
||||||
|
const group = state[type];
|
||||||
|
const prefix = type === "EAR" ? "ear" : "neg";
|
||||||
|
const record = group.rows[group.index];
|
||||||
|
document.getElementById(type === "EAR" ? "efound" : "nfound").textContent =
|
||||||
|
group.rows.length ? `(${group.index + 1} / ${group.rows.length} Match Found)` : "(No Match Found)";
|
||||||
|
document.getElementById(type === "EAR" ? "efoundon" : "nfoundon").textContent =
|
||||||
|
record ? `Match Found On: ${record.foundOn || ""}` : "No Match Found";
|
||||||
|
value(`${prefix}name`, record?.customerName);
|
||||||
|
value(`${prefix}dob`, record?.dob);
|
||||||
|
value(`${prefix}address`, record ? address(record) : "");
|
||||||
|
value(`${prefix}rphone`, record?.residencePhone);
|
||||||
|
value(`${prefix}ophone`, record?.officePhone);
|
||||||
|
value(`${prefix}mobile`, record?.mobile);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load() {
|
||||||
|
const uuid = value("uuid");
|
||||||
|
try {
|
||||||
|
const response = await fetch(`${form.dataset.recordsUrl}?uuid=${encodeURIComponent(uuid)}`, {
|
||||||
|
credentials: "same-origin", headers: { Accept: "application/json" }
|
||||||
|
});
|
||||||
|
const payload = await response.json();
|
||||||
|
if (!response.ok || !payload.success) throw payload.message || {};
|
||||||
|
state.EAR.rows = payload.data.filter((row) => row.dedupeType === "EAR");
|
||||||
|
state.NEG.rows = payload.data.filter((row) => row.dedupeType === "NEG");
|
||||||
|
render("EAR");
|
||||||
|
render("NEG");
|
||||||
|
} catch (error) {
|
||||||
|
notify("danger", error.message || "Matching records could not be loaded.", error.code, error.referenceId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.findRecord = (operation, section) => {
|
||||||
|
const group = state[section === 1 ? "EAR" : "NEG"];
|
||||||
|
if (!group.rows.length) return;
|
||||||
|
if (operation === 1) group.index = 0;
|
||||||
|
if (operation === 2) group.index = Math.max(0, group.index - 1);
|
||||||
|
if (operation === 3) group.index = Math.min(group.rows.length - 1, group.index + 1);
|
||||||
|
if (operation === 4) group.index = group.rows.length - 1;
|
||||||
|
render(section === 1 ? "EAR" : "NEG");
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addRemarks = (section, elementId) => {
|
||||||
|
const group = state[section === 1 ? "EAR" : "NEG"];
|
||||||
|
const record = group.rows[group.index];
|
||||||
|
if (!record) return notify("warning", "No match found.", "DDP-4001");
|
||||||
|
const current = value(elementId).trim();
|
||||||
|
value(elementId, `${current}${current ? "\n\n" : ""}${record.remarks || ""}`);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.editRemarks = (elementId, section) => {
|
||||||
|
const group = state[section === 1 ? "EAR" : "NEG"];
|
||||||
|
const remarks = group.rows[group.index]?.remarks;
|
||||||
|
if (remarks && window.confirm("Remove the selected match remarks?")) {
|
||||||
|
value(elementId, value(elementId).replace(remarks, "").trim());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
form.addEventListener("submit", async (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
const body = {
|
||||||
|
uuid: value("uuid"), sessuuid: value("sessuuid"),
|
||||||
|
earremarks: value("earremarks"), negremarks: value("negremarks")
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
const response = await fetch(form.action, {
|
||||||
|
method: "POST", credentials: "same-origin",
|
||||||
|
headers: { "Content-Type": "application/json", Accept: "application/json" },
|
||||||
|
body: JSON.stringify(body)
|
||||||
|
});
|
||||||
|
const payload = await response.json();
|
||||||
|
if (!response.ok || !payload.success) throw payload.message || {};
|
||||||
|
notify("success", payload.message.message, payload.message.code);
|
||||||
|
window.setTimeout(() => window.MatrixDialog?.close(1), 300);
|
||||||
|
} catch (error) {
|
||||||
|
notify("danger", error.message || "Dedupe details could not be saved.", error.code, error.referenceId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
load();
|
||||||
|
})();
|
||||||
127
cygnus-onprem-app/build/WebContent/js/edp/dedupe/dedupe-run.js
Normal file
127
cygnus-onprem-app/build/WebContent/js/edp/dedupe/dedupe-run.js
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
(function (window, document) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const endpoint = "/matrix/ver/checkdedupe";
|
||||||
|
const operations = [
|
||||||
|
{ id: 1, field: "earlier", label: "Earlier" },
|
||||||
|
{ id: 2, field: "negative", label: "Negative" }
|
||||||
|
];
|
||||||
|
|
||||||
|
function expandList(id) {
|
||||||
|
const child = document.getElementById(`${id}child`);
|
||||||
|
if (child) child.style.display = child.style.display === "none" ? "table-row" : "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
function notify(type, code, message) {
|
||||||
|
window.CygnusNotifications?.show({ type, code, message, duration: 5000 });
|
||||||
|
}
|
||||||
|
|
||||||
|
function createProgress(label) {
|
||||||
|
const group = document.createElement("div");
|
||||||
|
group.className = "mb-3";
|
||||||
|
group.innerHTML = `<div class="d-flex justify-content-between mb-1"><strong>${label}</strong><span>Waiting</span></div>
|
||||||
|
<div class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100">
|
||||||
|
<div class="progress-bar" style="width:0%"></div>
|
||||||
|
</div>`;
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createDialog() {
|
||||||
|
document.getElementById("dedupe-run-modal")?.remove();
|
||||||
|
const root = document.createElement("div");
|
||||||
|
root.id = "dedupe-run-modal";
|
||||||
|
root.className = "modal fade";
|
||||||
|
root.tabIndex = -1;
|
||||||
|
root.innerHTML = `<div class="modal-dialog modal-dialog-centered"><div class="modal-content">
|
||||||
|
<div class="modal-header"><h5 class="modal-title">Checking Earlier and Negative</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div>
|
||||||
|
<div class="modal-body"></div><div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||||
|
<button type="button" class="btn btn-primary js-start">Start</button></div></div></div>`;
|
||||||
|
const body = root.querySelector(".modal-body");
|
||||||
|
operations.forEach(operation => body.append(createProgress(operation.label)));
|
||||||
|
document.body.append(root);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateProgress(container, processed, total, counters) {
|
||||||
|
const percent = total === 0 ? 100 : Math.round((processed / total) * 100);
|
||||||
|
container.querySelector(".progress-bar").style.width = `${percent}%`;
|
||||||
|
container.querySelector("span").textContent =
|
||||||
|
`${processed}/${total} | Success ${counters.success} | Failed ${counters.failed} | Skipped ${counters.skipped}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function check(row, operation) {
|
||||||
|
const response = await fetch(endpoint, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-CSRF-TOKEN": document.getElementById("dedupe-csrf-token")?.value || ""
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
documentCaseId: row.dataset.documentCaseId,
|
||||||
|
operation: operation.id
|
||||||
|
})
|
||||||
|
});
|
||||||
|
const payload = await response.json().catch(() => null);
|
||||||
|
if (!response.ok || !payload?.success) {
|
||||||
|
throw new Error(payload?.message?.message || "Dedupe check failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function runOperation(rows, operation, progress) {
|
||||||
|
const counters = { success: 0, failed: 0, skipped: 0 };
|
||||||
|
for (let index = 0; index < rows.length; index += 1) {
|
||||||
|
const row = rows[index];
|
||||||
|
const statusCell = row.querySelector(`td[id$="${operation.field === "earlier" ? "ear" : "neg"}"]`);
|
||||||
|
if (row.dataset[operation.field] !== "Y") {
|
||||||
|
counters.skipped += 1;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
await check(row, operation);
|
||||||
|
counters.success += 1;
|
||||||
|
row.dataset[operation.field] = "D";
|
||||||
|
if (statusCell) {
|
||||||
|
statusCell.textContent = "D";
|
||||||
|
statusCell.classList.add("table-success");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
counters.failed += 1;
|
||||||
|
if (statusCell) {
|
||||||
|
statusCell.textContent = "F";
|
||||||
|
statusCell.title = error.message;
|
||||||
|
statusCell.classList.add("table-danger");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateProgress(progress, index + 1, rows.length, counters);
|
||||||
|
}
|
||||||
|
return counters;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function run(tableId, modalRoot) {
|
||||||
|
const rows = Array.from(document.querySelectorAll(`#${CSS.escape(tableId)} tbody tr[data-document-case-id]`));
|
||||||
|
if (rows.length === 0) {
|
||||||
|
notify("info", "DDP-2002", "The selected list has no records to process.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const start = modalRoot.querySelector(".js-start");
|
||||||
|
start.disabled = true;
|
||||||
|
const progress = modalRoot.querySelectorAll(".modal-body > div");
|
||||||
|
for (let index = 0; index < operations.length; index += 1) {
|
||||||
|
await runOperation(rows, operations[index], progress[index]);
|
||||||
|
}
|
||||||
|
start.disabled = false;
|
||||||
|
notify("success", "DDP-2001", "Earlier and negative dedupe checks completed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener("click", event => {
|
||||||
|
const runButton = event.target.closest(".js-run-dedupe");
|
||||||
|
if (!runButton) return;
|
||||||
|
const modalRoot = createDialog();
|
||||||
|
modalRoot.querySelector(".js-start").addEventListener("click", () => run(runButton.dataset.table, modalRoot));
|
||||||
|
window.bootstrap.Modal.getOrCreateInstance(modalRoot).show();
|
||||||
|
});
|
||||||
|
|
||||||
|
window.ExpandList = expandList;
|
||||||
|
}(window, document));
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
(() => {
|
||||||
|
"use strict";
|
||||||
|
const form = document.getElementById("senddedupe");
|
||||||
|
const table = document.getElementById("casetobesend");
|
||||||
|
const portfolio = document.getElementById("portlist");
|
||||||
|
const generate = document.getElementById("btngenreport");
|
||||||
|
if (!form || !table || !portfolio) return;
|
||||||
|
|
||||||
|
const checks = () => [...table.querySelectorAll('tbody input[type="checkbox"]')];
|
||||||
|
const sync = () => {
|
||||||
|
const selected = checks().filter((item) => item.checked);
|
||||||
|
document.getElementById("hfdelstat").value = selected.map((item) => item.value).join(",");
|
||||||
|
document.getElementById("selall").checked = selected.length > 0 && selected.length === checks().length;
|
||||||
|
};
|
||||||
|
|
||||||
|
portfolio.addEventListener("change", () => {
|
||||||
|
form.action = form.dataset.listUrl;
|
||||||
|
form.requestSubmit();
|
||||||
|
});
|
||||||
|
document.getElementById("selall")?.addEventListener("change", (event) => {
|
||||||
|
checks().forEach((item) => { item.checked = event.target.checked; });
|
||||||
|
sync();
|
||||||
|
});
|
||||||
|
table.addEventListener("change", sync);
|
||||||
|
table.addEventListener("click", (event) => {
|
||||||
|
const row = event.target.closest("tr[data-case-id]");
|
||||||
|
if (row && event.target.type !== "checkbox") row.querySelector('input[type="checkbox"]')?.click();
|
||||||
|
});
|
||||||
|
generate?.addEventListener("click", () => {
|
||||||
|
sync();
|
||||||
|
if (!document.getElementById("hfdelstat").value) {
|
||||||
|
window.CygnusNotifications?.show({
|
||||||
|
type: "warning", code: "DDP-4002", message: "Select at least one application."
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
form.action = form.dataset.generateUrl;
|
||||||
|
form.requestSubmit();
|
||||||
|
});
|
||||||
|
if (!checks().length) generate?.setAttribute("hidden", "hidden");
|
||||||
|
sync();
|
||||||
|
})();
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
(() => {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const pad = (value) => String(value).padStart(2, "0");
|
||||||
|
|
||||||
|
const parseDisplayValue = (value, mode) => {
|
||||||
|
const pattern = mode === "datetime"
|
||||||
|
? /^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})$/
|
||||||
|
: /^(\d{2})\/(\d{2})\/(\d{4})$/;
|
||||||
|
const match = value.trim().match(pattern);
|
||||||
|
if (!match) return "";
|
||||||
|
|
||||||
|
const [, day, month, year, hour = "00", minute = "00", second = "00"] = match;
|
||||||
|
const date = new Date(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second));
|
||||||
|
if (date.getFullYear() !== Number(year) || date.getMonth() !== Number(month) - 1
|
||||||
|
|| date.getDate() !== Number(day) || date.getHours() !== Number(hour)
|
||||||
|
|| date.getMinutes() !== Number(minute) || date.getSeconds() !== Number(second)) return "";
|
||||||
|
|
||||||
|
const isoDate = `${year}-${month}-${day}`;
|
||||||
|
return mode === "datetime" ? `${isoDate}T${hour}:${minute}:${second}` : isoDate;
|
||||||
|
};
|
||||||
|
|
||||||
|
const formatPickerValue = (value, mode) => {
|
||||||
|
if (!value) return "";
|
||||||
|
const [datePart, timePart = "00:00:00"] = value.split("T");
|
||||||
|
const [year, month, day] = datePart.split("-");
|
||||||
|
if (!year || !month || !day) return "";
|
||||||
|
if (mode === "date") return `${day}/${month}/${year}`;
|
||||||
|
const [hour = "00", minute = "00", second = "00"] = timePart.split(":");
|
||||||
|
return `${day}/${month}/${year} ${pad(hour)}:${pad(minute)}:${pad(second)}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialise = (input) => {
|
||||||
|
if (input.dataset.datePickerReady === "true") return;
|
||||||
|
input.dataset.datePickerReady = "true";
|
||||||
|
|
||||||
|
const mode = input.dataset.dateMode === "date" ? "date" : "datetime";
|
||||||
|
const wrapper = document.createElement("span");
|
||||||
|
wrapper.className = "matrix-date-control";
|
||||||
|
input.parentNode.insertBefore(wrapper, input);
|
||||||
|
wrapper.appendChild(input);
|
||||||
|
|
||||||
|
const picker = document.createElement("input");
|
||||||
|
picker.type = mode === "datetime" ? "datetime-local" : "date";
|
||||||
|
picker.className = "matrix-date-control__picker";
|
||||||
|
picker.tabIndex = -1;
|
||||||
|
picker.setAttribute("aria-hidden", "true");
|
||||||
|
if (mode === "datetime") picker.step = "1";
|
||||||
|
|
||||||
|
const button = document.createElement("button");
|
||||||
|
button.type = "button";
|
||||||
|
button.className = "matrix-date-control__button";
|
||||||
|
button.setAttribute("aria-label", mode === "datetime" ? "Choose date and time" : "Choose date");
|
||||||
|
button.innerHTML = "📅";
|
||||||
|
|
||||||
|
wrapper.append(picker, button);
|
||||||
|
input.closest(".widget")?.classList.add("matrix-date-field");
|
||||||
|
|
||||||
|
const syncPicker = () => {
|
||||||
|
const parsed = parseDisplayValue(input.value, mode);
|
||||||
|
if (parsed) picker.value = parsed;
|
||||||
|
};
|
||||||
|
syncPicker();
|
||||||
|
|
||||||
|
picker.addEventListener("change", () => {
|
||||||
|
input.value = formatPickerValue(picker.value, mode);
|
||||||
|
input.dispatchEvent(new Event("change", { bubbles: true }));
|
||||||
|
input.focus();
|
||||||
|
});
|
||||||
|
input.addEventListener("change", syncPicker);
|
||||||
|
button.addEventListener("click", () => {
|
||||||
|
syncPicker();
|
||||||
|
if (typeof picker.showPicker === "function") picker.showPicker();
|
||||||
|
else picker.click();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialiseAll = (root = document) => root.querySelectorAll(".matrix-date-input").forEach(initialise);
|
||||||
|
document.addEventListener("DOMContentLoaded", () => initialiseAll());
|
||||||
|
window.CygnusDateTimeInputs = { initialise: initialiseAll };
|
||||||
|
})();
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -43,6 +43,17 @@
|
|||||||
<artifactId>spring-webmvc</artifactId>
|
<artifactId>spring-webmvc</artifactId>
|
||||||
<version>${spring.version}</version>
|
<version>${spring.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sf.jasperreports</groupId>
|
||||||
|
<artifactId>jasperreports</artifactId>
|
||||||
|
<version>${jasperreports.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.lowagie</groupId>
|
||||||
|
<artifactId>itext</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>jakarta.servlet</groupId>
|
<groupId>jakarta.servlet</groupId>
|
||||||
|
|||||||
@@ -218,30 +218,6 @@ public class Ajax {
|
|||||||
}
|
}
|
||||||
return smsStatus;
|
return smsStatus;
|
||||||
}
|
}
|
||||||
//--> Running Earlier / Negative Dedupe
|
|
||||||
@RequestMapping(value="checkdedupe",method=RequestMethod.GET )
|
|
||||||
public @ResponseBody String checkDedupe(@RequestParam String val, @RequestParam String val1, @RequestParam String val2, @RequestParam String val3)
|
|
||||||
{
|
|
||||||
String DedCheckOn=GlobalClass.DateTime("yyyy/MM/dd HH:mm:ss", new java.util.Date());
|
|
||||||
DBFunctions DBF=new DBFunctions("1007");
|
|
||||||
DBF.setProcessFlag(true);
|
|
||||||
String response="failed:";
|
|
||||||
response=DBF.FetchRunQuery(43, (val+GlobalClass.ColDelim+val1+GlobalClass.ColDelim+val2+GlobalClass.ColDelim+DedCheckOn+GlobalClass.ColDelim+val3+GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
|
||||||
response=response.replace(GlobalClass.ColDelim+GlobalClass.RowDelim, "");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
//<-- Running Earlier / Negative Dedupe Ends
|
|
||||||
//--> Earlier / Negative Dedupe Do
|
|
||||||
@RequestMapping(value="deduperecords",method=RequestMethod.GET )
|
|
||||||
public @ResponseBody String DedupeRecords(@RequestParam String uuid)
|
|
||||||
{
|
|
||||||
DBFunctions DBF=new DBFunctions("1008");
|
|
||||||
DBF.setProcessFlag(true);
|
|
||||||
String response="failed:";
|
|
||||||
response=DBF.FetchRunQuery(56, (uuid+GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
|
||||||
response=response.replace(GlobalClass.ColDelim+GlobalClass.RowDelim, GlobalClass.RowDelim);
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
////<--- OPERATOR ALLOCATION DE ALLOCATION -->
|
////<--- OPERATOR ALLOCATION DE ALLOCATION -->
|
||||||
@RequestMapping(value="optralloc",method=RequestMethod.GET )
|
@RequestMapping(value="optralloc",method=RequestMethod.GET )
|
||||||
public @ResponseBody String OprAlloc(@RequestParam String val,@RequestParam String val1,@RequestParam String val2,@RequestParam String val3,@RequestParam String val4,@ModelAttribute(value="Sessvals") Session Sessvals)
|
public @ResponseBody String OprAlloc(@RequestParam String val,@RequestParam String val1,@RequestParam String val2,@RequestParam String val3,@RequestParam String val4,@ModelAttribute(value="Sessvals") Session Sessvals)
|
||||||
|
|||||||
@@ -1,276 +0,0 @@
|
|||||||
package matrix.nimble.edp.cutoff.controller;
|
|
||||||
|
|
||||||
//servlet libraries
|
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.naming.Reference;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import jakarta.servlet.http.HttpSession;
|
|
||||||
|
|
||||||
//spring libraries
|
|
||||||
import matrix.nimble.edp.cutoff.model.Allocation;
|
|
||||||
import matrix.nimble.edp.cutoff.model.PhotoCases;
|
|
||||||
import matrix.nimble.edp.cutoff.model.ReferenceSheet;
|
|
||||||
import matrix.nimble.edp.cutoff.model.SendToOperation;
|
|
||||||
import matrix.nimble.edp.cutoff.model.Telesheet;
|
|
||||||
import matrix.nimble.edp.cutoff.model.CutOffList;
|
|
||||||
import matrix.nimble.model.Session;
|
|
||||||
import matrix.nimble.utilities.GlobalClass;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.ui.ModelMap;
|
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
|
||||||
import org.springframework.web.bind.annotation.SessionAttributes;
|
|
||||||
|
|
||||||
|
|
||||||
@Controller
|
|
||||||
@SessionAttributes({"Sessvals"})
|
|
||||||
public class CutOff {
|
|
||||||
//---> Start Cut
|
|
||||||
@RequestMapping(value="cutoff",method=RequestMethod.POST )
|
|
||||||
public String OpenCutOff(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
CutOffList CList=new CutOffList();
|
|
||||||
CList.setErrCode("1003");
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
CList.setSessUUID(UUID);
|
|
||||||
model.addAttribute("cutOff",CList.getCutOffList(Sessvals.getCompanyID(), Sessvals.getBranchID(),Sessvals.getUserID()));
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/cutoff";
|
|
||||||
}
|
|
||||||
@RequestMapping(value="savecut",method=RequestMethod.POST )
|
|
||||||
public String StartCut(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,@ModelAttribute(value="cutOff") CutOffList CList,HttpSession session)
|
|
||||||
{
|
|
||||||
CList.setErrCode("1003");
|
|
||||||
if(session.getAttribute("UUID").toString().equals(CList.getSessUUID()))
|
|
||||||
{
|
|
||||||
CList.FinalizeCutoffList(Sessvals.getUserID(),Sessvals.getCompanyID(), Sessvals.getBranchID());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CList.setProcessFlag(true);
|
|
||||||
CList.setErrMsg("");
|
|
||||||
}
|
|
||||||
if(CList.isProcessFlag())
|
|
||||||
{
|
|
||||||
CutOffList BlankClist=new CutOffList();
|
|
||||||
BlankClist.setErrMsg(CList.getErrMsg());
|
|
||||||
BlankClist.setProcessFlag(false);
|
|
||||||
model.addAttribute("cutOff",BlankClist);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model.addAttribute("cutOff",CList);
|
|
||||||
}
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/cutoff";
|
|
||||||
}
|
|
||||||
//<--- Start Cut Ends
|
|
||||||
//---> Allocation
|
|
||||||
@RequestMapping(value="allocation",method=RequestMethod.POST )
|
|
||||||
public String Allocation(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
Allocation AList=new Allocation();
|
|
||||||
AList.setErrCode("1004");
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
AList.setSessUUID(UUID);
|
|
||||||
model.addAttribute("allocation",AList.getAllocList(Sessvals.getCompanyID(), Sessvals.getBranchID(),Sessvals.getUserID()));
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/allocation";
|
|
||||||
}
|
|
||||||
@RequestMapping(value="savealloc",method=RequestMethod.POST )
|
|
||||||
public String SaveAlloc(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,@ModelAttribute(value="allocation") Allocation AList,HttpSession session)
|
|
||||||
{
|
|
||||||
AList.setErrCode("1004");
|
|
||||||
if(session.getAttribute("UUID").toString().equals(AList.getSessUUID()))
|
|
||||||
{
|
|
||||||
AList.FinalizeAllocation(Sessvals.getUserID(),Sessvals.getCompanyID(), Sessvals.getBranchID());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AList.setProcessFlag(true);
|
|
||||||
AList.setErrMsg("");
|
|
||||||
}
|
|
||||||
if(AList.isProcessFlag())
|
|
||||||
{
|
|
||||||
Allocation BlankAlloc=new Allocation();
|
|
||||||
BlankAlloc.setErrMsg(AList.getErrMsg());
|
|
||||||
BlankAlloc.setProcessFlag(false);
|
|
||||||
model.addAttribute("allocation",BlankAlloc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model.addAttribute("allocation",AList);
|
|
||||||
}
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/allocation";
|
|
||||||
}
|
|
||||||
//<--- Allocation Ends
|
|
||||||
//---> Telesheet
|
|
||||||
@RequestMapping(value="telesheet",method=RequestMethod.POST )
|
|
||||||
public String Telesheet(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
Telesheet TList=new Telesheet();
|
|
||||||
TList.setErrCode("1006");
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
TList.setSessUUID(UUID);
|
|
||||||
model.addAttribute("telesheet",TList.getTeleList(Sessvals.getCompanyID(), Sessvals.getBranchID(),Sessvals.getUserID()));
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/telesheet";
|
|
||||||
}
|
|
||||||
@RequestMapping(value="gentelesheet",method=RequestMethod.POST )
|
|
||||||
public String GenTelesheet(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,@ModelAttribute(value="telesheet") Telesheet TList,HttpSession session)
|
|
||||||
{
|
|
||||||
String Rootdir= request.getServletContext().getRealPath("/");
|
|
||||||
TList.setErrCode("1006");
|
|
||||||
if(session.getAttribute("UUID").toString().equals(TList.getSessUUID()))
|
|
||||||
{
|
|
||||||
TList.FinalizeTeleSheet(Sessvals.getUserID(),Sessvals.getCompanyID(), Sessvals.getBranchID(),Rootdir);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TList.setProcessFlag(true);
|
|
||||||
TList.setErrMsg("");
|
|
||||||
}
|
|
||||||
if(TList.isProcessFlag())
|
|
||||||
{
|
|
||||||
Telesheet BlankTList=new Telesheet();
|
|
||||||
BlankTList.setTelePDFLink(TList.getTelePDFLink());
|
|
||||||
BlankTList.setErrMsg(TList.getErrMsg());
|
|
||||||
BlankTList.setProcessFlag(false);
|
|
||||||
model.addAttribute("telesheet",BlankTList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model.addAttribute("telesheet",TList);
|
|
||||||
}
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/telesheet";
|
|
||||||
}
|
|
||||||
//<--- Telesheet Ends
|
|
||||||
//---> Referencesheet
|
|
||||||
@RequestMapping(value="refsheet",method=RequestMethod.POST )
|
|
||||||
public String Refsheet(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
ReferenceSheet RList=new ReferenceSheet();
|
|
||||||
RList.setErrCode("1006");
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
RList.setSessUUID(UUID);
|
|
||||||
model.addAttribute("refsheet",RList.getRefList(Sessvals.getCompanyID(), Sessvals.getBranchID(),Sessvals.getUserID()));
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/referencesheet";
|
|
||||||
}
|
|
||||||
@RequestMapping(value="genrefsheet",method=RequestMethod.POST )
|
|
||||||
public String GenRefsheet(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,@ModelAttribute(value="refsheet") ReferenceSheet RList,HttpSession session)
|
|
||||||
{
|
|
||||||
String Rootdir= request.getServletContext().getRealPath("/");
|
|
||||||
RList.setErrCode("1006");
|
|
||||||
if(session.getAttribute("UUID").toString().equals(RList.getSessUUID()))
|
|
||||||
{
|
|
||||||
RList.FinalizeRefList(Sessvals.getUserID(),Sessvals.getCompanyID(), Sessvals.getBranchID(),Rootdir);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RList.setProcessFlag(true);
|
|
||||||
RList.setErrMsg("");
|
|
||||||
}
|
|
||||||
if(RList.isProcessFlag())
|
|
||||||
{
|
|
||||||
ReferenceSheet BlankRList=new ReferenceSheet();
|
|
||||||
BlankRList.setTelePDFLink(RList.getTelePDFLink());
|
|
||||||
BlankRList.setErrMsg(RList.getErrMsg());
|
|
||||||
BlankRList.setProcessFlag(false);
|
|
||||||
model.addAttribute("refsheet",BlankRList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model.addAttribute("telesheet",RList);
|
|
||||||
}
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/referencesheet";
|
|
||||||
}
|
|
||||||
//<--- Telesheet Ends
|
|
||||||
//---> Send To Operation
|
|
||||||
@RequestMapping(value="sendtoopr",method=RequestMethod.POST )
|
|
||||||
public String GatherCaseList(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
SendToOperation Sopr=new SendToOperation();
|
|
||||||
Sopr.setErrCode("1007");
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
Sopr.setSessUUID(UUID);
|
|
||||||
Sopr=Sopr.getRecordList(Sessvals.getCompanyID(), Sessvals.getBranchID(),Sessvals.getUserID());
|
|
||||||
model.addAttribute("sendtoopr",Sopr);
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/sendtoopr";
|
|
||||||
}
|
|
||||||
@RequestMapping(value="sendcasestoopr",method=RequestMethod.POST )
|
|
||||||
public String SendToOpr(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,@ModelAttribute(value="sendtoopr") SendToOperation Sopr,HttpSession session)
|
|
||||||
{
|
|
||||||
Sopr.setErrCode("1004");
|
|
||||||
if(session.getAttribute("UUID").toString().equals(Sopr.getSessUUID()))
|
|
||||||
{
|
|
||||||
Sopr.SendToOpr(Sessvals.getUserID(),Sessvals.getCompanyID(), Sessvals.getBranchID());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Sopr.setProcessFlag(true);
|
|
||||||
Sopr.setErrMsg("");
|
|
||||||
}
|
|
||||||
if(Sopr.isProcessFlag())
|
|
||||||
{
|
|
||||||
SendToOperation BSopr=new SendToOperation();
|
|
||||||
BSopr.setErrMsg(Sopr.getErrMsg());
|
|
||||||
BSopr.setProcessFlag(false);
|
|
||||||
model.addAttribute("sendtoopr",BSopr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model.addAttribute("sendtoopr",Sopr);
|
|
||||||
}
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/sendtoopr";
|
|
||||||
}
|
|
||||||
//<--- Send To Operation Ends
|
|
||||||
//---> Generate F-SAM List Starts
|
|
||||||
@RequestMapping(value="photocases",method=RequestMethod.POST )
|
|
||||||
public String PhotoCaseList(ModelMap model,HttpServletRequest request,@ModelAttribute(value="Sessvals") Session Sessvals,HttpSession session)
|
|
||||||
{
|
|
||||||
String UUID=GlobalClass.GenerateUUID();
|
|
||||||
session.setAttribute("UUID", UUID);
|
|
||||||
PhotoCases pc=new PhotoCases();
|
|
||||||
pc.setProcessFlag(true);
|
|
||||||
pc.setErrCode("16001");
|
|
||||||
pc.setSessUUID(UUID);
|
|
||||||
model.addAttribute("caselist",pc.getPhotoCaseList(Sessvals.getBranchID()));
|
|
||||||
model.addAttribute("pcases",pc);
|
|
||||||
model.addAttribute("Sessvals",Sessvals);
|
|
||||||
return "edp/cutoff/mnimblepcases";
|
|
||||||
}
|
|
||||||
//<--- Generate F-SAM List Ends
|
|
||||||
//---> Finalize F-SAM List Starts
|
|
||||||
@RequestMapping(value="finalizepcases",method=RequestMethod.POST )
|
|
||||||
public @ResponseBody String PhotoCaseGenerated(@RequestParam String val0,@RequestParam String val1,@RequestParam String val2)
|
|
||||||
{
|
|
||||||
String OprTime=GlobalClass.DateTime("yyyy/MM/dd HH:mm:ss", new java.util.Date());
|
|
||||||
String [] Qvals=new String[4];
|
|
||||||
Qvals[0]=val0;
|
|
||||||
Qvals[1]=val1.trim().endsWith("R") ? "res":(val1.trim().endsWith("O") ? "off" : "pro");
|
|
||||||
Qvals[2]=val2;
|
|
||||||
Qvals[3]=OprTime;
|
|
||||||
PhotoCases pc=new PhotoCases();
|
|
||||||
pc.setProcessFlag(true);
|
|
||||||
pc.setErrCode("16001");
|
|
||||||
return pc.FinalizePhotoCaseList(Qvals);
|
|
||||||
}
|
|
||||||
//<--- Finalize F-SAM List Ends
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
package matrix.nimble.edp.cutoff.controller;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.servlet.http.HttpSession;
|
||||||
|
import lib.models.Allocation;
|
||||||
|
import lib.models.CutOffList;
|
||||||
|
import lib.models.CutoffPending;
|
||||||
|
import lib.models.ReferenceSheet;
|
||||||
|
import lib.models.SendToOperation;
|
||||||
|
import lib.models.Telesheet;
|
||||||
|
import lib.models.UserSession;
|
||||||
|
import matrix.nimble.controller.AbstractAuthenticatedController;
|
||||||
|
import matrix.services.commons.CommonErrorService;
|
||||||
|
import matrix.services.commons.CommonService;
|
||||||
|
import matrix.services.edp.CutoffService;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class CutOffController extends AbstractAuthenticatedController {
|
||||||
|
private final CutoffService cutoffService;
|
||||||
|
|
||||||
|
public CutOffController(CommonService commonService, CommonErrorService errorService,
|
||||||
|
CutoffService cutoffService) {
|
||||||
|
super(commonService, errorService);
|
||||||
|
this.cutoffService = cutoffService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "cutoff", method = RequestMethod.POST)
|
||||||
|
public String cutoff(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("cutoff", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("cutOff", cutoffService.loadCutoff(auth.session()));
|
||||||
|
return "edp/cutoff/cutoff";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "savecut", method = RequestMethod.POST)
|
||||||
|
public String saveCut(@ModelAttribute("cutOff") CutOffList request, ModelMap model,
|
||||||
|
HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("cutoff", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("cutOff", cutoffService.saveCutoff(auth.session(), request));
|
||||||
|
return "edp/cutoff/cutoff";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "cutoffpending", method = RequestMethod.POST)
|
||||||
|
public String cutoffPending(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("cutoffpending", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("cutoffpending", cutoffService.loadCutoffPending(auth.session()));
|
||||||
|
return "edp/cutoff/cutoffpending";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "savecutoffpending", method = RequestMethod.POST)
|
||||||
|
public String saveCutoffPending(@ModelAttribute("cutoffpending") CutoffPending request,
|
||||||
|
ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("cutoffpending", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("cutoffpending", cutoffService.saveCutoffPending(auth.session(), request));
|
||||||
|
return "edp/cutoff/cutoffpending";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "allocation", method = RequestMethod.POST)
|
||||||
|
public String allocation(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("allocation", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("allocation", cutoffService.loadAllocation(auth.session()));
|
||||||
|
return "edp/cutoff/allocation";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "savealloc", method = RequestMethod.POST)
|
||||||
|
public String saveAllocation(@ModelAttribute("allocation") Allocation request, ModelMap model,
|
||||||
|
HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("allocation", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("allocation", cutoffService.saveAllocation(auth.session(), request));
|
||||||
|
return "edp/cutoff/allocation";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "telesheet", method = RequestMethod.POST)
|
||||||
|
public String telesheet(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("telesheet", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("telesheet", cutoffService.loadTelesheet(auth.session()));
|
||||||
|
return "edp/cutoff/telesheet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "gentelesheet", method = RequestMethod.POST)
|
||||||
|
public String generateTelesheet(@ModelAttribute("telesheet") Telesheet request,
|
||||||
|
ModelMap model, HttpServletRequest servletRequest, HttpSession session,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("telesheet", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("telesheet", cutoffService.generateTelesheet(auth.session(), request,
|
||||||
|
servletRequest.getServletContext().getRealPath("/")));
|
||||||
|
return "edp/cutoff/telesheet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "refsheet", method = RequestMethod.POST)
|
||||||
|
public String referenceSheet(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("refsheet", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("refsheet", cutoffService.loadReferenceSheet(auth.session()));
|
||||||
|
return "edp/cutoff/referencesheet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "genrefsheet", method = RequestMethod.POST)
|
||||||
|
public String generateReferenceSheet(@ModelAttribute("refsheet") ReferenceSheet request,
|
||||||
|
ModelMap model, HttpServletRequest servletRequest, HttpSession session,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("refsheet", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("refsheet", cutoffService.generateReferenceSheet(auth.session(), request,
|
||||||
|
servletRequest.getServletContext().getRealPath("/")));
|
||||||
|
return "edp/cutoff/referencesheet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "sendtoopr", method = RequestMethod.POST)
|
||||||
|
public String sendToOperation(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("sendtoopr", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("sendtoopr", cutoffService.loadSendToOperation(auth.session()));
|
||||||
|
return "edp/cutoff/sendtoopr";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "sendcasestoopr", method = RequestMethod.POST)
|
||||||
|
public String saveSendToOperation(@ModelAttribute("sendtoopr") SendToOperation request,
|
||||||
|
ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("sendtoopr", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
model.addAttribute("sendtoopr", cutoffService.sendToOperation(auth.session(), request));
|
||||||
|
return "edp/cutoff/sendtoopr";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "photocases", method = RequestMethod.POST)
|
||||||
|
public String photoCases(ModelMap model, HttpSession session, HttpServletResponse response) {
|
||||||
|
PageAuthorization auth = authorizePage("photocases", model, session, response);
|
||||||
|
if (!auth.isGranted()) return auth.viewName();
|
||||||
|
cutoffService.populatePhotoCases(model, auth.session());
|
||||||
|
return "edp/cutoff/mnimblepcases";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "finalizepcases", method = RequestMethod.POST)
|
||||||
|
@ResponseBody
|
||||||
|
public String finalizePhotoCase(@RequestParam String val0, @RequestParam String val1,
|
||||||
|
@RequestParam String val2, HttpSession session) {
|
||||||
|
ApiAuthorization auth = authorizeApiPage("photocases", session);
|
||||||
|
if (!auth.isGranted()) return "error:" + auth.error().getMessage();
|
||||||
|
return cutoffService.finalizePhotoCase(auth.session(), val0, val1, val2);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,238 +0,0 @@
|
|||||||
package matrix.nimble.edp.cutoff.model;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import matrix.nimble.utilities.DBFunctions;
|
|
||||||
import matrix.nimble.utilities.GlobalClass;
|
|
||||||
import matrix.nimble.utilities.StringFunctions;
|
|
||||||
|
|
||||||
import org.apache.commons.collections.FactoryUtils;
|
|
||||||
import org.apache.commons.collections.list.LazyList;
|
|
||||||
|
|
||||||
public class Allocation {
|
|
||||||
private List<CutOffRecord> allocationlist = LazyList.decorate(new ArrayList(),FactoryUtils.instantiateFactory(CutOffRecord.class));
|
|
||||||
private String AllocTime;
|
|
||||||
private String ErrMsg;
|
|
||||||
private String ErrDesc;
|
|
||||||
private String ErrCode;
|
|
||||||
private String SessUUID;
|
|
||||||
private boolean ProcessFlag;
|
|
||||||
|
|
||||||
public List<CutOffRecord> getAllocationlist() {
|
|
||||||
return allocationlist;
|
|
||||||
}
|
|
||||||
public String getAllocTime() {
|
|
||||||
return AllocTime;
|
|
||||||
}
|
|
||||||
public void setAllocTime(String allocTime) {
|
|
||||||
AllocTime = allocTime;
|
|
||||||
}
|
|
||||||
public void setAllocationlist(List<CutOffRecord> allocationlist) {
|
|
||||||
this.allocationlist = allocationlist;
|
|
||||||
}
|
|
||||||
public String getSessUUID() {
|
|
||||||
return SessUUID;
|
|
||||||
}
|
|
||||||
public void setSessUUID(String sessUUID) {
|
|
||||||
SessUUID = sessUUID;
|
|
||||||
}
|
|
||||||
public String getErrMsg() {
|
|
||||||
return ErrMsg;
|
|
||||||
}
|
|
||||||
public void setErrMsg(String errMsg) {
|
|
||||||
ErrMsg = errMsg;
|
|
||||||
}
|
|
||||||
public String getErrDesc() {
|
|
||||||
return ErrDesc;
|
|
||||||
}
|
|
||||||
public void setErrDesc(String errDesc) {
|
|
||||||
ErrDesc = errDesc;
|
|
||||||
}
|
|
||||||
public String getErrCode() {
|
|
||||||
return ErrCode;
|
|
||||||
}
|
|
||||||
public void setErrCode(String errCode) {
|
|
||||||
ErrCode = errCode;
|
|
||||||
}
|
|
||||||
public boolean isProcessFlag() {
|
|
||||||
return ProcessFlag;
|
|
||||||
}
|
|
||||||
public void setProcessFlag(boolean processFlag) {
|
|
||||||
ProcessFlag = processFlag;
|
|
||||||
}
|
|
||||||
public Allocation getAllocList(String CompanyId,String BranchId,String UserId)
|
|
||||||
{
|
|
||||||
Allocation AList=new Allocation();
|
|
||||||
StringFunctions StrFunc=new StringFunctions(getErrCode());
|
|
||||||
setAllocTime(StrFunc.FormatDate("yyyy/MM/dd HH:mm:ss", new java.util.Date()));
|
|
||||||
DBFunctions DBF=new DBFunctions(getErrCode());
|
|
||||||
DBF.setProcessFlag(true);
|
|
||||||
String [] Vals=(CompanyId+GlobalClass.ColDelim+BranchId+GlobalClass.ColDelim+UserId+GlobalClass.ColDelim).split(GlobalClass.ColDelim);
|
|
||||||
DBF.FetchRunQuery(27, Vals);
|
|
||||||
if(DBF.isProcessFlag())
|
|
||||||
{
|
|
||||||
String ResultData=DBF.FetchRunQuery(28, Vals); //Generating list of portfolios to be allocated
|
|
||||||
if(DBF.isProcessFlag())
|
|
||||||
{
|
|
||||||
String [][] AllocListData=StrFunc.ConverTo2DArray(ResultData, GlobalClass.RowDelim, GlobalClass.ColDelim);
|
|
||||||
ArrayList<CutOffRecord> Record=new ArrayList<CutOffRecord>();
|
|
||||||
for(int RecCount=0;RecCount<AllocListData.length;RecCount++)
|
|
||||||
{
|
|
||||||
DBF.setProcessFlag(true);
|
|
||||||
CutOffRecord CORec=new CutOffRecord();
|
|
||||||
CORec.setPortfolioid(AllocListData[RecCount][0]);
|
|
||||||
CORec.setPortname(AllocListData[RecCount][1]);
|
|
||||||
CORec.setTotrv(Integer.parseInt(AllocListData[RecCount][2]));
|
|
||||||
CORec.setTotov(Integer.parseInt(AllocListData[RecCount][3]));
|
|
||||||
CORec.setTotpv(Integer.parseInt(AllocListData[RecCount][4]));
|
|
||||||
CORec.setIslocked(Integer.parseInt(AllocListData[RecCount][5]));
|
|
||||||
if(CORec.getIslocked()>0)
|
|
||||||
{
|
|
||||||
CORec.setAllocation(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CORec.setAllocation(Integer.parseInt(AllocListData[RecCount][6])<=0 ? false:true);
|
|
||||||
}
|
|
||||||
CORec.setLockedby(AllocListData[RecCount][7]);
|
|
||||||
//Collecting records for sublist
|
|
||||||
String [] Vals1=(CompanyId+GlobalClass.ColDelim+BranchId+GlobalClass.ColDelim+UserId+GlobalClass.ColDelim+CORec.getPortfolioid()+GlobalClass.ColDelim).split(GlobalClass.ColDelim);
|
|
||||||
String ResultData1=DBF.FetchRunQuery(29, Vals1); //Generating sublist records
|
|
||||||
if(DBF.isProcessFlag())
|
|
||||||
{
|
|
||||||
String [][] SubListData=StrFunc.ConverTo2DArray(ResultData1, GlobalClass.RowDelim, GlobalClass.ColDelim);
|
|
||||||
ArrayList<CutOffRecord> SubRecord=new ArrayList<CutOffRecord>();
|
|
||||||
for(int ListCount=0;ListCount<SubListData.length;ListCount++)
|
|
||||||
{
|
|
||||||
CutOffRecord SCORec=new CutOffRecord();
|
|
||||||
SCORec.setMvcode(SubListData[ListCount][0]);
|
|
||||||
SCORec.setApplno(SubListData[ListCount][1]);
|
|
||||||
SCORec.setCustomername(SubListData[ListCount][2]);
|
|
||||||
SCORec.setApptype(SubListData[ListCount][3]);
|
|
||||||
SCORec.setTotrv(Integer.parseInt(SubListData[ListCount][4]));
|
|
||||||
SCORec.setTotov(Integer.parseInt(SubListData[ListCount][5]));
|
|
||||||
SCORec.setTotpv(Integer.parseInt(SubListData[ListCount][6]));
|
|
||||||
SCORec.setIslocked(Integer.parseInt(SubListData[ListCount][7]));
|
|
||||||
SCORec.setLockedby(SubListData[ListCount][8]);
|
|
||||||
SCORec.setAllocation(Integer.parseInt(SubListData[ListCount][9])<=0 ? false:true);
|
|
||||||
SCORec.setResiloc(SubListData[ListCount][10]);
|
|
||||||
SCORec.setOffloc(SubListData[ListCount][11]);
|
|
||||||
SCORec.setProploc(SubListData[ListCount][12]);
|
|
||||||
SCORec.setUuid(SubListData[ListCount][13]);
|
|
||||||
SCORec.setPortgroup(SubListData[ListCount][14]);
|
|
||||||
SubRecord.add(SCORec);
|
|
||||||
}
|
|
||||||
CORec.setSublist(SubRecord);
|
|
||||||
}
|
|
||||||
Record.add(CORec);
|
|
||||||
}
|
|
||||||
AList.setAllocTime(getAllocTime());
|
|
||||||
AList.setAllocationlist(Record);
|
|
||||||
AList.setSessUUID(getSessUUID());
|
|
||||||
AList.setErrCode(getErrCode());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setProcessFlag(false);
|
|
||||||
setErrDesc(DBF.getErrDesc());
|
|
||||||
setErrMsg(DBF.getErrMsg());
|
|
||||||
AList.setErrDesc(DBF.getErrDesc());
|
|
||||||
AList.setErrMsg(DBF.getErrMsg());
|
|
||||||
AList.setErrCode(getErrCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setProcessFlag(false);
|
|
||||||
setErrDesc(DBF.getErrDesc());
|
|
||||||
setErrMsg(DBF.getErrMsg());
|
|
||||||
AList.setErrDesc(DBF.getErrDesc());
|
|
||||||
AList.setErrMsg(DBF.getErrMsg());
|
|
||||||
AList.setErrCode(getErrCode());
|
|
||||||
}
|
|
||||||
return AList;
|
|
||||||
|
|
||||||
}
|
|
||||||
public void FinalizeAllocation(String UserId,String CompanyId,String BranchId)
|
|
||||||
{
|
|
||||||
setProcessFlag(true);
|
|
||||||
//---> Allocation status
|
|
||||||
int TotRv=0;
|
|
||||||
int TotOv=0;
|
|
||||||
int TotPv=0;
|
|
||||||
int TotRvAlloc=0;
|
|
||||||
int TotOvAlloc=0;
|
|
||||||
int TotPvAlloc=0;
|
|
||||||
int TotRvFailed=0;
|
|
||||||
int TotOvFailed=0;
|
|
||||||
int TotPvFailed=0;
|
|
||||||
|
|
||||||
setAllocTime(new StringFunctions(getErrCode()).FormatDate("yyyy/MM/dd HH:mm:ss", new java.util.Date()));
|
|
||||||
//<--- Allocation status ends
|
|
||||||
DBFunctions DBF=new DBFunctions(getErrCode());
|
|
||||||
int PortList=getAllocationlist().size();
|
|
||||||
for(int LIndx=0;LIndx<PortList;LIndx++)
|
|
||||||
{
|
|
||||||
CutOffRecord AllocRec=(CutOffRecord)getAllocationlist().get(LIndx);
|
|
||||||
/*if (AllocRec.getIslocked()==0 && AllocRec.isAllocation())
|
|
||||||
{*/
|
|
||||||
String Portfolioid=AllocRec.getPortfolioid();
|
|
||||||
int SubList=AllocRec.getSublist().size();
|
|
||||||
for(int SIndx=0;SIndx<SubList;SIndx++)
|
|
||||||
{
|
|
||||||
CutOffRecord SubRec=(CutOffRecord)AllocRec.getSublist().get(SIndx);
|
|
||||||
if(SubRec.isAllocation())
|
|
||||||
{
|
|
||||||
TotRv=TotRv+SubRec.getTotrv();
|
|
||||||
TotOv=TotOv+SubRec.getTotov();
|
|
||||||
TotPv=TotPv+SubRec.getTotpv();
|
|
||||||
}
|
|
||||||
DBF.setProcessFlag(true);
|
|
||||||
String Query="";
|
|
||||||
Query=Query+""+SubRec.getUuid()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+(SubRec.isAllocation() ? 1:0)+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getTotrv()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getTotov()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getTotpv()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getResiloc()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getOffloc()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getProploc()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+getAllocTime()+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+CompanyId+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+BranchId+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+Portfolioid+""+GlobalClass.ColDelim;
|
|
||||||
Query=Query+""+SubRec.getPortgroup()+""+GlobalClass.ColDelim;
|
|
||||||
String Temp=DBF.FetchRunQuery(30, Query.split(GlobalClass.ColDelim));
|
|
||||||
if(DBF.isProcessFlag())
|
|
||||||
{
|
|
||||||
if(SubRec.isAllocation())
|
|
||||||
{
|
|
||||||
TotRvAlloc=TotRvAlloc+SubRec.getTotrv();
|
|
||||||
TotOvAlloc=TotOvAlloc+SubRec.getTotov();
|
|
||||||
TotPvAlloc=TotPvAlloc+SubRec.getTotpv();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(SubRec.isAllocation())
|
|
||||||
{
|
|
||||||
TotRvFailed=TotRvFailed+SubRec.getTotrv();;
|
|
||||||
TotOvFailed=TotOvFailed+SubRec.getTotov();;
|
|
||||||
TotPvFailed=TotPvFailed+SubRec.getTotpv();;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
if(TotRvAlloc>0 || TotOvAlloc >0 || TotPvAlloc >0)
|
|
||||||
{
|
|
||||||
setErrMsg(getErrCode()+"ALFAIL:Info:Total ("+TotRvAlloc+" / "+TotRv+")-RV, ("+TotOvAlloc+" / "+TotOv+")-OV, ("+TotPvAlloc+" / "+TotPv+")-PV allocated successfully.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setErrMsg(getErrCode()+"ALFAIL:Error:Allocation failed please try again.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user