Merge branch 'master' of bitbucket.org:venbaittech/salespd_pwa

This commit is contained in:
VE10-Sanjeev 2023-04-07 14:38:34 +05:30
commit 1a9564ac74
51 changed files with 3797 additions and 1761 deletions

View File

@ -1432,6 +1432,14 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
}, },
"abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"requires": {
"event-target-shim": "^5.0.0"
}
},
"accepts": { "accepts": {
"version": "1.3.7", "version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@ -1584,6 +1592,14 @@
"positioning": "^1.3.1" "positioning": "^1.3.1"
} }
}, },
"angular-cropperjs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/angular-cropperjs/-/angular-cropperjs-1.0.2.tgz",
"integrity": "sha512-S+fy+bJUdQ1BCcAJ1yQHxJiPM5yhfeQXzjvSjNqPfrvB/pWKXyDLtVu2jl5Z4QW6WhH/vQPu5wBn4/KxXIMdEw==",
"requires": {
"tslib": "^1.9.0"
}
},
"angular-draggable-droppable": { "angular-draggable-droppable": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-2.0.0.tgz", "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-2.0.0.tgz",
@ -1957,6 +1973,21 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
}, },
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
"follow-redirects": "^1.14.0"
},
"dependencies": {
"follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
}
}
},
"babel-code-frame": { "babel-code-frame": {
"version": "6.26.0", "version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
@ -2189,6 +2220,11 @@
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
}, },
"bignumber.js": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz",
"integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A=="
},
"binary-extensions": { "binary-extensions": {
"version": "1.11.0", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
@ -2280,6 +2316,11 @@
"multicast-dns-service-types": "^1.1.0" "multicast-dns-service-types": "^1.1.0"
} }
}, },
"bootstrap": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz",
"integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w=="
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@ -2468,6 +2509,11 @@
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"dev": true "dev": true
}, },
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
},
"buffer-fill": { "buffer-fill": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
@ -2578,6 +2624,15 @@
"resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.1.2.tgz", "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.1.2.tgz",
"integrity": "sha512-9j4Zd1itopNYTSWzFU4MqD2IDHMqznfxsGr8UWGh7hWv+lKzjRJz0LS29iAg5rHtP6+6x3ikQnhoMGqFUzoD2Q==" "integrity": "sha512-9j4Zd1itopNYTSWzFU4MqD2IDHMqznfxsGr8UWGh7hWv+lKzjRJz0LS29iAg5rHtP6+6x3ikQnhoMGqFUzoD2Q=="
}, },
"call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
}
},
"caller-callsite": { "caller-callsite": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
@ -3254,6 +3309,11 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"cropperjs": {
"version": "1.5.12",
"resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz",
"integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw=="
},
"cross-spawn": { "cross-spawn": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
@ -4060,6 +4120,14 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -4432,6 +4500,11 @@
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"dev": true "dev": true
}, },
"event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
},
"eventemitter3": { "eventemitter3": {
"version": "4.0.7", "version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@ -4918,6 +4991,11 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true "dev": true
}, },
"fast-text-encoding": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
"integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w=="
},
"fastparse": { "fastparse": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
@ -5762,6 +5840,55 @@
"wide-align": "^1.1.0" "wide-align": "^1.1.0"
} }
}, },
"gaxios": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
"integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
},
"dependencies": {
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"debug": "4"
}
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"requires": {
"agent-base": "6",
"debug": "4"
}
},
"is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"gaze": { "gaze": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
@ -5770,6 +5897,15 @@
"globule": "^1.0.0" "globule": "^1.0.0"
} }
}, },
"gcp-metadata": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
"integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
"requires": {
"gaxios": "^4.0.0",
"json-bigint": "^1.0.0"
}
},
"genfun": { "genfun": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
@ -5781,6 +5917,23 @@
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
}, },
"get-intrinsic": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.3"
},
"dependencies": {
"has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
}
}
},
"get-stdin": { "get-stdin": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@ -5911,11 +6064,352 @@
"resolved": "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz", "resolved": "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz",
"integrity": "sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok=" "integrity": "sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok="
}, },
"google-auth-library": {
"version": "6.1.6",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz",
"integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==",
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^4.0.0",
"gcp-metadata": "^4.2.0",
"gtoken": "^5.0.4",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
},
"dependencies": {
"arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"google-p12-pem": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz",
"integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==",
"requires": {
"node-forge": "^1.3.1"
},
"dependencies": {
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
}
}
},
"google-spreadsheet": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/google-spreadsheet/-/google-spreadsheet-3.3.0.tgz",
"integrity": "sha512-ahmRNh14s1i3phfvbF2mxen1lohWJpUaFWgsU6P6bXu7QrmxMaim1Ys/7BU4W5yucWCzphoIrHMbrbeIR5K9mw==",
"requires": {
"axios": "^0.21.4",
"google-auth-library": "^6.1.3",
"lodash": "^4.17.21"
},
"dependencies": {
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}
}
},
"googleapis": {
"version": "109.0.0",
"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-109.0.0.tgz",
"integrity": "sha512-m2+cwWg4R0TQ6Goe8vKydQKLuIH/M0phJzdH1zt5SCGNvoGyIpofq7FOyHKlnrrNdtHSTTI3aGtTazioHD1gPA==",
"requires": {
"google-auth-library": "^8.0.2",
"googleapis-common": "^6.0.0"
},
"dependencies": {
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"debug": "4"
}
},
"arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"gaxios": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz",
"integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==",
"requires": {
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
}
},
"gcp-metadata": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz",
"integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==",
"requires": {
"gaxios": "^5.0.0",
"json-bigint": "^1.0.0"
}
},
"google-auth-library": {
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz",
"integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==",
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^5.0.0",
"gcp-metadata": "^5.0.0",
"gtoken": "^6.1.0",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
}
},
"google-p12-pem": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
"integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
"requires": {
"node-forge": "^1.3.1"
}
},
"gtoken": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
"integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
"requires": {
"gaxios": "^5.0.1",
"google-p12-pem": "^4.0.0",
"jws": "^4.0.0"
}
},
"https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"requires": {
"agent-base": "6",
"debug": "4"
}
},
"is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"googleapis-common": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-6.0.3.tgz",
"integrity": "sha512-Xyb4FsQ6PQDu4tAE/M/ev4yzZhFe2Gc7+rKmuCX2ZGk1ajBKbafsGlVYpmzGqQOT93BRDe8DiTmQb6YSkbICrA==",
"requires": {
"extend": "^3.0.2",
"gaxios": "^5.0.1",
"google-auth-library": "^8.0.2",
"qs": "^6.7.0",
"url-template": "^2.0.8",
"uuid": "^9.0.0"
},
"dependencies": {
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"debug": "4"
}
},
"arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"gaxios": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz",
"integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==",
"requires": {
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.6.7"
}
},
"gcp-metadata": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz",
"integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==",
"requires": {
"gaxios": "^5.0.0",
"json-bigint": "^1.0.0"
}
},
"google-auth-library": {
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz",
"integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==",
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^5.0.0",
"gcp-metadata": "^5.0.0",
"gtoken": "^6.1.0",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
}
},
"google-p12-pem": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
"integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
"requires": {
"node-forge": "^1.3.1"
}
},
"gtoken": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
"integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
"requires": {
"gaxios": "^5.0.1",
"google-p12-pem": "^4.0.0",
"jws": "^4.0.0"
}
},
"https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"requires": {
"agent-base": "6",
"debug": "4"
}
},
"is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
},
"qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"requires": {
"side-channel": "^1.0.4"
}
},
"uuid": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"graceful-fs": { "graceful-fs": {
"version": "4.1.11", "version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
}, },
"gtoken": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz",
"integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==",
"requires": {
"gaxios": "^4.0.0",
"google-p12-pem": "^3.1.3",
"jws": "^4.0.0"
}
},
"hammerjs": { "hammerjs": {
"version": "2.0.8", "version": "2.0.8",
"resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
@ -6706,6 +7200,11 @@
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true "dev": true
}, },
"is-promise": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
"integrity": "sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg=="
},
"is-regex": { "is-regex": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
@ -7069,9 +7568,9 @@
"dev": true "dev": true
}, },
"jquery": { "jquery": {
"version": "3.5.1", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
}, },
"js-base64": { "js-base64": {
"version": "2.6.4", "version": "2.6.4",
@ -7111,6 +7610,14 @@
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true "dev": true
}, },
"json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"requires": {
"bignumber.js": "^9.0.0"
}
},
"json-parse-better-errors": { "json-parse-better-errors": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@ -7165,6 +7672,25 @@
"verror": "1.10.0" "verror": "1.10.0"
} }
}, },
"jwa": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
"integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
"requires": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"jws": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
"requires": {
"jwa": "^2.0.0",
"safe-buffer": "^5.0.1"
}
},
"karma": { "karma": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz",
@ -7965,6 +8491,11 @@
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
"dev": true "dev": true
}, },
"merge-images": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-images/-/merge-images-2.0.0.tgz",
"integrity": "sha512-bpI4j54n/Zl6ZTgxaR3xWou/lqI53RAAt8peXijW37BKqoON83LQ7XCZqtFiwzBfEXIws1isYyR06584yffAyA=="
},
"methods": { "methods": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@ -8393,6 +8924,22 @@
} }
} }
}, },
"ngx-photo-editor": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/ngx-photo-editor/-/ngx-photo-editor-0.4.3.tgz",
"integrity": "sha512-XwrsLfU/h45SZWwnkurzHnRoXG8IEzYcrNoDFsmTyqx5p46yVRRfxIDC+IgdyTJIMJFWiMO1PGFfiXBD1UgtWA==",
"requires": {
"cropperjs": ">=1.5.12",
"tslib": "^2.3.0"
},
"dependencies": {
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
}
}
},
"ngx-viewer": { "ngx-viewer": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/ngx-viewer/-/ngx-viewer-1.0.1.tgz", "resolved": "https://registry.npmjs.org/ngx-viewer/-/ngx-viewer-1.0.1.tgz",
@ -8421,6 +8968,14 @@
"resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
"integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc="
}, },
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
}
},
"node-fetch-npm": { "node-fetch-npm": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
@ -8573,6 +9128,25 @@
} }
} }
}, },
"nodeify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz",
"integrity": "sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw==",
"requires": {
"is-promise": "~1.0.0",
"promise": "~1.3.0"
},
"dependencies": {
"promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz",
"integrity": "sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA==",
"requires": {
"is-promise": "~1"
}
}
}
},
"nopt": { "nopt": {
"version": "3.0.6", "version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@ -10455,6 +11029,16 @@
"uuid": "^3.3.2" "uuid": "^3.3.2"
} }
}, },
"request-promise": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-3.0.0.tgz",
"integrity": "sha512-wVGUX+BoKxYsavTA72i6qHcyLbjzM4LR4y/AmDCqlbuMAursZdDWO7PmgbGAUvD2SeEJ5iB99VSq/U51i/DNbw==",
"requires": {
"bluebird": "^3.3",
"lodash": "^4.6.1",
"request": "^2.34"
}
},
"require-directory": { "require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -10921,6 +11505,42 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true "dev": true
}, },
"sheetsu": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/sheetsu/-/sheetsu-1.2.0.tgz",
"integrity": "sha512-hljg5haeSqmNHd1O0/PMlYfL6aOOT2pWsHgqHg9zKbEuQawSFqhacf5Dhx/QHuV/X6WqQJP06/b2MzOpSsyW1Q==",
"requires": {
"bluebird": "^3.0.6",
"co": "^4.6.0",
"lodash": "^3.10.1",
"nodeify": "^1.0.0",
"request-promise": "^3.0.0"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ=="
}
}
},
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
},
"dependencies": {
"object-inspect": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
}
}
},
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@ -12130,6 +12750,11 @@
} }
} }
}, },
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"tree-kill": { "tree-kill": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
@ -12466,6 +13091,11 @@
"requires-port": "^1.0.0" "requires-port": "^1.0.0"
} }
}, },
"url-template": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw=="
},
"use": { "use": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
@ -12815,6 +13445,11 @@
} }
} }
}, },
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"webpack": { "webpack": {
"version": "4.28.4", "version": "4.28.4",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz",
@ -13171,6 +13806,15 @@
"resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz",
"integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g=="
}, },
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"when": { "when": {
"version": "3.6.4", "version": "3.6.4",
"resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",

View File

@ -39,11 +39,13 @@
"@types/file-saver": "^2.0.0", "@types/file-saver": "^2.0.0",
"amazon-cognito-identity-js": "^2.0.30", "amazon-cognito-identity-js": "^2.0.30",
"angular-calendar": "0.23.3", "angular-calendar": "0.23.3",
"angular-cropperjs": "^1.0.2",
"angular-notifier": "^4.1.1", "angular-notifier": "^4.1.1",
"angular-sortablejs": "^2.7.0", "angular-sortablejs": "^2.7.0",
"angular-split": "^3.0.2", "angular-split": "^3.0.2",
"angular-tree-component": "6.1.0", "angular-tree-component": "6.1.0",
"blueimp-canvas-to-blob": "^3.28.0", "blueimp-canvas-to-blob": "^3.28.0",
"bootstrap": "^4.1.3",
"chart.js": "2.6.0", "chart.js": "2.6.0",
"core-js": "^2.6.5", "core-js": "^2.6.5",
"d3": "^4.9.1", "d3": "^4.9.1",
@ -52,10 +54,11 @@
"font-awesome": "4.7.0", "font-awesome": "4.7.0",
"hammerjs": "2.0.8", "hammerjs": "2.0.8",
"intl": "^1.2.4", "intl": "^1.2.4",
"jquery": "^3.5.1", "jquery": "^3.6.0",
"karma-jasmine": "^1.1.1", "karma-jasmine": "^1.1.1",
"leaflet": "^1.4.0", "leaflet": "^1.4.0",
"mat-video": "^2.8.1", "mat-video": "^2.8.1",
"merge-images": "^2.0.0",
"moment": "^2.24.0", "moment": "^2.24.0",
"ng-pick-datetime": "^6.0.16", "ng-pick-datetime": "^6.0.16",
"ng2-charts": "1.6.0", "ng2-charts": "1.6.0",
@ -70,6 +73,7 @@
"ngx-mat-daterange-picker": "^1.1.4", "ngx-mat-daterange-picker": "^1.1.4",
"ngx-mat-select-search": "^1.8.0", "ngx-mat-select-search": "^1.8.0",
"ngx-perfect-scrollbar": "5.0.0-7", "ngx-perfect-scrollbar": "5.0.0-7",
"ngx-photo-editor": "^0.4.3",
"ngx-viewer": "^1.0.1", "ngx-viewer": "^1.0.1",
"node-sass": "^4.14.1", "node-sass": "^4.14.1",
"perfect-scrollbar": "^1.3.0", "perfect-scrollbar": "^1.3.0",
@ -92,7 +96,7 @@
"@angular/compiler-cli": "^6.1.10", "@angular/compiler-cli": "^6.1.10",
"@types/aws-sdk": "^2.7.0", "@types/aws-sdk": "^2.7.0",
"@types/jasmine": "2.5.52", "@types/jasmine": "2.5.52",
"@types/jquery": "3.2.0", "@types/jquery": "^3.2.0",
"@types/node": "^8.10.46", "@types/node": "^8.10.46",
"aws-sdk": "^2.443.0", "aws-sdk": "^2.443.0",
"codelyzer": "~4.1.0", "codelyzer": "~4.1.0",

Binary file not shown.

View File

@ -5,11 +5,25 @@ import { AuthLayoutComponent } from './layouts/auth/auth-layout.component';
import { CognitoService} from './AwsService/cognito.service'; import { CognitoService} from './AwsService/cognito.service';
import { AuthGuard } from './_guard/auth.guard'; import { AuthGuard } from './_guard/auth.guard';
// import { SalesPdComponent } from './sales-pd/sales-pd.component'; // import { SalesPdComponent } from './sales-pd/sales-pd.component';
// let role = localStorage.g('user_role');
// console.log(role)
var route: string = "fly-hi";
const role = JSON.parse(localStorage.getItem("user_role"));
if (role == "20") {
//Fly-hi role
route = "fly-hi"
} else {
//normal user role
route = "sales-pd-list"
}
console.log(role,route)
export const AppRoutes: Routes = [{ export const AppRoutes: Routes = [{
path: '', path: '',
redirectTo: 'sales-pd-list', redirectTo: route,
pathMatch: 'full', pathMatch: 'full',
}, { } , {
path: '', path: '',
component: AdminLayoutComponent, component: AdminLayoutComponent,
canActivateChild:[AuthGuard], canActivateChild:[AuthGuard],
@ -31,6 +45,7 @@ export const AppRoutes: Routes = [{
// loadChildren:'./quality-check/quality-check.module#QualityCheckModule' // loadChildren:'./quality-check/quality-check.module#QualityCheckModule'
// }, // },
// { // {
{ {
path:'sales-pd-list', path:'sales-pd-list',
loadChildren:'./sales-pd/sales-pd.module#SalesPdModule' loadChildren:'./sales-pd/sales-pd.module#SalesPdModule'

View File

@ -0,0 +1,3 @@
<p>
fly-hi-list-filter works!
</p>

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FlyHiListFilterComponent } from './fly-hi-list-filter.component';
describe('FlyHiListFilterComponent', () => {
let component: FlyHiListFilterComponent;
let fixture: ComponentFixture<FlyHiListFilterComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ FlyHiListFilterComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FlyHiListFilterComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-fly-hi-list-filter',
templateUrl: './fly-hi-list-filter.component.html',
styleUrls: ['./fly-hi-list-filter.component.scss']
})
export class FlyHiListFilterComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@ -49,12 +49,14 @@
</div> </div>
<!--End Mobile View Code--> <!--End Mobile View Code-->
<!--Start Web View Code--> <!--Start Web View Code-->
<div *ngIf="!flyHiData">
<div fxLayout="row wrap" *ngFor="let details of flyHiData"> <div fxLayout="row wrap" *ngFor="let details of flyHiData">
<div class="cell" fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="6" fxFlex.lg="6" fxFlex.xl="9" style="justify-content:flex-end"> <div class="cell" fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="6" fxFlex.lg="6" fxFlex.xl="9" style="justify-content:flex-end">
<small mat-line>{{details.sales_pd_id}}</small> <small mat-line>{{details.sales_pd_id}}</small>
</div> </div>
<div fxFlex.xs="14" fxFlex.sm="14" fxFlex.md="14" fxFlex.lg="14" fxFlex.xl="14" class="cell fontTitle" style="justify-content:flex-end" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}"> <div fxFlex.xs="14" fxFlex.sm="14" fxFlex.md="14" fxFlex.lg="14" fxFlex.xl="14" class="cell fontTitle" style="justify-content:flex-end" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">
<small mat-line>{{details.sales_pd_sno}}</small><br/> <small mat-line>{{details.sales_pd_sno}}</small><br/>
<small class="fontsize" style="color: black;" mat-line >{{details.sales_pd_type_master}}</small><br/>
<!-- <small style="color: black;text-align:center;font-weight: normal;font-size: 15px;">{{details.sales_pd_type == '1' ? 'Physical PD' : 'Telephonic PD'}}</small> --> <!-- <small style="color: black;text-align:center;font-weight: normal;font-size: 15px;">{{details.sales_pd_type == '1' ? 'Physical PD' : 'Telephonic PD'}}</small> -->
</div> </div>
<div fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="13" fxFlex.lg="13" fxFlex.xl="13" class="cell" style="justify-content:flex-end"> <div fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="13" fxFlex.lg="13" fxFlex.xl="13" class="cell" style="justify-content:flex-end">
@ -92,10 +94,10 @@
</div> </div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center"> <div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<div fxFlex="row"> <div fxFlex="row">
<!-- <div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center"> <div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<button style="float: right" mat-button mat-icon-button class="hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'" <button style="float: right" mat-button mat-icon-button class="hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="left" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon>file_download</mat-icon></button> matTooltipPosition="left" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}" >file_download</mat-icon></button>
</div> --> </div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center"> <div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<!-- <button [disabled]="details.status === 'COMPLETED'" mat-button mat-icon-button class="hover-icon" type="button" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="editForm(details)" <!-- <button [disabled]="details.status === 'COMPLETED'" mat-button mat-icon-button class="hover-icon" type="button" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="left"><mat-icon>visibility</mat-icon></button> --> matTooltip="View" matTooltipPosition="left"><mat-icon>visibility</mat-icon></button> -->
@ -133,9 +135,145 @@
</div> </div>
<mat-divider></mat-divider> <mat-divider></mat-divider>
</div> </div>
</div>
<!--End Web View Code--> <!--End Web View Code-->
</div> </div>
<mat-table [dataSource]="dataSourceTab4" matSort *ngIf="flyHiData.length > 0" >
<ng-container matColumnDef="sales_pd_id">
<mat-cell fxFlex.xs="10" fxFlex.sm="5" fxFlex.md="5" fxFlex.lg="6" fxFlex.xl="3" class="cell" *matCellDef="let details;" style="justify-content:flex-end">
<div [ngStyle]="{ 'font-weight': 'bold','font-size':'16px'}" mat-line>{{details.sales_pd_id}}</div>
<!-- <small mat-line>{{details.sales_pd_id
}}</small> -->
</mat-cell>
</ng-container>
<ng-container matColumnDef="sales_pd_sno">
<mat-cell fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="18" fxFlex.lg="15" fxFlex.xl="14" class="cell" *matCellDef="let details;">
<!-- <span *ngIf="details.is_child" mat-line>
<b>{{details.is_child == 0 ? details.applicant_name : 'Add On PD' }}</b>
</span>
<br> -->
<small mat-line [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" style="font-weight: bold;
text-align: left;
">{{details.sales_pd_sno}}</small><br/>
<small class="fontsize" style="color: black;font-weight: bold;" mat-line >{{details.sales_pd_type_master}}</small><br/>
<!-- <span class="fontsize" *ngIf="!details.lender_applicant_id"> Not Provided</span>
<span class="fontsize" *ngIf="details.lender_applicant_id"> {{details.lender_applicant_id}}</span>
<span class="fontsize" *ngIf="details.customer_segment_abbr">-({{details.customer_segment_abbr}} )</span><br>
<small mat-line *ngIf="details.fin_institute_name != null">{{details.fin_institute_name}}</small> -->
</mat-cell>
</ng-container>
<ng-container matColumnDef="applicant_name">
<mat-cell class="cell" *matCellDef="let details">
<span *ngIf="details.applicant_name" mat-line>
<b>{{details.applicant_name}}</b>
</span><br>
<span class="fontsize" mat-line> {{details.applicant_id}}</span>
</mat-cell>
</ng-container>
<ng-container matColumnDef="short_name">
<mat-cell class="cell" *matCellDef="let details">
<span style="font-weight:500"> <small mat-line>{{details.short_name}}</small></span><br/>
<span style="text-align: center;font-weight:400;font-size: 17px;"> <small mat-line>{{details.abbr}}</small></span>
</mat-cell>
</ng-container>
<ng-container matColumnDef="officer_name">
<mat-cell class="cell" *matCellDef="let details">
<span *ngIf="!details.officer_name" mat-line>
<small>--</small>
</span>
<span *ngIf="details.officer_name" mat-line>
<small mat-line >{{details.officer_name}}</small>
</span>
</mat-cell>
</ng-container>
<ng-container matColumnDef="status">
<mat-cell class="cell" *matCellDef="let details">
<span *ngIf="!details.status" mat-line>
<small>--</small>
</span>
<span *ngIf="details.status" mat-line>
<small mat-line [ngStyle]="{'color':details.status == 'COMPLETED' ? 'green' :'orange'}">{{details.status}}</small>
</span>
</mat-cell>
</ng-container>
<ng-container matColumnDef="createdon">
<mat-cell class="cell" *matCellDef="let details">
<small mat-line>{{details.createdon | date: 'dd/MM/yyyy'}}</small>
</mat-cell>
</ng-container>
<ng-container matColumnDef="view">
<mat-cell class="cell" *matCellDef="let details">
<!-- <small mat-line>{{details.createdon | date: 'dd/MM/yyyy'}}</small> -->
<button mat-button mat-icon-button class="hover-icon" type="button" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="left"><mat-icon>visibility</mat-icon></button>
<button mat-button mat-icon-button class="hover-icon" type="button" matTooltip="Report" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="above" color="primary" [matMenuTriggerFor]="menu1"><mat-icon [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}">more_vert</mat-icon> </button>
<mat-menu #menu1="matMenu">
<button style="float: right" mat-menu-item class="hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="left" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}" >file_download</mat-icon> <span [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}" >PDF Download</span></button>
<button mat-menu-item (click)="regeneratereport(details.sales_pd_id,'report')" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">
<mat-icon [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">autorenew</mat-icon>
<span [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">Re-Generate Report</span>
</button>
</mat-menu>
</mat-cell>
</ng-container>
<!-- <ng-container matColumnDef="Action">
<mat-cell class="cell" *matCellDef="let details;">
<button mat-button mat-icon-button class="hover-icon" type="button" matTooltip="ReGenerate" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="above" color="primary" [matMenuTriggerFor]="menu1"><mat-icon [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}">more_vert</mat-icon> </button>
<mat-menu #menu1="matMenu">
<button style="float: right" mat-menu-item class="hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="left" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}" >file_download</mat-icon> <span [ngStyle]="{'color':details.status == 'COMPLETED' ? '#0d93a9' :'gray'}" >PDF Download</span></button>
<button mat-menu-item (click)="regeneratereport(details.sales_pd_id,'report')" [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">
<mat-icon [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">autorenew</mat-icon>
<span [ngStyle]="{'color':roleID == 20 ? '#0d93a9' :'#f44336'}">Re-Generate Report</span>
</button>
</mat-menu>
</mat-cell>
</ng-container> -->
<mat-row style="align-items: normal !important;" *matRowDef="let row; columns: displayedColumns;">
</mat-row>
</mat-table>
</mat-card-content> </mat-card-content>
<div [hidden]="recordStatus">
<mat-paginator #paginator class="mat-elevation-z1" [length]="length" [pageIndex]="pageIndex" [pageSize]="pageSize"
[pageSizeOptions]="[5, 10, 25,50, 100]" (page)="pageEvent = $event; pageChange($event)" showFirstLastButtons>
</mat-paginator>
</div>
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
</mat-card> </mat-card>

View File

@ -140,4 +140,15 @@ p.note {
} }
} }
::ng-deep.mat-tab-body-content {
height: 100%;
overflow: hidden !important;
}
.mat-row {
min-width: max-content;
}
mat-table{
width: 98%;
}

View File

@ -1,19 +1,22 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
import { FlyhiService } from '../services/flyhi.service'; import { FlyhiService } from '../services/flyhi.service';
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { MatDialog, MatTableDataSource, MatPaginator, MatSort } from '@angular/material'; import { MatDialog, MatTableDataSource, MatPaginator, MatSort, PageEvent } from '@angular/material';
import { ConstantsProvider } from 'app/providers/constants/constants'; import { ConstantsProvider } from 'app/providers/constants/constants';
import { LoaderService } from 'app/shared/loaderService/loader.service'; import { LoaderService } from 'app/shared/loaderService/loader.service';
import { SalesPdService } from 'app/sales-pd/services/sales-pd.service'; import { SalesPdService } from 'app/sales-pd/services/sales-pd.service';
import { ReGenerateReportComponent } from 'app/sales-pd/sales-pd-list/re-generate-report/re-generate-report.component';
@Component({ @Component({
selector: 'app-fly-hi-list', selector: 'app-fly-hi-list',
templateUrl: './fly-hi-list.component.html', templateUrl: './fly-hi-list.component.html',
styleUrls: ['./fly-hi-list.component.scss'] styleUrls: ['./fly-hi-list.component.scss'],
encapsulation: ViewEncapsulation.None
}) })
export class FlyHiListComponent implements OnInit { export class FlyHiListComponent implements OnInit {
@ViewChild(MatPaginator) paginator: MatPaginator; @ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort; @ViewChild(MatSort) sort: MatSort;
@Input() bindFilterValue: string;
public dataLengthTab4: number; public dataLengthTab4: number;
public dataSourceTab4 = new MatTableDataSource(); public dataSourceTab4 = new MatTableDataSource();
is_sales_login:boolean = false is_sales_login:boolean = false
@ -25,7 +28,12 @@ export class FlyHiListComponent implements OnInit {
limitMsg: boolean = false; limitMsg: boolean = false;
finallink: string; finallink: string;
filter_drop_down_data: { product_ids: any[]; lender_ids: any[]; pd_status: any[]; }; filter_drop_down_data: { product_ids: any[]; lender_ids: any[]; pd_status: any[]; };
length = 5;
pageIndex = 0;
pageSize = 10;
pageEvent: PageEvent;
displayedColumns = ['sales_pd_id','sales_pd_sno','applicant_name','short_name','officer_name','status','createdon','view'
];
constructor(private loaderService:LoaderService,private constantProvider:ConstantsProvider,private dialog:MatDialog,private route: ActivatedRoute, private router: Router,private _fly_Hi:FlyhiService,private SalesPDService:SalesPdService) { constructor(private loaderService:LoaderService,private constantProvider:ConstantsProvider,private dialog:MatDialog,private route: ActivatedRoute, private router: Router,private _fly_Hi:FlyhiService,private SalesPDService:SalesPdService) {
this.roleID = localStorage.getItem('user_role'); this.roleID = localStorage.getItem('user_role');
setTimeout(()=>{ setTimeout(()=>{
@ -56,6 +64,7 @@ export class FlyHiListComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.getListofFlyhi() this.getListofFlyhi()
localStorage.setItem('sales_pd_type',null)
} }
getListofFlyhi(){ getListofFlyhi(){
@ -66,6 +75,7 @@ export class FlyHiListComponent implements OnInit {
this.roleID = localStorage.getItem('user_role') this.roleID = localStorage.getItem('user_role')
this.flyHiData = res['records']; this.flyHiData = res['records'];
console.log(this.flyHiData)
this.dataLengthTab4 = res['records'].length; this.dataLengthTab4 = res['records'].length;
this.dataSourceTab4.data = this.flyHiData; this.dataSourceTab4.data = this.flyHiData;
this.recordStatus=false this.recordStatus=false
@ -297,6 +307,7 @@ export class FlyHiListComponent implements OnInit {
} }
salesPDpdf(pdfdetail){ salesPDpdf(pdfdetail){
console.log(pdfdetail)
this.loaderService.showMatSpinnerDialog('Processing...') this.loaderService.showMatSpinnerDialog('Processing...')
this.SalesPDService.getSalesPdpdf(pdfdetail) this.SalesPDService.getSalesPdpdf(pdfdetail)
.subscribe( .subscribe(
@ -318,20 +329,20 @@ export class FlyHiListComponent implements OnInit {
} }
// regeneratereport(data,option) regeneratereport(data,option)
// { {
// const dialogRef = this.dialog.open(ReGenerateReportComponent,{ const dialogRef = this.dialog.open(ReGenerateReportComponent,{
// data: {pdid: data,option: option}, data: {pdid: data,option: option},
// disableClose: true, disableClose: true,
// minWidth: '30%', minWidth: '30%',
// maxWidth: '40%', maxWidth: '40%',
// }) })
// dialogRef.afterClosed() dialogRef.afterClosed()
// .subscribe(dataresult => { .subscribe(dataresult => {
// // this.viewPdDetails(this.viewID,this.masterRandomString) // this.viewPdDetails(this.viewID,this.masterRandomString)
// }) })
// } }
} }

View File

@ -29,7 +29,48 @@ import { AngularSplitModule } from 'angular-split';
import { FormComponent } from './forms-dynamic/form/form.component'; import { FormComponent } from './forms-dynamic/form/form.component';
import { ImageVideoComponent } from './image-video/image-video.component'; import { ImageVideoComponent } from './image-video/image-video.component';
import { AnswerOptionCreateDialogComponent } from './forms-dynamic/answer-option-create-dialog/answer-option-create-dialog.component'; import { AnswerOptionCreateDialogComponent } from './forms-dynamic/answer-option-create-dialog/answer-option-create-dialog.component';
import { FlyHiListFilterComponent } from './fly-hi-list/fly-hi-list-filter/fly-hi-list-filter.component';
import { NotifierModule, NotifierOptions } from 'angular-notifier';
const pdCustomNotifierOptions: NotifierOptions = {
position: {
horizontal: {
position: 'right',
distance: 12
},
vertical: {
position: 'top',
distance: 32,
gap: 10
}
},
theme: 'material',
behaviour: {
autoHide: 2000,
onClick: 'hide',
onMouseover: 'pauseAutoHide',
showDismissButton: true,
stacking: 4
},
animations: {
enabled: true,
show: {
preset: 'slide',
speed: 300,
easing: 'ease'
},
hide: {
preset: 'fade',
speed: 300,
easing: 'ease',
offset: 50
},
shift: {
speed: 300,
easing: 'ease'
},
overlap: 150
}
};
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, CommonModule,
@ -79,10 +120,10 @@ import { AnswerOptionCreateDialogComponent } from './forms-dynamic/answer-option
OwlDateTimeModule, OwlDateTimeModule,
OwlNativeDateTimeModule, OwlNativeDateTimeModule,
AngularSplitModule, AngularSplitModule,
MatVideoModule MatVideoModule,
NotifierModule.withConfig(pdCustomNotifierOptions),
], ],
declarations:[StartPd2Component,DynamicFormComponent,DynamicQuestionTemplateComponent,FormComponent,AnswerOptionCreateDialogComponent], declarations:[StartPd2Component,DynamicFormComponent,DynamicQuestionTemplateComponent,FormComponent,AnswerOptionCreateDialogComponent, FlyHiListFilterComponent],
exports:[StartPd2Component], exports:[StartPd2Component],
entryComponents:[FlyHiListComponent,DynamicFormComponent,DynamicQuestionTemplateComponent,FormComponent], entryComponents:[FlyHiListComponent,DynamicFormComponent,DynamicQuestionTemplateComponent,FormComponent],
providers:[ConstantsProvider,{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' },{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]}, providers:[ConstantsProvider,{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' },{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},

View File

@ -33,27 +33,27 @@ export class DynamicFormComponent {
this.questionService.currentMessageSubscriber.subscribe((data : any)=>{ this.questionService.currentMessageSubscriber.subscribe((data : any)=>{
console.log(data) //console.log(data)
}) })
} }
ngOnInit() { ngOnInit() {
console.log(this.form_group_name) // console.log(this.form_group_name)
console.log(this.questions_JSON.questions) //.log(this.questions_JSON.questions)
this.form_group_name=this.questionService.assignFormControl_array(this.form_group_name,this.questions_JSON.questions) this.form_group_name=this.questionService.assignFormControl_array(this.form_group_name,this.questions_JSON.questions)
this.generateGroupControls(); this.generateGroupControls();
console.log( this.questions_JSON.questions) // console.log( this.questions_JSON.questions)
this.questionService.notify(this.questions_JSON) this.questionService.notify(this.questions_JSON)
if(this.questions_JSON.questions){ if(this.questions_JSON.questions){
this.questions_JSON.questions.forEach(element => { this.questions_JSON.questions.forEach(element => {
if(element.question instanceof Array){ if(element.question instanceof Array){
element.question.forEach(e => { element.question.forEach(e => {
console.log(e.question) // console.log(e.question)
}); });
}else{ }else{
console.log(this.questions_JSON.questions) // console.log(this.questions_JSON.questions)
} }
}); });

View File

@ -32,6 +32,8 @@ export class DynamicQuestionTemplateComponent implements OnInit {
local_pincode1: any; local_pincode1: any;
json_answers1:any; json_answers1:any;
isChecked:any=[]; isChecked:any=[];
city_array:any =[];
pincode_array:any=[];
autoCompleteAns:Observable<string[]> autoCompleteAns:Observable<string[]>
public commonFilterCtrl:FormControl = new FormControl(); public commonFilterCtrl:FormControl = new FormControl();
public ngxFilteredValue:ReplaySubject<any> = new ReplaySubject<any>(1); public ngxFilteredValue:ReplaySubject<any> = new ReplaySubject<any>(1);
@ -46,7 +48,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.quesService.currentMessageSubscriber.subscribe((data : any)=>{ this.quesService.currentMessageSubscriber.subscribe((data : any)=>{
console.log(data) //console.log(data)
if(data){ if(data){
this.check = true this.check = true
}else{ }else{
@ -56,7 +58,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
// output : {msg : 'do something'} // output : {msg : 'do something'}
}) })
localStorage.setItem('use',"0"); localStorage.setItem('use',"0");
console.log( this.whole_json) //console.log( this.whole_json)
this.parent_ques = this.currFormArrayObj this.parent_ques = this.currFormArrayObj
@ -70,7 +72,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
} }
checkCat(data,w){ checkCat(data,w){
console.log(this.isChecked) // console.log(this.isChecked)
if( this.isChecked.length == 0){ if( this.isChecked.length == 0){
this.isChecked = this.json_answers[w.question_key] this.isChecked = this.json_answers[w.question_key]
let ref = this.isChecked.find(x => x == data); // this checks the cat[] array let ref = this.isChecked.find(x => x == data); // this checks the cat[] array
@ -89,6 +91,9 @@ export class DynamicQuestionTemplateComponent implements OnInit {
} }
} }
ngAfterViewInit(){
this.ngOnChanges()
}
ngOnChanges() { ngOnChanges() {
//alert('ans'); //alert('ans');
this.parent_ques = this.currFormArrayObj this.parent_ques = this.currFormArrayObj
@ -166,16 +171,16 @@ export class DynamicQuestionTemplateComponent implements OnInit {
] ]
setTimeout(()=>{ setTimeout(()=>{
console.log(this.parent_ques); // console.log(this.parent_ques);
if( this.parent_ques.answers && this.parent_ques.answers instanceof Array){ if( this.parent_ques.answers && this.parent_ques.answers instanceof Array){
console.log(this.parent_ques.answers.length) // console.log(this.parent_ques.answers.length)
console.log( this.formGroupN.get(this.parent_ques.question_key)) // console.log( this.formGroupN.get(this.parent_ques.question_key))
if(this.parent_ques.type == '3' && this.parent_ques.answers.length == 1){ if(this.parent_ques.type == '3' && this.parent_ques.answers.length == 1){
console.log(this.parent_ques.answers.answer_id) // console.log(this.parent_ques.answers.answer_id)
this.formGroupN.get(this.parent_ques.question_key).patchValue(this.parent_ques.answers[0].answer_id || '') this.formGroupN.get(this.parent_ques.question_key).patchValue(this.parent_ques.answers[0].answer_id || '')
}else if(this.parent_ques.type == '3' && this.parent_ques.answers.length == 0){ }else if(this.parent_ques.type == '3' && this.parent_ques.answers.length == 0){
console.log(this.parent_ques.answers.answer_id) // console.log(this.parent_ques.answers.answer_id)
this.formGroupN.get(this.parent_ques.question_key).patchValue(this.parent_ques.answers[0].answer_id || '') this.formGroupN.get(this.parent_ques.question_key).patchValue(this.parent_ques.answers[0].answer_id || '')
} }
} }
@ -191,11 +196,11 @@ export class DynamicQuestionTemplateComponent implements OnInit {
if(this.parent_ques.question_key == '5'){ if(this.parent_ques.question_key == '5'){
this.isChecked = this.json_answers[this.parent_ques.question_key] this.isChecked = this.json_answers[this.parent_ques.question_key]
console.log( this.isChecked) .log( this.isChecked)
} }
this.onChangeProperty({value:this.json_answers[this.parent_ques.question_key]},this.parent_ques,'','','','TS') this.onChangeProperty({value:this.json_answers[this.parent_ques.question_key]},this.parent_ques,'','','','TS')
console.log( this.json_answers[this.parent_ques.question_key]) // console.log( this.json_answers[this.parent_ques.question_key])
} }
else if(this.json_answers!=null && this.json_answers != undefined && this.json_answers){ else if(this.json_answers!=null && this.json_answers != undefined && this.json_answers){
// this.formGroupN.patchValue((this.json_answers[this.group_key] || '')) // this.formGroupN.patchValue((this.json_answers[this.group_key] || ''))
@ -314,9 +319,9 @@ export class DynamicQuestionTemplateComponent implements OnInit {
} }
} }
onChange_checkbox(event,sec_control){ onChange_checkbox(event,sec_control){
console.log(this.isChecked) // console.log(this.isChecked)
// this.isChecked =[]; // this.isChecked =[];
console.log( this.formGroupN.get(sec_control.question_key).value) // console.log( this.formGroupN.get(sec_control.question_key).value)
const control=this.formGroupN.get(sec_control.question_key) as FormArray const control=this.formGroupN.get(sec_control.question_key) as FormArray
@ -333,7 +338,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
onChangeProperty(event,sec_control,question_key,options?,sec_index?,from?){ onChangeProperty(event,sec_control,question_key,options?,sec_index?,from?){
// alert('datatamil'); // alert('datatamil');
if(!from && from != 'TS' && this.quesService.formanswers != null) { if(!from && from != 'TS' && this.quesService.formanswers != null) {
console.log("Value changes",from); // console.log("Value changes",from);
this.quesService.formanswers = null this.quesService.formanswers = null
} }
@ -404,11 +409,11 @@ export class DynamicQuestionTemplateComponent implements OnInit {
// onChangeProperties_value.push(JSON.parse(new_name)) // onChangeProperties_value.push(JSON.parse(new_name))
onChangeProperties_value.forEach(onChangeProperty=>{ onChangeProperties_value.forEach(onChangeProperty=>{
console.log(onChangeProperty) // console.log(onChangeProperty)
if(onChangeProperty.purpose == 'api2'){ if(onChangeProperty.purpose == 'api2'){
console.log(event.value,onChangeProperty.params) // console.log(event.value,onChangeProperty.params)
if(onChangeProperty.api == 'getListOfStatesAndCities'){ if(onChangeProperty.api == 'getListOfStatesAndCities'){
console.log(event.value,onChangeProperty.params) // console.log(event.value,onChangeProperty.params)
// onChangeProperty.params = JSON.stringify(onChangeProperty.params); // onChangeProperty.params = JSON.stringify(onChangeProperty.params);
// let updatedParams =JSON.stringify(onChangeProperty.params); // let updatedParams =JSON.stringify(onChangeProperty.params);
// updatedParams = updatedParams.replace('value_of_answer',event.value); // updatedParams = updatedParams.replace('value_of_answer',event.value);
@ -416,26 +421,75 @@ export class DynamicQuestionTemplateComponent implements OnInit {
// console.log(JSON.parse(updatedParams),updatedParams,JSON.parse(JSON.stringify(updatedParams))) // console.log(JSON.parse(updatedParams),updatedParams,JSON.parse(JSON.stringify(updatedParams)))
// debugger; // debugger;
let params={records:{state_id:event.value}} let params={records:{state_id:event.value}}
console.log( params,this.city_array,this.pincode_array)
if( this.city_array.length>0){
this.city_array[this.json_index] = null
}
if( this.pincode_array.length>0){
this.pincode_array[this.json_index] = null
}
this.quesService.apiCall(onChangeProperty.api,params,onChangeProperty.api_method).subscribe(res=>{ this.quesService.apiCall(onChangeProperty.api,params,onChangeProperty.api_method).subscribe(res=>{
if(res['dataStatus']){ if(res['dataStatus']){
this.local_city1=res['records'].cities this.local_city1=res['records'].cities
this.local_pincode1=res['records'].pincode this.local_pincode1=res['records'].pincode
// console.log( local_city1,local_pincode1)
this.whole_json.forEach((val,index)=>{ this.whole_json.forEach((val,index)=>{
// let i= index-2
console.log( this.json_index,index)
if(val.api_properties == 'local_city1' ){ if(val.api_properties == 'local_city1' ){
this.local_city1=this.quesService.convertArrayNames(['city_id','city_name'],this.local_city1) // this.local_city1=this.quesService.convertArrayNames(['city_id','city_name'], this.local_city1)
console.log( this.local_city1) this.local_city1=this.quesService.convertArrayNames(['city_id','city_name'], this.local_city1)
val.answers = (this.local_city1) // console.log( this.local_city1)
// val.answers = null
console.log( this.city_array[this.json_index])
if(this.city_array[this.json_index] == undefined ){
val.answers = this.local_city1
// this.city_array=[]
this.city_array.push( this.local_city1)
}else{
if( this.city_array[this.json_index] == null){
this.city_array[this.json_index] = this.local_city1
}
val.answers = this.city_array[this.json_index]
}
// this.ngOnChanges()
console.log( this.city_array )
// val.answers = this.city_array[this.json_index]
//val.answers = local_city1
// console.log(this.whole_json,this.json_index, val.answers)
} }
else if(val.api_properties == 'local_pincode1'){ else if(val.api_properties == 'local_pincode1'){
this.local_pincode1=this.quesService.convertArrayNames(['pincode_id','pincode'],this.local_pincode1) this.local_pincode1=this.quesService.convertArrayNames(['pincode_id','pincode'], this.local_pincode1)
val.answers = (this.local_pincode1)
// val.answers = local_pincode1
// setTimeout(() => {
// console.log( this.pincode_array[index-1] )
// }, 1000);
if(this.pincode_array[this.json_index] == undefined){
val.answers = this.local_pincode1
//this.pincode_array=[]
this.pincode_array.push( this.local_pincode1)
}else{
if( this.pincode_array[this.json_index] == null){
this.pincode_array[this.json_index] = this.local_pincode1
}
// this.pincode_array[this.json_index] = this.local_pincode1
val.answers = this.pincode_array[this.json_index]
}
console.log( this.pincode_array)
// val.answers = local_pincode2
// console.log(this.whole_json, val.answers )
// this.ngOnChanges()
} }
}) })
@ -467,12 +521,12 @@ export class DynamicQuestionTemplateComponent implements OnInit {
if(val.api_properties == 'local_city' ){ if(val.api_properties == 'local_city' ){
this.local_city=this.quesService.convertArrayNames(['city_id','city_name'],this.local_city) this.local_city=this.quesService.convertArrayNames(['city_id','city_name'],this.local_city)
console.log( this.local_city) // console.log( this.local_city)
val.answers = (this.local_city) val.answers = (this.local_city)
} }
else if(val.api_properties == 'local_pincode'){ else if(val.api_properties == 'local_pincode'){
this.local_pincode=this.quesService.convertArrayNames(['pincode_id','pincode'],this.local_pincode) this.local_pincode=this.quesService.convertArrayNames(['pincode_id','pincode'],this.local_pincode)
val.answers = (this.local_pincode) val.answers = (this.local_pincode)
} }
// if(val.api_properties == 'local_city1' ){ // if(val.api_properties == 'local_city1' ){
@ -490,10 +544,10 @@ export class DynamicQuestionTemplateComponent implements OnInit {
} }
}) })
}else if(onChangeProperty.purpose == 'api2'){ }else if(onChangeProperty.purpose == 'api2'){
console.log(event.value,onChangeProperty.params) // console.log(event.value,onChangeProperty.params)
if(onChangeProperty.api == 'getListOfStatesAndCities'){ if(onChangeProperty.api == 'getListOfStatesAndCities'){
console.log(event.value,onChangeProperty.params) // console.log(event.value,onChangeProperty.params)
// onChangeProperty.params = JSON.stringify(onChangeProperty.params); // // onChangeProperty.params = JSON.stringify(onChangeProperty.params);
// let updatedParams =JSON.stringify(onChangeProperty.params); // let updatedParams =JSON.stringify(onChangeProperty.params);
// updatedParams = updatedParams.replace('value_of_answer',event.value); // updatedParams = updatedParams.replace('value_of_answer',event.value);
// // updatedParams = JSON.parse(updatedParams) // // updatedParams = JSON.parse(updatedParams)
@ -514,8 +568,8 @@ export class DynamicQuestionTemplateComponent implements OnInit {
if(val.api_properties == 'local_city1' ){ if(val.api_properties == 'local_city1' ){
this.local_city1=this.quesService.convertArrayNames(['city_id','city_name'],this.local_city1) this.local_city1=this.quesService.convertArrayNames(['city_id','city_name'],this.local_city1)
console.log( this.local_city1) // console.log( this.local_city1)
val.answers = (this.local_city1) val.answers = (this.local_city1)
} }
else if(val.api_properties == 'local_pincode1'){ else if(val.api_properties == 'local_pincode1'){
this.local_pincode1=this.quesService.convertArrayNames(['pincode_id','pincode'],this.local_pincode1) this.local_pincode1=this.quesService.convertArrayNames(['pincode_id','pincode'],this.local_pincode1)
@ -567,7 +621,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
// } // }
} }
if(onChangeProperty.purpose == 'FORM_CTRL'){ if(onChangeProperty.purpose == 'FORM_CTRL'){
console.log(onChangeProperty) // console.log(onChangeProperty)
// if(options == 2){ // if(options == 2){
// debugger; // debugger;
@ -789,7 +843,7 @@ export class DynamicQuestionTemplateComponent implements OnInit {
}) })
const question_temp:any = JSON.parse(JSON.stringify(val.question)); const question_temp:any = JSON.parse(JSON.stringify(val.question));
inserted_control_obj.questions[index].question = question_temp inserted_control_obj.questions[index].question = question_temp
console.log(control_names) // console.log(control_names)
childControl.push(this._fb.group(control_names)) childControl.push(this._fb.group(control_names))
val.group_questions[0].forEach((group_indi,arr_index)=>{ val.group_questions[0].forEach((group_indi,arr_index)=>{
@ -812,10 +866,10 @@ export class DynamicQuestionTemplateComponent implements OnInit {
}) })
} }
addOrRemoveControl(val,ques_control,question_index_after,options,paren_ques) { addOrRemoveControl(val,ques_control,question_index_after,options,paren_ques) {
console.log(val); // console.log(val);
console.log(ques_control); // console.log(ques_control);
console.log(question_index_after); // console.log(question_index_after);
console.log(paren_ques); // console.log(paren_ques);
if(options == 1){ if(options == 1){
let check_dup=ques_control.filter(control_key=>control_key.question_key == val.question_key) let check_dup=ques_control.filter(control_key=>control_key.question_key == val.question_key)
@ -1037,20 +1091,20 @@ export class DynamicQuestionTemplateComponent implements OnInit {
return updateMsg; return updateMsg;
} }
updateAllComplete(a,b){ updateAllComplete(a,b){
console.log(a) // console.log(a)
console.log(b.checked) // console.log(b.checked)
if(b.checked){ if(b.checked){
console.log( this.whole_json) //console.log( this.whole_json)
this.formGroupN.get(a).disable() this.formGroupN.get(a).disable()
this.parent_ques.disable =true this.parent_ques.disable =true
this.vr = true this.vr = true
}else{ }else{
console.log( this.whole_json) // console.log( this.whole_json)
this.formGroupN.get(a).enable() this.formGroupN.get(a).enable()
this.parent_ques.disable = false this.parent_ques.disable = false
this.vr = false this.vr = false
console.log(this.parent_ques.disable) // console.log(this.parent_ques.disable)
} }

View File

@ -56,4 +56,4 @@
</button> </button>
</div> </div>
</mat-dialog-actions> </mat-dialog-actions>
<!-- <notifier-container></notifier-container> --> <notifier-container></notifier-container>

View File

@ -54,7 +54,9 @@ export class FormComponent implements OnInit {
private awsService:AwsService,private loaderService:LoaderService) { private awsService:AwsService,private loaderService:LoaderService) {
this.role_id = localStorage.getItem('LenderRoleID') this.role_id = localStorage.getItem('LenderRoleID')
console.log(jsonData) console.log(jsonData)
this.questions_JSON = this.jsonData.Json['sections'][0]; this.questions_JSON = this.jsonData.Json['sections'][0];
console.log( this.questions_JSON)
this.quesService.formanswers = null
// this.questions_JSON = this.jsonData.Json['sections'][0]; // this.questions_JSON = this.jsonData.Json['sections'][0];
this.notifier = notifier; this.notifier = notifier;
} }
@ -226,8 +228,12 @@ export class FormComponent implements OnInit {
// } // }
} }
loadTemplate() { loadTemplate() {
this.commonFormGroup = new FormGroup({}) this.commonFormGroup = new FormGroup({})
this.questions_JSON = this.jsonData.Json['sections'][0]; this.questions_JSON = this.jsonData.Json['sections'][0];
console.log(this.questions_JSON) console.log(this.questions_JSON)
@ -499,7 +505,7 @@ export class FormComponent implements OnInit {
this._flyhi.saveForm(params).subscribe(result=>{ this._flyhi.saveForm(params).subscribe(result=>{
if(result['dataStatus']) { if(result['dataStatus']) {
this.loaderService.closeMatSpinnerDialog() this.loaderService.closeMatSpinnerDialog()
// this.notifier.notify("success","Saved Successfully"); this.notifier.notify("success","Saved Successfully");
setTimeout(()=>{ setTimeout(()=>{
this.dialogRef.close('refresh') this.dialogRef.close('refresh')
},1500) },1500)

View File

@ -107,19 +107,19 @@ loadCreditPDTemplate2(form_id,mapid,Formname,template_id):Observable<any> {
} }
loadTemplate(form_id,mapid,Formname) { loadTemplatelocal() {
console.log( Formname)
// return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/'+form_id+'.json').map(rr=>{ // return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/'+form_id+'.json').map(rr=>{
// return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/16.json').map(rr=>{ // return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/16.json').map(rr=>{
if( Formname == 'Business Information'){ // if( Formname == 'Business Information'){
return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/1.json').map(rr=>{ // return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/1.json').map(rr=>{
// return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/'+form_id+'.json').map(rr=>{ // // return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/LFMP/'+form_id+'.json').map(rr=>{
let returnValue ={dataStatus:true,status:200,records:{template:JSON.stringify(rr)}} // let returnValue ={dataStatus:true,status:200,records:{template:JSON.stringify(rr)}}
// this.raw_credit_pd_template= returnValue.records.template // // this.raw_credit_pd_template= returnValue.records.template
return returnValue // return returnValue
}) // })
}else{ // }else{
// return this._http.get<any[]>(this.apiUrl + "formWiseJSONTemplateV2?form_id="+form_id+"&map_id="+mapid+"").map(result=>{ // return this._http.get<any[]>(this.apiUrl + "formWiseJSONTemplateV2?form_id="+form_id+"&map_id="+mapid+"").map(result=>{
// console.log(result) // console.log(result)
// let apivalue ={dataStatus:true,status:200,records:{template:JSON.stringify(result)}} // let apivalue ={dataStatus:true,status:200,records:{template:JSON.stringify(result)}}
@ -127,13 +127,13 @@ loadTemplate(form_id,mapid,Formname) {
// return apivalue // return apivalue
// }) // })
//return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/all/'+form_id+'.json').map(rr=>{ //return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/all/'+form_id+'.json').map(rr=>{
return this._http.get('assets/data/SMC_CREDIT_TEMPLATES/DONE/6.json').map(rr=>{ return this._http.get('assets/data/flyhi.json').map(rr=>{
let returnValue ={dataStatus:true,status:200,records:{template:JSON.stringify(rr)}} let returnValue ={dataStatus:true,status:200,records:{template:JSON.stringify(rr)}}
// this.raw_credit_pd_template= returnValue.records.template // this.raw_credit_pd_template= returnValue.records.template
console.log("12345") console.log("12345")
return returnValue return returnValue
}) })
} // }
} }

View File

@ -105,7 +105,7 @@
<!--<h2><i class="fa fa-superpowers" aria-hidden="true"></i> <span> {{userDep}}({{fullName}})</span> <!--<h2><i class="fa fa-superpowers" aria-hidden="true"></i> <span> {{userDep}}({{fullName}})</span>
</h2>--> </h2>-->
<a (click)="menunav('HOME')"> <a (click)="menunav('HOME')">
<img [routerLink]="['/dashboard']" src="assets/images/PD_Genie_TM1.jpg" style="height: 35px;"> <strong> | </strong> <span> {{userDep}} </span> <img (click)="route()" src="assets/images/PD_Genie_TM1.jpg" style="height: 35px;"> <strong> | </strong> <span> {{userDep}} </span>
</a> </a>
</div> </div>
</div> </div>
@ -121,12 +121,14 @@
<div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" fxFlex="100"> <div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" fxFlex="100">
<div class="menu-links"> <div class="menu-links">
<span *ngFor="let menuitem of currentUser.short_name == 'MWISE' ? horizontalMenuItems.salesgetAll() : horizontalMenuItems.getAll() | roleMenuItems:'1'"> <span *ngFor="let menuitem of currentUser.short_name == 'MWISE' ? horizontalMenuItems.salesgetAll() : horizontalMenuItems.getAll() | roleMenuItems:'1'">
<button mat-icon-button matTooltip="{{ menuitem.name}}" matTooltipPosition="below" [routerLink]="['/'+menuitem.state]" *ngIf="menuitem.type === 'link'"> <button mat-icon-button matTooltip="{{ menuitem.name}}" matTooltipPosition="below" [routerLink]="['/'+menuitem.state]" *ngIf="menuitem.type === 'link' && role_id != '20'">
<mat-icon>{{ menuitem.icon }}</mat-icon> <mat-icon>{{ menuitem.icon }}</mat-icon>
<!--<span>{{ menuitem.name | translate }}</span>-->
</button> </button>
</span> </span>
<!-- <span *ngFor="let menuitem of horizontalMenuItems.getAll()"> <!-- <span *ngFor="let menuitem of horizontalMenuItems.getAll()">
<span *ngIf="menuitem.type === 'multi'"> <span *ngIf="menuitem.type === 'multi'">
<button [mat-menu-trigger-for]="multi" matTooltip="{{ menuitem.name}}" matTooltipPosition="below" mat-icon-button class="ml-xs" *ngIf="userRoleType=='10'"> <button [mat-menu-trigger-for]="multi" matTooltip="{{ menuitem.name}}" matTooltipPosition="below" mat-icon-button class="ml-xs" *ngIf="userRoleType=='10'">

View File

@ -55,12 +55,16 @@ export class AdminLayoutComponent implements OnInit, OnDestroy {
alertCount: any; alertCount: any;
userRoleType: any; userRoleType: any;
userDetails: any; userDetails: any;
role_id: any;
constructor(private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService,public aws:AwsService,public users:UserService,private _dashboardService: DashboardService) { constructor(private router: Router, public menuItems: MenuItems, public horizontalMenuItems : HorizontalMenuItems, public translate: TranslateService,public aws:AwsService,public users:UserService,private _dashboardService: DashboardService) {
const browserLang: string = translate.getBrowserLang(); const browserLang: string = translate.getBrowserLang();
this.role_id = localStorage.getItem('user_role_nav')
translate.use(browserLang.match(/en|fr/) ? browserLang : 'en'); translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');
this.users.getroles().subscribe(res=>{ this.users.getroles().subscribe(res=>{
console.log(res)
this.currentUser = res; this.currentUser = res;
this.userDetails = this.currentUser.records[0] this.userDetails = this.currentUser.records[0]
console.log( this.userDetails)
localStorage.setItem("user_details",JSON.stringify(this.userDetails)); localStorage.setItem("user_details",JSON.stringify(this.userDetails));
if(this.currentUser.dataStatus == true){ if(this.currentUser.dataStatus == true){
@ -315,4 +319,15 @@ export class AdminLayoutComponent implements OnInit, OnDestroy {
} }
}) })
} }
route(){
console.log(this.role_id, this.currentUser.user_role)
// user_role_nav
if(this.role_id == '20'){
this.router.navigate(['fly-hi/flyhi-list-pd']);
}else if(this.role_id == '19'){
this.router.navigate(['sales-pd-list/list-pd']);
}
}
} }

View File

@ -90,7 +90,14 @@
</ng-container> </ng-container>
{{formGroupN.value[parent_ques.question_key] | json}} {{formGroupN.value[parent_ques.question_key] | json}}
</div> </div>
<div class="toggle" fxLayout="row nowrap" *ngIf=" parent_ques.disable != true && parent_ques.type == '12'">
<mat-label>{{parent_ques.question}}</mat-label>&nbsp;&nbsp;
<mat-slide-toggle [formControlName]="parent_ques.question_key" [required]="parent_ques.required == true" color="primary"></mat-slide-toggle>
<ng-container *ngFor="let validation of parent_ques.validations" ngProjectAs="mat-error">
<mat-error align="end" *ngIf="formGroupN.get(parent_ques.question_key).hasError(validation.name.toLowerCase())">
{{validation.message}}</mat-error>
</ng-container>
</div>
<mat-form-field style="width: 100%" *ngIf="parent_ques.type == '4'"> <mat-form-field style="width: 100%" *ngIf="parent_ques.type == '4'">
<mat-label>{{parent_ques.question}}</mat-label> <mat-label>{{parent_ques.question}}</mat-label>
<mat-select multiple [formControlName]="parent_ques.question_key" <mat-select multiple [formControlName]="parent_ques.question_key"

View File

@ -88,3 +88,9 @@ mat-form-field {
white-space: normal; white-space: normal;
} }
} }
::ng-deep .mat-select-disabled .mat-select-value {
color:black;
}
::ng-deep .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after, .mat-input-element:disabled {
color: black;
}

View File

@ -43,11 +43,12 @@ export class DynamicQuestionTemplateComponent implements OnInit {
) )
} }
//let length=this.quesService.ans_length() //let length=this.quesService.ans_length()
console.log(this.json_answers)
} }
ngOnChanges() { ngOnChanges() {
//alert('ans'); //alert('ans');
console.log(this.json_answers)
this.parent_ques = this.currFormArrayObj this.parent_ques = this.currFormArrayObj
this.json_answers1=[{ this.json_answers1=[{

View File

@ -62,6 +62,7 @@ export class FormComponent implements OnInit {
this.image_doc_params={pdid:this.pdid,form_id:this.form_id,company_id:''} this.image_doc_params={pdid:this.pdid,form_id:this.form_id,company_id:''}
this.quesService.pd_all_details = this.pd_all_details this.quesService.pd_all_details = this.pd_all_details
console.log('image_doc_params',this.image_doc_params) console.log('image_doc_params',this.image_doc_params)
this.quesService.formanswers = null;
} }
ngOnInit() { ngOnInit() {
@ -134,7 +135,7 @@ export class FormComponent implements OnInit {
this.getSectionData() this.getSectionData()
} }
else{ else{
this.getExcelData(); // this.getExcelData();
} }
@ -147,7 +148,7 @@ else
this.getSectionData() this.getSectionData()
} }
else{ else{
this.getExcelData(); // this.getExcelData();
} }
} }
} }
@ -158,6 +159,7 @@ else
// console.log("d",this.pd_all_details.form_id,Number(this.pd_all_details.form_id)) // console.log("d",this.pd_all_details.form_id,Number(this.pd_all_details.form_id))
// this.pdTriggerService.loadTemplate(Number(this.pd_all_details.form_id)).subscribe(result=>{ // this.pdTriggerService.loadTemplate(Number(this.pd_all_details.form_id)).subscribe(result=>{
let params = {"fk_entity_id":this.pd_all_details.pdmaster_details.fk_lender_id,"fk_product_id":this.pd_all_details.pdmaster_details.fk_product_id,"pd_form_id":this.pd_all_details.form_id,"fk_pd_id":this.pd_all_details.pdmaster_details.pd_id} let params = {"fk_entity_id":this.pd_all_details.pdmaster_details.fk_lender_id,"fk_product_id":this.pd_all_details.pdmaster_details.fk_product_id,"pd_form_id":this.pd_all_details.form_id,"fk_pd_id":this.pd_all_details.pdmaster_details.pd_id}
console.log(params)
this.pdTriggerService.loadCreditPDTemplate(params).subscribe(result=>{ this.pdTriggerService.loadCreditPDTemplate(params).subscribe(result=>{
if(!environment.production){ if(!environment.production){
//result.dataStatus = false //result.dataStatus = false
@ -171,8 +173,9 @@ else
if (question_template.hasOwnProperty('template') && question_template.template) { if (question_template.hasOwnProperty('template') && question_template.template) {
question_template =JSON.parse(question_template.template); question_template =JSON.parse(question_template.template);
this.commonFormGroup = new FormGroup({}) this.commonFormGroup = new FormGroup({})
this.questions_JSON = []
this.questions_JSON = question_template; this.questions_JSON = question_template;
// this.quesService.formanswers = null;
// setTimeout(() => { // setTimeout(() => {
// this.covidAnswers = null // this.covidAnswers = null
// console.log("cleared") // console.log("cleared")
@ -192,7 +195,10 @@ else
if (question_template.hasOwnProperty('template') && question_template.template) { if (question_template.hasOwnProperty('template') && question_template.template) {
question_template =JSON.parse(question_template.template); question_template =JSON.parse(question_template.template);
this.commonFormGroup = new FormGroup({}) this.commonFormGroup = new FormGroup({})
this.questions_JSON = []
this.questions_JSON = question_template; this.questions_JSON = question_template;
// this.quesService.formanswers = null;
// this.getSectionData()
// console.log(this.questions_JSON); // console.log(this.questions_JSON);
// setTimeout(() => { // setTimeout(() => {
// this.covidAnswers = null // this.covidAnswers = null
@ -231,7 +237,7 @@ else
// setTimeout(()=>{ // setTimeout(()=>{
// this.commonFormGroup.patchValue(data) // this.commonFormGroup.patchValue(data)
// },1000) // },1000)
this.getExcelData(1) // this.getExcelData(1)
} }
}) })
} }

View File

@ -906,4 +906,15 @@ loadTemplate(form_id) {
) )
} }
getBase64ImageFromURL(url): Observable<any> {
return this._http.post(this.apiUrl + 'convertBase64', { "img_url":url })
.pipe(catchError(this.handleError('role', [])))
}
updatePDPhoto(values): Observable<any> {
values.fk_updatedby = this._aws.getlocale();
return this._http.post(this.apiUrl + 'updatePDPhoto', { "records":values })
.pipe(catchError(this.handleError('role', [])))
}
} }

View File

@ -65,7 +65,7 @@ export class ConstantsProvider {
lenUserPoolId: "ap-south-1_4kkhgsYo0", // Username lenUserPoolId: "ap-south-1_4kkhgsYo0", // Username
lenClientId: "57t9fv113b5eab5pra127bbgn0", // ClientId for mobile lenClientId: "57t9fv113b5eab5pra127bbgn0", // ClientId for mobile
} }
return (environment.production === true ? production : testing); return (environment.production === true && environment.typeofEnvironment === 1? production : testing);

View File

@ -12,13 +12,17 @@ import { SingleCaptureBtnComponent } from './ques-template/single-capture-btn/si
import { QuestionServiceService } from '../services/question-service.service'; import { QuestionServiceService } from '../services/question-service.service';
import { SharedModule } from 'app/shared/shared.module'; import { SharedModule } from 'app/shared/shared.module';
import { MaterialModule } from '../material_modules/material.module'; import { MaterialModule } from '../material_modules/material.module';
import { ImageEditComponent } from './ques-template/image-edit/image-edit.component';
import { AngularCropperjsModule } from 'angular-cropperjs';
//import { SharedModule } from '../../../Shared/shared.module'; //import { SharedModule } from '../../../Shared/shared.module';
@NgModule({ @NgModule({
declarations: [QuesTemplateComponent, CaptureBtnComponent, SingleCaptureBtnComponent], declarations: [QuesTemplateComponent, CaptureBtnComponent, SingleCaptureBtnComponent, ImageEditComponent],
imports: [MatButtonToggleModule, imports: [MatButtonToggleModule,
MatAutocompleteModule, MatAutocompleteModule,
MatCardModule, MatCardModule,
@ -53,8 +57,11 @@ import { MaterialModule } from '../material_modules/material.module';
MatStepperModule, MatStepperModule,
MatFormFieldModule, MatFormFieldModule,
NgxMatSelectSearchModule, NgxMatSelectSearchModule,
AngularCropperjsModule,
ReactiveFormsModule], ReactiveFormsModule],
exports: [QuesTemplateComponent], exports: [QuesTemplateComponent,CaptureBtnComponent, SingleCaptureBtnComponent,ImageEditComponent],
entryComponents: [ImageEditComponent],
providers:[QuestionServiceService] providers:[QuestionServiceService]
}) })
export class ComponentsModule {} export class ComponentsModule {}

View File

@ -14,20 +14,29 @@ export class CaptureBtnComponent implements OnInit {
@Output() singleDataEmitter = new EventEmitter @Output() singleDataEmitter = new EventEmitter
sales_pd_type: string; sales_pd_type: string;
role_id: string; role_id: string;
disable_capture: any;
constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService) { constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService) {
this.role_id = localStorage.getItem('user_role') this.role_id = localStorage.getItem('user_role')
this.sales_pd_type = localStorage.getItem('sales_pd_type') this.sales_pd_type = localStorage.getItem('sales_pd_type')
console.log(this.sales_pd_type) this.disable_capture = localStorage.getItem('disable_capture')
console.log(this.disable_capture,this.sales_pd_type)
} }
ngOnInit(): void { ngOnInit(): void {
console.log(this.addMoreBtn) console.log(this.addMoreBtn)
this.disable_capture = localStorage.getItem('disable_capture')
console.log(this.disable_capture,this.sales_pd_type)
} }
capturedImage(event){ capturedImage(event){
this.loaderService.showMatSpinnerDialog('Fetching Data...') this.loaderService.showMatSpinnerDialog('Fetching Data...')
console.log(event); console.log(event);
let imageData= event.target.files[0] let imageData= event.target.files[0]
console.log(imageData)
if(imageData == undefined){
this.loaderService.closeMatSpinnerDialog()
}else{
this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe( this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
result => { result => {
@ -38,8 +47,10 @@ export class CaptureBtnComponent implements OnInit {
}, },
error => { error => {
console.log('😢 Oh no!', error); console.log('😢 Oh no!', error);
this.loaderService.closeMatSpinnerDialog()
} }
); );
}
} }
capture(event){ capture(event){
@ -47,4 +58,7 @@ export class CaptureBtnComponent implements OnInit {
let element:HTMLElement = document.getElementById('input-file') as HTMLElement let element:HTMLElement = document.getElementById('input-file') as HTMLElement
element.click(); element.click();
} }
ngOnChanges(){
this.disable_capture = localStorage.getItem('disable_capture')
}
} }

View File

@ -0,0 +1,256 @@
<div >
<!-- <div class="row">
<div fxFlex="75" align="left" style="padding: 1% !important" [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}">
</div>
<div fxFlex="25" align="end" style="padding: 10px !important;" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}">
<button style="background-color: white;" [ngStyle]="{'color':role_id == '20' ? '#0d93a9' :'#f44336'}" mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close"
matTooltipPosition="right" mat-dialog-close>
<mat-icon>close</mat-icon>
</button>
</div>
</div> -->
<mat-toolbar class="toolbar" [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}">
<mat-toolbar-row>
<mat-icon>crop_original</mat-icon>
<span class="empty-little-spacer"></span>
<!-- <h2 mat-dialog-title >{{doc_data.document_title}}</h2> -->
<span class="empty-spacer"></span>
<!-- Buttons -->
<!-- <button mat-button mat-raised-button mat-icon-button><mat-icon>zoom_in</mat-icon></button>
<button mat-button mat-raised-button mat-icon-button><mat-icon>zoom_out</mat-icon></button> -->
<button mat-button class="toolbar-icon" (click)="zoom('positive')" class="hover-icon" matTooltip="Zoom In" matTooltipPosition="above"><mat-icon>zoom_in</mat-icon></button>
<button mat-button class="toolbar-icon"(click)="zoom('negative')" class="hover-icon" matTooltip="Zoom Out" matTooltipPosition="above"><mat-icon>zoom_out</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="rotate('left')" class="hover-icon" matTooltip="Rotate Left" matTooltipPosition="above"><mat-icon>rotate_left</mat-icon></button>
<button mat-button class="toolbar-icon"(click)="rotate('right')" class="hover-icon" matTooltip="Rotate Right" matTooltipPosition="above"><mat-icon>rotate_right</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="move(10, 0)" class="hover-icon" matTooltip="Move Left" matTooltipPosition="above"><mat-icon>arrow_back</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="move(-10, 0)"class="hover-icon" matTooltip="Move Right" matTooltipPosition="above"><mat-icon>arrow_forward</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="scale('x')" class="hover-icon" matTooltip="Move Down" matTooltipPosition="above"><mat-icon>arrow_downward</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="scale('y')" class="hover-icon" matTooltip="Move Up" matTooltipPosition="above"><mat-icon>arrow_upward</mat-icon></button>
<button mat-button class="toolbar-icon" (click)="clear()" class="hover-icon" matTooltip="clear" matTooltipPosition="above"><mat-icon>cached</mat-icon></button>
<!-- <button mat-button mat-raised-button mat-icon-button class="hover-icon" matTooltip="Click for Image focus " matTooltipPosition="above"><mat-icon>filter_center_focus</mat-icon></button> -->
<!-- <button mat-button mat-raised-button mat-icon-button class="hover-icon" matTooltip="Click for Image fit" matTooltipPosition="above">Fit to screen</button>-->
<!-- <button mat-button mat-raised-button mat-icon-button class="hover-icon" matTooltip="Click for Image ratio" matTooltipPosition="above">1:1</button> -->
<button mat-button class="toolbar-icon" mat-dialog-close class="hover-icon" matTooltip="Close" matTooltipPosition="right"><mat-icon>close</mat-icon></button>
</mat-toolbar-row>
</mat-toolbar>
<div class="row">
<div fxFlex="75" align="left" style="padding: 1% !important" >
<!-- <span>{{main_applicant}} {{lender_applicant_id ? '('+lender_applicant_id+')' : ''}}, {{customer_segment_abbr}} - {{subproduct_abbr}} </span><br> -->
<div *ngIf="showCropper && imageUrl">
<angular-cropper #angularCropper
[cropperOptions]="cropperConfig"
[imageUrl]="imageUrl"
(zoom)="zoomManual()"
(ready)="readyImage($event)"
(cropend)="cropendImage($event)">
</angular-cropper>
</div>
<br />
<div class="docs-buttons" >
<div class="btn-group" style=" padding-top: 24px;">
<button type="button" mat-raised-button color="warn" [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}" *ngIf="imageUrl" (click)="preImg()">
<span class="docs-tooltip" data-toggle="tooltip" title="">
Preview Image
</span>
</button>
</div>
<div style="display: none;">
<canvas #canvasEl width=400 height=400></canvas>
</div>
<div *ngIf="downloadLink" style=" padding-bottom: 24px;">
<img [src]="downloadLink" style="height: 188px"/>
</div>
</div>
</div>
<div fxFlex="25" align="end" style="padding: 10px !important;" >
<div class="col-xs-12 col-sm-3 crop-res">
<div class="card">
<div class="card-body">
<div *ngIf="imageUrls.length > 0">
<h5 *ngIf="showCropper == false">Please Select Image:</h5>
<h5 *ngIf="showCropper == true"> Selected Image:</h5>
<div>
<img *ngFor="let imgUrl of imageUrls; let i = index" [src]="imgUrl" class="thumb" (click)="selectImg(i)" />
</div>
</div>
<!-- <h5 class="card-title">Toolbar:</h5> -->
<div class="docs-buttons">
<!-- <div class="btn-group">
<button (click)="zoom('positive')" type="button" mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon"data-method="zoom" data-option="0.1" title="Zoom In">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.zoom(0.1)">
<span class="fa fa-search-plus"></span>
</span>
</button>
<button (click)="zoom('negative')" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon"data-method="zoom" data-option="-0.1" title="Zoom Out">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.zoom(-0.1)">
<span class="fa fa-search-minus"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="move(-10, 0)" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="move" data-option="-10" data-second-option="0" title="Move Left">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.move(-10, 0)">
<span class="fa fa-arrow-left"></span>
</span>
</button>
<button (click)="move(10, 0)" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="move" data-option="10" data-second-option="0" title="Move Right">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.move(10, 0)">
<span class="fa fa-arrow-right"></span>
</span>
</button>
<button (click)="move(0, -10)" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon"data-method="move" data-option="0" data-second-option="-10" title="Move Up">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.move(0, -10)">
<span class="fa fa-arrow-up"></span>
</span>
</button>
<button (click)="move(0, 10)" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="move" data-option="0" data-second-option="10" title="Move Down">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.move(0, 10)">
<span class="fa fa-arrow-down"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="rotate('left')" type="button" mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="rotate" data-option="-45" title="Rotate Left">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.rotate(-45)">
<span class="fa fa-rotate-left"></span>
</span>
</button>
<button (click)="rotate('right')" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="rotate" data-option="45" title="Rotate Right">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.rotate(45)">
<span class="fa fa-rotate-right"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="scale('x')" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon"data-method="scaleX" data-option="-1" title="Flip Horizontal">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.scaleX(-1)">
<span class="fa fa-arrows-h"></span>
</span>
</button>
<button (click)="scale('y')" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="scaleY" data-option="-1" title="Flip Vertical">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.scaleY(-1)">
<span class="fa fa-arrows-v"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="clear()" type="button" mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="clear" title="Clear">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.clear()">
<span class="fa fa-remove"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="disable()" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="disable" title="Disable">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.disable()">
<span class="fa fa-lock"></span>
</span>
</button>
<button (click)="enable()" type="button" mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="enable" title="Enable">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.enable()">
<span class="fa fa-unlock"></span>
</span>
</button>
</div> -->
<!-- <div class="btn-group">
<button (click)="reset()" type="button" mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="reset" title="Reset">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.reset()">
<span class="fa fa-refresh"></span>
</span>
</button>
<button (click)="destroy($event)" type="button"mat-mini-fab color="warn" aria-label="Example icon button with a filter list icon" data-method="destroy" title="Destroy">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="cropper.destroy()">
<span class="fa fa-power-off"></span>
</span>
</button>
</div> -->
<!-- <h5>Text:</h5>
<div class="btn-group">
<input type="text" class="form-control" aria-label="Text input with checkbox" [(ngModel)]="text">
</div>
-->
<div class="btn-group" style=" padding-top: 24px;">
<button type="button" mat-raised-button color="warn"*ngIf="imageUrl" [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}" (click)="saveImg()">
<span class="docs-tooltip" data-toggle="tooltip" title="">
Save
</span>
</button>
</div>
<!-- <div style="display: none;">
<canvas #canvasEl width=400 height=400></canvas>
</div>
<div *ngIf="downloadLink" style=" padding-bottom: 24px;">
<img [src]="downloadLink" />
</div> -->
</div><!-- /.docs-buttons -->
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-9" style=" padding-top: 25px;">
<!-- <h2>Pls choose an image file</h2>
<div class="btn-group">
<label class="btn btn-primary btn-upload" for="inputImage" title="Upload image file">
<input type="file" multiple name="photo" (change)="onFileSelected($event)" class="sr-only" id="inputImage" accept="image/*">
<span class="docs-tooltip" data-toggle="tooltip" title="" data-original-title="Import image with Blob URLs">
<span class="fa fa-upload"></span>
</span>
</label>
</div> -->
<div *ngIf="!showCropper && imageUrl" class="container-preloader">
<div class="dash uno"></div>
<div class="dash dos"></div>
<div class="dash tres"></div>
<div class="dash cuatro"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-9">
</div>
<div class="col-xs-12 col-sm-3 crop-res">
</div>
</div>
<div class="row" *ngIf="imageUrl" id="actions">
<div class="col-sm-12">
</div>
</div>
<div *ngIf="mergedRes" class="row">
<div class="col-sm-12">
<img [src]="mergedRes" />
</div>
</div>
</div>

View File

@ -0,0 +1,207 @@
.crop-res img {
max-width: 100%;
}
.btn-group, .btn-group-vertical {
position: relative;
display: -ms-inline-flexbox;
display: inline-flex;
vertical-align: middle;
}
.docs-buttons > .btn, .docs-buttons > .btn-group, .docs-buttons > .form-control {
margin-bottom: .5rem;
margin-right: .25rem;
}
/*** animation preloader ***/
.container-preloader {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
}
.dash {
margin: 0 15px;
width: 35px;
height: 15px;
border-radius: 8px;
background: #FF2CBD;
box-shadow: 0 0 10px 0 #FECDFF;
}
.uno {
margin-right: -18px;
transform-origin: center left;
animation: spin 3s linear infinite;
}
.dos {
transform-origin: center right;
animation: spin2 3s linear infinite;
animation-delay: .2s;
}
.tres {
transform-origin: center right;
animation: spin3 3s linear infinite;
animation-delay: .3s;
}
.cuatro {
transform-origin: center right;
animation: spin4 3s linear infinite;
animation-delay: .4s;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
25% {
transform: rotate(360deg);
}
30% {
transform: rotate(370deg);
}
35% {
transform: rotate(360deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes spin2 {
0% {
transform: rotate(0deg);
}
20% {
transform: rotate(0deg);
}
30% {
transform: rotate(-180deg);
}
35% {
transform: rotate(-190deg);
}
40% {
transform: rotate(-180deg);
}
78% {
transform: rotate(-180deg);
}
95% {
transform: rotate(-360deg);
}
98% {
transform: rotate(-370deg);
}
100% {
transform: rotate(-360deg);
}
}
@keyframes spin3 {
0% {
transform: rotate(0deg);
}
27% {
transform: rotate(0deg);
}
40% {
transform: rotate(180deg);
}
45% {
transform: rotate(190deg);
}
50% {
transform: rotate(180deg);
}
62% {
transform: rotate(180deg);
}
75% {
transform: rotate(360deg);
}
80% {
transform: rotate(370deg);
}
85% {
transform: rotate(360deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes spin4 {
0% {
transform: rotate(0deg);
}
38% {
transform: rotate(0deg);
}
60% {
transform: rotate(-360deg);
}
65% {
transform: rotate(-370deg);
}
75% {
transform: rotate(-360deg);
}
100% {
transform: rotate(-360deg);
}
}
.thumb {
border-radius: 4px;
height: 100px;
object-fit: contain;
width: 100px;
border: solid 1px #cccccc;
padding: 2px;
margin: 3px;
cursor: pointer;
}
.toolbar {
color: #fff !important;
// background-color: #e00201 !important;
}
.toolbar-icon {
padding: 0 14px;
color: #fff !important;
}
.empty-spacer {
flex: 1 1 auto;
}
.empty-little-spacer {
flex: 0.01 0 auto;
}
.card-container {
text-align: center;
}
.img-container {
width: 640px;
height: 480px;
float: left;
}
.img-preview {
width: 200px;
height: 200px;
float: left;
margin-left: 10px;
}
.cropper-container cropper-bg{
width: 779px !important;
height: 393px !important;
}

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ImageEditComponent } from './image-edit.component';
describe('ImageEditComponent', () => {
let component: ImageEditComponent;
let fixture: ComponentFixture<ImageEditComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ImageEditComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ImageEditComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,202 @@
// import { Component, Inject, OnInit } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
import { DomSanitizer } from '@angular/platform-browser';
import { NotifierService } from 'angular-notifier';
import { PdTrigerService } from 'app/personal-discussion/pd-service/pd-triger.service';
import {AfterViewInit, Component, ElementRef, ViewChild,OnInit, Inject} from '@angular/core';
import {CropperComponent} from 'angular-cropperjs';
import mergeImages from 'merge-images';
import { SalesPdService } from '../../../services/sales-pd.service';
declare var $: any;
@Component({
selector: 'app-image-edit',
templateUrl: './image-edit.component.html',
styleUrls: ['./image-edit.component.scss']
})
export class ImageEditComponent implements AfterViewInit {
imageUrl: any;
imageUrls = [];
cropperRes: string;
showCropper: boolean =false
savedImg: boolean =false;
resizedBase64: any;
cropperConfig: object = {
movable: true,
scalable: true,
zoomable: true,
viewMode: 2,
checkCrossOrigin: true
};
text = '';
downloadLink = '';
cropperResults = [];
mergedRes: any;
@ViewChild('angularCropper') public angularCropper: CropperComponent;
@ViewChild("canvasEl") canvasEl: ElementRef;
private context: CanvasRenderingContext2D;
role_id: string;
constructor(private SalesPdService:SalesPdService,@Inject(MAT_DIALOG_DATA) public data,private dialogRef: MatDialogRef<ImageEditComponent> ) {
console.log(this.data)
this.role_id = localStorage.getItem('LenderRoleID')
this.imageUrls.push(this.data.img);
// this.onFileSelected(this.data)
console.log(this.imageUrls)
// setTimeout(() => {
// this.showCropper = true;
// this.refreshCrop(this.imageUrls[1]);
// }, 3000);
}
ngAfterViewInit() {
this.context = (this.canvasEl
.nativeElement as HTMLCanvasElement).getContext("2d");
this.draw('');
}
private draw(src: string) {
this.context.clearRect(0, 0, (this.canvasEl.nativeElement as HTMLCanvasElement).width, (this.canvasEl.nativeElement as HTMLCanvasElement).height);
const img = new Image();
img.src = src;
img.onload = () => {
const newW = img.width > 700 && img.height > 700 ? img.width / 3 : img.width;
const newH = img.height > 700 && img.width > 700 ? img.height / 3 : img.height;
(this.canvasEl.nativeElement as HTMLCanvasElement).width = newW;
(this.canvasEl.nativeElement as HTMLCanvasElement).height = newH;
this.context.font = "30px Arial";
this.context.textBaseline = "middle";
this.context.textAlign = "center";
this.context.drawImage(img, 0, 0, newW, newH);
this.context.fillText(this.text, newW / 2, newH / 2);
this.downloadLink = this.canvasEl.nativeElement.toDataURL("image/jpg");
this.cropperResults.push(this.downloadLink);
console.log( this.downloadLink )
}
}
onFileSelected(event) {
console.log(event)
const that = this;
if (event.target.files && event.target.files[0]) {
for (let i = 0; i < event.target.files.length; i++) {
const reader = new FileReader();
that.showCropper = false;
reader.onload = (eventCurr: ProgressEvent) => {
that.imageUrls.push((<FileReader>eventCurr.target).result);
console.log(that.imageUrls)
};
reader.readAsDataURL(event.target.files[i]);
}
}
}
selectImg(i: number) {
this.refreshCrop(this.imageUrls[i]);
}
refreshCrop(img) {
this.imageUrl = img;
this.showCropper = true;
console.log(this.imageUrls)
}
cropendImage(event) {
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
readyImage(event) {
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
rotate(turn) {
turn = turn === 'left' ? -45 : 45;
this.angularCropper.cropper.rotate(turn);
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
destroy(event) {
this.angularCropper.cropper.destroy();
}
zoomManual() {
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
zoom(status) {
status = status === 'positive' ? 0.1 : -0.1;
this.angularCropper.cropper.zoom(status);
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
move(offsetX, offsetY) {
this.angularCropper.cropper.move(offsetX, offsetY);
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
scale(offset) {
if (offset === 'x') {
this.angularCropper.cropper.scaleX(-1);
} else {
this.angularCropper.cropper.scaleY(-1);
}
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
clear() {
this.angularCropper.cropper.clear();
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
disable() {
this.angularCropper.cropper.disable();
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
enable() {
this.angularCropper.cropper.enable();
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
reset() {
this.angularCropper.cropper.reset();
this.cropperRes = this.angularCropper.cropper.getCroppedCanvas().toDataURL('image/jpeg');
}
saveImg() {
this.savedImg = true;
this.draw(this.cropperRes);
console.log(this.cropperRes)
this.save()
}
preImg() {
this.savedImg = true;
this.draw(this.cropperRes);
console.log(this.cropperRes)
}
mergeAll() {
mergeImages(this.cropperResults)
.then(b64 => this.mergedRes = b64);
}
save(){
let params={"fk_sales_pd_id":this.data.sales_pd_id,"img":this.cropperRes,"img_name":this.data.question_key,"location": this.data.location,'img_id':this.data.img_id }
let form_structure = this.data.json
console.log(params,form_structure)
this.SalesPdService.saveSalesPDImage(params,form_structure).subscribe(apiresult=>{
console.log(apiresult)
if(apiresult['status'] == 200){
console.log(apiresult)
this.dialogRef.close(1);
}
})
}
}

View File

@ -74,16 +74,60 @@
<div fxLayout="row"> <div fxLayout="row">
<div fxLayout ="column" style="padding:none;align-self:center;text-align:center"> <div fxLayout ="column" style="padding:none;align-self:center;text-align:center">
<div > <div >
<img *ngIf="parent_ques.get('answer_value').value != ''" [src]="parent_ques.get('answer_value').value" imageViewer class="doc-image-bucket"><br/> <div class="top">
<p *ngIf="parent_ques.get('answer_value').value == ''">Image is not captured.</p> <!-- Thumbnail-->
<label ><strong>{{parent_ques.get('question').value}}</strong></label> <div class="thumbnail" >
<div class="date" style="margin-bottom: -35px; text-align: end;" *ngIf="parent_ques.get('answer_value').value != '' && role_id == '20'">
<!-- <button mat-raised-button mat-icon-button mat-mini-fab
class="date mr-1 mb-1 hover-icon" type="button"
matTooltip="edit" (click)="imageCrop(doc)"
matTooltipPosition="right" >
<mat-icon>edit</mat-icon>
</button> -->
<button mat-raised-button mat-icon-button mat-mini-fab [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}" style=" width: 21px;
height: 20px;"
type="button"
matTooltip="Edit" (click)="imageCrop(parent_ques.get('answer_value').value,parent_ques)"
matTooltipPosition="right">
<mat-icon style="font-size: 14px; line-height: 0px;">edit</mat-icon>
</button>
</div>
<img class="image-class" *ngIf="parent_ques.get('answer_value').value != ''" [src]="parent_ques.get('answer_value').value" imageViewer >
</div>
</div><br/>
<div class="dummy-img" *ngIf="parent_ques.get('answer_value').value == ''">
<p
style="justify-content: center;align-content: center;text-align: center;align-items: center; margin-top: 10%;">
<span style="font-size: 15px;">
Image is not Captured.
</span><br />
<span style="font-size: 15px;">
<mat-icon>camera</mat-icon>
</span>
</p>
</div>
<!-- <p *ngIf="parent_ques.get('answer_value').value == ''">Image is not captured.</p> -->
<label ><strong>{{parent_ques.get('question').value}}</strong>
<!-- <button mat-raised-button mat-icon-button mat-mini-fab
class="date1 mr-1 mb-1 hover-icon" type="button"
matTooltip="edit" (click)="imageCrop(parent_ques.get('answer_value').value)"
matTooltipPosition="right">
<mat-icon>edit</mat-icon>
</button> -->
</label>
<!-- <input *ngIf="image.Name =='' && image.option != 'dummy'" width="20px" ion-input type="text" placeholder="Document Name" (blur)="changeName($event.target.value,i,image.image)"> --> <!-- <input *ngIf="image.Name =='' && image.option != 'dummy'" width="20px" ion-input type="text" placeholder="Document Name" (blur)="changeName($event.target.value,i,image.image)"> -->
<!-- <button *ngIf="image.option != 'dummy'" ion-button clear color="optblue" (click)="removeImg(i)"><mat-icon style="font-size:22px" name="md-trash"></mat-icon></button> --> <!-- <button *ngIf="image.option != 'dummy'" ion-button clear color="optblue" (click)="removeImg(i)"><mat-icon style="font-size:22px" name="md-trash"></mat-icon></button> -->
</div> </div>
<div fxLayout="row" style="justify-content: center"> <div fxLayout="row" style="justify-content: center">
<div fxLayout="column"> <div fxLayout="column" >
<span> <span >
<app-single-capture-btn class="file-btn" (singleDataEmitter)="captureImg($event,p_i,parent_ques)"></app-single-capture-btn> <app-single-capture-btn class="file-btn" (singleDataEmitter)="captureImg($event,p_i,parent_ques)"></app-single-capture-btn>
</span> </span>
<!-- <button mat-raised clear color="optblue" [disabled]="sales_pd_type == '2'" (click)="captureImg(p_i,parent_ques)"><mat-icon style="font-size: 30px" name="md-camera"></mat-icon></button> --> <!-- <button mat-raised clear color="optblue" [disabled]="sales_pd_type == '2'" (click)="captureImg(p_i,parent_ques)"><mat-icon style="font-size: 30px" name="md-camera"></mat-icon></button> -->
</div> </div>
@ -335,7 +379,7 @@
<hr class="hr"> <hr class="hr">
<mat-card-header> <mat-card-header>
<mat-card-title> <mat-card-title>
<h5> {{parent_ques.get('group_title').value}}</h5> <h5> {{parent_ques.get('group_title').value}} </h5>
</mat-card-title> </mat-card-title>
</mat-card-header> </mat-card-header>
@ -350,13 +394,45 @@
<!-- <div *ngIf="single_ques.get('type').value == '10'"> --> <!-- <div *ngIf="single_ques.get('type').value == '10'"> -->
<!-- {{parent_ques.value.questions_group.length}} --> <!-- {{parent_ques.value.questions_group.length}} -->
<p style="margin-left: 45px;font-weight:bold;" *ngIf="parent_ques.value.questions_group.length == 1 && <div class="dummy-img" *ngIf="parent_ques.value.questions_group.length == 1 &&
group_ques.value.questions[0].answer_value == ''">Image is not captured.</p> group_ques.value.questions[0].answer_value == ''">
<p
style="justify-content: center;align-content: center;text-align: center;align-items: center; margin-top: 10%;">
<span style="font-size: 15px;">
Image is not Captured.
</span> <br />
<span style="font-size: 15px;">
Add More images.
</span> <br />
<span style="font-size: 15px;">
<mat-icon>camera</mat-icon>
</span>
</p>
</div>
<!-- <p style="margin-left: 45px;font-weight:bold;" *ngIf="parent_ques.value.questions_group.length == 1 &&
group_ques.value.questions[0].answer_value == ''">Image is not captured.</p> -->
<div fxLayout="column" style="align-self: center;text-align: center;padding: 0" *ngFor="let single_ques of group_ques.controls.questions['controls'];let s_i=index;let s_l=last" <div fxLayout="column" style="align-self: center;text-align: center;padding: 0" *ngFor="let single_ques of group_ques.controls.questions['controls'];let s_i=index;let s_l=last"
[formGroupName]="s_i"> [formGroupName]="s_i">
<div style="width: 100%;justify-content: center;text-align: center;align-content: center;margin:2%;" *ngIf="single_ques.get('answer_value').value != ''"> <div style="width: 100%;justify-content: center;text-align: center;align-content: center;margin:2%;padding-right: 20px;" *ngIf="single_ques.get('answer_value').value != ''">
<div fxLayout="row" style="width: 100%"> <div fxLayout="row" style="width: 100%">
<img [src]="single_ques.get('answer_value').value" imageViewer class="doc-image-bucket" ><br/> <div class="top">
<!-- Thumbnail-->
<div class="thumbnail">
<div class="date" style="margin-bottom: -35px; text-align: end;" *ngIf="role_id == '20'">
<button mat-raised-button mat-icon-button mat-mini-fab [ngStyle.xs]="{'font-size':'16px','font-weight':'bold'}" [ngStyle]="{'background-color':role_id == '20' ? '#0d93a9' :'#f44336'}" style=" width: 21px;
height: 20px;"
class="date1" type="button"
matTooltip="Edit" (click)="imageCrop(single_ques.get('answer_value').value,single_ques,g_i)"
matTooltipPosition="right">
<mat-icon style="font-size: 14px; line-height: 0px;">edit</mat-icon>
</button>
</div>
<img [src]="single_ques.get('answer_value').value" imageViewer class="image-class" >
<br/>
</div>
</div>
</div> </div>
<div fxLayout="row" style="width: 130px;margin-bottom: 5px;text-align: left"> <div fxLayout="row" style="width: 130px;margin-bottom: 5px;text-align: left">
<div > <div >
@ -386,12 +462,12 @@
</div> --> </div> -->
<!-- {{single_ques.value | json}} --> <!-- {{single_ques.value | json}} -->
<div class="add-more-image" *ngIf="g_l"> <div class="add-more-image" *ngIf="g_l ">
<!-- <button mat-raised-button color="warn" style="min-width: 65px !important;" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)"> <!-- <button mat-raised-button color="warn" style="min-width: 65px !important;" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)">
<mat-icon>camera_alt</mat-icon>+ <mat-icon>camera_alt</mat-icon>+
</button> --> </button> -->
<span (click)="getIndex(g_i,parent_ques,group_ques.get('questions').value,single_ques)"> <span (click)="getIndex(g_i,parent_ques,group_ques.get('questions').value,single_ques)">
<app-capture-btn class="file-btn" (imageDataEmitter)="addImage($event,g_i,parent_ques,group_ques.get('questions').value,single_ques)" ></app-capture-btn> <app-capture-btn class="file-btn" (imageDataEmitter)="addImage($event,g_i,parent_ques,group_ques.get('questions').value,single_ques)" ></app-capture-btn>
</span> </span>
<!-- <button class="ml-1 mr-1 hover-icon" mat-raised-button clear style="color: #f3432c" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)"><mat-icon style="font-size:25px">camera_alt</mat-icon>+</button> --> <!-- <button class="ml-1 mr-1 hover-icon" mat-raised-button clear style="color: #f3432c" [disabled]="sales_pd_type == '2'" (click)="addData(g_i,parent_ques,group_ques.get('questions').value,$event,'camera',single_ques)"><mat-icon style="font-size:25px">camera_alt</mat-icon>+</button> -->
</div> </div>

View File

@ -72,3 +72,52 @@
::ng-deep .mat-option-text.mat-option-text { ::ng-deep .mat-option-text.mat-option-text {
white-space: normal; white-space: normal;
} }
.top .thumbnail{
//height: 400px;
position: relative;
}
.top .thumbnail .date {
// margin-right: 13px;
position: absolute;
right: -10px;
top: 4px;
}
.top .thumbnail .date1 {
// margin-right: 13px;
position: absolute;
right: -10px;
top: 50px;
}
.thumbnail{
max-width: 200px;
width: auto;
// height: 200px;
margin-top: 25px;
padding: 1.4%;
}
.dummy-img {
width: 125px;
height: 120px;
}
.dummy-img {
width: 200px;
height: 170px;
border: 3px dashed rgba(0, 0, 0, 0.2);
border-radius: 7px;
background: #eeee;
color: gray;
}
.image-class {
width: 200px;
height: 170px;
}

View File

@ -1,4 +1,4 @@
import { Component, Input, EventEmitter, Output,ViewChild, ElementRef } from '@angular/core'; import { Component, Input, EventEmitter, Output,ViewChild, ElementRef, OnDestroy, HostListener } from '@angular/core';
import { FormGroup, FormArray, FormBuilder, FormControl,FormControlName } from '@angular/forms'; import { FormGroup, FormArray, FormBuilder, FormControl,FormControlName } from '@angular/forms';
//import { QuesServiceProvider } from '../../providers/ques-service/ques-service'; //import { QuesServiceProvider } from '../../providers/ques-service/ques-service';
//import { SalesPdService } from '../../providers/sales-pd/sales-pd'; //import { SalesPdService } from '../../providers/sales-pd/sales-pd';
@ -26,6 +26,7 @@ import { SectionListComponent } from 'app/sales-pd/section-list/section-list.com
import { CameraService } from 'app/sales-pd/providers/camera/camera.service'; import { CameraService } from 'app/sales-pd/providers/camera/camera.service';
import { ApiServiceService } from 'app/lender-credit-pd/services/apiService/api-service.service'; import { ApiServiceService } from 'app/lender-credit-pd/services/apiService/api-service.service';
import { ImageEditComponent } from './image-edit/image-edit.component';
// const originFormControlNameNgOnChanges = FormControlName.prototype.ngOnChanges; // const originFormControlNameNgOnChanges = FormControlName.prototype.ngOnChanges;
// FormControlName.prototype.ngOnChanges = function () { // FormControlName.prototype.ngOnChanges = function () {
// const result = originFormControlNameNgOnChanges.apply(this, arguments); // const result = originFormControlNameNgOnChanges.apply(this, arguments);
@ -41,11 +42,13 @@ import { ApiServiceService } from 'app/lender-credit-pd/services/apiService/api-
*/ */
@Component({ @Component({
selector: 'ques-template', selector: 'ques-template',
templateUrl: 'ques-template.html' templateUrl: 'ques-template.html',
styleUrls: ['ques-template.scss']
}) })
export class QuesTemplateComponent { export class QuesTemplateComponent implements OnDestroy {
photoStructure = photoJSONStructure photoStructure = photoJSONStructure
text: string; text: string;
@Output() login = new EventEmitter<string>();
private notifier: NotifierService; private notifier: NotifierService;
// notifier: NotifierService; // notifier: NotifierService;
@Input() questions_JSON:any; @Input() questions_JSON:any;
@ -84,7 +87,18 @@ export class QuesTemplateComponent {
pdstatus: string; pdstatus: string;
local_city1: any; local_city1: any;
local_pincode1: any; local_pincode1: any;
role_id: any;
disable_capture:any=false;
// @HostListener('window:unload', ['$event'])
// unloadHandler(event) {
// console.log('window:unload');
// this.Destroy()
constructor( private cameraService: CameraService,public dialogRef: MatDialogRef<SectionListComponent>,private route: ActivatedRoute,private router: Router,private dialog:MatDialog,private _fb:FormBuilder,private questionService:QuestionServiceService,private SalesPdService:SalesPdService,notifier: NotifierService,private loaderService:LoaderService) { constructor( private cameraService: CameraService,public dialogRef: MatDialogRef<SectionListComponent>,private route: ActivatedRoute,private router: Router,private dialog:MatDialog,private _fb:FormBuilder,private questionService:QuestionServiceService,private SalesPdService:SalesPdService,notifier: NotifierService,private loaderService:LoaderService) {
this.role_id = localStorage.getItem('LenderRoleID')
console.log('Hello QuesTemplateComponent Component'); console.log('Hello QuesTemplateComponent Component');
this.text = 'Hello World'; this.text = 'Hello World';
this.notifier = notifier; this.notifier = notifier;
@ -95,6 +109,10 @@ export class QuesTemplateComponent {
console.log(this.roleID) console.log(this.roleID)
} }
@HostListener("window:beforeunload", ["$event"]) unloadHandler(event: Event) {
console.log("Processing beforeunload...", );
this.Destroy();
}
ngOnChanges(){ ngOnChanges(){
//alert('abi'); //alert('abi');
@ -180,7 +198,11 @@ this.pdstatus = status.status
console.log(this.pdstatus) console.log(this.pdstatus)
// alert('pass'); // alert('pass');
console.log(sales_pd_id) console.log(sales_pd_id)
// this.loaderService.showMatSpinnerDialog('Fetching Data...') if(sales_pd_id == null){
sales_pd_id = status.sales_pd_id
}
this.loaderService.showMatSpinnerDialog('Fetching Data...')
// this.checkGroupandPatchValues() // this.checkGroupandPatchValues()
// this.loadingProvider.pdloader("Fetching Data...") // this.loadingProvider.pdloader("Fetching Data...")
let params={sales_pd_id:sales_pd_id,section_id:this.local_ques_JSON.section_id} let params={sales_pd_id:sales_pd_id,section_id:this.local_ques_JSON.section_id}
@ -190,27 +212,34 @@ console.log(this.pdstatus)
console.log(response); console.log(response);
if(response['dataStatus']){ if(response['dataStatus']){
// alert('3rd'); // alert('3rd');
console.log('response1');
this.disable_capture = false
localStorage.setItem('disable_capture','false')
this.raw_data_Section=response['records'][0] this.raw_data_Section=response['records'][0]
this.original_result_data=response['records'][0].section_data this.original_result_data=response['records'][0].section_data
this.original_result_data=JSON.parse(this.original_result_data); this.original_result_data=JSON.parse(this.original_result_data);
console.log(this.original_result_data) console.log(this.original_result_data)
console.log(response['records'][0].section_data) console.log(JSON.parse(response['records'][0].section_data))
// this.original_result_data.questions=this.original_result_data.questions.filter(val=>val.question_key == 'selfie_with_person_met') // this.original_result_data.questions=this.original_result_data.questions.filter(val=>val.question_key == 'selfie_with_person_met')
this.checkGroupandPatchValues() this.checkGroupandPatchValues()
this.loaderService.closeMatSpinnerDialog() this.loaderService.closeMatSpinnerDialog()
} }
else{ else{
this.disable_capture = false
// alert('4th'); // alert('4th');
this.sendAutomaticallyToApi() this.sendAutomaticallyToApi()
// FOR DISPLAYING THE CUSTOMER CAPTURED IMAGE (STRUCTURED DYNAMICALLY CREATED IN FRONTEND) (***TELE PD ONLY***) // FOR DISPLAYING THE CUSTOMER CAPTURED IMAGE (STRUCTURED DYNAMICALLY CREATED IN FRONTEND) (***TELE PD ONLY***)
console.log(sales_pd_id , this.sales_pd_type , this.sales_pd_type == '2', this.local_ques_JSON.section_id ,this. sales_pd_id.includes('local'))
if(sales_pd_id && this.sales_pd_type && this.sales_pd_type == '2' && this.local_ques_JSON.section_id == '9' && !this. sales_pd_id.includes('local')) { if(sales_pd_id && this.sales_pd_type && this.sales_pd_type == '2' && this.local_ques_JSON.section_id == '9' && !this. sales_pd_id.includes('local')) {
let sales_rand_string = localStorage.getItem('sales_rand_string') let sales_rand_string = localStorage.getItem('sales_rand_string')
console.log('response2');
// this.SalesPdService.getData_fromLocal('sales_rand_string').then((sales_rand_string)=>{ // this.SalesPdService.getData_fromLocal('sales_rand_string').then((sales_rand_string)=>{
let params = {"rand_string":sales_rand_string} let params = {"rand_string":sales_rand_string}
this.SalesPdService.getSalesPDImgDataCusLink(params).subscribe(result=>{ this.SalesPdService.getSalesPDImgDataCusLink(params).subscribe(result=>{
if(result['dataStatus']){ if(result['dataStatus']){
this.disable_capture = true
this.updateCustomerImages(result['records']) this.updateCustomerImages(result['records'])
this.checkGroupandPatchValues() this.checkGroupandPatchValues()
} }
@ -221,7 +250,28 @@ console.log(this.pdstatus)
// }) // })
} }
else{ else{
console.log('response3');
// alert('5th'); // alert('5th');
const role = JSON.parse(localStorage.getItem("user_role"));
if (role == "20" && this.local_ques_JSON.section_id == '9' ) {
let sales_rand_string = localStorage.getItem('sales_rand_string')
// this.SalesPdService.getData_fromLocal('sales_rand_string').then((sales_rand_string)=>{
let params = {"rand_string":sales_rand_string}
this.SalesPdService.getSalesPDImgDataCusLink(params).subscribe(result=>{
if(result['dataStatus']){
//this.disable_capture = true
// localStorage.setItem('disable_capture','true')
console.log(result['records']);
this.original_result_data = []
this.updateCustomerImages(result['records'])
this.checkGroupandPatchValues()
}
this.loaderService.closeMatSpinnerDialog()
},err=>{
this.loaderService.closeMatSpinnerDialog()
})
}
this.loaderService.closeMatSpinnerDialog() this.loaderService.closeMatSpinnerDialog()
} }
} }
@ -292,7 +342,11 @@ console.log(this.pdstatus)
current_control_obj = createPhotoStructure[findRootIndex] current_control_obj = createPhotoStructure[findRootIndex]
console.log(createPhotoStructure[findRootIndex],createPhotoStructure[findRootIndex].is_repeatable) console.log(createPhotoStructure[findRootIndex],createPhotoStructure[findRootIndex].is_repeatable)
if(img_obj.is_multiple != '1'){ if(img_obj.is_multiple != '1'){
// location = element.image_location
// imgid = element.image_id
current_control_obj.answer_value = img_obj.img_url current_control_obj.answer_value = img_obj.img_url
current_control_obj.image_location = img_obj.location
current_control_obj.image_id = img_obj.img_id
} }
else { else {
if(img_obj.hasOwnProperty('img_data') && img_obj.img_data.length > 0) { if(img_obj.hasOwnProperty('img_data') && img_obj.img_data.length > 0) {
@ -321,6 +375,8 @@ console.log(this.pdstatus)
temp_obj.question = img_obj.img_name temp_obj.question = img_obj.img_name
temp_obj.question_key = img_obj.img_key temp_obj.question_key = img_obj.img_key
temp_obj.answer_value = multi_obj.img_url temp_obj.answer_value = multi_obj.img_url
temp_obj.image_location = multi_obj.location
temp_obj.image_id = multi_obj.img_id
// console.log(temp_obj); // console.log(temp_obj);
// debugger; // debugger;
// current_control_obj.questions_group.unshift({questions:[temp_obj]}) // current_control_obj.questions_group.unshift({questions:[temp_obj]})
@ -340,7 +396,7 @@ console.log(this.pdstatus)
} }
} }
proceedonChangeProperty(local_value_obj?){ proceedonChangeProperty(local_value_obj?){
console.log("On Change Property",this.quesAnsForm.value.questions); console.log("On Change Property",this.quesAnsForm.value.questions);
this.quesAnsForm.controls.questions['controls'].forEach((val,p_i)=>{ this.quesAnsForm.controls.questions['controls'].forEach((val,p_i)=>{
@ -408,6 +464,7 @@ console.log(this.pdstatus)
// JSON QUESTION CHANGE FOR GROUP // JSON QUESTION CHANGE FOR GROUP
// setTimeout(()=>{ // setTimeout(()=>{
// console.log(JSON.parse(this.original_result_data.section_data))
let form_c=single_ques let form_c=single_ques
let form_control=this.quesAnsForm.value.questions[p_i].questions_group[g_i].questions[s_i] let form_control=this.quesAnsForm.value.questions[p_i].questions_group[g_i].questions[s_i]
let local__g_data=this.original_result_data.questions[p_i].questions_group[g_i].questions let local__g_data=this.original_result_data.questions[p_i].questions_group[g_i].questions
@ -417,6 +474,7 @@ console.log(this.pdstatus)
} }
} }
// }) // })
//---- END OF JSON QUESTION CHANGE---- //---- END OF JSON QUESTION CHANGE----
}) })
@ -428,7 +486,8 @@ console.log(this.pdstatus)
checkGroupandPatchValues(){ checkGroupandPatchValues(){
console.log('371') console.log('371')
let modified=this.original_result_data let modified=this.original_result_data
console.log(modified) console.log( this.questions_JSON ,modified)
// this.questions_JSON = modified.questions
modified.questions.forEach((parent_ques,p_i)=>{ modified.questions.forEach((parent_ques,p_i)=>{
// FOR ADDING THE GROUP QUES TO DISPLAY WITHOUT CONSIDERING INDEX 0 // FOR ADDING THE GROUP QUES TO DISPLAY WITHOUT CONSIDERING INDEX 0
if(parent_ques.is_repeatable == '1'){ if(parent_ques.is_repeatable == '1'){
@ -452,12 +511,16 @@ console.log(this.pdstatus)
} }
} }
}) })
setTimeout(() => {
this.proceedonChangeProperty(modified) this.proceedonChangeProperty(modified)
this.quesAnsForm.get('questions').patchValue(this.original_result_data.questions); this.quesAnsForm.get('questions').patchValue(this.original_result_data.questions);
console.log( this.quesAnsForm) console.log( this.quesAnsForm)
}, 500);
} }
setStep(index: number) { setStep(index: number) {
this.step = index; this.step = index;
@ -506,6 +569,9 @@ this.proceedonChangeProperty(modified)
this.tmp_control = this.questionService this.tmp_control = this.questionService
this.current_index = index; this.current_index = index;
console.log( this.current_index)
console.log( this.current_index)
} }
addImage(event, index, parent_index, data,single_ques1) { addImage(event, index, parent_index, data,single_ques1) {
this.loaderService.showMatSpinnerDialog('Fetching Data...') this.loaderService.showMatSpinnerDialog('Fetching Data...')
@ -530,7 +596,13 @@ this.proceedonChangeProperty(modified)
console.log(single_ques) console.log(single_ques)
console.log(event, index); console.log(event, index);
this.imageData = this.quesAnsForm.value.questions this.imageData = this.quesAnsForm.value.questions
this.imageData.forEach(element => {
if(element.question_key == this.tmp[0].value.question_key){
index= this.imageData.indexOf(element)
}
});
console.log('index', index,this.current_index);
console.log(this.quesAnsForm.value.questions) console.log(this.quesAnsForm.value.questions)
// console.log(this.questions_JSON.questions) // console.log(this.questions_JSON.questions)
console.log(this.imageData); console.log(this.imageData);
@ -549,40 +621,48 @@ this.proceedonChangeProperty(modified)
console.log(geoCords); console.log(geoCords);
console.log(this.imageData); console.log(this.imageData);
console.log(this.current_index); console.log(this.current_index);
this.cameraService.addWatermarks(reader.result, geoCoordinates).then(watermarked_img => { this.imageData = this.quesAnsForm.value.questions
if (this.current_index != 'last') { let tmp_index;
if (this.imageData[this.current_index].is_multiple == 1) { this.imageData.forEach(element => {
console.log('multi'); if(element.question_key == this.tmp[0].value.question_key){
let img_param = {img_url: watermarked_img, is_base64: true, link: geoCoordinates}; tmp_index= this.imageData.indexOf(element)
this.imageData[this.current_index].img_data.push(img_param); }
console.log(this.imageData)
// this.sendImage(this.imageData, this.imageData[this.current_index].img_data.length - 1);
} else {
this.imageData[this.current_index].img_url = watermarked_img;
this.imageData[this.current_index].is_base64 = true;
this.imageData[this.current_index].link = geoCoordinates;
console.log(this.imageData)
// this.sendImage(this.imageData);
}
} else {
this.getImageName().then(result => {
console.log(result);
this.imageData.push( {
img_key: 'common_image',
img_name:this.tmp[0].value.group_title,
img_url: watermarked_img,
fk_form_id: '',
is_base64: true,
link: geoCoordinates
}); });
// let el = document.getElementById('dummy-img-more'); this.cameraService.addWatermarks(reader.result, geoCoordinates).then(watermarked_img => {
// el.scrollIntoView(); // if (this.current_index != 'last') {
setTimeout(() => { // if (this.imageData[this.current_index].is_multiple == 1) {
this.dummyImgMoreRef.nativeElement.scrollIntoView({behavior: 'smooth', block: 'end'}); // console.log('multi');
}, 1000); // let img_param = {img_url: watermarked_img, is_base64: true, link: geoCoordinates};
// this.sendImage(this.imageData); // this.imageData[this.current_index].img_data.push(img_param);
}); // console.log(this.imageData)
} // // this.sendImage(this.imageData, this.imageData[this.current_index].img_data.length - 1);
// } else {
// this.imageData[this.current_index].img_url = watermarked_img;
// this.imageData[this.current_index].is_base64 = true;
// this.imageData[this.current_index].link = geoCoordinates;
// console.log(this.imageData)
// // this.sendImage(this.imageData);
// }
// } else {
// this.getImageName().then(result => {
// console.log(result);
// this.imageData.push( {
// img_key: 'common_image',
// img_name:this.tmp[0].value.group_title,
// img_url: watermarked_img,
// fk_form_id: '',
// is_base64: true,
// link: geoCoordinates
// });
// // let el = document.getElementById('dummy-img-more');
// // el.scrollIntoView();
// setTimeout(() => {
// this.dummyImgMoreRef.nativeElement.scrollIntoView({behavior: 'smooth', block: 'end'});
// }, 1000);
// // this.sendImage(this.imageData);
// });
// }
console.log(watermarked_img); console.log(watermarked_img);
console.log(single_ques.controls) console.log(single_ques.controls)
console.log(single_ques.value.question) console.log(single_ques.value.question)
@ -651,7 +731,8 @@ this.proceedonChangeProperty(modified)
parent_index parent_index
control.push(this._fb.group({ 'questions': this._fb.array([]) })) control.push(this._fb.group({ 'questions': this._fb.array([]) }))
let sub_childControl: any = control.controls[this.current_index + 1].get('questions') as FormArray console.log(control)
let sub_childControl: any = control.controls[this.current_index+1].get('questions') as FormArray
console.log(sub_childControl) console.log(sub_childControl)
console.log(data) console.log(data)
@ -699,7 +780,7 @@ this.proceedonChangeProperty(modified)
} else { } else {
geoCoordinates = null; geoCoordinates = null;
} }
console.log(geoCords); console.log(geoCords,reader.result);
console.log(this.imageData); console.log(this.imageData);
console.log(this.current_index); console.log(this.current_index);
this.current_index = parent_index; this.current_index = parent_index;
@ -746,7 +827,7 @@ this.proceedonChangeProperty(modified)
this.geoCoordinates = localStorage.getItem('current_coordinates') this.geoCoordinates = localStorage.getItem('current_coordinates')
console.log(this.geoCoordinates) console.log(this.geoCoordinates)
//SENDING SINGLE IMAGE TO API WITH PRIMARY KEY //SENDING SINGLE IMAGE TO API WITH PRIMARY KEY
let params={"fk_sales_pd_id":"","img":watermarked_img,"img_name":parent_control.value.question_key,"location": geoCoordinates} let params={"fk_sales_pd_id":"","img":watermarked_img,"img_name":parent_control.value.question_key,"location": geoCoordinates ,"img_id":null}
let storage_param=this.questions_JSON let storage_param=this.questions_JSON
const form_structure=this.questions_JSON const form_structure=this.questions_JSON
form_structure.questions=this.quesAnsForm.getRawValue().questions form_structure.questions=this.quesAnsForm.getRawValue().questions
@ -765,7 +846,7 @@ this.proceedonChangeProperty(modified)
this.emittedFormGroup = this.quesAnsForm.getRawValue() this.emittedFormGroup = this.quesAnsForm.getRawValue()
this.imageUploadCheck.emit(this.emittedFormGroup); this.imageUploadCheck.emit(this.emittedFormGroup);
console.log(params,form_structure)
this.SalesPdService.saveSalesPDImage(params,form_structure).subscribe(apiresult=>{ this.SalesPdService.saveSalesPDImage(params,form_structure).subscribe(apiresult=>{
console.log(apiresult) console.log(apiresult)
@ -1603,6 +1684,7 @@ this.proceedonChangeProperty(modified)
// return invalid; // return invalid;
} }
onSubmit(flag){ onSubmit(flag){
console.log(this.quesAnsForm.getRawValue())
// this.loaderService.showMatSpinnerDialog('Please wait...') // this.loaderService.showMatSpinnerDialog('Please wait...')
//1-Submit 0-Draft //1-Submit 0-Draft
@ -1744,7 +1826,14 @@ this.proceedonChangeProperty(modified)
// alert('lastsave'); // alert('lastsave');
console.log('lastsave'); console.log('lastsave');
console.log(params); console.log(params);
if(params.section_id == 9 || this.local_ques_JSON.section_id == 9){
params.questions = this.key_set(params.questions)
}
console.log(params);
console.log('1158',this.local_ques_JSON.section_id) console.log('1158',this.local_ques_JSON.section_id)
setTimeout(() => {
this.SalesPdService.saveSalesPDSection(params).subscribe(response=>{ this.SalesPdService.saveSalesPDSection(params).subscribe(response=>{
if(this.local_ques_JSON.section_id != 9){ if(this.local_ques_JSON.section_id != 9){
if(response.dataStatus){ if(response.dataStatus){
@ -1765,6 +1854,7 @@ this.proceedonChangeProperty(modified)
} }
} }
},err=>this.loaderService.closeMatSpinnerDialog()) },err=>this.loaderService.closeMatSpinnerDialog())
}, 1000);
// this.loaderService.closeMatSpinnerDialog() // this.loaderService.closeMatSpinnerDialog()
} }
sendDatatoApi(section_data?){ sendDatatoApi(section_data?){
@ -1778,8 +1868,8 @@ this.proceedonChangeProperty(modified)
// alert('b'); // alert('b');
const dialogRef = this.dialog.open(AlertDialogComponent, { const dialogRef = this.dialog.open(AlertDialogComponent, {
width: '500px', width: '500px',
data: {buttons:[{name:"Complete",visible:true,id:'Complete'},{name:'Cancel',visible:'true',id:'cancel'}],title:'Complete PD', data: {buttons:[{name:"Complete",visible:true,id:'Complete'},{name:'Cancel',visible:'true',id:'cancel'}],title:'Complete Verification',
msg:'You are completing this PD, once completed you will not be able to make changes'} msg:'You are completing this Verification, once completed you will not be able to make changes'}
}); });
dialogRef.afterClosed().subscribe(data => { dialogRef.afterClosed().subscribe(data => {
@ -1989,6 +2079,45 @@ this.proceedonChangeProperty(modified)
this.sendSectiontoApi(sectionApi_param) this.sendSectiontoApi(sectionApi_param)
} }
} }
Destroy(){
// console.clear()
console.log("dirty check",this.quesAnsForm.dirty)
if(this.local_ques_JSON.section_id == 9 && this.emittedFormGroup != null){
// FOR SENDING THE IMAGE SECTION (SECTION ID 9) JSON Structure
let form_structure=this.quesAnsForm.getRawValue().questions
form_structure.forEach((parent_ques,p_index, p_object)=>{
if(parent_ques.hasOwnProperty('is_repeatable') && parent_ques.is_repeatable != '1'){
if(parent_ques.answer_value != '' && parent_ques.answer_value != null){
//parent_ques.answer_value = 'SAVED'
if(parent_ques.is_loader == false && parent_ques.is_saved == false){
p_object.splice(p_index,1)
}
}
}
else{
parent_ques.questions_group.forEach((group_ques,g_index,g_object)=>{
group_ques.questions.forEach((single_ques,s_index, s_object)=>{
if(single_ques.answer_value != '' && single_ques.answer_value != null){
// single_ques.answer_value = 'SAVED'
if(single_ques.is_loader == false && single_ques.is_saved == false){
// single_ques.is_saved = ''
// single_ques.is_loader = ''
// single_ques.is_image_status=false
g_object.splice(g_index,1)
// delete parent_ques.questions_group[g_index]
}
}
})
})
}
})
let sectionApi_param=this.questions_JSON
sectionApi_param.questions=form_structure
sectionApi_param.is_complete=1
this.sendSectiontoApi(sectionApi_param)
}
}
imageReupload(single_ques){ imageReupload(single_ques){
let storage_param=this.questions_JSON let storage_param=this.questions_JSON
@ -2061,4 +2190,89 @@ this.proceedonChangeProperty(modified)
} }
}); });
} }
imageCrop(pic,question,index) {
let modified=this.original_result_data
console.log(modified,index)
console.log(pic,question)
let key = question.get('question_key').value
let location ;
let imgid ;
console.log(key,location)
modified.questions.forEach(element => {
if(element.question_key == key){
if(element.is_repeatable == null){
location = element.image_location
imgid = element.image_id
}else{
console.log( element.questions_group)
location = element.questions_group[index].questions[0].image_location
imgid = element.questions_group[index].questions[0].image_id
// element.questions_group.forEach(e => {
//location = e.questions[index].image_location
// });
}
}
});
console.log(key,location)
// let arr = { 'pic_name':pic_name,'pic':pic,'from_id':this.form_id}
//pic.pdid = this.pdid;
const imageRef = this.dialog.open(ImageEditComponent, {
// const imageRef = this.dialog.open(CropToolsComponent, {
data: {'json':this.questions_JSON,img:pic,'sales_pd_id':this.sales_pd_id,'question_key':key,'location':location,'img_id':imgid},
maxWidth: '100vw',
maxHeight: '100vh',
height: '200%',
width: '100%',
});
imageRef.afterClosed()
.subscribe(dataresult => {
if (dataresult == 1) {
this.notifier.notify("success","Image Saved Successfully");
this.emitter.emit('1');
this.SalesPdService.nav_close.next(1);
//this.getSalesPDSectionFromApi(modified.sales_pd_id)
// this.router.navigate(['../../fly-hi/sectionlist'], {relativeTo: this.route});
}
});
}
key_set(param){
let data =param
if(data instanceof Array){
data.forEach(element => {
if(element.hasOwnProperty('answer_value') ){
console.log(element)
if(element.answer_value != ''){
element.answer_value = 'saved'
}
}else{
if( element.questions_group instanceof Array){
element.questions_group.forEach(e => {
e.questions.forEach(c => {
if(c.hasOwnProperty('answer_value') ){
console.log(c)
if(c.answer_value != ''){
c.answer_value = 'saved'
}
}
});
});
}
}
});
return data
}
}
} }

View File

@ -1,6 +1,8 @@
import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core'; import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
import { Ng2ImgMaxService } from 'ng2-img-max'; import { Ng2ImgMaxService } from 'ng2-img-max';
import { LoaderService } from 'app/shared/loaderService/loader.service'; import { LoaderService } from 'app/shared/loaderService/loader.service';
import { MatDialog } from '@angular/material';
import { ImageEditComponent } from '../image-edit/image-edit.component';
@Component({ @Component({
selector: 'app-single-capture-btn', selector: 'app-single-capture-btn',
@ -15,31 +17,63 @@ export class SingleCaptureBtnComponent implements OnInit {
@Output() singleDataEmitter = new EventEmitter @Output() singleDataEmitter = new EventEmitter
sales_pd_type: string; sales_pd_type: string;
role_id: string; role_id: string;
disable_capture:any;
constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService) { constructor(private ng2ImgMax:Ng2ImgMaxService,private loaderService:LoaderService,private dialog: MatDialog) {
this.role_id = localStorage.getItem('user_role') this.role_id = localStorage.getItem('user_role')
this.sales_pd_type = localStorage.getItem('sales_pd_type') this.sales_pd_type = localStorage.getItem('sales_pd_type')
console.log(this.sales_pd_type) this.disable_capture = localStorage.getItem('disable_capture')
console.log(this.disable_capture,this.sales_pd_type)
} }
ngOnInit(): void { ngOnInit(): void {
console.log(this.addMoreBtn) console.log(this.addMoreBtn)
this.disable_capture = localStorage.getItem('disable_capture')
console.log(this.disable_capture,this.sales_pd_type)
} }
singlecapturedImage(event){ singlecapturedImage(event){
this.loaderService.showMatSpinnerDialog('Fetching Data...') this.loaderService.showMatSpinnerDialog('Fetching Data...')
console.log(event); console.log(event);
let imageData= event.target.files[0] let imageData= event.target.files[0]
// const dialogRef = this.dialog.open(ImageEditComponent, {
// data: { 'data': event},
// // position: { right: '0'},
// disableClose: true,
// // height: '80%',
// minWidth: '80%',
// maxWidth: '80%',
// });
// dialogRef.afterClosed()
// .subscribe(dataresult => {
// console.log(dataresult)
// // if(dataresult == 1){
// // this.getApiData()
// // }
if(imageData == undefined){
this.loaderService.closeMatSpinnerDialog()
}else{
// });
this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe( this.ng2ImgMax.resizeImage(imageData, 450, 650).subscribe(
result => { result => {
console.log(result);
this.singleDataEmitter.emit(result) this.singleDataEmitter.emit(result)
this.loaderService.closeMatSpinnerDialog() this.loaderService.closeMatSpinnerDialog()
}, },
error => { error => {
console.log('😢 Oh no!', error); console.log('😢 Oh no!', error);
this.loaderService.closeMatSpinnerDialog()
} }
); );
}
} }
singlecapture(event){ singlecapture(event){
@ -47,6 +81,9 @@ export class SingleCaptureBtnComponent implements OnInit {
let element:HTMLElement = document.getElementById('input-files') as HTMLElement let element:HTMLElement = document.getElementById('input-files') as HTMLElement
element.click(); element.click();
} }
ngOnChanges(){
this.disable_capture = localStorage.getItem('disable_capture')
}
} }

View File

@ -11,7 +11,7 @@
</div> </div>
<!-- <form [formGroup]="docsCollectedForm"> --> <!-- <form [formGroup]="docsCollectedForm"> -->
<div style="padding: 24px !important;"> <div style="padding: 24px !important;">
<ques-template (emitter)="navigate($event)" [questions_JSON]="question_data" (imageUploadCheck)="setGroupControl($event)"></ques-template> <ques-template (emitter)="navigate($event)" [questions_JSON]="question_data" (imageUploadCheck)="setGroupControl($event)"></ques-template>
</div> </div>
<!-- </form> --> <!-- </form> -->

View File

@ -46,6 +46,14 @@ export class HomePage{
// @Inject(MAT_DIALOG_DATA)public pd_all_details: any ){ // @Inject(MAT_DIALOG_DATA)public pd_all_details: any ){
constructor(public dialogRef: MatDialogRef<SectionListComponent>,private dialog:MatDialog,notifier: NotifierService,private route: ActivatedRoute, private router: Router,private salesPDService:SalesPdService){ constructor(public dialogRef: MatDialogRef<SectionListComponent>,private dialog:MatDialog,notifier: NotifierService,private route: ActivatedRoute, private router: Router,private salesPDService:SalesPdService){
this.getProducts() this.getProducts()
this.salesPDService.nav_close_observable$.subscribe((res) => {
console.log('nav list 3', res);
if(res == 1){
this.loadPdViewCompoent()
}
});
} }
getProducts(){ getProducts(){
let users:any=localStorage.getItem('user_details') let users:any=localStorage.getItem('user_details')
@ -188,6 +196,7 @@ export class Section1 {
} }
}) })
} }
@ -702,7 +711,7 @@ export class Section9 {
role_id: any; role_id: any;
//network_status: ConnectionStatus //network_status: ConnectionStatus
constructor(public dialogRef: MatDialogRef<SectionListComponent>,notifier: NotifierService,private route: ActivatedRoute,private router: Router,private dialog: MatDialog,private MatDialogModule:MatDialogModule,@Inject(MAT_DIALOG_DATA) public data: any) { constructor(public dialogRef: MatDialogRef<SectionListComponent>,notifier: NotifierService,private route: ActivatedRoute,private router: Router,private dialog: MatDialog,private MatDialogModule:MatDialogModule,@Inject(MAT_DIALOG_DATA) public data: any,private salesPDService:SalesPdService) {
this.role_id = localStorage.getItem('user_role') this.role_id = localStorage.getItem('user_role')
// alert('section9') // alert('section9')
console.log('data',data) console.log('data',data)
@ -710,6 +719,16 @@ export class Section9 {
// this.route.snapshot.params['section9']; // this.route.snapshot.params['section9'];
this.section_local= data.section_id this.section_local= data.section_id
this.salesPDService.nav_close_observable$.subscribe((res) => {
console.log('nav list 3', res);
if(res == 1){
this.salesPDService.nav_close.next(0);
this.loadPdViewCompoent()
}
});
// if(this.navParams.get('section_id')){ // if(this.navParams.get('section_id')){
// this.section_local=this.navParams.get('section_id') // this.section_local=this.navParams.get('section_id')
// } // }
@ -772,6 +791,7 @@ export class Section9 {
console.log("Leaving on ionViewCanLeave"); console.log("Leaving on ionViewCanLeave");
} }
setGroupControl(event){ setGroupControl(event){
console.log(event)
this.formGroupValue=event this.formGroupValue=event
} }
checkImageUploadingStatus(sec_value) { checkImageUploadingStatus(sec_value) {

View File

@ -17,7 +17,9 @@ export class ReGenerateReportComponent implements OnInit {
title:any; title:any;
question:any; question:any;
geolocation:FormControl = new FormControl('',Validators.compose([Validators.required])) geolocation:FormControl = new FormControl('',Validators.compose([Validators.required]))
constructor(private loaderService:LoaderService,notifier: NotifierService,private SalesPDService:SalesPdService,private dialogRef: MatDialogRef<ReGenerateReportComponent>,@Inject(MAT_DIALOG_DATA) public data: any) { this.notifier = notifier; } roleID: string;
constructor(private loaderService:LoaderService,notifier: NotifierService,private SalesPDService:SalesPdService,private dialogRef: MatDialogRef<ReGenerateReportComponent>,@Inject(MAT_DIALOG_DATA) public data: any) { this.notifier = notifier;
this.roleID = localStorage.getItem('user_role'); }
ngOnInit() { ngOnInit() {
this.option=this.data.option; this.option=this.data.option;
@ -42,7 +44,7 @@ export class ReGenerateReportComponent implements OnInit {
this.loaderService.showMatSpinnerDialog('Please wait...') this.loaderService.showMatSpinnerDialog('Please wait...')
if(option=='report') if(option=='report')
{ {
this.SalesPDService.generatesalereport(pdid) this.SalesPDService.generatesalereport(pdid,this.roleID)
.subscribe( .subscribe(
data => { data => {
if (data.status == 200) { if (data.status == 200) {

View File

@ -58,7 +58,7 @@
<!--End Mobile View Code--> <!--End Mobile View Code-->
<!--Start Web View Code--> <!--Start Web View Code-->
<div fxLayout="row wrap" *ngFor="let details of salesPdData"> <!-- <div fxLayout="row wrap" *ngFor="let details of salesPdData">
<div class="cell" fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="6" fxFlex.lg="6" fxFlex.xl="9" style="justify-content:flex-end"> <div class="cell" fxFlex.xs="10" fxFlex.sm="10" fxFlex.md="6" fxFlex.lg="6" fxFlex.xl="9" style="justify-content:flex-end">
<small mat-line>{{details.sales_pd_id}}</small> <small mat-line>{{details.sales_pd_id}}</small>
</div> </div>
@ -161,12 +161,12 @@
<!-- <mat-cell class="cell" fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="10" style="justify-content: flex-start"> --> <!-- <mat-cell class="cell" fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="10" style="justify-content: flex-start"> -->
<!-- </mat-cell> --> <!-- </mat-cell> -->
</div> <!-- </div>
<mat-divider></mat-divider> <mat-divider></mat-divider>
</div> </div> -->
<!--End Web View Code--> <!--End Web View Code-->
</div> </div>
<!-- <mat-table [dataSource]="dataSourceTab4" matSort *ngIf="salesPdData.length > 0" > <mat-table [dataSource]="dataSourceTab4" matSort *ngIf="salesPdData.length > 0" >
<ng-container matColumnDef="SalesPdId"> <ng-container matColumnDef="SalesPdId">
<mat-cell class="cell" *matCellDef="let details;" fxFlex.xs="7" fxFlex.sm="7" fxFlex.md="7" fxFlex.lg="7" fxFlex.xl="10"> <mat-cell class="cell" *matCellDef="let details;" fxFlex.xs="7" fxFlex.sm="7" fxFlex.md="7" fxFlex.lg="7" fxFlex.xl="10">
@ -207,7 +207,7 @@
</mat-cell> </mat-cell>
</ng-container> </ng-container>
<ng-container matColumnDef="status"> <ng-container matColumnDef="status">
<mat-cell fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="18" class="cell" *matCellDef="let details;" style="justify-content: flex-start;;text-align: center;font-weight: bold" fxLayoutAlign="start"> <mat-cell fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="18" class="cell" *matCellDef="let details;" style="justify-content: flex-start;;text-align: center;" fxLayoutAlign="start">
<span *ngIf="!details.status" mat-line> <span *ngIf="!details.status" mat-line>
<small>--</small> <small>--</small>
</span> </span>
@ -222,19 +222,67 @@
</mat-cell> </mat-cell>
</ng-container> </ng-container>
<ng-container matColumnDef="Action"> <ng-container matColumnDef="Action">
<mat-cell class="cell" *matCellDef="let details;" style="justify-content: flex-end;padding: 0 !important" fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="18"> <mat-cell class="cell" *matCellDef="let details;" style="justify-content: flex-end;padding: 0 !important" fxFlex.xs="10" fxFlex.sm="15" fxFlex.md="15" fxFlex.lg="18">
<button style="float: right" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'" <!-- <button style="float: right" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="above" color="primary" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon>file_download</mat-icon></button> matTooltipPosition="above" color="primary" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon>file_download</mat-icon></button>
<button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" color="primary" (click)="editForm(details)" <button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" color="primary" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="above"> matTooltip="View" matTooltipPosition="above">
<mat-icon>visibility</mat-icon> <mat-icon>visibility</mat-icon>
</button> </button> -->
<div fxFlex="row">
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<button style="float: right" mat-button mat-icon-button class="hover-icon" type="button" matTooltip="PDF Download" [disabled]="details.status != 'COMPLETED'"
matTooltipPosition="top" color="primary" (click)="salesPDpdf(details.sales_pd_id)"><mat-icon>file_download</mat-icon></button>
</div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<div *ngIf="roleID == 30">
<button *ngIf="details.status == 'COMPLETED'" mat-button mat-icon-button class="hover-icon" type="button" color="primary" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="top" style="color:rgba(0, 0, 0, 0.26) !important"><mat-icon>visibility</mat-icon></button>
<button *ngIf="details.status == 'STARTED'" mat-button mat-icon-button class=" hover-icon" type="button" color="primary" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="top" ><mat-icon>visibility</mat-icon></button>
</div>
<div *ngIf="roleID != 30">
<button [disabled]="details.status === 'COMPLETED'" mat-button mat-icon-button class="hover-icon" type="button" color="primary" (click)="editForm(details)"
matTooltip="View" matTooltipPosition="top"><mat-icon>visibility</mat-icon></button>
</div>
</div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<button mat-button mat-icon-button (click)="newPortal()" type="button" matTooltip="link" matTooltipPosition="above" color="primary"><mat-icon>link</mat-icon></button>
</div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<button [disabled]="details.status !== 'COMPLETED'" mat-button mat-icon-button class=" hover-icon" type="button" color="primary" (click)="uploadDatatoCET(details.sales_pd_id)"
matTooltip="Upload Data To CET" matTooltipPosition="above" ><mat-icon>file_upload</mat-icon></button>
</div>
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20.66" fxFlex.lg="20.66" fxFlex.xl="20.66" class="cell center">
<button *ngIf="roleID == 30" mat-button mat-icon-button class="hover-icon" type="button" matTooltip="ReGenerate"
matTooltipPosition="above" color="primary" [matMenuTriggerFor]="menu1"><mat-icon>more_vert</mat-icon></button>
<mat-menu #menu1="matMenu">
<button mat-menu-item (click)="regeneratereport(details.sales_pd_id,'report')">
<mat-icon>autorenew</mat-icon>
<span>Re-Generate Report</span>
</button>
<button mat-menu-item (click)="regeneratereport(details.sales_pd_id,'location')">
<mat-icon>location_on</mat-icon>
<span>Re-Generate Location</span>
</button>
<button mat-menu-item (click)="regeneratereport(details.sales_pd_id,'mail')">
<mat-icon>email</mat-icon>
<span>Resent Mail</span>
</button>
</mat-menu>
</div>
</div>
</mat-cell> </mat-cell>
</ng-container> </ng-container>
<mat-row style="align-items: normal !important;" *matRowDef="let row; columns: displayedColumns;"> <mat-row style="align-items: normal !important;" *matRowDef="let row; columns: displayedColumns;">
</mat-row> </mat-row>
</mat-table> --> </mat-table>
</mat-card-content> </mat-card-content>

View File

@ -117,5 +117,13 @@ p.note {
font-size: 80%; font-size: 80%;
} }
} }
mat-table{
// overflow: hidden;
// zoom: 90%;
}
::ng-deep mat-tab-body .mat-tab-body-content {
height: 100%;
overflow: hidden !important;
}

View File

@ -15,7 +15,9 @@
</button>&nbsp;&nbsp;</span> </button>&nbsp;&nbsp;</span>
<button *ngIf="customer_link != '' && sales_pd_type == '2'" mat-raised-button mat-icon-button class="hover-icon" type="button" matTooltip="Copy Link" matTooltipPosition="above" (click)="copyToClipBoard(customer_link_with_text, 'Customer Link is copied')"><mat-icon>file_copy</mat-icon></button>&nbsp;&nbsp; <button *ngIf="customer_link != '' && sales_pd_type == '2' || flyHiUserId.user_role == '20'"[ngStyle]="{'color':flyHiUserId.user_role == '20' ? '#0d93a9' :'#f44336'}" mat-raised-button mat-icon-button class="hover-icon" type="button" matTooltip="Copy Link" matTooltipPosition="above" (click)="copyToClipBoard(customer_link_with_text, 'Customer Link is copied')"><mat-icon>file_copy</mat-icon></button>&nbsp;&nbsp;
<!-- <button *ngIf="customer_link != '' && sales_pd_type == '2'" mat-raised-button mat-icon-button class="hover-icon" type="button" matTooltip="Send Link vai SMS" matTooltipPosition="above" (click)="shareViaSMS()" ><mat-icon>textsms</mat-icon> <!-- <button *ngIf="customer_link != '' && sales_pd_type == '2'" mat-raised-button mat-icon-button class="hover-icon" type="button" matTooltip="Send Link vai SMS" matTooltipPosition="above" (click)="shareViaSMS()" ><mat-icon>textsms</mat-icon>
<ion-label >Send Link via SMS</ion-label> <ion-label >Send Link via SMS</ion-label>

View File

@ -46,6 +46,7 @@ export class SectionListComponent implements OnInit {
if(this.flyHiUserId.user_role == '20'){ if(this.flyHiUserId.user_role == '20'){
this.rand_string = localStorage.getItem('sales_rand_string') this.rand_string = localStorage.getItem('sales_rand_string')
this.sales_pd_type = localStorage.getItem('sales_pd_type') this.sales_pd_type = localStorage.getItem('sales_pd_type')
console.log( this.sales_pd_type)
this.sales_pd_id_PRIMARYKEY = localStorage.getItem('sales_pd_id_PRIMARYKEY') this.sales_pd_id_PRIMARYKEY = localStorage.getItem('sales_pd_id_PRIMARYKEY')
} }
@ -64,6 +65,7 @@ export class SectionListComponent implements OnInit {
// this.sales_pd_type = this.route.snapshot.params['rdmstr']; // this.sales_pd_type = this.route.snapshot.params['rdmstr'];
this.notifier = notifier; this.notifier = notifier;
this.getTemplate() this.getTemplate()
} }
ngOnInit() { ngOnInit() {
@ -349,7 +351,19 @@ export class SectionListComponent implements OnInit {
OnSelectDirectForms(section_id) { OnSelectDirectForms(section_id) {
console.log('339') console.log('339',this.raw_data)
// this.SalesPDService.loadTemplatelocal().subscribe(result=>{
// let res:any = result.records
// console.log( res.template)
// if (res.hasOwnProperty('template') && res.template) {
// console.log( res)
// let res2 =JSON.parse(res.template);
// console.log( res2)
// let ww = res2.records.template
// console.log( ww)
// this.raw_data = ww
let componen_name:any = FormComponent let componen_name:any = FormComponent
// if(details.is_business_form == 1) { // if(details.is_business_form == 1) {
// componen_name = FormGroupComponent // componen_name = FormGroupComponent
@ -388,7 +402,8 @@ export class SectionListComponent implements OnInit {
} }
}); });
// }
// })
} }
getTemplate(){ getTemplate(){
@ -567,6 +582,7 @@ copyToClipBoard(message,user_msg?) {
// load pd view component // load pd view component
loadPdViewCompoent() { loadPdViewCompoent() {
console.log('works')
let user_role = localStorage.getItem('user_role') let user_role = localStorage.getItem('user_role')
if(user_role != '20'){ if(user_role != '20'){
this.router.navigate(['../../../list-pd'], {relativeTo: this.route}); this.router.navigate(['../../../list-pd'], {relativeTo: this.route});
@ -635,4 +651,6 @@ onClickVideoChat() {
}); });
} }
} }

View File

@ -4,9 +4,13 @@ import { SectionListRoutingModule } from './section-list-routing.module';
import { SectionListComponent } from './section-list.component'; import { SectionListComponent } from './section-list.component';
import { SharedModule } from 'app/shared/shared.module'; import { SharedModule } from 'app/shared/shared.module';
import { MaterialModule } from '../material_modules/material.module'; import { MaterialModule } from '../material_modules/material.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatTooltipModule } from '@angular/material';
@NgModule({ @NgModule({
imports: [ imports: [
MatTooltipModule,
SectionListRoutingModule, SectionListRoutingModule,
SharedModule, SharedModule,
MaterialModule MaterialModule

View File

@ -1,7 +1,7 @@
import { environment } from 'environments/environment'; import { environment } from 'environments/environment';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable, of, forkJoin } from 'rxjs'; import { Observable, of, forkJoin, BehaviorSubject } from 'rxjs';
import { HttpClient, HttpParams } from '@angular/common/http'; import { HttpClient, HttpParams } from '@angular/common/http';
import { catchError, map } from 'rxjs/operators'; import { catchError, map } from 'rxjs/operators';
import { Observer } from 'rxjs'; import { Observer } from 'rxjs';
@ -15,6 +15,8 @@ export class SalesPdService {
original_rawData:any; original_rawData:any;
current_section:any; current_section:any;
constructor(private _http:HttpClient) { } constructor(private _http:HttpClient) { }
public nav_close:BehaviorSubject<any> = new BehaviorSubject<any>([]);
public nav_close_observable$ = this.nav_close.asObservable();
advancedFilter(params): Observable<any>{ advancedFilter(params): Observable<any>{
return this._http.post(api_url+'filterSalesPDList',{"records":params}) return this._http.post(api_url+'filterSalesPDList',{"records":params})
} }
@ -687,10 +689,16 @@ getCityPincode(value){
//return this.storage.remove(key) //return this.storage.remove(key)
} }
generatesalereport(params :any): Observable<any> { generatesalereport(params :any,role_id:any): Observable<any> {
// let httpParams = new HttpParams().set('pdid', countpdid); // let httpParams = new HttpParams().set('pdid', countpdid);
// httpParams = httpParams.append('random_string',randomString); // httpParams = httpParams.append('random_string',randomString);
return this._http.get(api_url + 'regenerateSaleReport?sales_pd_id=' +params) if(role_id == '20'){
return this._http.get(api_url + 'regenerateFlyhiReport?sales_pd_id=' +params)
}else{
return this._http.get(api_url + 'regenerateSaleReport?sales_pd_id=' +params)
}
// .pipe( // .pipe(
// catchError(this.handleError('role', [])) // catchError(this.handleError('role', []))
// ) // )
@ -707,14 +715,22 @@ generatesateliteimage(param:any): Observable<any>{
return this._http.post<any>(api_url + 'regenerateSatelliteImg',param ) return this._http.post<any>(api_url + 'regenerateSatelliteImg',param )
} }
uploadSalesDatatoCET(id): Observable<any> {
let users:any=localStorage.getItem('user_details'); uploadSalesDatatoCET(id): Observable<any> {
console.log(users); let users:any=localStorage.getItem('user_details');
users=JSON.parse(users); console.log(users);
let apiName; users=JSON.parse(users);
if(users.user_role != '20'){ // return this._http.get<any[]>("http://localhost/AWSEC2/sparqapi/api/uploadSalesPDDataToCETApp/590");
apiName = 'uploadSalesPDDataToCETApp'; return this._http.get<any[]>(api_url +"uploadSalesPDDataToCETApp/"+id);
} }
return this._http.get<any[]>(api_url +apiName+"/"+id);
} loadTemplatelocal(){
return this._http.get('assets/data/flyhi.json').map(rr=>{
let returnValue ={dataStatus:true,status:200,records:{template:JSON.stringify(rr)}}
// this.raw_credit_pd_template= returnValue.records.template
return returnValue
})
}
} }

View File

@ -76,12 +76,14 @@ export class LoginComponent implements OnInit{
let auth = { 'Username': mailid, 'Password': password }; let auth = { 'Username': mailid, 'Password': password };
this.loaderService.showMatSpinnerDialog(''); this.loaderService.showMatSpinnerDialog('');
this.aws.dologin(auth).subscribe(res => { this.aws.dologin(auth).subscribe(res => {
// console.log("do login",res) console.log("do login",res)
if (res !== undefined) { if (res !== undefined) {
this.getCommonSettings(); this.getCommonSettings();
// local storage for validate user access // local storage for validate user access
localStorage.setItem('user_role',res.idToken.payload["custom:role_id"]); localStorage.setItem('user_role',res.idToken.payload["custom:role_id"]);
console.log(res.idToken.payload ["custom:role_id"]); localStorage.setItem('user_role_nav',res.idToken.payload["custom:role_id"]);
let role = localStorage.getItem('user_role');
console.log(res.idToken.payload ["custom:role_id"],role);
// alert(localStorage.getItem('user_role')) // alert(localStorage.getItem('user_role'))
if(res.idToken.payload["custom:role_id"]=='30' || res.idToken.payload["custom:role_id"]=='10' || res.idToken.payload["custom:role_id"]=='11' || res.idToken.payload["custom:role_id"]=='13' || res.idToken.payload["custom:role_id"]=='15' || res.idToken.payload["custom:role_id"]=='17' || res.idToken.payload["custom:role_id"]=='19') if(res.idToken.payload["custom:role_id"]=='30' || res.idToken.payload["custom:role_id"]=='10' || res.idToken.payload["custom:role_id"]=='11' || res.idToken.payload["custom:role_id"]=='13' || res.idToken.payload["custom:role_id"]=='15' || res.idToken.payload["custom:role_id"]=='17' || res.idToken.payload["custom:role_id"]=='19')
{ {

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
export const environment = { export const environment = {
production: true, production: true,
typeofEnvironment:1,
environmentName: 'Production Environment',//Live Environment. environmentName: 'Production Environment',//Live Environment.
apiEndpoint: 'https://api.pdgenie.com/sparqprod/api/', apiEndpoint: 'https://api.pdgenie.com/sparqprod/api/',

View File

@ -5,7 +5,7 @@
export const environment = { export const environment = {
production: true, production: true,
typeofEnvironment:2,
environmentName: 'Development Environment',//Localhost Environment. environmentName: 'Development Environment',//Localhost Environment.
// apiEndpoint: 'https://demo.pdgenie.com/sparqtest/api/', // apiEndpoint: 'https://demo.pdgenie.com/sparqtest/api/',

View File

@ -5,7 +5,7 @@
export const environment = { export const environment = {
production: false, production: false,
typeofEnvironment:3,
environmentName: 'Development Environment',//Localhost Environment. environmentName: 'Development Environment',//Localhost Environment.
// apiEndpoint: 'https://apitest.pdgenie.com/sparqtest/api/', // apiEndpoint: 'https://apitest.pdgenie.com/sparqtest/api/',

5
package-lock.json generated
View File

@ -1,6 +1,3 @@
{ {
"name": "sparq-lender", "lockfileVersion": 1
"lockfileVersion": 2,
"requires": true,
"packages": {}
} }

View File

@ -1,2 +1,3 @@
{} {
"dependencies": {}
}