+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Congratulations you have success fully verified your email id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/logo1.jpg b/public/logo1.jpg
new file mode 100644
index 0000000..431c56a
Binary files /dev/null and b/public/logo1.jpg differ
diff --git a/spec.json b/spec.json
new file mode 100644
index 0000000..1fc8c8b
--- /dev/null
+++ b/spec.json
@@ -0,0 +1,2869 @@
+{
+ "swagger": "2.0",
+ "paths": {
+ "/balaji/*": {
+ "get": {
+ "summary": "/balaji/*",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/*": {
+ "get": {
+ "summary": "/school/*",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/fms/*": {
+ "get": {
+ "summary": "/fms/*",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/whiteLabel/*": {
+ "get": {
+ "summary": "/whiteLabel/*",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/addgeofence": {
+ "post": {
+ "summary": "/geofencing/addgeofence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getgeofence": {
+ "get": {
+ "summary": "/geofencing/getgeofence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getdevicegeofence": {
+ "get": {
+ "summary": "/geofencing/getdevicegeofence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/deletegeofence": {
+ "get": {
+ "summary": "/geofencing/deletegeofence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/geofencestatus": {
+ "get": {
+ "summary": "/geofencing/geofencestatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getallgeofence": {
+ "get": {
+ "summary": "/geofencing/getallgeofence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getGeoFenceByGroupId": {
+ "get": {
+ "summary": "/geofencing/getGeoFenceByGroupId",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/updateGeoFence": {
+ "post": {
+ "summary": "/geofencing/updateGeoFence",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getGeoTypeCount": {
+ "get": {
+ "summary": "/geofencing/getGeoTypeCount",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getDriverRatingMatrix": {
+ "get": {
+ "summary": "/geofencing/getDriverRatingMatrix",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getLoadingPointMatrix": {
+ "get": {
+ "summary": "/geofencing/getLoadingPointMatrix",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/getUnloadingPointMatrix": {
+ "get": {
+ "summary": "/geofencing/getUnloadingPointMatrix",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/geofencing/report/datatable": {
+ "post": {
+ "summary": "/geofencing/report/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getDevice": {
+ "get": {
+ "summary": "/devices/getDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/datatable": {
+ "post": {
+ "summary": "/devices/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/addCommandQueue": {
+ "post": {
+ "summary": "/devices/addCommandQueue",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/statusStats": {
+ "get": {
+ "summary": "/devices/statusStats",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/addDevice": {
+ "post": {
+ "summary": "/devices/addDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/v2/add": {
+ "post": {
+ "summary": "/devices/v2/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/checkToken": {
+ "post": {
+ "summary": "/devices/checkToken",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getDeviceByUser": {
+ "get": {
+ "summary": "/devices/getDeviceByUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/deleteDevice": {
+ "get": {
+ "summary": "/devices/deleteDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/deviceupdate": {
+ "post": {
+ "summary": "/devices/deviceupdate",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/edit": {
+ "post": {
+ "summary": "/devices/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/updateStatus": {
+ "get": {
+ "summary": "/devices/updateStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/deviceShare": {
+ "get": {
+ "summary": "/devices/deviceShare",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/RemoveShareDevice": {
+ "get": {
+ "summary": "/devices/RemoveShareDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/ShareDeviceOwner": {
+ "get": {
+ "summary": "/devices/ShareDeviceOwner",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/DeviceAllert": {
+ "get": {
+ "summary": "/devices/DeviceAllert",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getNearByDevices": {
+ "get": {
+ "summary": "/devices/getNearByDevices",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getdeviceByGroupId": {
+ "get": {
+ "summary": "/devices/getdeviceByGroupId",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getDeviceCountByTripStatus": {
+ "get": {
+ "summary": "/devices/getDeviceCountByTripStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/goingToExpireDevices": {
+ "get": {
+ "summary": "/devices/goingToExpireDevices",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getVehiclesUnderGroup": {
+ "get": {
+ "summary": "/devices/getVehiclesUnderGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/editDevMaster": {
+ "post": {
+ "summary": "/devices/editDevMaster",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getDeviceByUserAndcurrentTripStatus": {
+ "get": {
+ "summary": "/devices/getDeviceByUserAndcurrentTripStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getUnmappedDevices": {
+ "get": {
+ "summary": "/devices/getUnmappedDevices",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getSchoolByGroup": {
+ "get": {
+ "summary": "/devices/getSchoolByGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/getDeviceByorgAndGroup": {
+ "get": {
+ "summary": "/devices/getDeviceByorgAndGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/devices/find": {
+ "post": {
+ "summary": "/devices/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/signUp": {
+ "post": {
+ "summary": "/users/signUp",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/createUser": {
+ "post": {
+ "summary": "/users/createUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/createUserMany": {
+ "post": {
+ "summary": "/users/createUserMany",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/parentData": {
+ "get": {
+ "summary": "/users/parentData",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/editUser": {
+ "post": {
+ "summary": "/users/editUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/deleteUser": {
+ "post": {
+ "summary": "/users/deleteUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/signUpzogo": {
+ "post": {
+ "summary": "/users/signUpzogo",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getAllUsers": {
+ "get": {
+ "summary": "/users/getAllUsers",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getAll": {
+ "get": {
+ "summary": "/users/getAll",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/DeleteUser": {
+ "get": {
+ "summary": "/users/DeleteUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/updatePassword": {
+ "post": {
+ "summary": "/users/updatePassword",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/SendOtp": {
+ "post": {
+ "summary": "/users/SendOtp",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/sendOtpZRides": {
+ "post": {
+ "summary": "/users/sendOtpZRides",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/LoginWithOtp": {
+ "post": {
+ "summary": "/users/LoginWithOtp",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/scheduleschools": {
+ "get": {
+ "summary": "/users/scheduleschools",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/resetPassword": {
+ "post": {
+ "summary": "/users/resetPassword",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/LoginSendOtp": {
+ "post": {
+ "summary": "/users/LoginSendOtp",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/emailverfi": {
+ "get": {
+ "summary": "/users/emailverfi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/datatable": {
+ "post": {
+ "summary": "/users/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/userFeedback": {
+ "post": {
+ "summary": "/users/userFeedback",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/PushNotification": {
+ "post": {
+ "summary": "/users/PushNotification",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/PullNotification": {
+ "post": {
+ "summary": "/users/PullNotification",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/forgotpwd": {
+ "get": {
+ "summary": "/users/forgotpwd",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/foremailver": {
+ "get": {
+ "summary": "/users/foremailver",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/foremailpwdchg": {
+ "get": {
+ "summary": "/users/foremailpwdchg",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/contactous": {
+ "post": {
+ "summary": "/users/contactous",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/otpResend": {
+ "get": {
+ "summary": "/users/otpResend",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/cancel_signup": {
+ "get": {
+ "summary": "/users/cancel_signup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/Account_Edit": {
+ "post": {
+ "summary": "/users/Account_Edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/demo": {
+ "get": {
+ "summary": "/users/demo",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getCust": {
+ "get": {
+ "summary": "/users/getCust",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getCustumerDetail": {
+ "get": {
+ "summary": "/users/getCustumerDetail",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getSupport": {
+ "get": {
+ "summary": "/users/getSupport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/Getabout": {
+ "get": {
+ "summary": "/users/Getabout",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getDealerInfo": {
+ "get": {
+ "summary": "/users/getDealerInfo",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/user_status": {
+ "post": {
+ "summary": "/users/user_status",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getAllDealerVehicles": {
+ "get": {
+ "summary": "/users/getAllDealerVehicles",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/editUserDetails": {
+ "post": {
+ "summary": "/users/editUserDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/getAllCustomerVehiclesUnderDealer": {
+ "get": {
+ "summary": "/users/getAllCustomerVehiclesUnderDealer",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/editUserMaster": {
+ "post": {
+ "summary": "/users/editUserMaster",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/uploadImage": {
+ "post": {
+ "summary": "/users/uploadImage",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/uploadImageZogo": {
+ "post": {
+ "summary": "/users/uploadImageZogo",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/find": {
+ "post": {
+ "summary": "/users/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/users/zogoUserUpdate": {
+ "post": {
+ "summary": "/users/zogoUserUpdate",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/groups/addGroup": {
+ "post": {
+ "summary": "/groups/addGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/groups/updateGroup": {
+ "post": {
+ "summary": "/groups/updateGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/groups/getGroups_list": {
+ "get": {
+ "summary": "/groups/getGroups_list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/groups/deleteGroup": {
+ "get": {
+ "summary": "/groups/deleteGroup",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/groups/getGroupById": {
+ "get": {
+ "summary": "/groups/getGroupById",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schd/createSchedule": {
+ "post": {
+ "summary": "/schd/createSchedule",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schd/getSchdbyDevice": {
+ "get": {
+ "summary": "/schd/getSchdbyDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schd/deleteSchedule": {
+ "get": {
+ "summary": "/schd/deleteSchedule",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schd/getallSchdbyDevice": {
+ "get": {
+ "summary": "/schd/getallSchdbyDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schd/editSchedule": {
+ "post": {
+ "summary": "/schd/editSchedule",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps": {
+ "get": {
+ "summary": "/gps",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/v2": {
+ "get": {
+ "summary": "/gps/v2",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getDistanceSpeed": {
+ "get": {
+ "summary": "/gps/getDistanceSpeed",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getDashboard": {
+ "get": {
+ "summary": "/gps/getDashboard",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getDashGraph": {
+ "get": {
+ "summary": "/gps/getDashGraph",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getGpsReport": {
+ "get": {
+ "summary": "/gps/getGpsReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getGpsSpeedReport": {
+ "get": {
+ "summary": "/gps/getGpsSpeedReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getGpsIdlingReport": {
+ "get": {
+ "summary": "/gps/getGpsIdlingReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getGpsDailyIdlingReport": {
+ "get": {
+ "summary": "/gps/getGpsDailyIdlingReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/ShareLocation": {
+ "get": {
+ "summary": "/gps/ShareLocation",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/IgnReport": {
+ "get": {
+ "summary": "/gps/IgnReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/IgnGraph": {
+ "get": {
+ "summary": "/gps/IgnGraph",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/IngTime": {
+ "get": {
+ "summary": "/gps/IngTime",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/getDeviceStatsByTripStatus": {
+ "get": {
+ "summary": "/gps/getDeviceStatsByTripStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/datatable": {
+ "post": {
+ "summary": "/gps/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/gps/gpsdelete": {
+ "get": {
+ "summary": "/gps/gpsdelete",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRoute/{id}": {
+ "get": {
+ "summary": "/trackRoute/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "put": {
+ "summary": "/trackRoute/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ },
+ "delete": {
+ "summary": "/trackRoute/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/trackRoute/user/{user}": {
+ "get": {
+ "summary": "/trackRoute/user/{user}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "user",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/trackRoute/user_path/{user}": {
+ "get": {
+ "summary": "/trackRoute/user_path/{user}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "user",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/trackRoute/sbUsers/routePoi": {
+ "get": {
+ "summary": "/trackRoute/sbUsers/routePoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRoute": {
+ "post": {
+ "summary": "/trackRoute",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRoute/routepath/getRoutePathWithPoi": {
+ "get": {
+ "summary": "/trackRoute/routepath/getRoutePathWithPoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/user/{user}": {
+ "get": {
+ "summary": "/trackRouteMap/user/{user}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "user",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/trackRouteMap/getTrips": {
+ "get": {
+ "summary": "/trackRouteMap/getTrips",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap": {
+ "post": {
+ "summary": "/trackRouteMap",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/cancelRide": {
+ "post": {
+ "summary": "/trackRouteMap/cancelRide",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/updateRide": {
+ "post": {
+ "summary": "/trackRouteMap/updateRide",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/addCommandQueue": {
+ "post": {
+ "summary": "/trackRouteMap/addCommandQueue",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/rideComplete": {
+ "post": {
+ "summary": "/trackRouteMap/rideComplete",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/getRideStatus": {
+ "get": {
+ "summary": "/trackRouteMap/getRideStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/getZogoDevice": {
+ "get": {
+ "summary": "/trackRouteMap/getZogoDevice",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/{id}": {
+ "delete": {
+ "summary": "/trackRouteMap/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/trackRouteMap/updateRoute_map": {
+ "post": {
+ "summary": "/trackRouteMap/updateRoute_map",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/driverPerformance": {
+ "get": {
+ "summary": "/trackRouteMap/driverPerformance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/updatePOI": {
+ "post": {
+ "summary": "/trackRouteMap/updatePOI",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/getRoutePathMapWithPoi": {
+ "get": {
+ "summary": "/trackRouteMap/getRoutePathMapWithPoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/plantPerformance": {
+ "get": {
+ "summary": "/trackRouteMap/plantPerformance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/vehiclePerformance": {
+ "get": {
+ "summary": "/trackRouteMap/vehiclePerformance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/datatable": {
+ "post": {
+ "summary": "/trackRouteMap/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/find": {
+ "post": {
+ "summary": "/trackRouteMap/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/trackRouteMap/getTripReport": {
+ "get": {
+ "summary": "/trackRouteMap/getTripReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getRecent": {
+ "get": {
+ "summary": "/notifs/getRecent",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getAll": {
+ "get": {
+ "summary": "/notifs/getAll",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/GeoFencingReport": {
+ "get": {
+ "summary": "/notifs/GeoFencingReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/overSpeedReport": {
+ "get": {
+ "summary": "/notifs/overSpeedReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/ignitionReport": {
+ "get": {
+ "summary": "/notifs/ignitionReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/RouteVoilationReprot": {
+ "get": {
+ "summary": "/notifs/RouteVoilationReprot",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/overspeedXlReport": {
+ "get": {
+ "summary": "/notifs/overspeedXlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/RouteVoilationXlReport": {
+ "get": {
+ "summary": "/notifs/RouteVoilationXlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/GeoFenceXlReport": {
+ "get": {
+ "summary": "/notifs/GeoFenceXlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/IgnitionXlReport": {
+ "get": {
+ "summary": "/notifs/IgnitionXlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/stoppageXlReport": {
+ "get": {
+ "summary": "/notifs/stoppageXlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/fuelReport": {
+ "get": {
+ "summary": "/notifs/fuelReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/fuelExlReport": {
+ "get": {
+ "summary": "/notifs/fuelExlReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getNotifByFilters": {
+ "get": {
+ "summary": "/notifs/getNotifByFilters",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/tripStory": {
+ "get": {
+ "summary": "/notifs/tripStory",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getTypes": {
+ "get": {
+ "summary": "/notifs/getTypes",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/statusReport": {
+ "post": {
+ "summary": "/notifs/statusReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/detFlRep": {
+ "get": {
+ "summary": "/notifs/detFlRep",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getNotifiLimit": {
+ "get": {
+ "summary": "/notifs/getNotifiLimit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/notifs/getLocationActivityReport": {
+ "get": {
+ "summary": "/notifs/getLocationActivityReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/user_trip/trip_detail": {
+ "get": {
+ "summary": "/user_trip/trip_detail",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/user_trip/trip_count": {
+ "get": {
+ "summary": "/user_trip/trip_count",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/user_trip/engineSummary/datatable": {
+ "post": {
+ "summary": "/user_trip/engineSummary/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/stoppage/stoppage_detail": {
+ "get": {
+ "summary": "/stoppage/stoppage_detail",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/stoppage/stoppageReport": {
+ "get": {
+ "summary": "/stoppage/stoppageReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/stoppage/datatable": {
+ "post": {
+ "summary": "/stoppage/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/summary": {
+ "get": {
+ "summary": "/summary",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/summary/distance": {
+ "get": {
+ "summary": "/summary/distance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/summary/fuel": {
+ "get": {
+ "summary": "/summary/fuel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/summary/dayWiseSummary": {
+ "get": {
+ "summary": "/summary/dayWiseSummary",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/driver/addDriverDetails": {
+ "post": {
+ "summary": "/driver/addDriverDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/driver/updateDriverDetails": {
+ "post": {
+ "summary": "/driver/updateDriverDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/driver/getDrivers": {
+ "get": {
+ "summary": "/driver/getDrivers",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/driver/deleteDriver": {
+ "get": {
+ "summary": "/driver/deleteDriver",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/datatable": {
+ "post": {
+ "summary": "/vehicle/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/add": {
+ "post": {
+ "summary": "/vehicle/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/update": {
+ "post": {
+ "summary": "/vehicle/update",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/get": {
+ "get": {
+ "summary": "/vehicle/get",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/delete": {
+ "get": {
+ "summary": "/vehicle/delete",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/rfid/{id}": {
+ "get": {
+ "summary": "/vehicle/rfid/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/vehicle/punch/{id}": {
+ "get": {
+ "summary": "/vehicle/punch/{id}",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ]
+ }
+ },
+ "/vehicle/getVehicleById": {
+ "get": {
+ "summary": "/vehicle/getVehicleById",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicle/edit": {
+ "get": {
+ "summary": "/vehicle/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/insurance/addInsurance": {
+ "post": {
+ "summary": "/insurance/addInsurance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/insurance/updateInsuranceDetails": {
+ "post": {
+ "summary": "/insurance/updateInsuranceDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/insurance/getInsurance": {
+ "get": {
+ "summary": "/insurance/getInsurance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/insurance/deleteInsurance": {
+ "get": {
+ "summary": "/insurance/deleteInsurance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/tyre/datatable": {
+ "post": {
+ "summary": "/tyre/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/tyre/addTyreDetails": {
+ "post": {
+ "summary": "/tyre/addTyreDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/tyre/updateTyreDetails": {
+ "post": {
+ "summary": "/tyre/updateTyreDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/tyre/getTyres": {
+ "get": {
+ "summary": "/tyre/getTyres",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/tyre/deleteTyre": {
+ "get": {
+ "summary": "/tyre/deleteTyre",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/sendOTP": {
+ "post": {
+ "summary": "/paytm/sendOTP",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/validateOTP": {
+ "post": {
+ "summary": "/paytm/validateOTP",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/validateToken": {
+ "get": {
+ "summary": "/paytm/validateToken",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/preAuth": {
+ "post": {
+ "summary": "/paytm/preAuth",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/checkBalance": {
+ "get": {
+ "summary": "/paytm/checkBalance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/callback": {
+ "post": {
+ "summary": "/paytm/callback",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/addMoney": {
+ "post": {
+ "summary": "/paytm/addMoney",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/Withdraw": {
+ "post": {
+ "summary": "/paytm/Withdraw",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/paytm/releaseAmount": {
+ "post": {
+ "summary": "/paytm/releaseAmount",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/deviceModel/addDeviceModel": {
+ "post": {
+ "summary": "/deviceModel/addDeviceModel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/deviceModel/updateDeviceModel": {
+ "post": {
+ "summary": "/deviceModel/updateDeviceModel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/deviceModel/getDeviceModel": {
+ "get": {
+ "summary": "/deviceModel/getDeviceModel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/deviceModel/deleteDeviceModel": {
+ "get": {
+ "summary": "/deviceModel/deleteDeviceModel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/deviceModel/getDevModelByName": {
+ "get": {
+ "summary": "/deviceModel/getDevModelByName",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/addvehicleType": {
+ "post": {
+ "summary": "/vehicleType/addvehicleType",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/updatevehicleType": {
+ "post": {
+ "summary": "/vehicleType/updatevehicleType",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/getVehicleTypes": {
+ "get": {
+ "summary": "/vehicleType/getVehicleTypes",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/deleteVehicleType": {
+ "get": {
+ "summary": "/vehicleType/deleteVehicleType",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/licenseUpload": {
+ "post": {
+ "summary": "/vehicleType/licenseUpload",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vehicleType/profileUpload": {
+ "post": {
+ "summary": "/vehicleType/profileUpload",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceEntry/addServiceEntry": {
+ "post": {
+ "summary": "/serviceEntry/addServiceEntry",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceEntry/getServiceEntryByVehicle": {
+ "get": {
+ "summary": "/serviceEntry/getServiceEntryByVehicle",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceEntry/updateServiceEntry": {
+ "post": {
+ "summary": "/serviceEntry/updateServiceEntry",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceEntry/getServiceEntry": {
+ "get": {
+ "summary": "/serviceEntry/getServiceEntry",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceEntry/deleteServiceEntry": {
+ "get": {
+ "summary": "/serviceEntry/deleteServiceEntry",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceTask/addServiceTasks": {
+ "post": {
+ "summary": "/serviceTask/addServiceTasks",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceTask/updateServiceTask": {
+ "post": {
+ "summary": "/serviceTask/updateServiceTask",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceTask/getServiceTasks": {
+ "get": {
+ "summary": "/serviceTask/getServiceTasks",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/serviceTask/deleteServiceTask": {
+ "get": {
+ "summary": "/serviceTask/deleteServiceTask",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vendorDetail/addVendorDetails": {
+ "post": {
+ "summary": "/vendorDetail/addVendorDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vendorDetail/getVendorDetails": {
+ "get": {
+ "summary": "/vendorDetail/getVendorDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vendorDetail/deleteVendorDetails": {
+ "delete": {
+ "summary": "/vendorDetail/deleteVendorDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/vendorDetail/updateVendorDetails": {
+ "post": {
+ "summary": "/vendorDetail/updateVendorDetails",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/issue/addIssue": {
+ "post": {
+ "summary": "/issue/addIssue",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/issue/updateIssue": {
+ "post": {
+ "summary": "/issue/updateIssue",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/issue/getIssues": {
+ "get": {
+ "summary": "/issue/getIssues",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/issue/deleteIssue": {
+ "get": {
+ "summary": "/issue/deleteIssue",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/issue/getIssuesByUser": {
+ "get": {
+ "summary": "/issue/getIssuesByUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/fuel/addFuel": {
+ "post": {
+ "summary": "/fuel/addFuel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/fuel/updateFuel": {
+ "post": {
+ "summary": "/fuel/updateFuel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/fuel/getFuels": {
+ "get": {
+ "summary": "/fuel/getFuels",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/fuel/deleteFuel": {
+ "get": {
+ "summary": "/fuel/deleteFuel",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/addPoi": {
+ "post": {
+ "summary": "/poi/addPoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/updateRouteIndexes": {
+ "post": {
+ "summary": "/poi/updateRouteIndexes",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/deletePoi": {
+ "get": {
+ "summary": "/poi/deletePoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/getPois": {
+ "get": {
+ "summary": "/poi/getPois",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/updatePoi": {
+ "post": {
+ "summary": "/poi/updatePoi",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/datatable": {
+ "post": {
+ "summary": "/poi/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/poidatatable": {
+ "post": {
+ "summary": "/poi/poidatatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/find": {
+ "post": {
+ "summary": "/poi/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/poi/edit": {
+ "post": {
+ "summary": "/poi/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share": {
+ "post": {
+ "summary": "/share",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share/deleteshareableSession": {
+ "get": {
+ "summary": "/share/deleteshareableSession",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share/getshareableSession": {
+ "get": {
+ "summary": "/share/getshareableSession",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share/liveShare": {
+ "get": {
+ "summary": "/share/liveShare",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share/validate": {
+ "post": {
+ "summary": "/share/validate",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/share/propagate": {
+ "post": {
+ "summary": "/share/propagate",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/lm/getLM": {
+ "get": {
+ "summary": "/lm/getLM",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/lm/getLoadM": {
+ "get": {
+ "summary": "/lm/getLoadM",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/lm/getLoadingSites": {
+ "get": {
+ "summary": "/lm/getLoadingSites",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/cmdPackets/datatable": {
+ "post": {
+ "summary": "/cmdPackets/datatable",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/hulls": {
+ "get": {
+ "summary": "/hulls",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/zogo/getBillingAmount": {
+ "get": {
+ "summary": "/zogo/getBillingAmount",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/zogo/nearby/src": {
+ "get": {
+ "summary": "/zogo/nearby/src",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/zogo/nearby/dst": {
+ "get": {
+ "summary": "/zogo/nearby/dst",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/zogo/getLastRideStatusByUser": {
+ "get": {
+ "summary": "/zogo/getLastRideStatusByUser",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/zogo/updateZogoPaymentStatus": {
+ "get": {
+ "summary": "/zogo/updateZogoPaymentStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/list": {
+ "post": {
+ "summary": "/school/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/add": {
+ "post": {
+ "summary": "/school/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/edit": {
+ "post": {
+ "summary": "/school/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/del": {
+ "post": {
+ "summary": "/school/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/school/find": {
+ "post": {
+ "summary": "/school/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/list": {
+ "post": {
+ "summary": "/student/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/add": {
+ "post": {
+ "summary": "/student/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/edit": {
+ "post": {
+ "summary": "/student/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/del": {
+ "post": {
+ "summary": "/student/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/find": {
+ "post": {
+ "summary": "/student/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ },
+ "get": {
+ "summary": "/student/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/student/parentScheduled": {
+ "get": {
+ "summary": "/student/parentScheduled",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/list": {
+ "post": {
+ "summary": "/attendance/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/add": {
+ "post": {
+ "summary": "/attendance/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/edit": {
+ "post": {
+ "summary": "/attendance/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/del": {
+ "post": {
+ "summary": "/attendance/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/find": {
+ "post": {
+ "summary": "/attendance/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/attendance": {
+ "post": {
+ "summary": "/attendance/attendance",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/punch": {
+ "post": {
+ "summary": "/attendance/punch",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/test": {
+ "post": {
+ "summary": "/attendance/test",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/studentDayWiseReport": {
+ "post": {
+ "summary": "/attendance/studentDayWiseReport",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/studentList": {
+ "post": {
+ "summary": "/attendance/studentList",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/attendance/todayAttendanceList": {
+ "post": {
+ "summary": "/attendance/todayAttendanceList",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/class/list": {
+ "post": {
+ "summary": "/class/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/class/add": {
+ "post": {
+ "summary": "/class/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/class/edit": {
+ "post": {
+ "summary": "/class/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/class/del": {
+ "post": {
+ "summary": "/class/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/class/find": {
+ "post": {
+ "summary": "/class/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/list": {
+ "post": {
+ "summary": "/scheduleSchool/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/add": {
+ "post": {
+ "summary": "/scheduleSchool/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/edit": {
+ "post": {
+ "summary": "/scheduleSchool/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/del": {
+ "post": {
+ "summary": "/scheduleSchool/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/find": {
+ "post": {
+ "summary": "/scheduleSchool/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/scheduleSchool/imeifind": {
+ "get": {
+ "summary": "/scheduleSchool/imeifind",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/list": {
+ "post": {
+ "summary": "/schoolTrip/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/add": {
+ "post": {
+ "summary": "/schoolTrip/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/edit": {
+ "post": {
+ "summary": "/schoolTrip/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/del": {
+ "post": {
+ "summary": "/schoolTrip/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/find": {
+ "post": {
+ "summary": "/schoolTrip/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/check": {
+ "post": {
+ "summary": "/schoolTrip/check",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolTrip/dstatus": {
+ "post": {
+ "summary": "/schoolTrip/dstatus",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolVehicles/list": {
+ "post": {
+ "summary": "/schoolVehicles/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolVehicles/add": {
+ "post": {
+ "summary": "/schoolVehicles/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolVehicles/edit": {
+ "post": {
+ "summary": "/schoolVehicles/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolVehicles/del": {
+ "post": {
+ "summary": "/schoolVehicles/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/schoolVehicles/find": {
+ "post": {
+ "summary": "/schoolVehicles/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/list": {
+ "post": {
+ "summary": "/ppickup/list",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/add": {
+ "post": {
+ "summary": "/ppickup/add",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/edit": {
+ "post": {
+ "summary": "/ppickup/edit",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/del": {
+ "post": {
+ "summary": "/ppickup/del",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/find": {
+ "post": {
+ "summary": "/ppickup/find",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ },
+ "/ppickup/addMany": {
+ "post": {
+ "summary": "/ppickup/addMany",
+ "consumes": [
+ "application/json"
+ ],
+ "parameters": []
+ }
+ }
+ },
+ "info": {
+ "title": "oneqlik",
+ "version": "0.0.0",
+ "license": {
+ "name": "MIT"
+ },
+ "description": "[Specification JSON](/api-spec)"
+ }
+}
\ No newline at end of file
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..91bc915
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,45 @@
+# fSelect
+A jQuery select box replacement library ([live demo](https://facetwp.com/wp-content/plugins/facetwp/assets/vendor/fSelect/test.html))
+
+
+
+### Usage
+
+```javascript
+$('.your-select').fSelect();
+```
+
+### Available options
+
+```js
+$('.your-select').fSelect({
+ placeholder: 'Select some options',
+ numDisplayed: 3,
+ overflowText: '{n} selected',
+ noResultsText: 'No results found',
+ searchText: 'Search',
+ showSearch: true
+});
+```
+
+* **placeholder** (str) - the default placeholder text
+* **numDisplayed** (int) - the number of values to show before switching to the `overflowText`
+* **overflowText** (str) - the text to show after exceeding the `numDisplayed` limit
+* **noResultsText** (str) - the text to show if no choices exist (or an empty string)
+* **searchText** (str) - the search box placeholder text
+* **showSearch** (bool) - show the search box?
+
+### Methods
+
+```js
+$('.your-select').fSelect('reload');
+$('.your-select').fSelect('destroy');
+```
+
+### Single vs. multi-select
+
+Add the `multiple` attribute to your `` to enable multi-select:
+
+```html
+
+```
diff --git a/src/app/about-us/about-us.component.html b/src/app/about-us/about-us.component.html
new file mode 100644
index 0000000..02c4c2d
--- /dev/null
+++ b/src/app/about-us/about-us.component.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ABOUT US
+
+
+
We are the fastest growing and popular GPS Tracking service offering company. Our service is lead by the team of energetic and
+ experienced young technical professionals. We are providing the best and quality service for our customers, there are lots of customers get full satisfaction
+ and happiness for getting our service. Our main objective is to satisfy the needs and expectations of the customers. Our GPS tracking software is very simple
+ to handle where we will see the different parameters like speed, location, idling and stoppage of vehicle, device alerts, cover of total distance and other
+ type of data parameters. The software is present in the user friendly form. We will get the alerts and reports your Smartphone. We are providing the cost
+ effective GPS tracking software with guaranteed. We provide the services for 24*7.
+ We are deliver the hassle free and premium quality service for our customer. Our services are provided in the fully guaranteed form. Our GPS tracking
+ software having the best quality control to ensure you can get accurate and the perfect real time information of your automobile or vehicle. Our GPS tracking
+ software are integrated among the cloud related technology so the user will track their automobile from any type of place with the great uptime. We are offering
+ the services for the vehicle tracking system, personal tracking system and fleet tracking system. Our GPS tracking software service specialty is to offer the
+ affordable price robust solution, and offering end to end solution to the fleet owners. We customize our services and platform based on our customer's requirements.
+ You can contact our service through SMS, phone and direct meet. Our quality of the service is the main reason for our company growth. We handle our customers in
+ the friendly and respected form. You can contact our service at any time in day; we are waiting to offer the best service to our customer.
+
+
Radical : We endeavor to achieve customer satisfaction as our essential business requirement
+
Excellence : We constantly strive to achieve the highest possible standards in our day-to-day work and in the quality of the goods and services we provide
+
Dedication : We commit that all our products and services we provide are reliable
+
Energetic : Active character by involvement and action.
+
+
+
+
+
+
+
+
+
+
+
+
+
Why {{org_name}}
+
✔ Branded and Robust Tracker
+
✔ Dedicated 6 servers with an uptime record of 99.94%.
+
✔ Customer centric approch: We belive in delivering more than that we promise rather than making false commitments the time of the scale.
+
✔ Rich experties in field of tracking.
+
✔ Maximum no. of alerts and reports.
+
✔ The option of rebranding available.
+
✔ Services call attended within 48 hours.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/about-us/about-us.component.scss b/src/app/about-us/about-us.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/about-us/about-us.component.spec.ts b/src/app/about-us/about-us.component.spec.ts
new file mode 100644
index 0000000..41e9700
--- /dev/null
+++ b/src/app/about-us/about-us.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AboutUsComponent } from './about-us.component';
+
+describe('AboutUsComponent', () => {
+ let component: AboutUsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AboutUsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AboutUsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/about-us/about-us.component.ts b/src/app/about-us/about-us.component.ts
new file mode 100644
index 0000000..8e19132
--- /dev/null
+++ b/src/app/about-us/about-us.component.ts
@@ -0,0 +1,21 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-about-us',
+ templateUrl: './about-us.component.html',
+ styleUrls: ['./about-us.component.scss']
+})
+export class AboutUsComponent implements OnInit {
+ org_name = '';
+
+ constructor() {
+
+ this.org_name = window.localStorage['organisationName']
+ }
+
+ ngOnInit() {
+ }
+
+}
+
+
diff --git a/src/app/account-detail/account-detail.component.html b/src/app/account-detail/account-detail.component.html
new file mode 100644
index 0000000..363e3d5
--- /dev/null
+++ b/src/app/account-detail/account-detail.component.html
@@ -0,0 +1,1624 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Mobile Number' | translate}}
+
+ 0 ? '#e91313' : '#ffffff'" style="margin-bottom: 5px;font-weight: 500;font-size: 14px;text-align: right;">{{text2}}
+
+
+ {{'Organisation' | translate}}
+
+
+
+ {{'Fuel Unit' | translate}}
+
+
+
+
+ {{fuel}}
+
+
+
+
+
+
+
+
Timezone
+
+
+ {{ zone.viewValue }}
+
+
+
+
+
Upload Image
+
+
+
+
+
+
+
+
+
+
+ {{'Dealer' | translate}}
+ 0 ? '#e91313' : '#ffffff'" md-tooltip={{text3}} *ngIf="deal();">{{symbol3}}
+
+
+
+
+ {{'Notification Sound' | translate}}
+
+
+
+
+
+
+
+
+ {{'Working Hours' | translate}}
+
+
+ {{hours.name}}
+
+
+
+
+
+
+ {{'Announcement' | translate}}
+
+
+
+
+
+
+ {{'Renewal Charges' | translate}}
+
+
+
+
+
+ {{'Show Label' | translate}}
+
+
+
+
+
+
+ {{'Driver Management' | translate}}
+
+
+
+
+
+
+ {{'Payment Gateway' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+ {{'Edit Account' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Trip Generation' | translate}}
+
+
+
+
+ {{trip.view}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Application language' | translate}}
+
+
+
+
+ {{language.view}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Currency' | translate}}
+
+
+
+
+ {{ option.country }}
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'API Key' | translate}}
+
+
+ {{btnKey}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Priority' | translate}}
+
+
+
+
+
+
+
+
+
+
+ {{'Ignition Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'POI Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Power Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Fuel Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Geo-Fence Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Overspeed Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Route Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'AC Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Max-Stoppage Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'SOS Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Vibration Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Low Battery Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Acc Alarm Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Toll Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Harsh Break Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Harsh Acceleration Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Over Stopped Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Over Idle Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Parking Notification' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+ add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'From Date' | translate}}
+
+
+
+ {{'To Date' | translate}}
+
+
+
FIND
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'Announcement' | translate}}
+
+
+
+ Update
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'Support 1' | translate}}
+
+
+
+
+
+
{{'Support 2' | translate}}
+
+
+
+
+
+
{{'Support 3' | translate}}
+
+
+
+
+
+
{{'Service 1' | translate}}
+
+
+
+
+
+
{{'Sevice 2' | translate}}
+
+
+
+
+
+
+ Update
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{item.Amount}}
+ Amount
+
+
+ {{item.Status}}
+ {{item.Status}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/account-detail/account-detail.component.scss b/src/app/account-detail/account-detail.component.scss
new file mode 100644
index 0000000..d85c624
--- /dev/null
+++ b/src/app/account-detail/account-detail.component.scss
@@ -0,0 +1,11288 @@
+/*!
+ * Start Bootstrap - SB Admin 2 v4.1.1 (https://startbootstrap.com/themes/sb-admin-2)
+ * Copyright 2013-2020 Start Bootstrap
+ * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-sb-admin-2/blob/master/LICENSE)
+ */
+
+/*!
+ * Bootstrap v4.5.0 (https://getbootstrap.com/)
+ * Copyright 2011-2020 The Bootstrap Authors
+ * Copyright 2011-2020 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+ :root {
+ --blue: #4e73df;
+ --indigo: #6610f2;
+ --purple: #6f42c1;
+ --pink: #e83e8c;
+ --red: #e74a3b;
+ --orange: #fd7e14;
+ --yellow: #f6c23e;
+ --green: #1cc88a;
+ --teal: #20c9a6;
+ --cyan: #36b9cc;
+ --white: #fff;
+ --gray: #858796;
+ --gray-dark: #5a5c69;
+ --primary: #4e73df;
+ --secondary: #858796;
+ --success: #1cc88a;
+ --info: #36b9cc;
+ --warning: #f6c23e;
+ --danger: #e74a3b;
+ --light: #f8f9fc;
+ --dark: #5a5c69;
+ --breakpoint-xs: 0;
+ --breakpoint-sm: 576px;
+ --breakpoint-md: 768px;
+ --breakpoint-lg: 992px;
+ --breakpoint-xl: 1200px;
+ --font-family-sans-serif: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+html {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+ display: block;
+}
+
+body {
+ margin: 0;
+ font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #858796;
+ text-align: left;
+ background-color: #fff;
+}
+
+[tabindex="-1"]:focus:not(:focus-visible) {
+ outline: 0 !important;
+}
+
+hr {
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-original-title] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ border-bottom: 0;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none;
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+ margin-bottom: 0;
+}
+
+dt {
+ font-weight: 700;
+}
+
+dd {
+ margin-bottom: .5rem;
+ margin-left: 0;
+}
+
+blockquote {
+ margin: 0 0 1rem;
+}
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+small {
+ font-size: 80%;
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -.25em;
+}
+
+sup {
+ top: -.5em;
+}
+
+a {
+ color: #4e73df;
+ text-decoration: none;
+ background-color: transparent;
+}
+
+a:hover {
+ color: #224abe;
+ text-decoration: underline;
+}
+
+a:not([href]) {
+ color: inherit;
+ text-decoration: none;
+}
+
+a:not([href]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ font-size: 1em;
+}
+
+pre {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ -ms-overflow-style: scrollbar;
+}
+
+figure {
+ margin: 0 0 1rem;
+}
+
+img {
+ vertical-align: middle;
+ border-style: none;
+}
+
+svg {
+ overflow: hidden;
+ vertical-align: middle;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+caption {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+ color: #858796;
+ text-align: left;
+ caption-side: bottom;
+}
+
+th {
+ text-align: inherit;
+}
+
+label {
+ display: inline-block;
+ margin-bottom: 0.5rem;
+}
+
+button {
+ border-radius: 0;
+}
+
+button:focus {
+ outline: 1px dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+button,
+input {
+ overflow: visible;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+[role="button"] {
+ cursor: pointer;
+}
+
+select {
+ word-wrap: normal;
+}
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+button:not(:disabled),
+[type="button"]:not(:disabled),
+[type="reset"]:not(:disabled),
+[type="submit"]:not(:disabled) {
+ cursor: pointer;
+}
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+
+textarea {
+ overflow: auto;
+ resize: vertical;
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ padding: 0;
+ margin-bottom: .5rem;
+ font-size: 1.5rem;
+ line-height: inherit;
+ color: inherit;
+ white-space: normal;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+[type="search"] {
+ outline-offset: -2px;
+ -webkit-appearance: none;
+}
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+
+output {
+ display: inline-block;
+}
+
+summary {
+ display: list-item;
+ cursor: pointer;
+}
+
+template {
+ display: none;
+}
+
+[hidden] {
+ display: none !important;
+}
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+ margin-bottom: 0.5rem;
+ font-weight: 400;
+ line-height: 1.2;
+}
+
+h1, .h1 {
+ font-size: 2.5rem;
+}
+
+h2, .h2 {
+ font-size: 2rem;
+}
+
+h3, .h3 {
+ font-size: 1.75rem;
+}
+
+h4, .h4 {
+ font-size: 1.5rem;
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+
+.display-1 {
+ font-size: 6rem;
+ font-weight: 300;
+ line-height: 1.2;
+}
+
+.display-2 {
+ font-size: 5.5rem;
+ font-weight: 300;
+ line-height: 1.2;
+}
+
+.display-3 {
+ font-size: 4.5rem;
+ font-weight: 300;
+ line-height: 1.2;
+}
+
+.display-4 {
+ font-size: 3.5rem;
+ font-weight: 300;
+ line-height: 1.2;
+}
+
+hr {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ border: 0;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+small,
+.small {
+ font-size: 80%;
+ font-weight: 400;
+}
+
+mark,
+.mark {
+ padding: 0.2em;
+ background-color: #fcf8e3;
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline-item {
+ display: inline-block;
+}
+
+.list-inline-item:not(:last-child) {
+ margin-right: 0.5rem;
+}
+
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+
+.blockquote-footer {
+ display: block;
+ font-size: 80%;
+ color: #858796;
+}
+
+.blockquote-footer::before {
+ content: "\2014\00A0";
+}
+
+.img-fluid {
+ max-width: 100%;
+ height: auto;
+}
+
+.img-thumbnail {
+ padding: 0.25rem;
+ background-color: #fff;
+ border: 1px solid #dddfeb;
+ border-radius: 0.35rem;
+ max-width: 100%;
+ height: auto;
+}
+
+.figure {
+ display: inline-block;
+}
+
+.figure-img {
+ margin-bottom: 0.5rem;
+ line-height: 1;
+}
+
+.figure-caption {
+ font-size: 90%;
+ color: #858796;
+}
+
+code {
+ font-size: 87.5%;
+ color: #e83e8c;
+ word-wrap: break-word;
+}
+
+a > code {
+ color: inherit;
+}
+
+kbd {
+ padding: 0.2rem 0.4rem;
+ font-size: 87.5%;
+ color: #fff;
+ background-color: #3a3b45;
+ border-radius: 0.2rem;
+}
+
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: 700;
+}
+
+pre {
+ display: block;
+ font-size: 87.5%;
+ color: #3a3b45;
+}
+
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+.container {
+ width: 100%;
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+@media (min-width: 576px) {
+ .container {
+ max-width: 540px;
+ }
+}
+
+@media (min-width: 768px) {
+ .container {
+ max-width: 720px;
+ }
+}
+
+@media (min-width: 992px) {
+ .container {
+ max-width: 960px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .container {
+ max-width: 1140px;
+ }
+}
+
+.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
+ width: 100%;
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+@media (min-width: 576px) {
+ .container, .container-sm {
+ max-width: 540px;
+ }
+}
+
+@media (min-width: 768px) {
+ .container, .container-sm, .container-md {
+ max-width: 720px;
+ }
+}
+
+@media (min-width: 992px) {
+ .container, .container-sm, .container-md, .container-lg {
+ max-width: 960px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .container, .container-sm, .container-md, .container-lg, .container-xl {
+ max-width: 1140px;
+ }
+}
+
+.row {
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: -0.75rem;
+ margin-left: -0.75rem;
+}
+
+.no-gutters {
+ margin-right: 0;
+ margin-left: 0;
+}
+
+.no-gutters > .col,
+.no-gutters > [class*="col-"] {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
+.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
+.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
+.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
+.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
+.col-xl-auto {
+ position: relative;
+ width: 100%;
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+
+.col {
+ flex-basis: 0;
+ flex-grow: 1;
+ min-width: 0;
+ max-width: 100%;
+}
+
+.row-cols-1 > * {
+ flex: 0 0 100%;
+ max-width: 100%;
+}
+
+.row-cols-2 > * {
+ flex: 0 0 50%;
+ max-width: 50%;
+}
+
+.row-cols-3 > * {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+}
+
+.row-cols-4 > * {
+ flex: 0 0 25%;
+ max-width: 25%;
+}
+
+.row-cols-5 > * {
+ flex: 0 0 20%;
+ max-width: 20%;
+}
+
+.row-cols-6 > * {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+}
+
+.col-auto {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%;
+}
+
+.col-1 {
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%;
+}
+
+.col-2 {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+}
+
+.col-3 {
+ flex: 0 0 25%;
+ max-width: 25%;
+}
+
+.col-4 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+}
+
+.col-5 {
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%;
+}
+
+.col-6 {
+ flex: 0 0 50%;
+ max-width: 50%;
+}
+
+.col-7 {
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%;
+}
+
+.col-8 {
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%;
+}
+
+.col-9 {
+ flex: 0 0 75%;
+ max-width: 75%;
+}
+
+.col-10 {
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%;
+}
+
+.col-11 {
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%;
+}
+
+.col-12 {
+ flex: 0 0 100%;
+ max-width: 100%;
+}
+
+.order-first {
+ order: -1;
+}
+
+.order-last {
+ order: 13;
+}
+
+.order-0 {
+ order: 0;
+}
+
+.order-1 {
+ order: 1;
+}
+
+.order-2 {
+ order: 2;
+}
+
+.order-3 {
+ order: 3;
+}
+
+.order-4 {
+ order: 4;
+}
+
+.order-5 {
+ order: 5;
+}
+
+.order-6 {
+ order: 6;
+}
+
+.order-7 {
+ order: 7;
+}
+
+.order-8 {
+ order: 8;
+}
+
+.order-9 {
+ order: 9;
+}
+
+.order-10 {
+ order: 10;
+}
+
+.order-11 {
+ order: 11;
+}
+
+.order-12 {
+ order: 12;
+}
+
+.offset-1 {
+ margin-left: 8.33333%;
+}
+
+.offset-2 {
+ margin-left: 16.66667%;
+}
+
+.offset-3 {
+ margin-left: 25%;
+}
+
+.offset-4 {
+ margin-left: 33.33333%;
+}
+
+.offset-5 {
+ margin-left: 41.66667%;
+}
+
+.offset-6 {
+ margin-left: 50%;
+}
+
+.offset-7 {
+ margin-left: 58.33333%;
+}
+
+.offset-8 {
+ margin-left: 66.66667%;
+}
+
+.offset-9 {
+ margin-left: 75%;
+}
+
+.offset-10 {
+ margin-left: 83.33333%;
+}
+
+.offset-11 {
+ margin-left: 91.66667%;
+}
+
+@media (min-width: 576px) {
+ .col-sm {
+ flex-basis: 0;
+ flex-grow: 1;
+ min-width: 0;
+ max-width: 100%;
+ }
+ .row-cols-sm-1 > * {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .row-cols-sm-4 > * {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%;
+ }
+ .col-sm-1 {
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%;
+ }
+ .col-sm-2 {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-sm-3 {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .col-sm-4 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .col-sm-5 {
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%;
+ }
+ .col-sm-6 {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .col-sm-7 {
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%;
+ }
+ .col-sm-8 {
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%;
+ }
+ .col-sm-9 {
+ flex: 0 0 75%;
+ max-width: 75%;
+ }
+ .col-sm-10 {
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%;
+ }
+ .col-sm-11 {
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%;
+ }
+ .col-sm-12 {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .order-sm-first {
+ order: -1;
+ }
+ .order-sm-last {
+ order: 13;
+ }
+ .order-sm-0 {
+ order: 0;
+ }
+ .order-sm-1 {
+ order: 1;
+ }
+ .order-sm-2 {
+ order: 2;
+ }
+ .order-sm-3 {
+ order: 3;
+ }
+ .order-sm-4 {
+ order: 4;
+ }
+ .order-sm-5 {
+ order: 5;
+ }
+ .order-sm-6 {
+ order: 6;
+ }
+ .order-sm-7 {
+ order: 7;
+ }
+ .order-sm-8 {
+ order: 8;
+ }
+ .order-sm-9 {
+ order: 9;
+ }
+ .order-sm-10 {
+ order: 10;
+ }
+ .order-sm-11 {
+ order: 11;
+ }
+ .order-sm-12 {
+ order: 12;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.33333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.66667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.33333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.66667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.33333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.66667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.33333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.66667%;
+ }
+}
+
+@media (min-width: 768px) {
+ .col-md {
+ flex-basis: 0;
+ flex-grow: 1;
+ min-width: 0;
+ max-width: 100%;
+ }
+ .row-cols-md-1 > * {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-md-2 > * {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-md-3 > * {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .row-cols-md-4 > * {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-md-5 > * {
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-md-6 > * {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%;
+ }
+ .col-md-1 {
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%;
+ }
+ .col-md-2 {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-md-3 {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .col-md-4 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .col-md-5 {
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%;
+ }
+ .col-md-6 {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .col-md-7 {
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%;
+ }
+ .col-md-8 {
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%;
+ }
+ .col-md-9 {
+ flex: 0 0 75%;
+ max-width: 75%;
+ }
+ .col-md-10 {
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%;
+ }
+ .col-md-11 {
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%;
+ }
+ .col-md-12 {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .order-md-first {
+ order: -1;
+ }
+ .order-md-last {
+ order: 13;
+ }
+ .order-md-0 {
+ order: 0;
+ }
+ .order-md-1 {
+ order: 1;
+ }
+ .order-md-2 {
+ order: 2;
+ }
+ .order-md-3 {
+ order: 3;
+ }
+ .order-md-4 {
+ order: 4;
+ }
+ .order-md-5 {
+ order: 5;
+ }
+ .order-md-6 {
+ order: 6;
+ }
+ .order-md-7 {
+ order: 7;
+ }
+ .order-md-8 {
+ order: 8;
+ }
+ .order-md-9 {
+ order: 9;
+ }
+ .order-md-10 {
+ order: 10;
+ }
+ .order-md-11 {
+ order: 11;
+ }
+ .order-md-12 {
+ order: 12;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.33333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.66667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.33333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.66667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.33333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.66667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.33333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.66667%;
+ }
+}
+
+@media (min-width: 992px) {
+ .col-lg {
+ flex-basis: 0;
+ flex-grow: 1;
+ min-width: 0;
+ max-width: 100%;
+ }
+ .row-cols-lg-1 > * {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .row-cols-lg-4 > * {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%;
+ }
+ .col-lg-1 {
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%;
+ }
+ .col-lg-2 {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-lg-3 {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .col-lg-4 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .col-lg-5 {
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%;
+ }
+ .col-lg-6 {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .col-lg-7 {
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%;
+ }
+ .col-lg-8 {
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%;
+ }
+ .col-lg-9 {
+ flex: 0 0 75%;
+ max-width: 75%;
+ }
+ .col-lg-10 {
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%;
+ }
+ .col-lg-11 {
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%;
+ }
+ .col-lg-12 {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .order-lg-first {
+ order: -1;
+ }
+ .order-lg-last {
+ order: 13;
+ }
+ .order-lg-0 {
+ order: 0;
+ }
+ .order-lg-1 {
+ order: 1;
+ }
+ .order-lg-2 {
+ order: 2;
+ }
+ .order-lg-3 {
+ order: 3;
+ }
+ .order-lg-4 {
+ order: 4;
+ }
+ .order-lg-5 {
+ order: 5;
+ }
+ .order-lg-6 {
+ order: 6;
+ }
+ .order-lg-7 {
+ order: 7;
+ }
+ .order-lg-8 {
+ order: 8;
+ }
+ .order-lg-9 {
+ order: 9;
+ }
+ .order-lg-10 {
+ order: 10;
+ }
+ .order-lg-11 {
+ order: 11;
+ }
+ .order-lg-12 {
+ order: 12;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.33333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.66667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.33333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.66667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.33333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.66667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.33333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.66667%;
+ }
+}
+
+@media (min-width: 1200px) {
+ .col-xl {
+ flex-basis: 0;
+ flex-grow: 1;
+ min-width: 0;
+ max-width: 100%;
+ }
+ .row-cols-xl-1 > * {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .row-cols-xl-4 > * {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ flex: 0 0 20%;
+ max-width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ max-width: 100%;
+ }
+ .col-xl-1 {
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%;
+ }
+ .col-xl-2 {
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%;
+ }
+ .col-xl-3 {
+ flex: 0 0 25%;
+ max-width: 25%;
+ }
+ .col-xl-4 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%;
+ }
+ .col-xl-5 {
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%;
+ }
+ .col-xl-6 {
+ flex: 0 0 50%;
+ max-width: 50%;
+ }
+ .col-xl-7 {
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%;
+ }
+ .col-xl-8 {
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%;
+ }
+ .col-xl-9 {
+ flex: 0 0 75%;
+ max-width: 75%;
+ }
+ .col-xl-10 {
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%;
+ }
+ .col-xl-11 {
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%;
+ }
+ .col-xl-12 {
+ flex: 0 0 100%;
+ max-width: 100%;
+ }
+ .order-xl-first {
+ order: -1;
+ }
+ .order-xl-last {
+ order: 13;
+ }
+ .order-xl-0 {
+ order: 0;
+ }
+ .order-xl-1 {
+ order: 1;
+ }
+ .order-xl-2 {
+ order: 2;
+ }
+ .order-xl-3 {
+ order: 3;
+ }
+ .order-xl-4 {
+ order: 4;
+ }
+ .order-xl-5 {
+ order: 5;
+ }
+ .order-xl-6 {
+ order: 6;
+ }
+ .order-xl-7 {
+ order: 7;
+ }
+ .order-xl-8 {
+ order: 8;
+ }
+ .order-xl-9 {
+ order: 9;
+ }
+ .order-xl-10 {
+ order: 10;
+ }
+ .order-xl-11 {
+ order: 11;
+ }
+ .order-xl-12 {
+ order: 12;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.33333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.66667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.33333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.66667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.33333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.66667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.33333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.66667%;
+ }
+}
+
+.table {
+ width: 100%;
+ margin-bottom: 1rem;
+ color: #858796;
+}
+
+.table th,
+.table td {
+ padding: 0.75rem;
+ vertical-align: top;
+ border-top: 1px solid #e3e6f0;
+}
+
+.table thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #e3e6f0;
+}
+
+.table tbody + tbody {
+ border-top: 2px solid #e3e6f0;
+}
+
+.table-sm th,
+.table-sm td {
+ padding: 0.3rem;
+}
+
+.table-bordered {
+ border: 1px solid #e3e6f0;
+}
+
+.table-bordered th,
+.table-bordered td {
+ border: 1px solid #e3e6f0;
+}
+
+.table-bordered thead th,
+.table-bordered thead td {
+ border-bottom-width: 2px;
+}
+
+.table-borderless th,
+.table-borderless td,
+.table-borderless thead th,
+.table-borderless tbody + tbody {
+ border: 0;
+}
+
+.table-striped tbody tr:nth-of-type(odd) {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.table-hover tbody tr:hover {
+ color: #858796;
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-primary,
+.table-primary > th,
+.table-primary > td {
+ background-color: #cdd8f6;
+}
+
+.table-primary th,
+.table-primary td,
+.table-primary thead th,
+.table-primary tbody + tbody {
+ border-color: #a3b6ee;
+}
+
+.table-hover .table-primary:hover {
+ background-color: #b7c7f2;
+}
+
+.table-hover .table-primary:hover > td,
+.table-hover .table-primary:hover > th {
+ background-color: #b7c7f2;
+}
+
+.table-secondary,
+.table-secondary > th,
+.table-secondary > td {
+ background-color: #dddde2;
+}
+
+.table-secondary th,
+.table-secondary td,
+.table-secondary thead th,
+.table-secondary tbody + tbody {
+ border-color: #c0c1c8;
+}
+
+.table-hover .table-secondary:hover {
+ background-color: #cfcfd6;
+}
+
+.table-hover .table-secondary:hover > td,
+.table-hover .table-secondary:hover > th {
+ background-color: #cfcfd6;
+}
+
+.table-success,
+.table-success > th,
+.table-success > td {
+ background-color: #bff0de;
+}
+
+.table-success th,
+.table-success td,
+.table-success thead th,
+.table-success tbody + tbody {
+ border-color: #89e2c2;
+}
+
+.table-hover .table-success:hover {
+ background-color: #aaebd3;
+}
+
+.table-hover .table-success:hover > td,
+.table-hover .table-success:hover > th {
+ background-color: #aaebd3;
+}
+
+.table-info,
+.table-info > th,
+.table-info > td {
+ background-color: #c7ebf1;
+}
+
+.table-info th,
+.table-info td,
+.table-info thead th,
+.table-info tbody + tbody {
+ border-color: #96dbe4;
+}
+
+.table-hover .table-info:hover {
+ background-color: #b3e4ec;
+}
+
+.table-hover .table-info:hover > td,
+.table-hover .table-info:hover > th {
+ background-color: #b3e4ec;
+}
+
+.table-warning,
+.table-warning > th,
+.table-warning > td {
+ background-color: #fceec9;
+}
+
+.table-warning th,
+.table-warning td,
+.table-warning thead th,
+.table-warning tbody + tbody {
+ border-color: #fadf9b;
+}
+
+.table-hover .table-warning:hover {
+ background-color: #fbe6b1;
+}
+
+.table-hover .table-warning:hover > td,
+.table-hover .table-warning:hover > th {
+ background-color: #fbe6b1;
+}
+
+.table-danger,
+.table-danger > th,
+.table-danger > td {
+ background-color: #f8ccc8;
+}
+
+.table-danger th,
+.table-danger td,
+.table-danger thead th,
+.table-danger tbody + tbody {
+ border-color: #f3a199;
+}
+
+.table-hover .table-danger:hover {
+ background-color: #f5b7b1;
+}
+
+.table-hover .table-danger:hover > td,
+.table-hover .table-danger:hover > th {
+ background-color: #f5b7b1;
+}
+
+.table-light,
+.table-light > th,
+.table-light > td {
+ background-color: #fdfdfe;
+}
+
+.table-light th,
+.table-light td,
+.table-light thead th,
+.table-light tbody + tbody {
+ border-color: #fbfcfd;
+}
+
+.table-hover .table-light:hover {
+ background-color: #ececf6;
+}
+
+.table-hover .table-light:hover > td,
+.table-hover .table-light:hover > th {
+ background-color: #ececf6;
+}
+
+.table-dark,
+.table-dark > th,
+.table-dark > td {
+ background-color: #d1d1d5;
+}
+
+.table-dark th,
+.table-dark td,
+.table-dark thead th,
+.table-dark tbody + tbody {
+ border-color: #a9aab1;
+}
+
+.table-hover .table-dark:hover {
+ background-color: #c4c4c9;
+}
+
+.table-hover .table-dark:hover > td,
+.table-hover .table-dark:hover > th {
+ background-color: #c4c4c9;
+}
+
+.table-active,
+.table-active > th,
+.table-active > td {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-hover .table-active:hover {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-hover .table-active:hover > td,
+.table-hover .table-active:hover > th {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table .thead-dark th {
+ color: #fff;
+ background-color: #5a5c69;
+ border-color: #6c6e7e;
+}
+
+.table .thead-light th {
+ color: #6e707e;
+ background-color: #eaecf4;
+ border-color: #e3e6f0;
+}
+
+.table-dark {
+ color: #fff;
+ background-color: #5a5c69;
+}
+
+.table-dark th,
+.table-dark td,
+.table-dark thead th {
+ border-color: #6c6e7e;
+}
+
+.table-dark.table-bordered {
+ border: 0;
+}
+
+.table-dark.table-striped tbody tr:nth-of-type(odd) {
+ background-color: rgba(255, 255, 255, 0.05);
+}
+
+.table-dark.table-hover tbody tr:hover {
+ color: #fff;
+ background-color: rgba(255, 255, 255, 0.075);
+}
+
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ .table-responsive-sm > .table-bordered {
+ border: 0;
+ }
+}
+
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ .table-responsive-md > .table-bordered {
+ border: 0;
+ }
+}
+
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ .table-responsive-lg > .table-bordered {
+ border: 0;
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ .table-responsive-xl > .table-bordered {
+ border: 0;
+ }
+}
+
+.table-responsive {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.table-responsive > .table-bordered {
+ border: 0;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #6e707e;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #d1d3e2;
+ border-radius: 0.35rem;
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none;
+ }
+}
+
+.form-control::-ms-expand {
+ background-color: transparent;
+ border: 0;
+}
+
+.form-control:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #6e707e;
+}
+
+.form-control:focus {
+ color: #6e707e;
+ background-color: #fff;
+ border-color: #bac8f3;
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.form-control::-webkit-input-placeholder {
+ color: #858796;
+ opacity: 1;
+}
+
+.form-control::-moz-placeholder {
+ color: #858796;
+ opacity: 1;
+}
+
+.form-control:-ms-input-placeholder {
+ color: #858796;
+ opacity: 1;
+}
+
+.form-control::-ms-input-placeholder {
+ color: #858796;
+ opacity: 1;
+}
+
+.form-control::placeholder {
+ color: #858796;
+ opacity: 1;
+}
+
+.form-control:disabled, .form-control[readonly] {
+ background-color: #eaecf4;
+ opacity: 1;
+}
+
+input[type="date"].form-control,
+input[type="time"].form-control,
+input[type="datetime-local"].form-control,
+input[type="month"].form-control {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+select.form-control:focus::-ms-value {
+ color: #6e707e;
+ background-color: #fff;
+}
+
+.form-control-file,
+.form-control-range {
+ display: block;
+ width: 100%;
+}
+
+.col-form-label {
+ padding-top: calc(0.375rem + 1px);
+ padding-bottom: calc(0.375rem + 1px);
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
+}
+
+.col-form-label-lg {
+ padding-top: calc(0.5rem + 1px);
+ padding-bottom: calc(0.5rem + 1px);
+ font-size: 1.25rem;
+ line-height: 1.5;
+}
+
+.col-form-label-sm {
+ padding-top: calc(0.25rem + 1px);
+ padding-bottom: calc(0.25rem + 1px);
+ font-size: 0.875rem;
+ line-height: 1.5;
+}
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0;
+ margin-bottom: 0;
+ font-size: 1rem;
+ line-height: 1.5;
+ color: #858796;
+ background-color: transparent;
+ border: solid transparent;
+ border-width: 1px 0;
+}
+
+.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.form-control-sm {
+ height: calc(1.5em + 0.5rem + 2px);
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ border-radius: 0.2rem;
+}
+
+.form-control-lg {
+ height: calc(1.5em + 1rem + 2px);
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ line-height: 1.5;
+ border-radius: 0.3rem;
+}
+
+select.form-control[size], select.form-control[multiple] {
+ height: auto;
+}
+
+textarea.form-control {
+ height: auto;
+}
+
+.form-group {
+ margin-bottom: 1rem;
+}
+
+.form-text {
+ display: block;
+ margin-top: 0.25rem;
+}
+
+.form-row {
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: -5px;
+ margin-left: -5px;
+}
+
+.form-row > .col,
+.form-row > [class*="col-"] {
+ padding-right: 5px;
+ padding-left: 5px;
+}
+
+.form-check {
+ position: relative;
+ display: block;
+ padding-left: 1.25rem;
+}
+
+.form-check-input {
+ position: absolute;
+ margin-top: 0.3rem;
+ margin-left: -1.25rem;
+}
+
+.form-check-input[disabled] ~ .form-check-label,
+.form-check-input:disabled ~ .form-check-label {
+ color: #858796;
+}
+
+.form-check-label {
+ margin-bottom: 0;
+}
+
+.form-check-inline {
+ display: inline-flex;
+ align-items: center;
+ padding-left: 0;
+ margin-right: 0.75rem;
+}
+
+.form-check-inline .form-check-input {
+ position: static;
+ margin-top: 0;
+ margin-right: 0.3125rem;
+ margin-left: 0;
+}
+
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 80%;
+ color: #1cc88a;
+}
+
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: .1rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ color: #fff;
+ background-color: rgba(28, 200, 138, 0.9);
+ border-radius: 0.35rem;
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:valid, .form-control.is-valid {
+ border-color: #1cc88a;
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+
+.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+ border-color: #1cc88a;
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25);
+}
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .custom-select:valid, .custom-select.is-valid {
+ border-color: #1cc88a;
+ padding-right: calc(0.75em + 2.3125rem);
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+
+.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
+ border-color: #1cc88a;
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25);
+}
+
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+ color: #1cc88a;
+}
+
+.was-validated .form-check-input:valid ~ .valid-feedback,
+.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
+.form-check-input.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
+ color: #1cc88a;
+}
+
+.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
+ border-color: #1cc88a;
+}
+
+.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
+ border-color: #34e3a4;
+ background-color: #34e3a4;
+}
+
+.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25);
+}
+
+.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
+ border-color: #1cc88a;
+}
+
+.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
+ border-color: #1cc88a;
+}
+
+.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
+ border-color: #1cc88a;
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25);
+}
+
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 80%;
+ color: #e74a3b;
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: .1rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ color: #fff;
+ background-color: rgba(231, 74, 59, 0.9);
+ border-radius: 0.35rem;
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+ border-color: #e74a3b;
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+
+.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+ border-color: #e74a3b;
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);
+}
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .custom-select:invalid, .custom-select.is-invalid {
+ border-color: #e74a3b;
+ padding-right: calc(0.75em + 2.3125rem);
+ background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+
+.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
+ border-color: #e74a3b;
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);
+}
+
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+ color: #e74a3b;
+}
+
+.was-validated .form-check-input:invalid ~ .invalid-feedback,
+.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
+.form-check-input.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
+ color: #e74a3b;
+}
+
+.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
+ border-color: #e74a3b;
+}
+
+.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
+ border-color: #ed7468;
+ background-color: #ed7468;
+}
+
+.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);
+}
+
+.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
+ border-color: #e74a3b;
+}
+
+.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
+ border-color: #e74a3b;
+}
+
+.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
+ border-color: #e74a3b;
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);
+}
+
+.form-inline {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+}
+
+.form-inline .form-check {
+ width: 100%;
+}
+
+@media (min-width: 576px) {
+ .form-inline label {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 0;
+ }
+ .form-inline .form-group {
+ display: flex;
+ flex: 0 0 auto;
+ flex-flow: row wrap;
+ align-items: center;
+ margin-bottom: 0;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-plaintext {
+ display: inline-block;
+ }
+ .form-inline .input-group,
+ .form-inline .custom-select {
+ width: auto;
+ }
+ .form-inline .form-check {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: auto;
+ padding-left: 0;
+ }
+ .form-inline .form-check-input {
+ position: relative;
+ flex-shrink: 0;
+ margin-top: 0;
+ margin-right: 0.25rem;
+ margin-left: 0;
+ }
+ .form-inline .custom-control {
+ align-items: center;
+ justify-content: center;
+ }
+ .form-inline .custom-control-label {
+ margin-bottom: 0;
+ }
+}
+
+.btn {
+ display: inline-block;
+ font-weight: 400;
+ color: #858796;
+ text-align: center;
+ vertical-align: middle;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: transparent;
+ border: 1px solid transparent;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ line-height: 1.5;
+ border-radius: 0.35rem;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none;
+ }
+}
+
+.btn:hover {
+ color: #858796;
+ text-decoration: none;
+}
+
+.btn:focus, .btn.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.btn.disabled, .btn:disabled {
+ opacity: 0.65;
+}
+
+.btn:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+
+a.btn.disabled,
+fieldset:disabled a.btn {
+ pointer-events: none;
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.btn-primary:hover {
+ color: #fff;
+ background-color: #2e59d9;
+ border-color: #2653d4;
+}
+
+.btn-primary:focus, .btn-primary.focus {
+ color: #fff;
+ background-color: #2e59d9;
+ border-color: #2653d4;
+ box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);
+}
+
+.btn-primary.disabled, .btn-primary:disabled {
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
+.show > .btn-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #2653d4;
+ border-color: #244ec9;
+}
+
+.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);
+}
+
+.btn-secondary {
+ color: #fff;
+ background-color: #858796;
+ border-color: #858796;
+}
+
+.btn-secondary:hover {
+ color: #fff;
+ background-color: #717384;
+ border-color: #6b6d7d;
+}
+
+.btn-secondary:focus, .btn-secondary.focus {
+ color: #fff;
+ background-color: #717384;
+ border-color: #6b6d7d;
+ box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);
+}
+
+.btn-secondary.disabled, .btn-secondary:disabled {
+ color: #fff;
+ background-color: #858796;
+ border-color: #858796;
+}
+
+.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
+.show > .btn-secondary.dropdown-toggle {
+ color: #fff;
+ background-color: #6b6d7d;
+ border-color: #656776;
+}
+
+.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);
+}
+
+.btn-success {
+ color: #fff;
+ background-color: #1cc88a;
+ border-color: #1cc88a;
+}
+
+.btn-success:hover {
+ color: #fff;
+ background-color: #17a673;
+ border-color: #169b6b;
+}
+
+.btn-success:focus, .btn-success.focus {
+ color: #fff;
+ background-color: #17a673;
+ border-color: #169b6b;
+ box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);
+}
+
+.btn-success.disabled, .btn-success:disabled {
+ color: #fff;
+ background-color: #1cc88a;
+ border-color: #1cc88a;
+}
+
+.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
+.show > .btn-success.dropdown-toggle {
+ color: #fff;
+ background-color: #169b6b;
+ border-color: #149063;
+}
+
+.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
+.show > .btn-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);
+}
+
+.btn-info {
+ color: #fff;
+ background-color: #36b9cc;
+ border-color: #36b9cc;
+}
+
+.btn-info:hover {
+ color: #fff;
+ background-color: #2c9faf;
+ border-color: #2a96a5;
+}
+
+.btn-info:focus, .btn-info.focus {
+ color: #fff;
+ background-color: #2c9faf;
+ border-color: #2a96a5;
+ box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);
+}
+
+.btn-info.disabled, .btn-info:disabled {
+ color: #fff;
+ background-color: #36b9cc;
+ border-color: #36b9cc;
+}
+
+.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
+.show > .btn-info.dropdown-toggle {
+ color: #fff;
+ background-color: #2a96a5;
+ border-color: #278c9b;
+}
+
+.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
+.show > .btn-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);
+}
+
+.btn-warning {
+ color: #fff;
+ background-color: #f6c23e;
+ border-color: #f6c23e;
+}
+
+.btn-warning:hover {
+ color: #fff;
+ background-color: #f4b619;
+ border-color: #f4b30d;
+}
+
+.btn-warning:focus, .btn-warning.focus {
+ color: #fff;
+ background-color: #f4b619;
+ border-color: #f4b30d;
+ box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);
+}
+
+.btn-warning.disabled, .btn-warning:disabled {
+ color: #fff;
+ background-color: #f6c23e;
+ border-color: #f6c23e;
+}
+
+.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
+.show > .btn-warning.dropdown-toggle {
+ color: #fff;
+ background-color: #f4b30d;
+ border-color: #e9aa0b;
+}
+
+.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
+.show > .btn-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #e74a3b;
+ border-color: #e74a3b;
+}
+
+.btn-danger:hover {
+ color: #fff;
+ background-color: #e02d1b;
+ border-color: #d52a1a;
+}
+
+.btn-danger:focus, .btn-danger.focus {
+ color: #fff;
+ background-color: #e02d1b;
+ border-color: #d52a1a;
+ box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);
+}
+
+.btn-danger.disabled, .btn-danger:disabled {
+ color: #fff;
+ background-color: #e74a3b;
+ border-color: #e74a3b;
+}
+
+.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
+.show > .btn-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #d52a1a;
+ border-color: #ca2819;
+}
+
+.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
+.show > .btn-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);
+}
+
+.btn-light {
+ color: #3a3b45;
+ background-color: #f8f9fc;
+ border-color: #f8f9fc;
+}
+
+.btn-light:hover {
+ color: #3a3b45;
+ background-color: #dde2f1;
+ border-color: #d4daed;
+}
+
+.btn-light:focus, .btn-light.focus {
+ color: #3a3b45;
+ background-color: #dde2f1;
+ border-color: #d4daed;
+ box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);
+}
+
+.btn-light.disabled, .btn-light:disabled {
+ color: #3a3b45;
+ background-color: #f8f9fc;
+ border-color: #f8f9fc;
+}
+
+.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
+.show > .btn-light.dropdown-toggle {
+ color: #3a3b45;
+ background-color: #d4daed;
+ border-color: #cbd3e9;
+}
+
+.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
+.show > .btn-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);
+}
+
+.btn-dark {
+ color: #fff;
+ background-color: #5a5c69;
+ border-color: #5a5c69;
+}
+
+.btn-dark:hover {
+ color: #fff;
+ background-color: #484a54;
+ border-color: #42444e;
+}
+
+.btn-dark:focus, .btn-dark.focus {
+ color: #fff;
+ background-color: #484a54;
+ border-color: #42444e;
+ box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);
+}
+
+.btn-dark.disabled, .btn-dark:disabled {
+ color: #fff;
+ background-color: #5a5c69;
+ border-color: #5a5c69;
+}
+
+.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
+.show > .btn-dark.dropdown-toggle {
+ color: #fff;
+ background-color: #42444e;
+ border-color: #3d3e47;
+}
+
+.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
+.show > .btn-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);
+}
+
+.btn-outline-primary {
+ color: #4e73df;
+ border-color: #4e73df;
+}
+
+.btn-outline-primary:hover {
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.btn-outline-primary:focus, .btn-outline-primary.focus {
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);
+}
+
+.btn-outline-primary.disabled, .btn-outline-primary:disabled {
+ color: #4e73df;
+ background-color: transparent;
+}
+
+.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
+.show > .btn-outline-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);
+}
+
+.btn-outline-secondary {
+ color: #858796;
+ border-color: #858796;
+}
+
+.btn-outline-secondary:hover {
+ color: #fff;
+ background-color: #858796;
+ border-color: #858796;
+}
+
+.btn-outline-secondary:focus, .btn-outline-secondary.focus {
+ box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);
+}
+
+.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
+ color: #858796;
+ background-color: transparent;
+}
+
+.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
+.show > .btn-outline-secondary.dropdown-toggle {
+ color: #fff;
+ background-color: #858796;
+ border-color: #858796;
+}
+
+.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);
+}
+
+.btn-outline-success {
+ color: #1cc88a;
+ border-color: #1cc88a;
+}
+
+.btn-outline-success:hover {
+ color: #fff;
+ background-color: #1cc88a;
+ border-color: #1cc88a;
+}
+
+.btn-outline-success:focus, .btn-outline-success.focus {
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);
+}
+
+.btn-outline-success.disabled, .btn-outline-success:disabled {
+ color: #1cc88a;
+ background-color: transparent;
+}
+
+.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
+.show > .btn-outline-success.dropdown-toggle {
+ color: #fff;
+ background-color: #1cc88a;
+ border-color: #1cc88a;
+}
+
+.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);
+}
+
+.btn-outline-info {
+ color: #36b9cc;
+ border-color: #36b9cc;
+}
+
+.btn-outline-info:hover {
+ color: #fff;
+ background-color: #36b9cc;
+ border-color: #36b9cc;
+}
+
+.btn-outline-info:focus, .btn-outline-info.focus {
+ box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);
+}
+
+.btn-outline-info.disabled, .btn-outline-info:disabled {
+ color: #36b9cc;
+ background-color: transparent;
+}
+
+.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
+.show > .btn-outline-info.dropdown-toggle {
+ color: #fff;
+ background-color: #36b9cc;
+ border-color: #36b9cc;
+}
+
+.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);
+}
+
+.btn-outline-warning {
+ color: #f6c23e;
+ border-color: #f6c23e;
+}
+
+.btn-outline-warning:hover {
+ color: #fff;
+ background-color: #f6c23e;
+ border-color: #f6c23e;
+}
+
+.btn-outline-warning:focus, .btn-outline-warning.focus {
+ box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);
+}
+
+.btn-outline-warning.disabled, .btn-outline-warning:disabled {
+ color: #f6c23e;
+ background-color: transparent;
+}
+
+.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
+.show > .btn-outline-warning.dropdown-toggle {
+ color: #fff;
+ background-color: #f6c23e;
+ border-color: #f6c23e;
+}
+
+.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);
+}
+
+.btn-outline-danger {
+ color: #e74a3b;
+ border-color: #e74a3b;
+}
+
+.btn-outline-danger:hover {
+ color: #fff;
+ background-color: #e74a3b;
+ border-color: #e74a3b;
+}
+
+.btn-outline-danger:focus, .btn-outline-danger.focus {
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);
+}
+
+.btn-outline-danger.disabled, .btn-outline-danger:disabled {
+ color: #e74a3b;
+ background-color: transparent;
+}
+
+.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
+.show > .btn-outline-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #e74a3b;
+ border-color: #e74a3b;
+}
+
+.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);
+}
+
+.btn-outline-light {
+ color: #f8f9fc;
+ border-color: #f8f9fc;
+}
+
+.btn-outline-light:hover {
+ color: #3a3b45;
+ background-color: #f8f9fc;
+ border-color: #f8f9fc;
+}
+
+.btn-outline-light:focus, .btn-outline-light.focus {
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);
+}
+
+.btn-outline-light.disabled, .btn-outline-light:disabled {
+ color: #f8f9fc;
+ background-color: transparent;
+}
+
+.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
+.show > .btn-outline-light.dropdown-toggle {
+ color: #3a3b45;
+ background-color: #f8f9fc;
+ border-color: #f8f9fc;
+}
+
+.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);
+}
+
+.btn-outline-dark {
+ color: #5a5c69;
+ border-color: #5a5c69;
+}
+
+.btn-outline-dark:hover {
+ color: #fff;
+ background-color: #5a5c69;
+ border-color: #5a5c69;
+}
+
+.btn-outline-dark:focus, .btn-outline-dark.focus {
+ box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5);
+}
+
+.btn-outline-dark.disabled, .btn-outline-dark:disabled {
+ color: #5a5c69;
+ background-color: transparent;
+}
+
+.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
+.show > .btn-outline-dark.dropdown-toggle {
+ color: #fff;
+ background-color: #5a5c69;
+ border-color: #5a5c69;
+}
+
+.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5);
+}
+
+.btn-link {
+ font-weight: 400;
+ color: #4e73df;
+ text-decoration: none;
+}
+
+.btn-link:hover {
+ color: #224abe;
+ text-decoration: underline;
+}
+
+.btn-link:focus, .btn-link.focus {
+ text-decoration: underline;
+}
+
+.btn-link:disabled, .btn-link.disabled {
+ color: #858796;
+ pointer-events: none;
+}
+
+.btn-lg, .btn-group-lg > .btn {
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ line-height: 1.5;
+ border-radius: 0.3rem;
+}
+
+.btn-sm, .btn-group-sm > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ border-radius: 0.2rem;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+}
+
+.btn-block + .btn-block {
+ margin-top: 0.5rem;
+}
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+
+.fade {
+ transition: opacity 0.15s linear;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .fade {
+ transition: none;
+ }
+}
+
+.fade:not(.show) {
+ opacity: 0;
+}
+
+.collapse:not(.show) {
+ display: none;
+}
+
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ transition: height 0.15s ease;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none;
+ }
+}
+
+.dropup,
+.dropright,
+.dropdown,
+.dropleft {
+ position: relative;
+}
+
+.dropdown-toggle {
+ white-space: nowrap;
+}
+
+.dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0;
+ border-left: 0.3em solid transparent;
+}
+
+.dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 10rem;
+ padding: 0.5rem 0;
+ margin: 0.125rem 0 0;
+ font-size: 0.85rem;
+ color: #858796;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #e3e6f0;
+ border-radius: 0.35rem;
+}
+
+.dropdown-menu-left {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+
+@media (min-width: 576px) {
+ .dropdown-menu-sm-left {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-sm-right {
+ right: 0;
+ left: auto;
+ }
+}
+
+@media (min-width: 768px) {
+ .dropdown-menu-md-left {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-md-right {
+ right: 0;
+ left: auto;
+ }
+}
+
+@media (min-width: 992px) {
+ .dropdown-menu-lg-left {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-lg-right {
+ right: 0;
+ left: auto;
+ }
+}
+
+@media (min-width: 1200px) {
+ .dropdown-menu-xl-left {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-xl-right {
+ right: 0;
+ left: auto;
+ }
+}
+
+.dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: 0.125rem;
+}
+
+.dropup .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0.3em solid;
+ border-left: 0.3em solid transparent;
+}
+
+.dropup .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropright .dropdown-menu {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: 0.125rem;
+}
+
+.dropright .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0;
+ border-bottom: 0.3em solid transparent;
+ border-left: 0.3em solid;
+}
+
+.dropright .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropright .dropdown-toggle::after {
+ vertical-align: 0;
+}
+
+.dropleft .dropdown-menu {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: 0.125rem;
+}
+
+.dropleft .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+}
+
+.dropleft .dropdown-toggle::after {
+ display: none;
+}
+
+.dropleft .dropdown-toggle::before {
+ display: inline-block;
+ margin-right: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0.3em solid;
+ border-bottom: 0.3em solid transparent;
+}
+
+.dropleft .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropleft .dropdown-toggle::before {
+ vertical-align: 0;
+}
+
+.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] {
+ right: auto;
+ bottom: auto;
+}
+
+.dropdown-divider {
+ height: 0;
+ margin: 0.5rem 0;
+ overflow: hidden;
+ border-top: 1px solid #eaecf4;
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: 0.25rem 1.5rem;
+ clear: both;
+ font-weight: 400;
+ color: #3a3b45;
+ text-align: inherit;
+ white-space: nowrap;
+ background-color: transparent;
+ border: 0;
+}
+
+.dropdown-item:hover, .dropdown-item:focus {
+ color: #2e2f37;
+ text-decoration: none;
+ background-color: #f8f9fc;
+}
+
+.dropdown-item.active, .dropdown-item:active {
+ color: #fff;
+ text-decoration: none;
+ background-color: #4e73df;
+}
+
+.dropdown-item.disabled, .dropdown-item:disabled {
+ color: #858796;
+ pointer-events: none;
+ background-color: transparent;
+}
+
+.dropdown-menu.show {
+ display: block;
+}
+
+.dropdown-header {
+ display: block;
+ padding: 0.5rem 1.5rem;
+ margin-bottom: 0;
+ font-size: 0.875rem;
+ color: #858796;
+ white-space: nowrap;
+}
+
+.dropdown-item-text {
+ display: block;
+ padding: 0.25rem 1.5rem;
+ color: #3a3b45;
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+}
+
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ flex: 1 1 auto;
+}
+
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover {
+ z-index: 1;
+}
+
+.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+ z-index: 1;
+}
+
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+
+.btn-toolbar .input-group {
+ width: auto;
+}
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) {
+ margin-left: -1px;
+}
+
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.dropdown-toggle-split {
+ padding-right: 0.5625rem;
+ padding-left: 0.5625rem;
+}
+
+.dropdown-toggle-split::after,
+.dropup .dropdown-toggle-split::after,
+.dropright .dropdown-toggle-split::after {
+ margin-left: 0;
+}
+
+.dropleft .dropdown-toggle-split::before {
+ margin-right: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+ padding-right: 0.375rem;
+ padding-left: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+}
+
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+ width: 100%;
+}
+
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+ margin-top: -1px;
+}
+
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.btn-group-toggle > .btn,
+.btn-group-toggle > .btn-group > .btn {
+ margin-bottom: 0;
+}
+
+.btn-group-toggle > .btn input[type="radio"],
+.btn-group-toggle > .btn input[type="checkbox"],
+.btn-group-toggle > .btn-group > .btn input[type="radio"],
+.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%;
+}
+
+.input-group > .form-control,
+.input-group > .form-control-plaintext,
+.input-group > .custom-select,
+.input-group > .custom-file {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0;
+ margin-bottom: 0;
+}
+
+.input-group > .form-control + .form-control,
+.input-group > .form-control + .custom-select,
+.input-group > .form-control + .custom-file,
+.input-group > .form-control-plaintext + .form-control,
+.input-group > .form-control-plaintext + .custom-select,
+.input-group > .form-control-plaintext + .custom-file,
+.input-group > .custom-select + .form-control,
+.input-group > .custom-select + .custom-select,
+.input-group > .custom-select + .custom-file,
+.input-group > .custom-file + .form-control,
+.input-group > .custom-file + .custom-select,
+.input-group > .custom-file + .custom-file {
+ margin-left: -1px;
+}
+
+.input-group > .form-control:focus,
+.input-group > .custom-select:focus,
+.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
+ z-index: 3;
+}
+
+.input-group > .custom-file .custom-file-input:focus {
+ z-index: 4;
+}
+
+.input-group > .form-control:not(:last-child),
+.input-group > .custom-select:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group > .form-control:not(:first-child),
+.input-group > .custom-select:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.input-group > .custom-file {
+ display: flex;
+ align-items: center;
+}
+
+.input-group > .custom-file:not(:last-child) .custom-file-label,
+.input-group > .custom-file:not(:last-child) .custom-file-label::after {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group > .custom-file:not(:first-child) .custom-file-label {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.input-group-prepend,
+.input-group-append {
+ display: flex;
+}
+
+.input-group-prepend .btn,
+.input-group-append .btn {
+ position: relative;
+ z-index: 2;
+}
+
+.input-group-prepend .btn:focus,
+.input-group-append .btn:focus {
+ z-index: 3;
+}
+
+.input-group-prepend .btn + .btn,
+.input-group-prepend .btn + .input-group-text,
+.input-group-prepend .input-group-text + .input-group-text,
+.input-group-prepend .input-group-text + .btn,
+.input-group-append .btn + .btn,
+.input-group-append .btn + .input-group-text,
+.input-group-append .input-group-text + .input-group-text,
+.input-group-append .input-group-text + .btn {
+ margin-left: -1px;
+}
+
+.input-group-prepend {
+ margin-right: -1px;
+}
+
+.input-group-append {
+ margin-left: -1px;
+}
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: 0.375rem 0.75rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #6e707e;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #eaecf4;
+ border: 1px solid #d1d3e2;
+ border-radius: 0.35rem;
+}
+
+.input-group-text input[type="radio"],
+.input-group-text input[type="checkbox"] {
+ margin-top: 0;
+}
+
+.input-group-lg > .form-control:not(textarea),
+.input-group-lg > .custom-select {
+ height: calc(1.5em + 1rem + 2px);
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .custom-select,
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ line-height: 1.5;
+ border-radius: 0.3rem;
+}
+
+.input-group-sm > .form-control:not(textarea),
+.input-group-sm > .custom-select {
+ height: calc(1.5em + 0.5rem + 2px);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .custom-select,
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ border-radius: 0.2rem;
+}
+
+.input-group-lg > .custom-select,
+.input-group-sm > .custom-select {
+ padding-right: 1.75rem;
+}
+
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group > .input-group-append:not(:last-child) > .btn,
+.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.custom-control {
+ position: relative;
+ display: block;
+ min-height: 1.5rem;
+ padding-left: 1.5rem;
+}
+
+.custom-control-inline {
+ display: inline-flex;
+ margin-right: 1rem;
+}
+
+.custom-control-input {
+ position: absolute;
+ left: 0;
+ z-index: -1;
+ width: 1rem;
+ height: 1.25rem;
+ opacity: 0;
+}
+
+.custom-control-input:checked ~ .custom-control-label::before {
+ color: #fff;
+ border-color: #4e73df;
+ background-color: #4e73df;
+}
+
+.custom-control-input:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
+ border-color: #bac8f3;
+}
+
+.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+ color: #fff;
+ background-color: #e5ebfa;
+ border-color: #e5ebfa;
+}
+
+.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {
+ color: #858796;
+}
+
+.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {
+ background-color: #eaecf4;
+}
+
+.custom-control-label {
+ position: relative;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+
+.custom-control-label::before {
+ position: absolute;
+ top: 0.25rem;
+ left: -1.5rem;
+ display: block;
+ width: 1rem;
+ height: 1rem;
+ pointer-events: none;
+ content: "";
+ background-color: #fff;
+ border: #b7b9cc solid 1px;
+}
+
+.custom-control-label::after {
+ position: absolute;
+ top: 0.25rem;
+ left: -1.5rem;
+ display: block;
+ width: 1rem;
+ height: 1rem;
+ content: "";
+ background: no-repeat 50% / 50% 50%;
+}
+
+.custom-checkbox .custom-control-label::before {
+ border-radius: 0.35rem;
+}
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
+}
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
+ border-color: #4e73df;
+ background-color: #4e73df;
+}
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
+}
+
+.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
+ background-color: rgba(78, 115, 223, 0.5);
+}
+
+.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
+ background-color: rgba(78, 115, 223, 0.5);
+}
+
+.custom-radio .custom-control-label::before {
+ border-radius: 50%;
+}
+
+.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+
+.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
+ background-color: rgba(78, 115, 223, 0.5);
+}
+
+.custom-switch {
+ padding-left: 2.25rem;
+}
+
+.custom-switch .custom-control-label::before {
+ left: -2.25rem;
+ width: 1.75rem;
+ pointer-events: all;
+ border-radius: 0.5rem;
+}
+
+.custom-switch .custom-control-label::after {
+ top: calc(0.25rem + 2px);
+ left: calc(-2.25rem + 2px);
+ width: calc(1rem - 4px);
+ height: calc(1rem - 4px);
+ background-color: #b7b9cc;
+ border-radius: 0.5rem;
+ transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .custom-switch .custom-control-label::after {
+ transition: none;
+ }
+}
+
+.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
+ background-color: #fff;
+ transform: translateX(0.75rem);
+}
+
+.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
+ background-color: rgba(78, 115, 223, 0.5);
+}
+
+.custom-select {
+ display: inline-block;
+ width: 100%;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #6e707e;
+ vertical-align: middle;
+ background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
+ border: 1px solid #d1d3e2;
+ border-radius: 0.35rem;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.custom-select:focus {
+ border-color: #bac8f3;
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-select:focus::-ms-value {
+ color: #6e707e;
+ background-color: #fff;
+}
+
+.custom-select[multiple], .custom-select[size]:not([size="1"]) {
+ height: auto;
+ padding-right: 0.75rem;
+ background-image: none;
+}
+
+.custom-select:disabled {
+ color: #858796;
+ background-color: #eaecf4;
+}
+
+.custom-select::-ms-expand {
+ display: none;
+}
+
+.custom-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #6e707e;
+}
+
+.custom-select-sm {
+ height: calc(1.5em + 0.5rem + 2px);
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ padding-left: 0.5rem;
+ font-size: 0.875rem;
+}
+
+.custom-select-lg {
+ height: calc(1.5em + 1rem + 2px);
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ font-size: 1.25rem;
+}
+
+.custom-file {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ height: calc(1.5em + 0.75rem + 2px);
+ margin-bottom: 0;
+}
+
+.custom-file-input {
+ position: relative;
+ z-index: 2;
+ width: 100%;
+ height: calc(1.5em + 0.75rem + 2px);
+ margin: 0;
+ opacity: 0;
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+ border-color: #bac8f3;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-file-input[disabled] ~ .custom-file-label,
+.custom-file-input:disabled ~ .custom-file-label {
+ background-color: #eaecf4;
+}
+
+.custom-file-input:lang(en) ~ .custom-file-label::after {
+ content: "Browse";
+}
+
+.custom-file-input ~ .custom-file-label[data-browse]::after {
+ content: attr(data-browse);
+}
+
+.custom-file-label {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1;
+ height: calc(1.5em + 0.75rem + 2px);
+ padding: 0.375rem 0.75rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #6e707e;
+ background-color: #fff;
+ border: 1px solid #d1d3e2;
+ border-radius: 0.35rem;
+}
+
+.custom-file-label::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 3;
+ display: block;
+ height: calc(1.5em + 0.75rem);
+ padding: 0.375rem 0.75rem;
+ line-height: 1.5;
+ color: #6e707e;
+ content: "Browse";
+ background-color: #eaecf4;
+ border-left: inherit;
+ border-radius: 0 0.35rem 0.35rem 0;
+}
+
+.custom-range {
+ width: 100%;
+ height: 1.4rem;
+ padding: 0;
+ background-color: transparent;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.custom-range:focus {
+ outline: none;
+}
+
+.custom-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-range:focus::-ms-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.custom-range::-moz-focus-outer {
+ border: 0;
+}
+
+.custom-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -0.25rem;
+ background-color: #4e73df;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .custom-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none;
+ }
+}
+
+.custom-range::-webkit-slider-thumb:active {
+ background-color: #e5ebfa;
+}
+
+.custom-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dddfeb;
+ border-color: transparent;
+ border-radius: 1rem;
+}
+
+.custom-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ background-color: #4e73df;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .custom-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none;
+ }
+}
+
+.custom-range::-moz-range-thumb:active {
+ background-color: #e5ebfa;
+}
+
+.custom-range::-moz-range-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dddfeb;
+ border-color: transparent;
+ border-radius: 1rem;
+}
+
+.custom-range::-ms-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: 0;
+ margin-right: 0.2rem;
+ margin-left: 0.2rem;
+ background-color: #4e73df;
+ border: 0;
+ border-radius: 1rem;
+ -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ appearance: none;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .custom-range::-ms-thumb {
+ -ms-transition: none;
+ transition: none;
+ }
+}
+
+.custom-range::-ms-thumb:active {
+ background-color: #e5ebfa;
+}
+
+.custom-range::-ms-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: transparent;
+ border-color: transparent;
+ border-width: 0.5rem;
+}
+
+.custom-range::-ms-fill-lower {
+ background-color: #dddfeb;
+ border-radius: 1rem;
+}
+
+.custom-range::-ms-fill-upper {
+ margin-right: 15px;
+ background-color: #dddfeb;
+ border-radius: 1rem;
+}
+
+.custom-range:disabled::-webkit-slider-thumb {
+ background-color: #b7b9cc;
+}
+
+.custom-range:disabled::-webkit-slider-runnable-track {
+ cursor: default;
+}
+
+.custom-range:disabled::-moz-range-thumb {
+ background-color: #b7b9cc;
+}
+
+.custom-range:disabled::-moz-range-track {
+ cursor: default;
+}
+
+.custom-range:disabled::-ms-thumb {
+ background-color: #b7b9cc;
+}
+
+.custom-control-label::before,
+.custom-file-label,
+.custom-select {
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .custom-control-label::before,
+ .custom-file-label,
+ .custom-select {
+ transition: none;
+ }
+}
+
+.nav {
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav-link {
+ display: block;
+ padding: 0.5rem 1rem;
+}
+
+.nav-link:hover, .nav-link:focus {
+ text-decoration: none;
+}
+
+.nav-link.disabled {
+ color: #858796;
+ pointer-events: none;
+ cursor: default;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #dddfeb;
+}
+
+.nav-tabs .nav-item {
+ margin-bottom: -1px;
+}
+
+.nav-tabs .nav-link {
+ border: 1px solid transparent;
+ border-top-left-radius: 0.35rem;
+ border-top-right-radius: 0.35rem;
+}
+
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+ border-color: #eaecf4 #eaecf4 #dddfeb;
+}
+
+.nav-tabs .nav-link.disabled {
+ color: #858796;
+ background-color: transparent;
+ border-color: transparent;
+}
+
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+ color: #6e707e;
+ background-color: #fff;
+ border-color: #dddfeb #dddfeb #fff;
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.nav-pills .nav-link {
+ border-radius: 0.35rem;
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+ color: #fff;
+ background-color: #4e73df;
+}
+
+.nav-fill .nav-item {
+ flex: 1 1 auto;
+ text-align: center;
+}
+
+.nav-justified .nav-item {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center;
+}
+
+.tab-content > .tab-pane {
+ display: none;
+}
+
+.tab-content > .active {
+ display: block;
+}
+
+.navbar {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0.5rem 1rem;
+}
+
+.navbar .container,
+.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.navbar-brand {
+ display: inline-block;
+ padding-top: 0.3125rem;
+ padding-bottom: 0.3125rem;
+ margin-right: 1rem;
+ font-size: 1.25rem;
+ line-height: inherit;
+ white-space: nowrap;
+}
+
+.navbar-brand:hover, .navbar-brand:focus {
+ text-decoration: none;
+}
+
+.navbar-nav {
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.navbar-nav .nav-link {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+}
+
+.navbar-text {
+ display: inline-block;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+}
+
+.navbar-collapse {
+ flex-basis: 100%;
+ flex-grow: 1;
+ align-items: center;
+}
+
+.navbar-toggler {
+ padding: 0.25rem 0.75rem;
+ font-size: 1.25rem;
+ line-height: 1;
+ background-color: transparent;
+ border: 1px solid transparent;
+ border-radius: 0.35rem;
+}
+
+.navbar-toggler:hover, .navbar-toggler:focus {
+ text-decoration: none;
+}
+
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ content: "";
+ background: no-repeat center center;
+ background-size: 100% 100%;
+}
+
+@media (max-width: 575.98px) {
+ .navbar-expand-sm > .container,
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+@media (min-width: 576px) {
+ .navbar-expand-sm {
+ flex-flow: row nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-sm .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-sm .navbar-nav .nav-link {
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ }
+ .navbar-expand-sm > .container,
+ .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {
+ flex-wrap: nowrap;
+ }
+ .navbar-expand-sm .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-sm .navbar-toggler {
+ display: none;
+ }
+}
+
+@media (max-width: 767.98px) {
+ .navbar-expand-md > .container,
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-expand-md {
+ flex-flow: row nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-md .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-md .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-md .navbar-nav .nav-link {
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ }
+ .navbar-expand-md > .container,
+ .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {
+ flex-wrap: nowrap;
+ }
+ .navbar-expand-md .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-md .navbar-toggler {
+ display: none;
+ }
+}
+
+@media (max-width: 991.98px) {
+ .navbar-expand-lg > .container,
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+@media (min-width: 992px) {
+ .navbar-expand-lg {
+ flex-flow: row nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-lg .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-lg .navbar-nav .nav-link {
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ }
+ .navbar-expand-lg > .container,
+ .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {
+ flex-wrap: nowrap;
+ }
+ .navbar-expand-lg .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-lg .navbar-toggler {
+ display: none;
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .navbar-expand-xl > .container,
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+@media (min-width: 1200px) {
+ .navbar-expand-xl {
+ flex-flow: row nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-xl .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-xl .navbar-nav .nav-link {
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ }
+ .navbar-expand-xl > .container,
+ .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {
+ flex-wrap: nowrap;
+ }
+ .navbar-expand-xl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-xl .navbar-toggler {
+ display: none;
+ }
+}
+
+.navbar-expand {
+ flex-flow: row nowrap;
+ justify-content: flex-start;
+}
+
+.navbar-expand > .container,
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.navbar-expand .navbar-nav {
+ flex-direction: row;
+}
+
+.navbar-expand .navbar-nav .dropdown-menu {
+ position: absolute;
+}
+
+.navbar-expand .navbar-nav .nav-link {
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.navbar-expand > .container,
+.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {
+ flex-wrap: nowrap;
+}
+
+.navbar-expand .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+}
+
+.navbar-expand .navbar-toggler {
+ display: none;
+}
+
+.navbar-light .navbar-brand {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-nav .nav-link {
+ color: rgba(0, 0, 0, 0.5);
+}
+
+.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.navbar-light .navbar-nav .nav-link.disabled {
+ color: rgba(0, 0, 0, 0.3);
+}
+
+.navbar-light .navbar-nav .show > .nav-link,
+.navbar-light .navbar-nav .active > .nav-link,
+.navbar-light .navbar-nav .nav-link.show,
+.navbar-light .navbar-nav .nav-link.active {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-toggler {
+ color: rgba(0, 0, 0, 0.5);
+ border-color: rgba(0, 0, 0, 0.1);
+}
+
+.navbar-light .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+.navbar-light .navbar-text {
+ color: rgba(0, 0, 0, 0.5);
+}
+
+.navbar-light .navbar-text a {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-dark .navbar-brand {
+ color: #fff;
+}
+
+.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
+ color: #fff;
+}
+
+.navbar-dark .navbar-nav .nav-link {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
+ color: rgba(255, 255, 255, 0.75);
+}
+
+.navbar-dark .navbar-nav .nav-link.disabled {
+ color: rgba(255, 255, 255, 0.25);
+}
+
+.navbar-dark .navbar-nav .show > .nav-link,
+.navbar-dark .navbar-nav .active > .nav-link,
+.navbar-dark .navbar-nav .nav-link.show,
+.navbar-dark .navbar-nav .nav-link.active {
+ color: #fff;
+}
+
+.navbar-dark .navbar-toggler {
+ color: rgba(255, 255, 255, 0.5);
+ border-color: rgba(255, 255, 255, 0.1);
+}
+
+.navbar-dark .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+.navbar-dark .navbar-text {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.navbar-dark .navbar-text a {
+ color: #fff;
+}
+
+.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {
+ color: #fff;
+}
+
+.card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: border-box;
+ border: 1px solid #e3e6f0;
+ border-radius: 0.35rem;
+}
+
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+}
+
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: calc(0.35rem - 1px);
+ border-top-right-radius: calc(0.35rem - 1px);
+}
+
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: calc(0.35rem - 1px);
+ border-bottom-left-radius: calc(0.35rem - 1px);
+}
+
+.card-body {
+ flex: 1 1 auto;
+ min-height: 1px;
+ padding: 1.25rem;
+}
+
+.card-title {
+ margin-bottom: 0.75rem;
+}
+
+.card-subtitle {
+ margin-top: -0.375rem;
+ margin-bottom: 0;
+}
+
+.card-text:last-child {
+ margin-bottom: 0;
+}
+
+.card-link:hover {
+ text-decoration: none;
+}
+
+.card-link + .card-link {
+ margin-left: 1.25rem;
+}
+
+.card-header {
+ padding: 0.75rem 1.25rem;
+ margin-bottom: 0;
+ background-color: #f8f9fc;
+ border-bottom: 1px solid #e3e6f0;
+}
+
+.card-header:first-child {
+ border-radius: calc(0.35rem - 1px) calc(0.35rem - 1px) 0 0;
+}
+
+.card-header + .list-group .list-group-item:first-child {
+ border-top: 0;
+}
+
+.card-footer {
+ padding: 0.75rem 1.25rem;
+ background-color: #f8f9fc;
+ border-top: 1px solid #e3e6f0;
+}
+
+.card-footer:last-child {
+ border-radius: 0 0 calc(0.35rem - 1px) calc(0.35rem - 1px);
+}
+
+.card-header-tabs {
+ margin-right: -0.625rem;
+ margin-bottom: -0.75rem;
+ margin-left: -0.625rem;
+ border-bottom: 0;
+}
+
+.card-header-pills {
+ margin-right: -0.625rem;
+ margin-left: -0.625rem;
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1.25rem;
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ flex-shrink: 0;
+ width: 100%;
+}
+
+.card-img,
+.card-img-top {
+ border-top-left-radius: calc(0.35rem - 1px);
+ border-top-right-radius: calc(0.35rem - 1px);
+}
+
+.card-img,
+.card-img-bottom {
+ border-bottom-right-radius: calc(0.35rem - 1px);
+ border-bottom-left-radius: calc(0.35rem - 1px);
+}
+
+.card-deck .card {
+ margin-bottom: 0.75rem;
+}
+
+@media (min-width: 576px) {
+ .card-deck {
+ display: flex;
+ flex-flow: row wrap;
+ margin-right: -0.75rem;
+ margin-left: -0.75rem;
+ }
+ .card-deck .card {
+ flex: 1 0 0%;
+ margin-right: 0.75rem;
+ margin-bottom: 0;
+ margin-left: 0.75rem;
+ }
+}
+
+.card-group > .card {
+ margin-bottom: 0.75rem;
+}
+
+@media (min-width: 576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap;
+ }
+ .card-group > .card {
+ flex: 1 0 0%;
+ margin-bottom: 0;
+ }
+ .card-group > .card + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+ .card-group > .card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-top,
+ .card-group > .card:not(:last-child) .card-header {
+ border-top-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-bottom,
+ .card-group > .card:not(:last-child) .card-footer {
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-top,
+ .card-group > .card:not(:first-child) .card-header {
+ border-top-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-bottom,
+ .card-group > .card:not(:first-child) .card-footer {
+ border-bottom-left-radius: 0;
+ }
+}
+
+.card-columns .card {
+ margin-bottom: 0.75rem;
+}
+
+@media (min-width: 576px) {
+ .card-columns {
+ -moz-column-count: 3;
+ column-count: 3;
+ -moz-column-gap: 1.25rem;
+ column-gap: 1.25rem;
+ orphans: 1;
+ widows: 1;
+ }
+ .card-columns .card {
+ display: inline-block;
+ width: 100%;
+ }
+}
+
+.accordion > .card {
+ overflow: hidden;
+}
+
+.accordion > .card:not(:last-of-type) {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.accordion > .card:not(:first-of-type) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.accordion > .card > .card-header {
+ border-radius: 0;
+ margin-bottom: -1px;
+}
+
+.breadcrumb {
+ display: flex;
+ flex-wrap: wrap;
+ padding: 0.75rem 1rem;
+ margin-bottom: 1rem;
+ list-style: none;
+ background-color: #eaecf4;
+ border-radius: 0.35rem;
+}
+
+.breadcrumb-item {
+ display: flex;
+}
+
+.breadcrumb-item + .breadcrumb-item {
+ padding-left: 0.5rem;
+}
+
+.breadcrumb-item + .breadcrumb-item::before {
+ display: inline-block;
+ padding-right: 0.5rem;
+ color: #858796;
+ content: "/";
+}
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+ text-decoration: underline;
+}
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+ text-decoration: none;
+}
+
+.breadcrumb-item.active {
+ color: #858796;
+}
+
+.pagination {
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+ border-radius: 0.35rem;
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ padding: 0.5rem 0.75rem;
+ margin-left: -1px;
+ line-height: 1.25;
+ color: #4e73df;
+ background-color: #fff;
+ border: 1px solid #dddfeb;
+}
+
+.page-link:hover {
+ z-index: 2;
+ color: #224abe;
+ text-decoration: none;
+ background-color: #eaecf4;
+ border-color: #dddfeb;
+}
+
+.page-link:focus {
+ z-index: 3;
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
+}
+
+.page-item:first-child .page-link {
+ margin-left: 0;
+ border-top-left-radius: 0.35rem;
+ border-bottom-left-radius: 0.35rem;
+}
+
+.page-item:last-child .page-link {
+ border-top-right-radius: 0.35rem;
+ border-bottom-right-radius: 0.35rem;
+}
+
+.page-item.active .page-link {
+ z-index: 3;
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.page-item.disabled .page-link {
+ color: #858796;
+ pointer-events: none;
+ cursor: auto;
+ background-color: #fff;
+ border-color: #dddfeb;
+}
+
+.pagination-lg .page-link {
+ padding: 0.75rem 1.5rem;
+ font-size: 1.25rem;
+ line-height: 1.5;
+}
+
+.pagination-lg .page-item:first-child .page-link {
+ border-top-left-radius: 0.3rem;
+ border-bottom-left-radius: 0.3rem;
+}
+
+.pagination-lg .page-item:last-child .page-link {
+ border-top-right-radius: 0.3rem;
+ border-bottom-right-radius: 0.3rem;
+}
+
+.pagination-sm .page-link {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.5;
+}
+
+.pagination-sm .page-item:first-child .page-link {
+ border-top-left-radius: 0.2rem;
+ border-bottom-left-radius: 0.2rem;
+}
+
+.pagination-sm .page-item:last-child .page-link {
+ border-top-right-radius: 0.2rem;
+ border-bottom-right-radius: 0.2rem;
+}
+
+.badge {
+ display: inline-block;
+ padding: 0.25em 0.4em;
+ font-size: 75%;
+ font-weight: 700;
+ line-height: 1;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: 0.35rem;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .badge {
+ transition: none;
+ }
+}
+
+a.badge:hover, a.badge:focus {
+ text-decoration: none;
+}
+
+.badge:empty {
+ display: none;
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.badge-pill {
+ padding-right: 0.6em;
+ padding-left: 0.6em;
+ border-radius: 10rem;
+}
+
+.badge-primary {
+ color: #fff;
+ background-color: #4e73df;
+}
+
+a.badge-primary:hover, a.badge-primary:focus {
+ color: #fff;
+ background-color: #2653d4;
+}
+
+a.badge-primary:focus, a.badge-primary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);
+}
+
+.badge-secondary {
+ color: #fff;
+ background-color: #858796;
+}
+
+a.badge-secondary:hover, a.badge-secondary:focus {
+ color: #fff;
+ background-color: #6b6d7d;
+}
+
+a.badge-secondary:focus, a.badge-secondary.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);
+}
+
+.badge-success {
+ color: #fff;
+ background-color: #1cc88a;
+}
+
+a.badge-success:hover, a.badge-success:focus {
+ color: #fff;
+ background-color: #169b6b;
+}
+
+a.badge-success:focus, a.badge-success.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);
+}
+
+.badge-info {
+ color: #fff;
+ background-color: #36b9cc;
+}
+
+a.badge-info:hover, a.badge-info:focus {
+ color: #fff;
+ background-color: #2a96a5;
+}
+
+a.badge-info:focus, a.badge-info.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);
+}
+
+.badge-warning {
+ color: #fff;
+ background-color: #f6c23e;
+}
+
+a.badge-warning:hover, a.badge-warning:focus {
+ color: #fff;
+ background-color: #f4b30d;
+}
+
+a.badge-warning:focus, a.badge-warning.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);
+}
+
+.badge-danger {
+ color: #fff;
+ background-color: #e74a3b;
+}
+
+a.badge-danger:hover, a.badge-danger:focus {
+ color: #fff;
+ background-color: #d52a1a;
+}
+
+a.badge-danger:focus, a.badge-danger.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);
+}
+
+.badge-light {
+ color: #3a3b45;
+ background-color: #f8f9fc;
+}
+
+a.badge-light:hover, a.badge-light:focus {
+ color: #3a3b45;
+ background-color: #d4daed;
+}
+
+a.badge-light:focus, a.badge-light.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);
+}
+
+.badge-dark {
+ color: #fff;
+ background-color: #5a5c69;
+}
+
+a.badge-dark:hover, a.badge-dark:focus {
+ color: #fff;
+ background-color: #42444e;
+}
+
+a.badge-dark:focus, a.badge-dark.focus {
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5);
+}
+
+.jumbotron {
+ padding: 2rem 1rem;
+ margin-bottom: 2rem;
+ background-color: #eaecf4;
+ border-radius: 0.3rem;
+}
+
+@media (min-width: 576px) {
+ .jumbotron {
+ padding: 4rem 2rem;
+ }
+}
+
+.jumbotron-fluid {
+ padding-right: 0;
+ padding-left: 0;
+ border-radius: 0;
+}
+
+.alert {
+ position: relative;
+ padding: 0.75rem 1.25rem;
+ margin-bottom: 1rem;
+ border: 1px solid transparent;
+ border-radius: 0.35rem;
+}
+
+.alert-heading {
+ color: inherit;
+}
+
+.alert-link {
+ font-weight: 700;
+}
+
+.alert-dismissible {
+ padding-right: 4rem;
+}
+
+.alert-dismissible .close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 0.75rem 1.25rem;
+ color: inherit;
+}
+
+.alert-primary {
+ color: #293c74;
+ background-color: #dce3f9;
+ border-color: #cdd8f6;
+}
+
+.alert-primary hr {
+ border-top-color: #b7c7f2;
+}
+
+.alert-primary .alert-link {
+ color: #1c294e;
+}
+
+.alert-secondary {
+ color: #45464e;
+ background-color: #e7e7ea;
+ border-color: #dddde2;
+}
+
+.alert-secondary hr {
+ border-top-color: #cfcfd6;
+}
+
+.alert-secondary .alert-link {
+ color: #2d2e33;
+}
+
+.alert-success {
+ color: #0f6848;
+ background-color: #d2f4e8;
+ border-color: #bff0de;
+}
+
+.alert-success hr {
+ border-top-color: #aaebd3;
+}
+
+.alert-success .alert-link {
+ color: #093b29;
+}
+
+.alert-info {
+ color: #1c606a;
+ background-color: #d7f1f5;
+ border-color: #c7ebf1;
+}
+
+.alert-info hr {
+ border-top-color: #b3e4ec;
+}
+
+.alert-info .alert-link {
+ color: #113b42;
+}
+
+.alert-warning {
+ color: #806520;
+ background-color: #fdf3d8;
+ border-color: #fceec9;
+}
+
+.alert-warning hr {
+ border-top-color: #fbe6b1;
+}
+
+.alert-warning .alert-link {
+ color: #574516;
+}
+
+.alert-danger {
+ color: #78261f;
+ background-color: #fadbd8;
+ border-color: #f8ccc8;
+}
+
+.alert-danger hr {
+ border-top-color: #f5b7b1;
+}
+
+.alert-danger .alert-link {
+ color: #4f1915;
+}
+
+.alert-light {
+ color: #818183;
+ background-color: #fefefe;
+ border-color: #fdfdfe;
+}
+
+.alert-light hr {
+ border-top-color: #ececf6;
+}
+
+.alert-light .alert-link {
+ color: #686869;
+}
+
+.alert-dark {
+ color: #2f3037;
+ background-color: #dedee1;
+ border-color: #d1d1d5;
+}
+
+.alert-dark hr {
+ border-top-color: #c4c4c9;
+}
+
+.alert-dark .alert-link {
+ color: #18181c;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ display: flex;
+ height: 1rem;
+ overflow: hidden;
+ line-height: 0;
+ font-size: 0.75rem;
+ background-color: #eaecf4;
+ border-radius: 0.35rem;
+}
+
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #4e73df;
+ transition: width 0.6s ease;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar {
+ transition: none;
+ }
+}
+
+.progress-bar-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 1rem 1rem;
+}
+
+.progress-bar-animated {
+ -webkit-animation: progress-bar-stripes 1s linear infinite;
+ animation: progress-bar-stripes 1s linear infinite;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ -webkit-animation: none;
+ animation: none;
+ }
+}
+
+.media {
+ display: flex;
+ align-items: flex-start;
+}
+
+.media-body {
+ flex: 1;
+}
+
+.list-group {
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: 0.35rem;
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: #6e707e;
+ text-align: inherit;
+}
+
+.list-group-item-action:hover, .list-group-item-action:focus {
+ z-index: 1;
+ color: #6e707e;
+ text-decoration: none;
+ background-color: #f8f9fc;
+}
+
+.list-group-item-action:active {
+ color: #858796;
+ background-color: #eaecf4;
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 0.75rem 1.25rem;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.125);
+}
+
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
+}
+
+.list-group-item.disabled, .list-group-item:disabled {
+ color: #858796;
+ pointer-events: none;
+ background-color: #fff;
+}
+
+.list-group-item.active {
+ z-index: 2;
+ color: #fff;
+ background-color: #4e73df;
+ border-color: #4e73df;
+}
+
+.list-group-item + .list-group-item {
+ border-top-width: 0;
+}
+
+.list-group-item + .list-group-item.active {
+ margin-top: -1px;
+ border-top-width: 1px;
+}
+
+.list-group-horizontal {
+ flex-direction: row;
+}
+
+.list-group-horizontal > .list-group-item:first-child {
+ border-bottom-left-radius: 0.35rem;
+ border-top-right-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item:last-child {
+ border-top-right-radius: 0.35rem;
+ border-bottom-left-radius: 0;
+}
+
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+}
+
+@media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child {
+ border-bottom-left-radius: 0.35rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child {
+ border-top-right-radius: 0.35rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+@media (min-width: 768px) {
+ .list-group-horizontal-md {
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child {
+ border-bottom-left-radius: 0.35rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child {
+ border-top-right-radius: 0.35rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+@media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child {
+ border-bottom-left-radius: 0.35rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child {
+ border-top-right-radius: 0.35rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child {
+ border-bottom-left-radius: 0.35rem;
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child {
+ border-top-right-radius: 0.35rem;
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px;
+ }
+}
+
+.list-group-flush {
+ border-radius: 0;
+}
+
+.list-group-flush > .list-group-item {
+ border-width: 0 0 1px;
+}
+
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
+}
+
+.list-group-item-primary {
+ color: #293c74;
+ background-color: #cdd8f6;
+}
+
+.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
+ color: #293c74;
+ background-color: #b7c7f2;
+}
+
+.list-group-item-primary.list-group-item-action.active {
+ color: #fff;
+ background-color: #293c74;
+ border-color: #293c74;
+}
+
+.list-group-item-secondary {
+ color: #45464e;
+ background-color: #dddde2;
+}
+
+.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
+ color: #45464e;
+ background-color: #cfcfd6;
+}
+
+.list-group-item-secondary.list-group-item-action.active {
+ color: #fff;
+ background-color: #45464e;
+ border-color: #45464e;
+}
+
+.list-group-item-success {
+ color: #0f6848;
+ background-color: #bff0de;
+}
+
+.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
+ color: #0f6848;
+ background-color: #aaebd3;
+}
+
+.list-group-item-success.list-group-item-action.active {
+ color: #fff;
+ background-color: #0f6848;
+ border-color: #0f6848;
+}
+
+.list-group-item-info {
+ color: #1c606a;
+ background-color: #c7ebf1;
+}
+
+.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
+ color: #1c606a;
+ background-color: #b3e4ec;
+}
+
+.list-group-item-info.list-group-item-action.active {
+ color: #fff;
+ background-color: #1c606a;
+ border-color: #1c606a;
+}
+
+.list-group-item-warning {
+ color: #806520;
+ background-color: #fceec9;
+}
+
+.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
+ color: #806520;
+ background-color: #fbe6b1;
+}
+
+.list-group-item-warning.list-group-item-action.active {
+ color: #fff;
+ background-color: #806520;
+ border-color: #806520;
+}
+
+.list-group-item-danger {
+ color: #78261f;
+ background-color: #f8ccc8;
+}
+
+.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
+ color: #78261f;
+ background-color: #f5b7b1;
+}
+
+.list-group-item-danger.list-group-item-action.active {
+ color: #fff;
+ background-color: #78261f;
+ border-color: #78261f;
+}
+
+.list-group-item-light {
+ color: #818183;
+ background-color: #fdfdfe;
+}
+
+.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
+ color: #818183;
+ background-color: #ececf6;
+}
+
+.list-group-item-light.list-group-item-action.active {
+ color: #fff;
+ background-color: #818183;
+ border-color: #818183;
+}
+
+.list-group-item-dark {
+ color: #2f3037;
+ background-color: #d1d1d5;
+}
+
+.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
+ color: #2f3037;
+ background-color: #c4c4c9;
+}
+
+.list-group-item-dark.list-group-item-action.active {
+ color: #fff;
+ background-color: #2f3037;
+ border-color: #2f3037;
+}
+
+.close {
+ float: right;
+ font-size: 1.5rem;
+ font-weight: 700;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ opacity: .5;
+}
+
+.close:hover {
+ color: #000;
+ text-decoration: none;
+}
+
+.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
+ opacity: .75;
+}
+
+button.close {
+ padding: 0;
+ background-color: transparent;
+ border: 0;
+}
+
+a.close.disabled {
+ pointer-events: none;
+}
+
+.toast {
+ max-width: 350px;
+ overflow: hidden;
+ font-size: 0.875rem;
+ background-color: rgba(255, 255, 255, 0.85);
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
+ -webkit-backdrop-filter: blur(10px);
+ backdrop-filter: blur(10px);
+ opacity: 0;
+ border-radius: 0.25rem;
+}
+
+.toast:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.toast.showing {
+ opacity: 1;
+}
+
+.toast.show {
+ display: block;
+ opacity: 1;
+}
+
+.toast.hide {
+ display: none;
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: 0.25rem 0.75rem;
+ color: #858796;
+ background-color: rgba(255, 255, 255, 0.85);
+ background-clip: padding-box;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+.toast-body {
+ padding: 0.75rem;
+}
+
+.modal-open {
+ overflow: hidden;
+}
+
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1050;
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ outline: 0;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 0.5rem;
+ pointer-events: none;
+}
+
+.modal.fade .modal-dialog {
+ transition: transform 0.3s ease-out;
+ transform: translate(0, -50px);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .modal.fade .modal-dialog {
+ transition: none;
+ }
+}
+
+.modal.show .modal-dialog {
+ transform: none;
+}
+
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+ display: flex;
+ max-height: calc(100% - 1rem);
+}
+
+.modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 1rem);
+ overflow: hidden;
+}
+
+.modal-dialog-scrollable .modal-header,
+.modal-dialog-scrollable .modal-footer {
+ flex-shrink: 0;
+}
+
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - 1rem);
+}
+
+.modal-dialog-centered::before {
+ display: block;
+ height: calc(100vh - 1rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
+ content: "";
+}
+
+.modal-dialog-centered.modal-dialog-scrollable {
+ flex-direction: column;
+ justify-content: center;
+ height: 100%;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable .modal-content {
+ max-height: none;
+}
+
+.modal-dialog-centered.modal-dialog-scrollable::before {
+ content: none;
+}
+
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ pointer-events: auto;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0.3rem;
+ outline: 0;
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000;
+}
+
+.modal-backdrop.fade {
+ opacity: 0;
+}
+
+.modal-backdrop.show {
+ opacity: 0.5;
+}
+
+.modal-header {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ padding: 1rem 1rem;
+ border-bottom: 1px solid #e3e6f0;
+ border-top-left-radius: calc(0.3rem - 1px);
+ border-top-right-radius: calc(0.3rem - 1px);
+}
+
+.modal-header .close {
+ padding: 1rem 1rem;
+ margin: -1rem -1rem -1rem auto;
+}
+
+.modal-title {
+ margin-bottom: 0;
+ line-height: 1.5;
+}
+
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: 1rem;
+}
+
+.modal-footer {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-end;
+ padding: 0.75rem;
+ border-top: 1px solid #e3e6f0;
+ border-bottom-right-radius: calc(0.3rem - 1px);
+ border-bottom-left-radius: calc(0.3rem - 1px);
+}
+
+.modal-footer > * {
+ margin: 0.25rem;
+}
+
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+@media (min-width: 576px) {
+ .modal-dialog {
+ max-width: 500px;
+ margin: 1.75rem auto;
+ }
+ .modal-dialog-scrollable {
+ max-height: calc(100% - 3.5rem);
+ }
+ .modal-dialog-scrollable .modal-content {
+ max-height: calc(100vh - 3.5rem);
+ }
+ .modal-dialog-centered {
+ min-height: calc(100% - 3.5rem);
+ }
+ .modal-dialog-centered::before {
+ height: calc(100vh - 3.5rem);
+ height: -webkit-min-content;
+ height: -moz-min-content;
+ height: min-content;
+ }
+ .modal-sm {
+ max-width: 300px;
+ }
+}
+
+@media (min-width: 992px) {
+ .modal-lg,
+ .modal-xl {
+ max-width: 800px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .modal-xl {
+ max-width: 1140px;
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ margin: 0;
+ font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ white-space: normal;
+ line-break: auto;
+ font-size: 0.875rem;
+ word-wrap: break-word;
+ opacity: 0;
+}
+
+.tooltip.show {
+ opacity: 0.9;
+}
+
+.tooltip .arrow {
+ position: absolute;
+ display: block;
+ width: 0.8rem;
+ height: 0.4rem;
+}
+
+.tooltip .arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+}
+
+.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {
+ padding: 0.4rem 0;
+}
+
+.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {
+ bottom: 0;
+}
+
+.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
+ top: 0;
+ border-width: 0.4rem 0.4rem 0;
+ border-top-color: #000;
+}
+
+.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {
+ padding: 0 0.4rem;
+}
+
+.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {
+ left: 0;
+ width: 0.4rem;
+ height: 0.8rem;
+}
+
+.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {
+ right: 0;
+ border-width: 0.4rem 0.4rem 0.4rem 0;
+ border-right-color: #000;
+}
+
+.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {
+ padding: 0.4rem 0;
+}
+
+.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {
+ top: 0;
+}
+
+.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
+ bottom: 0;
+ border-width: 0 0.4rem 0.4rem;
+ border-bottom-color: #000;
+}
+
+.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {
+ padding: 0 0.4rem;
+}
+
+.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {
+ right: 0;
+ width: 0.4rem;
+ height: 0.8rem;
+}
+
+.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {
+ left: 0;
+ border-width: 0.4rem 0 0.4rem 0.4rem;
+ border-left-color: #000;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 0.25rem 0.5rem;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: 0.35rem;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: block;
+ max-width: 276px;
+ font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ white-space: normal;
+ line-break: auto;
+ font-size: 0.875rem;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0.3rem;
+}
+
+.popover .arrow {
+ position: absolute;
+ display: block;
+ width: 1rem;
+ height: 0.5rem;
+ margin: 0 0.3rem;
+}
+
+.popover .arrow::before, .popover .arrow::after {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+}
+
+.bs-popover-top, .bs-popover-auto[x-placement^="top"] {
+ margin-bottom: 0.5rem;
+}
+
+.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
+ bottom: calc(-0.5rem - 1px);
+}
+
+.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
+ bottom: 0;
+ border-width: 0.5rem 0.5rem 0;
+ border-top-color: rgba(0, 0, 0, 0.25);
+}
+
+.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
+ bottom: 1px;
+ border-width: 0.5rem 0.5rem 0;
+ border-top-color: #fff;
+}
+
+.bs-popover-right, .bs-popover-auto[x-placement^="right"] {
+ margin-left: 0.5rem;
+}
+
+.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
+ left: calc(-0.5rem - 1px);
+ width: 0.5rem;
+ height: 1rem;
+ margin: 0.3rem 0;
+}
+
+.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
+ left: 0;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
+ border-right-color: rgba(0, 0, 0, 0.25);
+}
+
+.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
+ left: 1px;
+ border-width: 0.5rem 0.5rem 0.5rem 0;
+ border-right-color: #fff;
+}
+
+.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] {
+ margin-top: 0.5rem;
+}
+
+.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
+ top: calc(-0.5rem - 1px);
+}
+
+.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
+ top: 0;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+}
+
+.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
+ top: 1px;
+ border-width: 0 0.5rem 0.5rem 0.5rem;
+ border-bottom-color: #fff;
+}
+
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: 1rem;
+ margin-left: -0.5rem;
+ content: "";
+ border-bottom: 1px solid #f7f7f7;
+}
+
+.bs-popover-left, .bs-popover-auto[x-placement^="left"] {
+ margin-right: 0.5rem;
+}
+
+.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
+ right: calc(-0.5rem - 1px);
+ width: 0.5rem;
+ height: 1rem;
+ margin: 0.3rem 0;
+}
+
+.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
+ right: 0;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
+ border-left-color: rgba(0, 0, 0, 0.25);
+}
+
+.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
+ right: 1px;
+ border-width: 0.5rem 0 0.5rem 0.5rem;
+ border-left-color: #fff;
+}
+
+.popover-header {
+ padding: 0.5rem 0.75rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-top-left-radius: calc(0.3rem - 1px);
+ border-top-right-radius: calc(0.3rem - 1px);
+}
+
+.popover-header:empty {
+ display: none;
+}
+
+.popover-body {
+ padding: 0.5rem 0.75rem;
+ color: #858796;
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel.pointer-event {
+ touch-action: pan-y;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel-inner::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.carousel-item {
+ position: relative;
+ display: none;
+ float: left;
+ width: 100%;
+ margin-right: -100%;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transition: transform 0.6s ease-in-out;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-item {
+ transition: none;
+ }
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+ display: block;
+}
+
+.carousel-item-next:not(.carousel-item-left),
+.active.carousel-item-right {
+ transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-right),
+.active.carousel-item-left {
+ transform: translateX(-100%);
+}
+
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none;
+}
+
+.carousel-fade .carousel-item.active,
+.carousel-fade .carousel-item-next.carousel-item-left,
+.carousel-fade .carousel-item-prev.carousel-item-right {
+ z-index: 1;
+ opacity: 1;
+}
+
+.carousel-fade .active.carousel-item-left,
+.carousel-fade .active.carousel-item-right {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s 0.6s;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-fade .active.carousel-item-left,
+ .carousel-fade .active.carousel-item-right {
+ transition: none;
+ }
+}
+
+.carousel-control-prev,
+.carousel-control-next {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ color: #fff;
+ text-align: center;
+ opacity: 0.5;
+ transition: opacity 0.15s ease;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-control-prev,
+ .carousel-control-next {
+ transition: none;
+ }
+}
+
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: 0.9;
+}
+
+.carousel-control-prev {
+ left: 0;
+}
+
+.carousel-control-next {
+ right: 0;
+}
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ background: no-repeat 50% / 100% 100%;
+}
+
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e");
+}
+
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 15;
+ display: flex;
+ justify-content: center;
+ padding-left: 0;
+ margin-right: 15%;
+ margin-left: 15%;
+ list-style: none;
+}
+
+.carousel-indicators li {
+ box-sizing: content-box;
+ flex: 0 1 auto;
+ width: 30px;
+ height: 3px;
+ margin-right: 3px;
+ margin-left: 3px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #fff;
+ background-clip: padding-box;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ opacity: .5;
+ transition: opacity 0.6s ease;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-indicators li {
+ transition: none;
+ }
+}
+
+.carousel-indicators .active {
+ opacity: 1;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+}
+
+@-webkit-keyframes spinner-border {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes spinner-border {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+.spinner-border {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: text-bottom;
+ border: 0.25em solid currentColor;
+ border-right-color: transparent;
+ border-radius: 50%;
+ -webkit-animation: spinner-border .75s linear infinite;
+ animation: spinner-border .75s linear infinite;
+}
+
+.spinner-border-sm {
+ width: 1rem;
+ height: 1rem;
+ border-width: 0.2em;
+}
+
+@-webkit-keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+
+.spinner-grow {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: text-bottom;
+ background-color: currentColor;
+ border-radius: 50%;
+ opacity: 0;
+ -webkit-animation: spinner-grow .75s linear infinite;
+ animation: spinner-grow .75s linear infinite;
+}
+
+.spinner-grow-sm {
+ width: 1rem;
+ height: 1rem;
+}
+
+.align-baseline {
+ vertical-align: baseline !important;
+}
+
+.align-top {
+ vertical-align: top !important;
+}
+
+.align-middle {
+ vertical-align: middle !important;
+}
+
+.align-bottom {
+ vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+ vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+ vertical-align: text-top !important;
+}
+
+.bg-primary {
+ background-color: #4e73df !important;
+}
+
+a.bg-primary:hover, a.bg-primary:focus,
+button.bg-primary:hover,
+button.bg-primary:focus {
+ background-color: #2653d4 !important;
+}
+
+.bg-secondary {
+ background-color: #858796 !important;
+}
+
+a.bg-secondary:hover, a.bg-secondary:focus,
+button.bg-secondary:hover,
+button.bg-secondary:focus {
+ background-color: #6b6d7d !important;
+}
+
+.bg-success {
+ background-color: #1cc88a !important;
+}
+
+a.bg-success:hover, a.bg-success:focus,
+button.bg-success:hover,
+button.bg-success:focus {
+ background-color: #169b6b !important;
+}
+
+.bg-info {
+ background-color: #36b9cc !important;
+}
+
+a.bg-info:hover, a.bg-info:focus,
+button.bg-info:hover,
+button.bg-info:focus {
+ background-color: #2a96a5 !important;
+}
+
+.bg-warning {
+ background-color: #f6c23e !important;
+}
+
+a.bg-warning:hover, a.bg-warning:focus,
+button.bg-warning:hover,
+button.bg-warning:focus {
+ background-color: #f4b30d !important;
+}
+
+.bg-danger {
+ background-color: #e74a3b !important;
+}
+
+a.bg-danger:hover, a.bg-danger:focus,
+button.bg-danger:hover,
+button.bg-danger:focus {
+ background-color: #d52a1a !important;
+}
+
+.bg-light {
+ background-color: #f8f9fc !important;
+}
+
+a.bg-light:hover, a.bg-light:focus,
+button.bg-light:hover,
+button.bg-light:focus {
+ background-color: #d4daed !important;
+}
+
+.bg-dark {
+ background-color: #5a5c69 !important;
+}
+
+a.bg-dark:hover, a.bg-dark:focus,
+button.bg-dark:hover,
+button.bg-dark:focus {
+ background-color: #42444e !important;
+}
+
+.bg-white {
+ background-color: #fff !important;
+}
+
+.bg-transparent {
+ background-color: transparent !important;
+}
+
+.border {
+ border: 1px solid #e3e6f0 !important;
+}
+
+.border-top {
+ border-top: 1px solid #e3e6f0 !important;
+}
+
+.border-right {
+ border-right: 1px solid #e3e6f0 !important;
+}
+
+.border-bottom {
+ border-bottom: 1px solid #e3e6f0 !important;
+}
+
+.border-left {
+ border-left: 1px solid #e3e6f0 !important;
+}
+
+.border-0 {
+ border: 0 !important;
+}
+
+.border-top-0 {
+ border-top: 0 !important;
+}
+
+.border-right-0 {
+ border-right: 0 !important;
+}
+
+.border-bottom-0 {
+ border-bottom: 0 !important;
+}
+
+.border-left-0 {
+ border-left: 0 !important;
+}
+
+.border-primary {
+ border-color: #4e73df !important;
+}
+
+.border-secondary {
+ border-color: #858796 !important;
+}
+
+.border-success {
+ border-color: #1cc88a !important;
+}
+
+.border-info {
+ border-color: #36b9cc !important;
+}
+
+.border-warning {
+ border-color: #f6c23e !important;
+}
+
+.border-danger {
+ border-color: #e74a3b !important;
+}
+
+.border-light {
+ border-color: #f8f9fc !important;
+}
+
+.border-dark {
+ border-color: #5a5c69 !important;
+}
+
+.border-white {
+ border-color: #fff !important;
+}
+
+.rounded-sm {
+ border-radius: 0.2rem !important;
+}
+
+.rounded {
+ border-radius: 0.35rem !important;
+}
+
+.rounded-top {
+ border-top-left-radius: 0.35rem !important;
+ border-top-right-radius: 0.35rem !important;
+}
+
+.rounded-right {
+ border-top-right-radius: 0.35rem !important;
+ border-bottom-right-radius: 0.35rem !important;
+}
+
+.rounded-bottom {
+ border-bottom-right-radius: 0.35rem !important;
+ border-bottom-left-radius: 0.35rem !important;
+}
+
+.rounded-left {
+ border-top-left-radius: 0.35rem !important;
+ border-bottom-left-radius: 0.35rem !important;
+}
+
+.rounded-lg {
+ border-radius: 0.3rem !important;
+}
+
+.rounded-circle {
+ border-radius: 50% !important;
+}
+
+.rounded-pill {
+ border-radius: 50rem !important;
+}
+
+.rounded-0 {
+ border-radius: 0 !important;
+}
+
+.clearfix::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.d-none {
+ display: none !important;
+}
+
+.d-inline {
+ display: inline !important;
+}
+
+.d-inline-block {
+ display: inline-block !important;
+}
+
+.d-block {
+ display: block !important;
+}
+
+.d-table {
+ display: table !important;
+}
+
+.d-table-row {
+ display: table-row !important;
+}
+
+.d-table-cell {
+ display: table-cell !important;
+}
+
+.d-flex {
+ display: flex !important;
+}
+
+.d-inline-flex {
+ display: inline-flex !important;
+}
+
+@media (min-width: 576px) {
+ .d-sm-none {
+ display: none !important;
+ }
+ .d-sm-inline {
+ display: inline !important;
+ }
+ .d-sm-inline-block {
+ display: inline-block !important;
+ }
+ .d-sm-block {
+ display: block !important;
+ }
+ .d-sm-table {
+ display: table !important;
+ }
+ .d-sm-table-row {
+ display: table-row !important;
+ }
+ .d-sm-table-cell {
+ display: table-cell !important;
+ }
+ .d-sm-flex {
+ display: flex !important;
+ }
+ .d-sm-inline-flex {
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .d-md-none {
+ display: none !important;
+ }
+ .d-md-inline {
+ display: inline !important;
+ }
+ .d-md-inline-block {
+ display: inline-block !important;
+ }
+ .d-md-block {
+ display: block !important;
+ }
+ .d-md-table {
+ display: table !important;
+ }
+ .d-md-table-row {
+ display: table-row !important;
+ }
+ .d-md-table-cell {
+ display: table-cell !important;
+ }
+ .d-md-flex {
+ display: flex !important;
+ }
+ .d-md-inline-flex {
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .d-lg-none {
+ display: none !important;
+ }
+ .d-lg-inline {
+ display: inline !important;
+ }
+ .d-lg-inline-block {
+ display: inline-block !important;
+ }
+ .d-lg-block {
+ display: block !important;
+ }
+ .d-lg-table {
+ display: table !important;
+ }
+ .d-lg-table-row {
+ display: table-row !important;
+ }
+ .d-lg-table-cell {
+ display: table-cell !important;
+ }
+ .d-lg-flex {
+ display: flex !important;
+ }
+ .d-lg-inline-flex {
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .d-xl-none {
+ display: none !important;
+ }
+ .d-xl-inline {
+ display: inline !important;
+ }
+ .d-xl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xl-block {
+ display: block !important;
+ }
+ .d-xl-table {
+ display: table !important;
+ }
+ .d-xl-table-row {
+ display: table-row !important;
+ }
+ .d-xl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xl-flex {
+ display: flex !important;
+ }
+ .d-xl-inline-flex {
+ display: inline-flex !important;
+ }
+}
+
+@media print {
+ .d-print-none {
+ display: none !important;
+ }
+ .d-print-inline {
+ display: inline !important;
+ }
+ .d-print-inline-block {
+ display: inline-block !important;
+ }
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: inline-flex !important;
+ }
+}
+
+.embed-responsive {
+ position: relative;
+ display: block;
+ width: 100%;
+ padding: 0;
+ overflow: hidden;
+}
+
+.embed-responsive::before {
+ display: block;
+ content: "";
+}
+
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}
+
+.embed-responsive-21by9::before {
+ padding-top: 42.85714%;
+}
+
+.embed-responsive-16by9::before {
+ padding-top: 56.25%;
+}
+
+.embed-responsive-4by3::before {
+ padding-top: 75%;
+}
+
+.embed-responsive-1by1::before {
+ padding-top: 100%;
+}
+
+.flex-row {
+ flex-direction: row !important;
+}
+
+.flex-column {
+ flex-direction: column !important;
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse !important;
+}
+
+.flex-wrap {
+ flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+ flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+}
+
+.flex-fill {
+ flex: 1 1 auto !important;
+}
+
+.flex-grow-0 {
+ flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+ flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+ flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+ flex-shrink: 1 !important;
+}
+
+.justify-content-start {
+ justify-content: flex-start !important;
+}
+
+.justify-content-end {
+ justify-content: flex-end !important;
+}
+
+.justify-content-center {
+ justify-content: center !important;
+}
+
+.justify-content-between {
+ justify-content: space-between !important;
+}
+
+.justify-content-around {
+ justify-content: space-around !important;
+}
+
+.align-items-start {
+ align-items: flex-start !important;
+}
+
+.align-items-end {
+ align-items: flex-end !important;
+}
+
+.align-items-center {
+ align-items: center !important;
+}
+
+.align-items-baseline {
+ align-items: baseline !important;
+}
+
+.align-items-stretch {
+ align-items: stretch !important;
+}
+
+.align-content-start {
+ align-content: flex-start !important;
+}
+
+.align-content-end {
+ align-content: flex-end !important;
+}
+
+.align-content-center {
+ align-content: center !important;
+}
+
+.align-content-between {
+ align-content: space-between !important;
+}
+
+.align-content-around {
+ align-content: space-around !important;
+}
+
+.align-content-stretch {
+ align-content: stretch !important;
+}
+
+.align-self-auto {
+ align-self: auto !important;
+}
+
+.align-self-start {
+ align-self: flex-start !important;
+}
+
+.align-self-end {
+ align-self: flex-end !important;
+}
+
+.align-self-center {
+ align-self: center !important;
+}
+
+.align-self-baseline {
+ align-self: baseline !important;
+}
+
+.align-self-stretch {
+ align-self: stretch !important;
+}
+
+@media (min-width: 576px) {
+ .flex-sm-row {
+ flex-direction: row !important;
+ }
+ .flex-sm-column {
+ flex-direction: column !important;
+ }
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-sm-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .flex-sm-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .justify-content-sm-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-sm-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-sm-center {
+ justify-content: center !important;
+ }
+ .justify-content-sm-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-sm-around {
+ justify-content: space-around !important;
+ }
+ .align-items-sm-start {
+ align-items: flex-start !important;
+ }
+ .align-items-sm-end {
+ align-items: flex-end !important;
+ }
+ .align-items-sm-center {
+ align-items: center !important;
+ }
+ .align-items-sm-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-sm-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-sm-start {
+ align-content: flex-start !important;
+ }
+ .align-content-sm-end {
+ align-content: flex-end !important;
+ }
+ .align-content-sm-center {
+ align-content: center !important;
+ }
+ .align-content-sm-between {
+ align-content: space-between !important;
+ }
+ .align-content-sm-around {
+ align-content: space-around !important;
+ }
+ .align-content-sm-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-sm-auto {
+ align-self: auto !important;
+ }
+ .align-self-sm-start {
+ align-self: flex-start !important;
+ }
+ .align-self-sm-end {
+ align-self: flex-end !important;
+ }
+ .align-self-sm-center {
+ align-self: center !important;
+ }
+ .align-self-sm-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-sm-stretch {
+ align-self: stretch !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .flex-md-row {
+ flex-direction: row !important;
+ }
+ .flex-md-column {
+ flex-direction: column !important;
+ }
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-md-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .flex-md-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-md-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-md-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .justify-content-md-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-md-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-md-center {
+ justify-content: center !important;
+ }
+ .justify-content-md-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-md-around {
+ justify-content: space-around !important;
+ }
+ .align-items-md-start {
+ align-items: flex-start !important;
+ }
+ .align-items-md-end {
+ align-items: flex-end !important;
+ }
+ .align-items-md-center {
+ align-items: center !important;
+ }
+ .align-items-md-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-md-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-md-start {
+ align-content: flex-start !important;
+ }
+ .align-content-md-end {
+ align-content: flex-end !important;
+ }
+ .align-content-md-center {
+ align-content: center !important;
+ }
+ .align-content-md-between {
+ align-content: space-between !important;
+ }
+ .align-content-md-around {
+ align-content: space-around !important;
+ }
+ .align-content-md-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-md-auto {
+ align-self: auto !important;
+ }
+ .align-self-md-start {
+ align-self: flex-start !important;
+ }
+ .align-self-md-end {
+ align-self: flex-end !important;
+ }
+ .align-self-md-center {
+ align-self: center !important;
+ }
+ .align-self-md-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-md-stretch {
+ align-self: stretch !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .flex-lg-row {
+ flex-direction: row !important;
+ }
+ .flex-lg-column {
+ flex-direction: column !important;
+ }
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-lg-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .flex-lg-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .justify-content-lg-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-lg-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-lg-center {
+ justify-content: center !important;
+ }
+ .justify-content-lg-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-lg-around {
+ justify-content: space-around !important;
+ }
+ .align-items-lg-start {
+ align-items: flex-start !important;
+ }
+ .align-items-lg-end {
+ align-items: flex-end !important;
+ }
+ .align-items-lg-center {
+ align-items: center !important;
+ }
+ .align-items-lg-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-lg-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-lg-start {
+ align-content: flex-start !important;
+ }
+ .align-content-lg-end {
+ align-content: flex-end !important;
+ }
+ .align-content-lg-center {
+ align-content: center !important;
+ }
+ .align-content-lg-between {
+ align-content: space-between !important;
+ }
+ .align-content-lg-around {
+ align-content: space-around !important;
+ }
+ .align-content-lg-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-lg-auto {
+ align-self: auto !important;
+ }
+ .align-self-lg-start {
+ align-self: flex-start !important;
+ }
+ .align-self-lg-end {
+ align-self: flex-end !important;
+ }
+ .align-self-lg-center {
+ align-self: center !important;
+ }
+ .align-self-lg-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-lg-stretch {
+ align-self: stretch !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .flex-xl-row {
+ flex-direction: row !important;
+ }
+ .flex-xl-column {
+ flex-direction: column !important;
+ }
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .flex-xl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .justify-content-xl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xl-around {
+ justify-content: space-around !important;
+ }
+ .align-items-xl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xl-center {
+ align-items: center !important;
+ }
+ .align-items-xl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xl-center {
+ align-content: center !important;
+ }
+ .align-content-xl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xl-center {
+ align-self: center !important;
+ }
+ .align-self-xl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xl-stretch {
+ align-self: stretch !important;
+ }
+}
+
+.float-left {
+ float: left !important;
+}
+
+.float-right {
+ float: right !important;
+}
+
+.float-none {
+ float: none !important;
+}
+
+@media (min-width: 576px) {
+ .float-sm-left {
+ float: left !important;
+ }
+ .float-sm-right {
+ float: right !important;
+ }
+ .float-sm-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .float-md-left {
+ float: left !important;
+ }
+ .float-md-right {
+ float: right !important;
+ }
+ .float-md-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .float-lg-left {
+ float: left !important;
+ }
+ .float-lg-right {
+ float: right !important;
+ }
+ .float-lg-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .float-xl-left {
+ float: left !important;
+ }
+ .float-xl-right {
+ float: right !important;
+ }
+ .float-xl-none {
+ float: none !important;
+ }
+}
+
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ -ms-user-select: all !important;
+ user-select: all !important;
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ -ms-user-select: auto !important;
+ user-select: auto !important;
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+
+.overflow-auto {
+ overflow: auto !important;
+}
+
+.overflow-hidden {
+ overflow: hidden !important;
+}
+
+.position-static {
+ position: static !important;
+}
+
+.position-relative {
+ position: relative !important;
+}
+
+.position-absolute {
+ position: absolute !important;
+}
+
+.position-fixed {
+ position: fixed !important;
+}
+
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+}
+
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+@supports ((position: -webkit-sticky) or (position: sticky)) {
+ .sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border: 0;
+}
+
+.sr-only-focusable:active, .sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ overflow: visible;
+ clip: auto;
+ white-space: normal;
+}
+
+.shadow-sm {
+ box-shadow: 0 0.125rem 0.25rem 0 rgba(58, 59, 69, 0.2) !important;
+}
+
+.shadow {
+ box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15) !important;
+}
+
+.shadow-lg {
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+ box-shadow: none !important;
+}
+
+.w-25 {
+ width: 25% !important;
+}
+
+.w-50 {
+ width: 50% !important;
+}
+
+.w-75 {
+ width: 75% !important;
+}
+
+.w-100 {
+ width: 100% !important;
+}
+
+.w-auto {
+ width: auto !important;
+}
+
+.h-25 {
+ height: 25% !important;
+}
+
+.h-50 {
+ height: 50% !important;
+}
+
+.h-75 {
+ height: 75% !important;
+}
+
+.h-100 {
+ height: 100% !important;
+}
+
+.h-auto {
+ height: auto !important;
+}
+
+.mw-100 {
+ max-width: 100% !important;
+}
+
+.mh-100 {
+ max-height: 100% !important;
+}
+
+.min-vw-100 {
+ min-width: 100vw !important;
+}
+
+.min-vh-100 {
+ min-height: 100vh !important;
+}
+
+.vw-100 {
+ width: 100vw !important;
+}
+
+.vh-100 {
+ height: 100vh !important;
+}
+
+.m-0 {
+ margin: 0 !important;
+}
+
+.mt-0,
+.my-0 {
+ margin-top: 0 !important;
+}
+
+.mr-0,
+.mx-0 {
+ margin-right: 0 !important;
+}
+
+.mb-0,
+.my-0 {
+ margin-bottom: 0 !important;
+}
+
+.ml-0,
+.mx-0 {
+ margin-left: 0 !important;
+}
+
+.m-1 {
+ margin: 0.25rem !important;
+}
+
+.mt-1,
+.my-1 {
+ margin-top: 0.25rem !important;
+}
+
+.mr-1,
+.mx-1 {
+ margin-right: 0.25rem !important;
+}
+
+.mb-1,
+.my-1 {
+ margin-bottom: 0.25rem !important;
+}
+
+.ml-1,
+.mx-1 {
+ margin-left: 0.25rem !important;
+}
+
+.m-2 {
+ margin: 0.5rem !important;
+}
+
+.mt-2,
+.my-2 {
+ margin-top: 0.5rem !important;
+}
+
+.mr-2,
+.mx-2 {
+ margin-right: 0.5rem !important;
+}
+
+.mb-2,
+.my-2 {
+ margin-bottom: 0.5rem !important;
+}
+
+.ml-2,
+.mx-2 {
+ margin-left: 0.5rem !important;
+}
+
+.m-3 {
+ margin: 1rem !important;
+}
+
+.mt-3,
+.my-3 {
+ margin-top: 1rem !important;
+}
+
+.mr-3,
+.mx-3 {
+ margin-right: 1rem !important;
+}
+
+.mb-3,
+.my-3 {
+ margin-bottom: 1rem !important;
+}
+
+.ml-3,
+.mx-3 {
+ margin-left: 1rem !important;
+}
+
+.m-4 {
+ margin: 1.5rem !important;
+}
+
+.mt-4,
+.my-4 {
+ margin-top: 1.5rem !important;
+}
+
+.mr-4,
+.mx-4 {
+ margin-right: 1.5rem !important;
+}
+
+.mb-4,
+.my-4 {
+ margin-bottom: 1.5rem !important;
+}
+
+.ml-4,
+.mx-4 {
+ margin-left: 1.5rem !important;
+}
+
+.m-5 {
+ margin: 3rem !important;
+}
+
+.mt-5,
+.my-5 {
+ margin-top: 3rem !important;
+}
+
+.mr-5,
+.mx-5 {
+ margin-right: 3rem !important;
+}
+
+.mb-5,
+.my-5 {
+ margin-bottom: 3rem !important;
+}
+
+.ml-5,
+.mx-5 {
+ margin-left: 3rem !important;
+}
+
+.p-0 {
+ padding: 0 !important;
+}
+
+.pt-0,
+.py-0 {
+ padding-top: 0 !important;
+}
+
+.pr-0,
+.px-0 {
+ padding-right: 0 !important;
+}
+
+.pb-0,
+.py-0 {
+ padding-bottom: 0 !important;
+}
+
+.pl-0,
+.px-0 {
+ padding-left: 0 !important;
+}
+
+.p-1 {
+ padding: 0.25rem !important;
+}
+
+.pt-1,
+.py-1 {
+ padding-top: 0.25rem !important;
+}
+
+.pr-1,
+.px-1 {
+ padding-right: 0.25rem !important;
+}
+
+.pb-1,
+.py-1 {
+ padding-bottom: 0.25rem !important;
+}
+
+.pl-1,
+.px-1 {
+ padding-left: 0.25rem !important;
+}
+
+.p-2 {
+ padding: 0.5rem !important;
+}
+
+.pt-2,
+.py-2 {
+ padding-top: 0.5rem !important;
+}
+
+.pr-2,
+.px-2 {
+ padding-right: 0.5rem !important;
+}
+
+.pb-2,
+.py-2 {
+ padding-bottom: 0.5rem !important;
+}
+
+.pl-2,
+.px-2 {
+ padding-left: 0.5rem !important;
+}
+
+.p-3 {
+ padding: 1rem !important;
+}
+
+.pt-3,
+.py-3 {
+ padding-top: 1rem !important;
+}
+
+.pr-3,
+.px-3 {
+ padding-right: 1rem !important;
+}
+
+.pb-3,
+.py-3 {
+ padding-bottom: 1rem !important;
+}
+
+.pl-3,
+.px-3 {
+ padding-left: 1rem !important;
+}
+
+.p-4 {
+ padding: 1.5rem !important;
+}
+
+.pt-4,
+.py-4 {
+ padding-top: 1.5rem !important;
+}
+
+.pr-4,
+.px-4 {
+ padding-right: 1.5rem !important;
+}
+
+.pb-4,
+.py-4 {
+ padding-bottom: 1.5rem !important;
+}
+
+.pl-4,
+.px-4 {
+ padding-left: 1.5rem !important;
+}
+
+.p-5 {
+ padding: 3rem !important;
+}
+
+.pt-5,
+.py-5 {
+ padding-top: 3rem !important;
+}
+
+.pr-5,
+.px-5 {
+ padding-right: 3rem !important;
+}
+
+.pb-5,
+.py-5 {
+ padding-bottom: 3rem !important;
+}
+
+.pl-5,
+.px-5 {
+ padding-left: 3rem !important;
+}
+
+.m-n1 {
+ margin: -0.25rem !important;
+}
+
+.mt-n1,
+.my-n1 {
+ margin-top: -0.25rem !important;
+}
+
+.mr-n1,
+.mx-n1 {
+ margin-right: -0.25rem !important;
+}
+
+.mb-n1,
+.my-n1 {
+ margin-bottom: -0.25rem !important;
+}
+
+.ml-n1,
+.mx-n1 {
+ margin-left: -0.25rem !important;
+}
+
+.m-n2 {
+ margin: -0.5rem !important;
+}
+
+.mt-n2,
+.my-n2 {
+ margin-top: -0.5rem !important;
+}
+
+.mr-n2,
+.mx-n2 {
+ margin-right: -0.5rem !important;
+}
+
+.mb-n2,
+.my-n2 {
+ margin-bottom: -0.5rem !important;
+}
+
+.ml-n2,
+.mx-n2 {
+ margin-left: -0.5rem !important;
+}
+
+.m-n3 {
+ margin: -1rem !important;
+}
+
+.mt-n3,
+.my-n3 {
+ margin-top: -1rem !important;
+}
+
+.mr-n3,
+.mx-n3 {
+ margin-right: -1rem !important;
+}
+
+.mb-n3,
+.my-n3 {
+ margin-bottom: -1rem !important;
+}
+
+.ml-n3,
+.mx-n3 {
+ margin-left: -1rem !important;
+}
+
+.m-n4 {
+ margin: -1.5rem !important;
+}
+
+.mt-n4,
+.my-n4 {
+ margin-top: -1.5rem !important;
+}
+
+.mr-n4,
+.mx-n4 {
+ margin-right: -1.5rem !important;
+}
+
+.mb-n4,
+.my-n4 {
+ margin-bottom: -1.5rem !important;
+}
+
+.ml-n4,
+.mx-n4 {
+ margin-left: -1.5rem !important;
+}
+
+.m-n5 {
+ margin: -3rem !important;
+}
+
+.mt-n5,
+.my-n5 {
+ margin-top: -3rem !important;
+}
+
+.mr-n5,
+.mx-n5 {
+ margin-right: -3rem !important;
+}
+
+.mb-n5,
+.my-n5 {
+ margin-bottom: -3rem !important;
+}
+
+.ml-n5,
+.mx-n5 {
+ margin-left: -3rem !important;
+}
+
+.m-auto {
+ margin: auto !important;
+}
+
+.mt-auto,
+.my-auto {
+ margin-top: auto !important;
+}
+
+.mr-auto,
+.mx-auto {
+ margin-right: auto !important;
+}
+
+.mb-auto,
+.my-auto {
+ margin-bottom: auto !important;
+}
+
+.ml-auto,
+.mx-auto {
+ margin-left: auto !important;
+}
+
+@media (min-width: 576px) {
+ .m-sm-0 {
+ margin: 0 !important;
+ }
+ .mt-sm-0,
+ .my-sm-0 {
+ margin-top: 0 !important;
+ }
+ .mr-sm-0,
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ }
+ .mb-sm-0,
+ .my-sm-0 {
+ margin-bottom: 0 !important;
+ }
+ .ml-sm-0,
+ .mx-sm-0 {
+ margin-left: 0 !important;
+ }
+ .m-sm-1 {
+ margin: 0.25rem !important;
+ }
+ .mt-sm-1,
+ .my-sm-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mr-sm-1,
+ .mx-sm-1 {
+ margin-right: 0.25rem !important;
+ }
+ .mb-sm-1,
+ .my-sm-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .ml-sm-1,
+ .mx-sm-1 {
+ margin-left: 0.25rem !important;
+ }
+ .m-sm-2 {
+ margin: 0.5rem !important;
+ }
+ .mt-sm-2,
+ .my-sm-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mr-sm-2,
+ .mx-sm-2 {
+ margin-right: 0.5rem !important;
+ }
+ .mb-sm-2,
+ .my-sm-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .ml-sm-2,
+ .mx-sm-2 {
+ margin-left: 0.5rem !important;
+ }
+ .m-sm-3 {
+ margin: 1rem !important;
+ }
+ .mt-sm-3,
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ }
+ .mr-sm-3,
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ }
+ .mb-sm-3,
+ .my-sm-3 {
+ margin-bottom: 1rem !important;
+ }
+ .ml-sm-3,
+ .mx-sm-3 {
+ margin-left: 1rem !important;
+ }
+ .m-sm-4 {
+ margin: 1.5rem !important;
+ }
+ .mt-sm-4,
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mr-sm-4,
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ }
+ .mb-sm-4,
+ .my-sm-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .ml-sm-4,
+ .mx-sm-4 {
+ margin-left: 1.5rem !important;
+ }
+ .m-sm-5 {
+ margin: 3rem !important;
+ }
+ .mt-sm-5,
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ }
+ .mr-sm-5,
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ }
+ .mb-sm-5,
+ .my-sm-5 {
+ margin-bottom: 3rem !important;
+ }
+ .ml-sm-5,
+ .mx-sm-5 {
+ margin-left: 3rem !important;
+ }
+ .p-sm-0 {
+ padding: 0 !important;
+ }
+ .pt-sm-0,
+ .py-sm-0 {
+ padding-top: 0 !important;
+ }
+ .pr-sm-0,
+ .px-sm-0 {
+ padding-right: 0 !important;
+ }
+ .pb-sm-0,
+ .py-sm-0 {
+ padding-bottom: 0 !important;
+ }
+ .pl-sm-0,
+ .px-sm-0 {
+ padding-left: 0 !important;
+ }
+ .p-sm-1 {
+ padding: 0.25rem !important;
+ }
+ .pt-sm-1,
+ .py-sm-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pr-sm-1,
+ .px-sm-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pb-sm-1,
+ .py-sm-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pl-sm-1,
+ .px-sm-1 {
+ padding-left: 0.25rem !important;
+ }
+ .p-sm-2 {
+ padding: 0.5rem !important;
+ }
+ .pt-sm-2,
+ .py-sm-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pr-sm-2,
+ .px-sm-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pb-sm-2,
+ .py-sm-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pl-sm-2,
+ .px-sm-2 {
+ padding-left: 0.5rem !important;
+ }
+ .p-sm-3 {
+ padding: 1rem !important;
+ }
+ .pt-sm-3,
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ }
+ .pr-sm-3,
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ }
+ .pb-sm-3,
+ .py-sm-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pl-sm-3,
+ .px-sm-3 {
+ padding-left: 1rem !important;
+ }
+ .p-sm-4 {
+ padding: 1.5rem !important;
+ }
+ .pt-sm-4,
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pr-sm-4,
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pb-sm-4,
+ .py-sm-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pl-sm-4,
+ .px-sm-4 {
+ padding-left: 1.5rem !important;
+ }
+ .p-sm-5 {
+ padding: 3rem !important;
+ }
+ .pt-sm-5,
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ }
+ .pr-sm-5,
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-sm-5,
+ .py-sm-5 {
+ padding-bottom: 3rem !important;
+ }
+ .pl-sm-5,
+ .px-sm-5 {
+ padding-left: 3rem !important;
+ }
+ .m-sm-n1 {
+ margin: -0.25rem !important;
+ }
+ .mt-sm-n1,
+ .my-sm-n1 {
+ margin-top: -0.25rem !important;
+ }
+ .mr-sm-n1,
+ .mx-sm-n1 {
+ margin-right: -0.25rem !important;
+ }
+ .mb-sm-n1,
+ .my-sm-n1 {
+ margin-bottom: -0.25rem !important;
+ }
+ .ml-sm-n1,
+ .mx-sm-n1 {
+ margin-left: -0.25rem !important;
+ }
+ .m-sm-n2 {
+ margin: -0.5rem !important;
+ }
+ .mt-sm-n2,
+ .my-sm-n2 {
+ margin-top: -0.5rem !important;
+ }
+ .mr-sm-n2,
+ .mx-sm-n2 {
+ margin-right: -0.5rem !important;
+ }
+ .mb-sm-n2,
+ .my-sm-n2 {
+ margin-bottom: -0.5rem !important;
+ }
+ .ml-sm-n2,
+ .mx-sm-n2 {
+ margin-left: -0.5rem !important;
+ }
+ .m-sm-n3 {
+ margin: -1rem !important;
+ }
+ .mt-sm-n3,
+ .my-sm-n3 {
+ margin-top: -1rem !important;
+ }
+ .mr-sm-n3,
+ .mx-sm-n3 {
+ margin-right: -1rem !important;
+ }
+ .mb-sm-n3,
+ .my-sm-n3 {
+ margin-bottom: -1rem !important;
+ }
+ .ml-sm-n3,
+ .mx-sm-n3 {
+ margin-left: -1rem !important;
+ }
+ .m-sm-n4 {
+ margin: -1.5rem !important;
+ }
+ .mt-sm-n4,
+ .my-sm-n4 {
+ margin-top: -1.5rem !important;
+ }
+ .mr-sm-n4,
+ .mx-sm-n4 {
+ margin-right: -1.5rem !important;
+ }
+ .mb-sm-n4,
+ .my-sm-n4 {
+ margin-bottom: -1.5rem !important;
+ }
+ .ml-sm-n4,
+ .mx-sm-n4 {
+ margin-left: -1.5rem !important;
+ }
+ .m-sm-n5 {
+ margin: -3rem !important;
+ }
+ .mt-sm-n5,
+ .my-sm-n5 {
+ margin-top: -3rem !important;
+ }
+ .mr-sm-n5,
+ .mx-sm-n5 {
+ margin-right: -3rem !important;
+ }
+ .mb-sm-n5,
+ .my-sm-n5 {
+ margin-bottom: -3rem !important;
+ }
+ .ml-sm-n5,
+ .mx-sm-n5 {
+ margin-left: -3rem !important;
+ }
+ .m-sm-auto {
+ margin: auto !important;
+ }
+ .mt-sm-auto,
+ .my-sm-auto {
+ margin-top: auto !important;
+ }
+ .mr-sm-auto,
+ .mx-sm-auto {
+ margin-right: auto !important;
+ }
+ .mb-sm-auto,
+ .my-sm-auto {
+ margin-bottom: auto !important;
+ }
+ .ml-sm-auto,
+ .mx-sm-auto {
+ margin-left: auto !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .m-md-0 {
+ margin: 0 !important;
+ }
+ .mt-md-0,
+ .my-md-0 {
+ margin-top: 0 !important;
+ }
+ .mr-md-0,
+ .mx-md-0 {
+ margin-right: 0 !important;
+ }
+ .mb-md-0,
+ .my-md-0 {
+ margin-bottom: 0 !important;
+ }
+ .ml-md-0,
+ .mx-md-0 {
+ margin-left: 0 !important;
+ }
+ .m-md-1 {
+ margin: 0.25rem !important;
+ }
+ .mt-md-1,
+ .my-md-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mr-md-1,
+ .mx-md-1 {
+ margin-right: 0.25rem !important;
+ }
+ .mb-md-1,
+ .my-md-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .ml-md-1,
+ .mx-md-1 {
+ margin-left: 0.25rem !important;
+ }
+ .m-md-2 {
+ margin: 0.5rem !important;
+ }
+ .mt-md-2,
+ .my-md-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mr-md-2,
+ .mx-md-2 {
+ margin-right: 0.5rem !important;
+ }
+ .mb-md-2,
+ .my-md-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .ml-md-2,
+ .mx-md-2 {
+ margin-left: 0.5rem !important;
+ }
+ .m-md-3 {
+ margin: 1rem !important;
+ }
+ .mt-md-3,
+ .my-md-3 {
+ margin-top: 1rem !important;
+ }
+ .mr-md-3,
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ }
+ .mb-md-3,
+ .my-md-3 {
+ margin-bottom: 1rem !important;
+ }
+ .ml-md-3,
+ .mx-md-3 {
+ margin-left: 1rem !important;
+ }
+ .m-md-4 {
+ margin: 1.5rem !important;
+ }
+ .mt-md-4,
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mr-md-4,
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ }
+ .mb-md-4,
+ .my-md-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .ml-md-4,
+ .mx-md-4 {
+ margin-left: 1.5rem !important;
+ }
+ .m-md-5 {
+ margin: 3rem !important;
+ }
+ .mt-md-5,
+ .my-md-5 {
+ margin-top: 3rem !important;
+ }
+ .mr-md-5,
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ }
+ .mb-md-5,
+ .my-md-5 {
+ margin-bottom: 3rem !important;
+ }
+ .ml-md-5,
+ .mx-md-5 {
+ margin-left: 3rem !important;
+ }
+ .p-md-0 {
+ padding: 0 !important;
+ }
+ .pt-md-0,
+ .py-md-0 {
+ padding-top: 0 !important;
+ }
+ .pr-md-0,
+ .px-md-0 {
+ padding-right: 0 !important;
+ }
+ .pb-md-0,
+ .py-md-0 {
+ padding-bottom: 0 !important;
+ }
+ .pl-md-0,
+ .px-md-0 {
+ padding-left: 0 !important;
+ }
+ .p-md-1 {
+ padding: 0.25rem !important;
+ }
+ .pt-md-1,
+ .py-md-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pr-md-1,
+ .px-md-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pb-md-1,
+ .py-md-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pl-md-1,
+ .px-md-1 {
+ padding-left: 0.25rem !important;
+ }
+ .p-md-2 {
+ padding: 0.5rem !important;
+ }
+ .pt-md-2,
+ .py-md-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pr-md-2,
+ .px-md-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pb-md-2,
+ .py-md-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pl-md-2,
+ .px-md-2 {
+ padding-left: 0.5rem !important;
+ }
+ .p-md-3 {
+ padding: 1rem !important;
+ }
+ .pt-md-3,
+ .py-md-3 {
+ padding-top: 1rem !important;
+ }
+ .pr-md-3,
+ .px-md-3 {
+ padding-right: 1rem !important;
+ }
+ .pb-md-3,
+ .py-md-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pl-md-3,
+ .px-md-3 {
+ padding-left: 1rem !important;
+ }
+ .p-md-4 {
+ padding: 1.5rem !important;
+ }
+ .pt-md-4,
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pr-md-4,
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pb-md-4,
+ .py-md-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pl-md-4,
+ .px-md-4 {
+ padding-left: 1.5rem !important;
+ }
+ .p-md-5 {
+ padding: 3rem !important;
+ }
+ .pt-md-5,
+ .py-md-5 {
+ padding-top: 3rem !important;
+ }
+ .pr-md-5,
+ .px-md-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-md-5,
+ .py-md-5 {
+ padding-bottom: 3rem !important;
+ }
+ .pl-md-5,
+ .px-md-5 {
+ padding-left: 3rem !important;
+ }
+ .m-md-n1 {
+ margin: -0.25rem !important;
+ }
+ .mt-md-n1,
+ .my-md-n1 {
+ margin-top: -0.25rem !important;
+ }
+ .mr-md-n1,
+ .mx-md-n1 {
+ margin-right: -0.25rem !important;
+ }
+ .mb-md-n1,
+ .my-md-n1 {
+ margin-bottom: -0.25rem !important;
+ }
+ .ml-md-n1,
+ .mx-md-n1 {
+ margin-left: -0.25rem !important;
+ }
+ .m-md-n2 {
+ margin: -0.5rem !important;
+ }
+ .mt-md-n2,
+ .my-md-n2 {
+ margin-top: -0.5rem !important;
+ }
+ .mr-md-n2,
+ .mx-md-n2 {
+ margin-right: -0.5rem !important;
+ }
+ .mb-md-n2,
+ .my-md-n2 {
+ margin-bottom: -0.5rem !important;
+ }
+ .ml-md-n2,
+ .mx-md-n2 {
+ margin-left: -0.5rem !important;
+ }
+ .m-md-n3 {
+ margin: -1rem !important;
+ }
+ .mt-md-n3,
+ .my-md-n3 {
+ margin-top: -1rem !important;
+ }
+ .mr-md-n3,
+ .mx-md-n3 {
+ margin-right: -1rem !important;
+ }
+ .mb-md-n3,
+ .my-md-n3 {
+ margin-bottom: -1rem !important;
+ }
+ .ml-md-n3,
+ .mx-md-n3 {
+ margin-left: -1rem !important;
+ }
+ .m-md-n4 {
+ margin: -1.5rem !important;
+ }
+ .mt-md-n4,
+ .my-md-n4 {
+ margin-top: -1.5rem !important;
+ }
+ .mr-md-n4,
+ .mx-md-n4 {
+ margin-right: -1.5rem !important;
+ }
+ .mb-md-n4,
+ .my-md-n4 {
+ margin-bottom: -1.5rem !important;
+ }
+ .ml-md-n4,
+ .mx-md-n4 {
+ margin-left: -1.5rem !important;
+ }
+ .m-md-n5 {
+ margin: -3rem !important;
+ }
+ .mt-md-n5,
+ .my-md-n5 {
+ margin-top: -3rem !important;
+ }
+ .mr-md-n5,
+ .mx-md-n5 {
+ margin-right: -3rem !important;
+ }
+ .mb-md-n5,
+ .my-md-n5 {
+ margin-bottom: -3rem !important;
+ }
+ .ml-md-n5,
+ .mx-md-n5 {
+ margin-left: -3rem !important;
+ }
+ .m-md-auto {
+ margin: auto !important;
+ }
+ .mt-md-auto,
+ .my-md-auto {
+ margin-top: auto !important;
+ }
+ .mr-md-auto,
+ .mx-md-auto {
+ margin-right: auto !important;
+ }
+ .mb-md-auto,
+ .my-md-auto {
+ margin-bottom: auto !important;
+ }
+ .ml-md-auto,
+ .mx-md-auto {
+ margin-left: auto !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .m-lg-0 {
+ margin: 0 !important;
+ }
+ .mt-lg-0,
+ .my-lg-0 {
+ margin-top: 0 !important;
+ }
+ .mr-lg-0,
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ }
+ .mb-lg-0,
+ .my-lg-0 {
+ margin-bottom: 0 !important;
+ }
+ .ml-lg-0,
+ .mx-lg-0 {
+ margin-left: 0 !important;
+ }
+ .m-lg-1 {
+ margin: 0.25rem !important;
+ }
+ .mt-lg-1,
+ .my-lg-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mr-lg-1,
+ .mx-lg-1 {
+ margin-right: 0.25rem !important;
+ }
+ .mb-lg-1,
+ .my-lg-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .ml-lg-1,
+ .mx-lg-1 {
+ margin-left: 0.25rem !important;
+ }
+ .m-lg-2 {
+ margin: 0.5rem !important;
+ }
+ .mt-lg-2,
+ .my-lg-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mr-lg-2,
+ .mx-lg-2 {
+ margin-right: 0.5rem !important;
+ }
+ .mb-lg-2,
+ .my-lg-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .ml-lg-2,
+ .mx-lg-2 {
+ margin-left: 0.5rem !important;
+ }
+ .m-lg-3 {
+ margin: 1rem !important;
+ }
+ .mt-lg-3,
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ }
+ .mr-lg-3,
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ }
+ .mb-lg-3,
+ .my-lg-3 {
+ margin-bottom: 1rem !important;
+ }
+ .ml-lg-3,
+ .mx-lg-3 {
+ margin-left: 1rem !important;
+ }
+ .m-lg-4 {
+ margin: 1.5rem !important;
+ }
+ .mt-lg-4,
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mr-lg-4,
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ }
+ .mb-lg-4,
+ .my-lg-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .ml-lg-4,
+ .mx-lg-4 {
+ margin-left: 1.5rem !important;
+ }
+ .m-lg-5 {
+ margin: 3rem !important;
+ }
+ .mt-lg-5,
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ }
+ .mr-lg-5,
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ }
+ .mb-lg-5,
+ .my-lg-5 {
+ margin-bottom: 3rem !important;
+ }
+ .ml-lg-5,
+ .mx-lg-5 {
+ margin-left: 3rem !important;
+ }
+ .p-lg-0 {
+ padding: 0 !important;
+ }
+ .pt-lg-0,
+ .py-lg-0 {
+ padding-top: 0 !important;
+ }
+ .pr-lg-0,
+ .px-lg-0 {
+ padding-right: 0 !important;
+ }
+ .pb-lg-0,
+ .py-lg-0 {
+ padding-bottom: 0 !important;
+ }
+ .pl-lg-0,
+ .px-lg-0 {
+ padding-left: 0 !important;
+ }
+ .p-lg-1 {
+ padding: 0.25rem !important;
+ }
+ .pt-lg-1,
+ .py-lg-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pr-lg-1,
+ .px-lg-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pb-lg-1,
+ .py-lg-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pl-lg-1,
+ .px-lg-1 {
+ padding-left: 0.25rem !important;
+ }
+ .p-lg-2 {
+ padding: 0.5rem !important;
+ }
+ .pt-lg-2,
+ .py-lg-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pr-lg-2,
+ .px-lg-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pb-lg-2,
+ .py-lg-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pl-lg-2,
+ .px-lg-2 {
+ padding-left: 0.5rem !important;
+ }
+ .p-lg-3 {
+ padding: 1rem !important;
+ }
+ .pt-lg-3,
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ }
+ .pr-lg-3,
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ }
+ .pb-lg-3,
+ .py-lg-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pl-lg-3,
+ .px-lg-3 {
+ padding-left: 1rem !important;
+ }
+ .p-lg-4 {
+ padding: 1.5rem !important;
+ }
+ .pt-lg-4,
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pr-lg-4,
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pb-lg-4,
+ .py-lg-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pl-lg-4,
+ .px-lg-4 {
+ padding-left: 1.5rem !important;
+ }
+ .p-lg-5 {
+ padding: 3rem !important;
+ }
+ .pt-lg-5,
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ }
+ .pr-lg-5,
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-lg-5,
+ .py-lg-5 {
+ padding-bottom: 3rem !important;
+ }
+ .pl-lg-5,
+ .px-lg-5 {
+ padding-left: 3rem !important;
+ }
+ .m-lg-n1 {
+ margin: -0.25rem !important;
+ }
+ .mt-lg-n1,
+ .my-lg-n1 {
+ margin-top: -0.25rem !important;
+ }
+ .mr-lg-n1,
+ .mx-lg-n1 {
+ margin-right: -0.25rem !important;
+ }
+ .mb-lg-n1,
+ .my-lg-n1 {
+ margin-bottom: -0.25rem !important;
+ }
+ .ml-lg-n1,
+ .mx-lg-n1 {
+ margin-left: -0.25rem !important;
+ }
+ .m-lg-n2 {
+ margin: -0.5rem !important;
+ }
+ .mt-lg-n2,
+ .my-lg-n2 {
+ margin-top: -0.5rem !important;
+ }
+ .mr-lg-n2,
+ .mx-lg-n2 {
+ margin-right: -0.5rem !important;
+ }
+ .mb-lg-n2,
+ .my-lg-n2 {
+ margin-bottom: -0.5rem !important;
+ }
+ .ml-lg-n2,
+ .mx-lg-n2 {
+ margin-left: -0.5rem !important;
+ }
+ .m-lg-n3 {
+ margin: -1rem !important;
+ }
+ .mt-lg-n3,
+ .my-lg-n3 {
+ margin-top: -1rem !important;
+ }
+ .mr-lg-n3,
+ .mx-lg-n3 {
+ margin-right: -1rem !important;
+ }
+ .mb-lg-n3,
+ .my-lg-n3 {
+ margin-bottom: -1rem !important;
+ }
+ .ml-lg-n3,
+ .mx-lg-n3 {
+ margin-left: -1rem !important;
+ }
+ .m-lg-n4 {
+ margin: -1.5rem !important;
+ }
+ .mt-lg-n4,
+ .my-lg-n4 {
+ margin-top: -1.5rem !important;
+ }
+ .mr-lg-n4,
+ .mx-lg-n4 {
+ margin-right: -1.5rem !important;
+ }
+ .mb-lg-n4,
+ .my-lg-n4 {
+ margin-bottom: -1.5rem !important;
+ }
+ .ml-lg-n4,
+ .mx-lg-n4 {
+ margin-left: -1.5rem !important;
+ }
+ .m-lg-n5 {
+ margin: -3rem !important;
+ }
+ .mt-lg-n5,
+ .my-lg-n5 {
+ margin-top: -3rem !important;
+ }
+ .mr-lg-n5,
+ .mx-lg-n5 {
+ margin-right: -3rem !important;
+ }
+ .mb-lg-n5,
+ .my-lg-n5 {
+ margin-bottom: -3rem !important;
+ }
+ .ml-lg-n5,
+ .mx-lg-n5 {
+ margin-left: -3rem !important;
+ }
+ .m-lg-auto {
+ margin: auto !important;
+ }
+ .mt-lg-auto,
+ .my-lg-auto {
+ margin-top: auto !important;
+ }
+ .mr-lg-auto,
+ .mx-lg-auto {
+ margin-right: auto !important;
+ }
+ .mb-lg-auto,
+ .my-lg-auto {
+ margin-bottom: auto !important;
+ }
+ .ml-lg-auto,
+ .mx-lg-auto {
+ margin-left: auto !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .m-xl-0 {
+ margin: 0 !important;
+ }
+ .mt-xl-0,
+ .my-xl-0 {
+ margin-top: 0 !important;
+ }
+ .mr-xl-0,
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ }
+ .mb-xl-0,
+ .my-xl-0 {
+ margin-bottom: 0 !important;
+ }
+ .ml-xl-0,
+ .mx-xl-0 {
+ margin-left: 0 !important;
+ }
+ .m-xl-1 {
+ margin: 0.25rem !important;
+ }
+ .mt-xl-1,
+ .my-xl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mr-xl-1,
+ .mx-xl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .mb-xl-1,
+ .my-xl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .ml-xl-1,
+ .mx-xl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .m-xl-2 {
+ margin: 0.5rem !important;
+ }
+ .mt-xl-2,
+ .my-xl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mr-xl-2,
+ .mx-xl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .mb-xl-2,
+ .my-xl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .ml-xl-2,
+ .mx-xl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .m-xl-3 {
+ margin: 1rem !important;
+ }
+ .mt-xl-3,
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ }
+ .mr-xl-3,
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ }
+ .mb-xl-3,
+ .my-xl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .ml-xl-3,
+ .mx-xl-3 {
+ margin-left: 1rem !important;
+ }
+ .m-xl-4 {
+ margin: 1.5rem !important;
+ }
+ .mt-xl-4,
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mr-xl-4,
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .mb-xl-4,
+ .my-xl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .ml-xl-4,
+ .mx-xl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .m-xl-5 {
+ margin: 3rem !important;
+ }
+ .mt-xl-5,
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ }
+ .mr-xl-5,
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ }
+ .mb-xl-5,
+ .my-xl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .ml-xl-5,
+ .mx-xl-5 {
+ margin-left: 3rem !important;
+ }
+ .p-xl-0 {
+ padding: 0 !important;
+ }
+ .pt-xl-0,
+ .py-xl-0 {
+ padding-top: 0 !important;
+ }
+ .pr-xl-0,
+ .px-xl-0 {
+ padding-right: 0 !important;
+ }
+ .pb-xl-0,
+ .py-xl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pl-xl-0,
+ .px-xl-0 {
+ padding-left: 0 !important;
+ }
+ .p-xl-1 {
+ padding: 0.25rem !important;
+ }
+ .pt-xl-1,
+ .py-xl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pr-xl-1,
+ .px-xl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pb-xl-1,
+ .py-xl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pl-xl-1,
+ .px-xl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .p-xl-2 {
+ padding: 0.5rem !important;
+ }
+ .pt-xl-2,
+ .py-xl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pr-xl-2,
+ .px-xl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pb-xl-2,
+ .py-xl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pl-xl-2,
+ .px-xl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .p-xl-3 {
+ padding: 1rem !important;
+ }
+ .pt-xl-3,
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ }
+ .pr-xl-3,
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ }
+ .pb-xl-3,
+ .py-xl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pl-xl-3,
+ .px-xl-3 {
+ padding-left: 1rem !important;
+ }
+ .p-xl-4 {
+ padding: 1.5rem !important;
+ }
+ .pt-xl-4,
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pr-xl-4,
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pb-xl-4,
+ .py-xl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pl-xl-4,
+ .px-xl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .p-xl-5 {
+ padding: 3rem !important;
+ }
+ .pt-xl-5,
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ }
+ .pr-xl-5,
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xl-5,
+ .py-xl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .pl-xl-5,
+ .px-xl-5 {
+ padding-left: 3rem !important;
+ }
+ .m-xl-n1 {
+ margin: -0.25rem !important;
+ }
+ .mt-xl-n1,
+ .my-xl-n1 {
+ margin-top: -0.25rem !important;
+ }
+ .mr-xl-n1,
+ .mx-xl-n1 {
+ margin-right: -0.25rem !important;
+ }
+ .mb-xl-n1,
+ .my-xl-n1 {
+ margin-bottom: -0.25rem !important;
+ }
+ .ml-xl-n1,
+ .mx-xl-n1 {
+ margin-left: -0.25rem !important;
+ }
+ .m-xl-n2 {
+ margin: -0.5rem !important;
+ }
+ .mt-xl-n2,
+ .my-xl-n2 {
+ margin-top: -0.5rem !important;
+ }
+ .mr-xl-n2,
+ .mx-xl-n2 {
+ margin-right: -0.5rem !important;
+ }
+ .mb-xl-n2,
+ .my-xl-n2 {
+ margin-bottom: -0.5rem !important;
+ }
+ .ml-xl-n2,
+ .mx-xl-n2 {
+ margin-left: -0.5rem !important;
+ }
+ .m-xl-n3 {
+ margin: -1rem !important;
+ }
+ .mt-xl-n3,
+ .my-xl-n3 {
+ margin-top: -1rem !important;
+ }
+ .mr-xl-n3,
+ .mx-xl-n3 {
+ margin-right: -1rem !important;
+ }
+ .mb-xl-n3,
+ .my-xl-n3 {
+ margin-bottom: -1rem !important;
+ }
+ .ml-xl-n3,
+ .mx-xl-n3 {
+ margin-left: -1rem !important;
+ }
+ .m-xl-n4 {
+ margin: -1.5rem !important;
+ }
+ .mt-xl-n4,
+ .my-xl-n4 {
+ margin-top: -1.5rem !important;
+ }
+ .mr-xl-n4,
+ .mx-xl-n4 {
+ margin-right: -1.5rem !important;
+ }
+ .mb-xl-n4,
+ .my-xl-n4 {
+ margin-bottom: -1.5rem !important;
+ }
+ .ml-xl-n4,
+ .mx-xl-n4 {
+ margin-left: -1.5rem !important;
+ }
+ .m-xl-n5 {
+ margin: -3rem !important;
+ }
+ .mt-xl-n5,
+ .my-xl-n5 {
+ margin-top: -3rem !important;
+ }
+ .mr-xl-n5,
+ .mx-xl-n5 {
+ margin-right: -3rem !important;
+ }
+ .mb-xl-n5,
+ .my-xl-n5 {
+ margin-bottom: -3rem !important;
+ }
+ .ml-xl-n5,
+ .mx-xl-n5 {
+ margin-left: -3rem !important;
+ }
+ .m-xl-auto {
+ margin: auto !important;
+ }
+ .mt-xl-auto,
+ .my-xl-auto {
+ margin-top: auto !important;
+ }
+ .mr-xl-auto,
+ .mx-xl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xl-auto,
+ .my-xl-auto {
+ margin-bottom: auto !important;
+ }
+ .ml-xl-auto,
+ .mx-xl-auto {
+ margin-left: auto !important;
+ }
+}
+
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ pointer-events: auto;
+ content: "";
+ background-color: rgba(0, 0, 0, 0);
+}
+
+.text-monospace {
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
+}
+
+.text-justify {
+ text-align: justify !important;
+}
+
+.text-wrap {
+ white-space: normal !important;
+}
+
+.text-nowrap {
+ white-space: nowrap !important;
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.text-left {
+ text-align: left !important;
+}
+
+.text-right {
+ text-align: right !important;
+}
+
+.text-center {
+ text-align: center !important;
+}
+
+@media (min-width: 576px) {
+ .text-sm-left {
+ text-align: left !important;
+ }
+ .text-sm-right {
+ text-align: right !important;
+ }
+ .text-sm-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .text-md-left {
+ text-align: left !important;
+ }
+ .text-md-right {
+ text-align: right !important;
+ }
+ .text-md-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .text-lg-left {
+ text-align: left !important;
+ }
+ .text-lg-right {
+ text-align: right !important;
+ }
+ .text-lg-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .text-xl-left {
+ text-align: left !important;
+ }
+ .text-xl-right {
+ text-align: right !important;
+ }
+ .text-xl-center {
+ text-align: center !important;
+ }
+}
+
+.text-lowercase {
+ text-transform: lowercase !important;
+}
+
+.text-uppercase, .dropdown .dropdown-menu .dropdown-header, .sidebar .sidebar-heading {
+ text-transform: uppercase !important;
+}
+
+.text-capitalize {
+ text-transform: capitalize !important;
+}
+
+.font-weight-light {
+ font-weight: 300 !important;
+}
+
+.font-weight-lighter {
+ font-weight: lighter !important;
+}
+
+.font-weight-normal {
+ font-weight: 400 !important;
+}
+
+.font-weight-bold {
+ font-weight: 700 !important;
+}
+
+.font-weight-bolder {
+ font-weight: bolder !important;
+}
+
+.font-italic {
+ font-style: italic !important;
+}
+
+.text-white {
+ color: #fff !important;
+}
+
+.text-primary {
+ color: #4e73df !important;
+}
+
+a.text-primary:hover, a.text-primary:focus {
+ color: #224abe !important;
+}
+
+.text-secondary {
+ color: #858796 !important;
+}
+
+a.text-secondary:hover, a.text-secondary:focus {
+ color: #60616f !important;
+}
+
+.text-success {
+ color: #1cc88a !important;
+}
+
+a.text-success:hover, a.text-success:focus {
+ color: #13855c !important;
+}
+
+.text-info {
+ color: #36b9cc !important;
+}
+
+a.text-info:hover, a.text-info:focus {
+ color: #258391 !important;
+}
+
+.text-warning {
+ color: #f6c23e !important;
+}
+
+a.text-warning:hover, a.text-warning:focus {
+ color: #dda20a !important;
+}
+
+.text-danger {
+ color: #e74a3b !important;
+}
+
+a.text-danger:hover, a.text-danger:focus {
+ color: #be2617 !important;
+}
+
+.text-light {
+ color: #f8f9fc !important;
+}
+
+a.text-light:hover, a.text-light:focus {
+ color: #c2cbe5 !important;
+}
+
+.text-dark {
+ color: #5a5c69 !important;
+}
+
+a.text-dark:hover, a.text-dark:focus {
+ color: #373840 !important;
+}
+
+.text-body {
+ color: #858796 !important;
+}
+
+.text-muted {
+ color: #858796 !important;
+}
+
+.text-black-50 {
+ color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+ color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.text-decoration-none {
+ text-decoration: none !important;
+}
+
+.text-break {
+ word-wrap: break-word !important;
+}
+
+.text-reset {
+ color: inherit !important;
+}
+
+.visible {
+ visibility: visible !important;
+}
+
+.invisible {
+ visibility: hidden !important;
+}
+
+@media print {
+ *,
+ *::before,
+ *::after {
+ text-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a:not(.btn) {
+ text-decoration: underline;
+ }
+ abbr[title]::after {
+ content: " (" attr(title) ")";
+ }
+ pre {
+ white-space: pre-wrap !important;
+ }
+ pre,
+ blockquote {
+ border: 1px solid #b7b9cc;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ @page {
+ size: a3;
+ }
+ body {
+ min-width: 992px !important;
+ }
+ .container {
+ min-width: 992px !important;
+ }
+ .navbar {
+ display: none;
+ }
+ .badge {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #dddfeb !important;
+ }
+ .table-dark {
+ color: inherit;
+ }
+ .table-dark th,
+ .table-dark td,
+ .table-dark thead th,
+ .table-dark tbody + tbody {
+ border-color: #e3e6f0;
+ }
+ .table .thead-dark th {
+ color: inherit;
+ border-color: #e3e6f0;
+ }
+}
+
+html {
+ position: relative;
+ min-height: 100%;
+}
+
+body {
+ height: 100%;
+}
+
+a:focus {
+ outline: none;
+}
+
+#wrapper {
+ display: flex;
+ padding-top: 57px;
+ height: 100vh;
+ overflow: hidden;
+}
+
+#wrapper #content-wrapper {
+ background-color: #f8f9fc;
+ width: 100%;
+ overflow-x: hidden;
+}
+
+#wrapper #content-wrapper #content {
+ flex: 1 0 auto;
+}
+
+.container, .container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+}
+
+.scroll-to-top {
+ position: fixed;
+ right: 1rem;
+ bottom: 1rem;
+ display: none;
+ width: 2.75rem;
+ height: 2.75rem;
+ text-align: center;
+ color: #fff;
+ background: rgba(90, 92, 105, 0.5);
+ line-height: 46px;
+}
+
+.scroll-to-top:focus, .scroll-to-top:hover {
+ color: white;
+}
+
+.scroll-to-top:hover {
+ background: #5a5c69;
+}
+
+.scroll-to-top i {
+ font-weight: 800;
+}
+
+@-webkit-keyframes growIn {
+ 0% {
+ transform: scale(0.9);
+ opacity: 0;
+ }
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+
+@keyframes growIn {
+ 0% {
+ transform: scale(0.9);
+ opacity: 0;
+ }
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+
+.animated--grow-in, .sidebar .nav-item .collapse {
+ -webkit-animation-name: growIn;
+ animation-name: growIn;
+ -webkit-animation-duration: 200ms;
+ animation-duration: 200ms;
+ -webkit-animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1);
+ animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1);
+}
+
+@-webkit-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+.animated--fade-in {
+ -webkit-animation-name: fadeIn;
+ animation-name: fadeIn;
+ -webkit-animation-duration: 200ms;
+ animation-duration: 200ms;
+ -webkit-animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1);
+ animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1);
+}
+
+.bg-gradient-primary {
+ // background-color: #4e73df;
+ background-color: #6c6c6c;
+ // background-image: linear-gradient(180deg, #4e73df 10%, #224abe 100%);
+ background-size: cover;
+}
+
+.bg-gradient-secondary {
+ background-color: #858796;
+ background-image: linear-gradient(180deg, #858796 10%, #60616f 100%);
+ background-size: cover;
+}
+
+.bg-gradient-success {
+ background-color: #1cc88a;
+ background-image: linear-gradient(180deg, #1cc88a 10%, #13855c 100%);
+ background-size: cover;
+}
+
+.bg-gradient-info {
+ background-color: #36b9cc;
+ background-image: linear-gradient(180deg, #36b9cc 10%, #258391 100%);
+ background-size: cover;
+}
+
+.bg-gradient-warning {
+ background-color: #f6c23e;
+ background-image: linear-gradient(180deg, #f6c23e 10%, #dda20a 100%);
+ background-size: cover;
+}
+
+.bg-gradient-danger {
+ background-color: #e74a3b;
+ background-image: linear-gradient(180deg, #e74a3b 10%, #be2617 100%);
+ background-size: cover;
+}
+
+.bg-gradient-light {
+ background-color: #f8f9fc;
+ background-image: linear-gradient(180deg, #f8f9fc 10%, #c2cbe5 100%);
+ background-size: cover;
+}
+
+.bg-gradient-dark {
+ background-color: #5a5c69;
+ background-image: linear-gradient(180deg, #5a5c69 10%, #373840 100%);
+ background-size: cover;
+}
+
+.bg-gray-100 {
+ background-color: #f8f9fc !important;
+}
+
+.bg-gray-200 {
+ background-color: #eaecf4 !important;
+}
+
+.bg-gray-300 {
+ background-color: #dddfeb !important;
+}
+
+.bg-gray-400 {
+ background-color: #d1d3e2 !important;
+}
+
+.bg-gray-500 {
+ background-color: #b7b9cc !important;
+}
+
+.bg-gray-600 {
+ background-color: #858796 !important;
+}
+
+.bg-gray-700 {
+ background-color: #6e707e !important;
+}
+
+.bg-gray-800 {
+ background-color: #5a5c69 !important;
+}
+
+.bg-gray-900 {
+ background-color: #3a3b45 !important;
+}
+
+.o-hidden {
+ overflow: hidden !important;
+}
+
+.text-xs {
+ font-size: .7rem;
+}
+
+.text-lg {
+ font-size: 1.2rem;
+}
+
+.text-gray-100 {
+ color: #f8f9fc !important;
+}
+
+.text-gray-200 {
+ color: #eaecf4 !important;
+}
+
+.text-gray-300 {
+ color: #dddfeb !important;
+}
+
+.text-gray-400 {
+ color: #d1d3e2 !important;
+}
+
+.text-gray-500 {
+ color: #b7b9cc !important;
+}
+
+.text-gray-600 {
+ color: #858796 !important;
+}
+
+.text-gray-700 {
+ color: #6e707e !important;
+}
+
+.text-gray-800 {
+ color: #5a5c69 !important;
+}
+
+.text-gray-900 {
+ color: #3a3b45 !important;
+}
+
+.icon-circle {
+ height: 2.5rem;
+ width: 2.5rem;
+ border-radius: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.border-left-primary {
+ border-left: 0.25rem solid #4e73df !important;
+}
+
+.border-bottom-primary {
+ border-bottom: 0.25rem solid #4e73df !important;
+}
+
+.border-left-secondary {
+ border-left: 0.25rem solid #858796 !important;
+}
+
+.border-bottom-secondary {
+ border-bottom: 0.25rem solid #858796 !important;
+}
+
+.border-left-success {
+ border-left: 0.25rem solid #1cc88a !important;
+}
+
+.border-bottom-success {
+ border-bottom: 0.25rem solid #1cc88a !important;
+}
+
+.border-left-info {
+ border-left: 0.25rem solid #36b9cc !important;
+}
+
+.border-bottom-info {
+ border-bottom: 0.25rem solid #36b9cc !important;
+}
+
+.border-left-warning {
+ border-left: 0.25rem solid #f6c23e !important;
+}
+
+.border-bottom-warning {
+ border-bottom: 0.25rem solid #f6c23e !important;
+}
+
+.border-left-danger {
+ border-left: 0.25rem solid #e74a3b !important;
+}
+
+.border-bottom-danger {
+ border-bottom: 0.25rem solid #e74a3b !important;
+}
+
+.border-left-light {
+ border-left: 0.25rem solid #f8f9fc !important;
+}
+
+.border-bottom-light {
+ border-bottom: 0.25rem solid #f8f9fc !important;
+}
+
+.border-left-dark {
+ border-left: 0.25rem solid #5a5c69 !important;
+}
+
+.border-bottom-dark {
+ border-bottom: 0.25rem solid #5a5c69 !important;
+}
+
+.progress-sm {
+ height: .5rem;
+}
+
+.rotate-15 {
+ transform: rotate(15deg);
+}
+
+.rotate-n-15 {
+ transform: rotate(-15deg);
+}
+
+.dropdown .dropdown-menu {
+ font-size: 0.85rem;
+}
+
+.dropdown .dropdown-menu .dropdown-header {
+ font-weight: 800;
+ font-size: 0.65rem;
+ color: #b7b9cc;
+}
+
+.dropdown.no-arrow .dropdown-toggle::after {
+ display: none;
+}
+
+.sidebar .nav-item.dropdown .dropdown-toggle::after,
+.topbar .nav-item.dropdown .dropdown-toggle::after {
+ width: 1rem;
+ text-align: center;
+ float: right;
+ vertical-align: 0;
+ border: 0;
+ font-weight: 900;
+ content: '\f105';
+ font-family: 'Font Awesome 5 Free';
+}
+
+.sidebar .nav-item.dropdown.show .dropdown-toggle::after,
+.topbar .nav-item.dropdown.show .dropdown-toggle::after {
+ content: '\f107';
+}
+
+.sidebar .nav-item .nav-link,
+.topbar .nav-item .nav-link {
+ position: relative;
+}
+
+.sidebar .nav-item .nav-link .badge-counter,
+.topbar .nav-item .nav-link .badge-counter {
+ position: absolute;
+ transform: scale(0.7);
+ transform-origin: top right;
+ right: .25rem;
+ margin-top: -.25rem;
+}
+
+.sidebar .nav-item .nav-link .img-profile,
+.topbar .nav-item .nav-link .img-profile {
+ height: 2rem;
+ width: 2rem;
+}
+
+.topbar {
+ height: 4.375rem;
+}
+
+.topbar #sidebarToggleTop {
+ height: 2.5rem;
+ width: 2.5rem;
+}
+
+.topbar #sidebarToggleTop:hover {
+ background-color: #eaecf4;
+}
+
+.topbar #sidebarToggleTop:active {
+ background-color: #dddfeb;
+}
+
+.topbar .navbar-search {
+ width: 25rem;
+}
+
+.topbar .navbar-search input {
+ font-size: 0.85rem;
+ height: auto;
+}
+
+.topbar .topbar-divider {
+ width: 0;
+ border-right: 1px solid #e3e6f0;
+ height: calc(4.375rem - 2rem);
+ margin: auto 1rem;
+}
+
+.topbar .nav-item .nav-link {
+ height: 4.375rem;
+ display: flex;
+ align-items: center;
+ padding: 0 0.75rem;
+}
+
+.topbar .nav-item .nav-link:focus {
+ outline: none;
+}
+
+.topbar .nav-item:focus {
+ outline: none;
+}
+
+.topbar .dropdown {
+ position: static;
+}
+
+.topbar .dropdown .dropdown-menu {
+ width: calc(100% - 1.5rem);
+ right: 0.75rem;
+}
+
+.topbar .dropdown-list {
+ padding: 0;
+ border: none;
+ overflow: hidden;
+}
+
+.topbar .dropdown-list .dropdown-header {
+ background-color: #4e73df;
+ border: 1px solid #4e73df;
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+ color: #fff;
+}
+
+.topbar .dropdown-list .dropdown-item {
+ white-space: normal;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ border-left: 1px solid #e3e6f0;
+ border-right: 1px solid #e3e6f0;
+ border-bottom: 1px solid #e3e6f0;
+ line-height: 1.3rem;
+}
+
+.topbar .dropdown-list .dropdown-item .dropdown-list-image {
+ position: relative;
+ height: 2.5rem;
+ width: 2.5rem;
+}
+
+.topbar .dropdown-list .dropdown-item .dropdown-list-image img {
+ height: 2.5rem;
+ width: 2.5rem;
+}
+
+.topbar .dropdown-list .dropdown-item .dropdown-list-image .status-indicator {
+ background-color: #eaecf4;
+ height: 0.75rem;
+ width: 0.75rem;
+ border-radius: 100%;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ border: 0.125rem solid #fff;
+}
+
+.topbar .dropdown-list .dropdown-item .text-truncate {
+ max-width: 10rem;
+}
+
+.topbar .dropdown-list .dropdown-item:active {
+ background-color: #eaecf4;
+ color: #3a3b45;
+}
+
+@media (min-width: 576px) {
+ .topbar .dropdown {
+ position: relative;
+ }
+ .topbar .dropdown .dropdown-menu {
+ width: auto;
+ right: 0;
+ }
+ .topbar .dropdown-list {
+ width: 20rem !important;
+ }
+ .topbar .dropdown-list .dropdown-item .text-truncate {
+ max-width: 13.375rem;
+ }
+}
+
+.topbar.navbar-dark .navbar-nav .nav-item .nav-link {
+ color: rgba(255, 255, 255, 0.8);
+}
+
+.topbar.navbar-dark .navbar-nav .nav-item .nav-link:hover {
+ color: #fff;
+}
+
+.topbar.navbar-dark .navbar-nav .nav-item .nav-link:active {
+ color: #fff;
+}
+
+.topbar.navbar-light .navbar-nav .nav-item .nav-link {
+ color: #d1d3e2;
+}
+
+.topbar.navbar-light .navbar-nav .nav-item .nav-link:hover {
+ color: #b7b9cc;
+}
+
+.topbar.navbar-light .navbar-nav .nav-item .nav-link:active {
+ color: #858796;
+}
+
+.sidebar {
+ width: 6.5rem;
+ min-height: 100vh;
+}
+
+.sidebar .nav-item {
+ position: relative;
+}
+
+.sidebar .nav-item:last-child {
+ margin-bottom: 1rem;
+}
+
+.sidebar .nav-item .nav-link {
+ text-align: center;
+ padding: 0.75rem 1rem;
+ width: 6.5rem;
+}
+
+.sidebar .nav-item .nav-link span {
+ font-size: 0.65rem;
+ display: block;
+}
+
+.sidebar .nav-item.active .nav-link {
+ font-weight: 700;
+}
+
+.sidebar .nav-item .collapse {
+ position: absolute;
+ left: calc(6.5rem + 1.5rem / 2);
+ z-index: 1;
+ top: 2px;
+}
+
+.sidebar .nav-item .collapse .collapse-inner {
+ border-radius: 0.35rem;
+ box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);
+}
+
+.sidebar .nav-item .collapsing {
+ display: none;
+ transition: none;
+}
+
+.sidebar .nav-item .collapse .collapse-inner,
+.sidebar .nav-item .collapsing .collapse-inner {
+ padding: .5rem 0;
+ min-width: 10rem;
+ font-size: 0.85rem;
+ margin: 0 0 1rem 0;
+}
+
+.sidebar .nav-item .collapse .collapse-inner .collapse-header,
+.sidebar .nav-item .collapsing .collapse-inner .collapse-header {
+ margin: 0;
+ white-space: nowrap;
+ padding: .5rem 1.5rem;
+ text-transform: uppercase;
+ font-weight: 800;
+ font-size: 0.65rem;
+ color: #b7b9cc;
+}
+
+.sidebar .nav-item .collapse .collapse-inner .collapse-item,
+.sidebar .nav-item .collapsing .collapse-inner .collapse-item {
+ padding: 0.5rem 1rem;
+ margin: 0 0.5rem;
+ display: block;
+ color: #3a3b45;
+ text-decoration: none;
+ border-radius: 0.35rem;
+ white-space: nowrap;
+}
+
+.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,
+.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover {
+ background-color: #eaecf4;
+}
+
+.sidebar .nav-item .collapse .collapse-inner .collapse-item:active,
+.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active {
+ background-color: #dddfeb;
+}
+
+.sidebar .nav-item .collapse .collapse-inner .collapse-item.active,
+.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active {
+ color: #4e73df;
+ font-weight: 700;
+}
+
+.sidebar #sidebarToggle {
+ width: 2.5rem;
+ height: 2.5rem;
+ text-align: center;
+ margin-bottom: 1rem;
+ cursor: pointer;
+}
+
+.sidebar #sidebarToggle::after {
+ font-weight: 900;
+ content: '\f104';
+ font-family: 'Font Awesome 5 Free';
+ margin-right: 0.1rem;
+}
+
+.sidebar #sidebarToggle:hover {
+ text-decoration: none;
+}
+
+.sidebar #sidebarToggle:focus {
+ outline: none;
+}
+
+.sidebar.toggled {
+ width: 0 !important;
+ overflow: hidden;
+}
+
+.sidebar.toggled #sidebarToggle::after {
+ content: '\f105';
+ font-family: 'Font Awesome 5 Free';
+ margin-left: 0.25rem;
+}
+
+.sidebar .sidebar-brand {
+ height: 4.375rem;
+ text-decoration: none;
+ font-size: 1rem;
+ font-weight: 800;
+ padding: 1.5rem 1rem;
+ text-align: center;
+ text-transform: uppercase;
+ letter-spacing: 0.05rem;
+ z-index: 1;
+}
+
+.sidebar .sidebar-brand .sidebar-brand-icon i {
+ font-size: 2rem;
+}
+
+.sidebar .sidebar-brand .sidebar-brand-text {
+ display: none;
+}
+
+.sidebar hr.sidebar-divider {
+ margin: 0 1rem 1rem;
+}
+
+.sidebar .sidebar-heading {
+ text-align: center;
+ padding: 0 1rem;
+ font-weight: 800;
+ font-size: 0.65rem;
+}
+
+@media (min-width: 768px) {
+ .sidebar {
+ width: 14rem !important;
+ }
+ .sidebar .nav-item .collapse {
+ position: relative;
+ left: 0;
+ z-index: 1;
+ top: 0;
+ -webkit-animation: none;
+ animation: none;
+ }
+ .sidebar .nav-item .collapse .collapse-inner {
+ border-radius: 0;
+ box-shadow: none;
+ }
+ .sidebar .nav-item .collapsing {
+ display: block;
+ transition: height 0.15s ease;
+ }
+ .sidebar .nav-item .collapse,
+ .sidebar .nav-item .collapsing {
+ margin: 0 1rem;
+ }
+ .sidebar .nav-item .nav-link {
+ display: block;
+ width: 100%;
+ text-align: left;
+ padding: 1rem;
+ width: 14rem;
+ }
+ .sidebar .nav-item .nav-link i {
+ font-size: 0.85rem;
+ margin-right: 0.25rem;
+ }
+ .sidebar .nav-item .nav-link span {
+ font-size: 0.85rem;
+ display: inline;
+ }
+ .sidebar .nav-item .nav-link[data-toggle="collapse"]::after {
+ width: 1rem;
+ text-align: center;
+ float: right;
+ vertical-align: 0;
+ border: 0;
+ font-weight: 900;
+ content: '\f107';
+ font-family: 'Font Awesome 5 Free';
+ }
+ .sidebar .nav-item .nav-link[data-toggle="collapse"].collapsed::after {
+ content: '\f105';
+ }
+ .sidebar .sidebar-brand .sidebar-brand-icon i {
+ font-size: 2rem;
+ }
+ .sidebar .sidebar-brand .sidebar-brand-text {
+ display: inline;
+ }
+ .sidebar .sidebar-heading {
+ text-align: left;
+ }
+ .sidebar.toggled {
+ overflow: visible;
+ width: 6.5rem !important;
+ }
+ .sidebar.toggled .nav-item .collapse {
+ position: absolute;
+ left: calc(6.5rem + 1.5rem / 2);
+ z-index: 1;
+ top: 2px;
+ -webkit-animation-name: growIn;
+ animation-name: growIn;
+ -webkit-animation-duration: 200ms;
+ animation-duration: 200ms;
+ -webkit-animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1);
+ animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1);
+ }
+ .sidebar.toggled .nav-item .collapse .collapse-inner {
+ box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);
+ border-radius: 0.35rem;
+ }
+ .sidebar.toggled .nav-item .collapsing {
+ display: none;
+ transition: none;
+ }
+ .sidebar.toggled .nav-item .collapse,
+ .sidebar.toggled .nav-item .collapsing {
+ margin: 0;
+ }
+ .sidebar.toggled .nav-item:last-child {
+ margin-bottom: 1rem;
+ }
+ .sidebar.toggled .nav-item .nav-link {
+ text-align: center;
+ padding: 0.75rem 1rem;
+ width: 6.5rem;
+ }
+ .sidebar.toggled .nav-item .nav-link span {
+ font-size: 0.65rem;
+ display: block;
+ }
+ .sidebar.toggled .nav-item .nav-link i {
+ margin-right: 0;
+ }
+ .sidebar.toggled .nav-item .nav-link[data-toggle="collapse"]::after {
+ display: none;
+ }
+ .sidebar.toggled .sidebar-brand .sidebar-brand-icon i {
+ font-size: 2rem;
+ }
+ .sidebar.toggled .sidebar-brand .sidebar-brand-text {
+ display: none;
+ }
+ .sidebar.toggled .sidebar-heading {
+ text-align: center;
+ }
+}
+
+.sidebar-light .sidebar-brand {
+ color: #6e707e;
+}
+
+.sidebar-light hr.sidebar-divider {
+ border-top: 1px solid #eaecf4;
+}
+
+.sidebar-light .sidebar-heading {
+ color: #b7b9cc;
+}
+
+.sidebar-light .nav-item .nav-link {
+ color: #858796;
+}
+
+.sidebar-light .nav-item .nav-link i {
+ color: #d1d3e2;
+}
+
+.sidebar-light .nav-item .nav-link:active, .sidebar-light .nav-item .nav-link:focus, .sidebar-light .nav-item .nav-link:hover {
+ color: #6e707e;
+}
+
+.sidebar-light .nav-item .nav-link:active i, .sidebar-light .nav-item .nav-link:focus i, .sidebar-light .nav-item .nav-link:hover i {
+ color: #6e707e;
+}
+
+.sidebar-light .nav-item .nav-link[data-toggle="collapse"]::after {
+ color: #b7b9cc;
+}
+
+.sidebar-light .nav-item.active .nav-link {
+ color: #6e707e;
+}
+
+.sidebar-light .nav-item.active .nav-link i {
+ color: #6e707e;
+}
+
+.sidebar-light #sidebarToggle {
+ background-color: #eaecf4;
+}
+
+.sidebar-light #sidebarToggle::after {
+ color: #b7b9cc;
+}
+
+.sidebar-light #sidebarToggle:hover {
+ background-color: #dddfeb;
+}
+
+.sidebar-dark .sidebar-brand {
+ color: #fff;
+}
+
+.sidebar-dark hr.sidebar-divider {
+ border-top: 1px solid rgba(255, 255, 255, 0.15);
+}
+
+.sidebar-dark .sidebar-heading {
+ color: rgba(255, 255, 255, 0.4);
+}
+
+.sidebar-dark .nav-item .nav-link {
+ color: rgba(255, 255, 255, 0.8);
+}
+
+.sidebar-dark .nav-item .nav-link i {
+ color: rgba(255, 255, 255, 0.3);
+}
+
+.sidebar-dark .nav-item .nav-link:active, .sidebar-dark .nav-item .nav-link:focus, .sidebar-dark .nav-item .nav-link:hover {
+ color: #fff;
+}
+
+.sidebar-dark .nav-item .nav-link:active i, .sidebar-dark .nav-item .nav-link:focus i, .sidebar-dark .nav-item .nav-link:hover i {
+ color: #fff;
+}
+
+.sidebar-dark .nav-item .nav-link[data-toggle="collapse"]::after {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.sidebar-dark .nav-item.active .nav-link {
+ color: #fff;
+}
+
+.sidebar-dark .nav-item.active .nav-link i {
+ color: #fff;
+}
+
+.sidebar-dark #sidebarToggle {
+ background-color: rgba(255, 255, 255, 0.2);
+}
+
+.sidebar-dark #sidebarToggle::after {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.sidebar-dark #sidebarToggle:hover {
+ background-color: rgba(255, 255, 255, 0.25);
+}
+
+.sidebar-dark.toggled #sidebarToggle::after {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.btn-circle {
+ border-radius: 100%;
+ height: 2.5rem;
+ width: 2.5rem;
+ font-size: 1rem;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.btn-circle.btn-sm, .btn-group-sm > .btn-circle.btn {
+ height: 1.8rem;
+ width: 1.8rem;
+ font-size: 0.75rem;
+}
+
+.btn-circle.btn-lg, .btn-group-lg > .btn-circle.btn {
+ height: 3.5rem;
+ width: 3.5rem;
+ font-size: 1.35rem;
+}
+
+.btn-icon-split {
+ padding: 0;
+ overflow: hidden;
+ display: inline-flex;
+ align-items: stretch;
+ justify-content: center;
+}
+
+.btn-icon-split .icon {
+ background: rgba(0, 0, 0, 0.15);
+ display: inline-block;
+ padding: 0.375rem 0.75rem;
+}
+
+.btn-icon-split .text {
+ display: inline-block;
+ padding: 0.375rem 0.75rem;
+}
+
+.btn-icon-split.btn-sm .icon, .btn-group-sm > .btn-icon-split.btn .icon {
+ padding: 0.25rem 0.5rem;
+}
+
+.btn-icon-split.btn-sm .text, .btn-group-sm > .btn-icon-split.btn .text {
+ padding: 0.25rem 0.5rem;
+}
+
+.btn-icon-split.btn-lg .icon, .btn-group-lg > .btn-icon-split.btn .icon {
+ padding: 0.5rem 1rem;
+}
+
+.btn-icon-split.btn-lg .text, .btn-group-lg > .btn-icon-split.btn .text {
+ padding: 0.5rem 1rem;
+}
+
+.card .card-header .dropdown {
+ line-height: 1;
+}
+
+.card .card-header .dropdown .dropdown-menu {
+ line-height: 1.5;
+}
+
+.card .card-header[data-toggle="collapse"] {
+ text-decoration: none;
+ position: relative;
+ padding: 0.75rem 3.25rem 0.75rem 1.25rem;
+}
+
+.card .card-header[data-toggle="collapse"]::after {
+ position: absolute;
+ right: 0;
+ top: 0;
+ padding-right: 1.725rem;
+ line-height: 51px;
+ font-weight: 900;
+ content: '\f107';
+ font-family: 'Font Awesome 5 Free';
+ color: #d1d3e2;
+}
+
+.card .card-header[data-toggle="collapse"].collapsed {
+ border-radius: 0.35rem;
+}
+
+.card .card-header[data-toggle="collapse"].collapsed::after {
+ content: '\f105';
+}
+
+.chart-area {
+ position: relative;
+ height: 10rem;
+ width: 100%;
+}
+
+@media (min-width: 768px) {
+ .chart-area {
+ height: 20rem;
+ }
+}
+
+.chart-bar {
+ position: relative;
+ height: 10rem;
+ width: 100%;
+}
+
+@media (min-width: 768px) {
+ .chart-bar {
+ height: 20rem;
+ }
+}
+
+.chart-pie {
+ position: relative;
+ height: 15rem;
+ width: 100%;
+}
+
+@media (min-width: 768px) {
+ .chart-pie {
+ height: calc(20rem - 43px) !important;
+ }
+}
+
+.bg-login-image {
+ background: url("https://source.unsplash.com/K4mSJ7kc0As/600x800");
+ background-position: center;
+ background-size: cover;
+}
+
+.bg-register-image {
+ background: url("https://source.unsplash.com/Mv9hjnEUHR4/600x800");
+ background-position: center;
+ background-size: cover;
+}
+
+.bg-password-image {
+ background: url("https://source.unsplash.com/oWTW-jNGl9I/600x800");
+ background-position: center;
+ background-size: cover;
+}
+
+form.user .custom-checkbox.small label {
+ line-height: 1.5rem;
+}
+
+form.user .form-control-user {
+ font-size: 0.8rem;
+ border-radius: 10rem;
+ padding: 1.5rem 1rem;
+}
+
+form.user .btn-user {
+ font-size: 0.8rem;
+ border-radius: 10rem;
+ padding: 0.75rem 1rem;
+}
+
+.btn-google {
+ color: #fff;
+ background-color: #ea4335;
+ border-color: #fff;
+}
+
+.btn-google:hover {
+ color: #fff;
+ background-color: #e12717;
+ border-color: #e6e6e6;
+}
+
+.btn-google:focus, .btn-google.focus {
+ color: #fff;
+ background-color: #e12717;
+ border-color: #e6e6e6;
+ box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5);
+}
+
+.btn-google.disabled, .btn-google:disabled {
+ color: #fff;
+ background-color: #ea4335;
+ border-color: #fff;
+}
+
+.btn-google:not(:disabled):not(.disabled):active, .btn-google:not(:disabled):not(.disabled).active,
+.show > .btn-google.dropdown-toggle {
+ color: #fff;
+ background-color: #d62516;
+ border-color: #dfdfdf;
+}
+
+.btn-google:not(:disabled):not(.disabled):active:focus, .btn-google:not(:disabled):not(.disabled).active:focus,
+.show > .btn-google.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5);
+}
+
+.btn-facebook {
+ color: #fff;
+ background-color: #3b5998;
+ border-color: #fff;
+}
+
+.btn-facebook:hover {
+ color: #fff;
+ background-color: #30497c;
+ border-color: #e6e6e6;
+}
+
+.btn-facebook:focus, .btn-facebook.focus {
+ color: #fff;
+ background-color: #30497c;
+ border-color: #e6e6e6;
+ box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5);
+}
+
+.btn-facebook.disabled, .btn-facebook:disabled {
+ color: #fff;
+ background-color: #3b5998;
+ border-color: #fff;
+}
+
+.btn-facebook:not(:disabled):not(.disabled):active, .btn-facebook:not(:disabled):not(.disabled).active,
+.show > .btn-facebook.dropdown-toggle {
+ color: #fff;
+ background-color: #2d4373;
+ border-color: #dfdfdf;
+}
+
+.btn-facebook:not(:disabled):not(.disabled):active:focus, .btn-facebook:not(:disabled):not(.disabled).active:focus,
+.show > .btn-facebook.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5);
+}
+
+.error {
+ color: #5a5c69;
+ font-size: 7rem;
+ position: relative;
+ line-height: 1;
+ width: 12.5rem;
+}
+
+@-webkit-keyframes noise-anim {
+ 0% {
+ clip: rect(78px, 9999px, 4px, 0);
+ }
+ 5% {
+ clip: rect(87px, 9999px, 70px, 0);
+ }
+ 10% {
+ clip: rect(21px, 9999px, 60px, 0);
+ }
+ 15% {
+ clip: rect(79px, 9999px, 83px, 0);
+ }
+ 20% {
+ clip: rect(20px, 9999px, 28px, 0);
+ }
+ 25% {
+ clip: rect(42px, 9999px, 78px, 0);
+ }
+ 30% {
+ clip: rect(71px, 9999px, 37px, 0);
+ }
+ 35% {
+ clip: rect(89px, 9999px, 49px, 0);
+ }
+ 40% {
+ clip: rect(36px, 9999px, 48px, 0);
+ }
+ 45% {
+ clip: rect(77px, 9999px, 67px, 0);
+ }
+ 50% {
+ clip: rect(7px, 9999px, 94px, 0);
+ }
+ 55% {
+ clip: rect(90px, 9999px, 79px, 0);
+ }
+ 60% {
+ clip: rect(48px, 9999px, 57px, 0);
+ }
+ 65% {
+ clip: rect(64px, 9999px, 35px, 0);
+ }
+ 70% {
+ clip: rect(23px, 9999px, 88px, 0);
+ }
+ 75% {
+ clip: rect(68px, 9999px, 27px, 0);
+ }
+ 80% {
+ clip: rect(39px, 9999px, 98px, 0);
+ }
+ 85% {
+ clip: rect(97px, 9999px, 57px, 0);
+ }
+ 90% {
+ clip: rect(61px, 9999px, 53px, 0);
+ }
+ 95% {
+ clip: rect(79px, 9999px, 44px, 0);
+ }
+ 100% {
+ clip: rect(12px, 9999px, 19px, 0);
+ }
+}
+
+@keyframes noise-anim {
+ 0% {
+ clip: rect(78px, 9999px, 4px, 0);
+ }
+ 5% {
+ clip: rect(87px, 9999px, 70px, 0);
+ }
+ 10% {
+ clip: rect(21px, 9999px, 60px, 0);
+ }
+ 15% {
+ clip: rect(79px, 9999px, 83px, 0);
+ }
+ 20% {
+ clip: rect(20px, 9999px, 28px, 0);
+ }
+ 25% {
+ clip: rect(42px, 9999px, 78px, 0);
+ }
+ 30% {
+ clip: rect(71px, 9999px, 37px, 0);
+ }
+ 35% {
+ clip: rect(89px, 9999px, 49px, 0);
+ }
+ 40% {
+ clip: rect(36px, 9999px, 48px, 0);
+ }
+ 45% {
+ clip: rect(77px, 9999px, 67px, 0);
+ }
+ 50% {
+ clip: rect(7px, 9999px, 94px, 0);
+ }
+ 55% {
+ clip: rect(90px, 9999px, 79px, 0);
+ }
+ 60% {
+ clip: rect(48px, 9999px, 57px, 0);
+ }
+ 65% {
+ clip: rect(64px, 9999px, 35px, 0);
+ }
+ 70% {
+ clip: rect(23px, 9999px, 88px, 0);
+ }
+ 75% {
+ clip: rect(68px, 9999px, 27px, 0);
+ }
+ 80% {
+ clip: rect(39px, 9999px, 98px, 0);
+ }
+ 85% {
+ clip: rect(97px, 9999px, 57px, 0);
+ }
+ 90% {
+ clip: rect(61px, 9999px, 53px, 0);
+ }
+ 95% {
+ clip: rect(79px, 9999px, 44px, 0);
+ }
+ 100% {
+ clip: rect(12px, 9999px, 19px, 0);
+ }
+}
+
+.error:after {
+ content: attr(data-text);
+ position: absolute;
+ left: 2px;
+ text-shadow: -1px 0 #e74a3b;
+ top: 0;
+ color: #5a5c69;
+ background: #f8f9fc;
+ overflow: hidden;
+ clip: rect(0, 900px, 0, 0);
+ animation: noise-anim 2s infinite linear alternate-reverse;
+}
+
+@-webkit-keyframes noise-anim-2 {
+ 0% {
+ clip: rect(20px, 9999px, 91px, 0);
+ }
+ 5% {
+ clip: rect(20px, 9999px, 44px, 0);
+ }
+ 10% {
+ clip: rect(84px, 9999px, 55px, 0);
+ }
+ 15% {
+ clip: rect(40px, 9999px, 93px, 0);
+ }
+ 20% {
+ clip: rect(37px, 9999px, 73px, 0);
+ }
+ 25% {
+ clip: rect(75px, 9999px, 57px, 0);
+ }
+ 30% {
+ clip: rect(89px, 9999px, 38px, 0);
+ }
+ 35% {
+ clip: rect(6px, 9999px, 68px, 0);
+ }
+ 40% {
+ clip: rect(63px, 9999px, 17px, 0);
+ }
+ 45% {
+ clip: rect(55px, 9999px, 49px, 0);
+ }
+ 50% {
+ clip: rect(98px, 9999px, 28px, 0);
+ }
+ 55% {
+ clip: rect(18px, 9999px, 57px, 0);
+ }
+ 60% {
+ clip: rect(18px, 9999px, 64px, 0);
+ }
+ 65% {
+ clip: rect(35px, 9999px, 77px, 0);
+ }
+ 70% {
+ clip: rect(31px, 9999px, 59px, 0);
+ }
+ 75% {
+ clip: rect(30px, 9999px, 38px, 0);
+ }
+ 80% {
+ clip: rect(13px, 9999px, 52px, 0);
+ }
+ 85% {
+ clip: rect(63px, 9999px, 91px, 0);
+ }
+ 90% {
+ clip: rect(96px, 9999px, 67px, 0);
+ }
+ 95% {
+ clip: rect(24px, 9999px, 13px, 0);
+ }
+ 100% {
+ clip: rect(5px, 9999px, 29px, 0);
+ }
+}
+
+@keyframes noise-anim-2 {
+ 0% {
+ clip: rect(20px, 9999px, 91px, 0);
+ }
+ 5% {
+ clip: rect(20px, 9999px, 44px, 0);
+ }
+ 10% {
+ clip: rect(84px, 9999px, 55px, 0);
+ }
+ 15% {
+ clip: rect(40px, 9999px, 93px, 0);
+ }
+ 20% {
+ clip: rect(37px, 9999px, 73px, 0);
+ }
+ 25% {
+ clip: rect(75px, 9999px, 57px, 0);
+ }
+ 30% {
+ clip: rect(89px, 9999px, 38px, 0);
+ }
+ 35% {
+ clip: rect(6px, 9999px, 68px, 0);
+ }
+ 40% {
+ clip: rect(63px, 9999px, 17px, 0);
+ }
+ 45% {
+ clip: rect(55px, 9999px, 49px, 0);
+ }
+ 50% {
+ clip: rect(98px, 9999px, 28px, 0);
+ }
+ 55% {
+ clip: rect(18px, 9999px, 57px, 0);
+ }
+ 60% {
+ clip: rect(18px, 9999px, 64px, 0);
+ }
+ 65% {
+ clip: rect(35px, 9999px, 77px, 0);
+ }
+ 70% {
+ clip: rect(31px, 9999px, 59px, 0);
+ }
+ 75% {
+ clip: rect(30px, 9999px, 38px, 0);
+ }
+ 80% {
+ clip: rect(13px, 9999px, 52px, 0);
+ }
+ 85% {
+ clip: rect(63px, 9999px, 91px, 0);
+ }
+ 90% {
+ clip: rect(96px, 9999px, 67px, 0);
+ }
+ 95% {
+ clip: rect(24px, 9999px, 13px, 0);
+ }
+ 100% {
+ clip: rect(5px, 9999px, 29px, 0);
+ }
+}
+
+.error:before {
+ content: attr(data-text);
+ position: absolute;
+ left: -2px;
+ text-shadow: 1px 0 #4e73df;
+ top: 0;
+ color: #5a5c69;
+ background: #f8f9fc;
+ overflow: hidden;
+ clip: rect(0, 900px, 0, 0);
+ animation: noise-anim-2 3s infinite linear alternate-reverse;
+}
+
+footer.sticky-footer {
+ padding: 2rem 0;
+ flex-shrink: 0;
+}
+
+footer.sticky-footer .copyright {
+ line-height: 1;
+ font-size: 0.8rem;
+}
+
+body.sidebar-toggled footer.sticky-footer {
+ width: 100%;
+}
+
+
+
+#toast_1 #img{
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+}
+#toast_1 #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast_1.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+}
+
+
+#toast_1 {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.navbar {
+ background-color: yellow;
+
+}
+
+
diff --git a/src/app/account-detail/account-detail.component.spec.ts b/src/app/account-detail/account-detail.component.spec.ts
new file mode 100644
index 0000000..4411eb4
--- /dev/null
+++ b/src/app/account-detail/account-detail.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AccountDetailComponent } from './account-detail.component';
+
+describe('AccountDetailComponent', () => {
+ let component: AccountDetailComponent;
+ let fixture: ComponentFixture
;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AccountDetailComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AccountDetailComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/account-detail/account-detail.component.ts b/src/app/account-detail/account-detail.component.ts
new file mode 100644
index 0000000..53856e6
--- /dev/null
+++ b/src/app/account-detail/account-detail.component.ts
@@ -0,0 +1,1397 @@
+import { Component, OnInit, Output, EventEmitter, ViewChild } from '@angular/core';
+import { Router } from '@angular/router';
+import { ContactService } from '../contact.service';
+import {Contact} from '../contact';
+import * as moment from 'moment-timezone';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { MdDialog } from '@angular/material';
+import { NotificationSettingComponent } from '../notification-setting/notification-setting.component';
+import { TranslateService } from 'ng2-translate';
+import { AllMenusComponent } from '../all-menus/all-menus.component';
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+import { AddPlanComponent } from './add-plan/add-plan.component';
+
+declare var swal: any;
+declare var $:any;
+
+@Component({
+ selector: 'app-account-detail',
+ templateUrl: './account-detail.component.html',
+ styleUrls: ['./account-detail.component.scss']
+})
+export class AccountDetailComponent implements OnInit {
+ @ViewChild(AllMenusComponent ) languageChangeDetection: AllMenusComponent ;
+ data_descip: string;
+ phone_number:'numer';
+ final_counter: number;
+ text3: string;
+ driverManagement:boolean=false;
+ paymentGateway:boolean=false
+ // relay_timer:boolean=false;
+ announcement:any;
+ renewalCharges;
+ show:boolean=false;
+ service2
+ service1
+ support1
+ support2;
+ support3
+ bsConfig: Partial;
+ api_key:any;
+ available_languages = [{
+ view : "English",
+ id : "en"
+ },{
+ view : "Spanish",
+ id : "sp"
+ },{
+ view : "Persian",
+ id : "fa"
+},{
+ view : "Arabic",
+ id : "ar"
+},{
+ view : "Portuguese",
+ id : "pr"
+},
+{
+ view : "Albanian",
+ id : "newLan2"
+},
+{
+ view : "French",
+ id : "fr"
+},
+{
+ view : "Indonesian",
+ id : "bhasa_web"
+}];
+ fuelunitArr = ['PERCENTAGE', 'LITRE'];
+ workingHoursArray=[{name:'Digital input1',id:1},{name:'Digital input2',id:2}];
+ workingHours=1;
+ fuelunit = 'LITRE';
+ selectedlanguage='en';
+ GET_notif:any;
+ GET_announcememt:any;
+ showAnnouncementMenu:boolean=false;
+ symbol3: string;
+ timezone:any = 'Asia/Kolkata';
+ final_counter2: number;
+ text2: string;
+ symbol2: string;
+ timezoneArray=[];
+ phone_verfi: boolean;
+ text: string;
+ final_counter1: number;
+ tripGenerationVal:any;
+ tripGenerationArr=[{'view': 'Automatic','value':'auto'},{'view' :'Manual', 'value':'manual'}]
+ symbol: string;
+ email_verfi: boolean;
+ logo: any;
+ logoutbut: boolean;
+ dealer: boolean;
+ cust: boolean;
+ custtype: any;
+ mb: any;
+ useridd: any;
+ or: any;
+fs :any;
+ls:any;
+cond:Boolean = false;
+point : any = 0;
+before:any;
+emailid:any;
+mobile:any;
+contacts: Contact[]=[];
+contact: Contact;
+ Notification: any[];
+ data: any = {
+ ign: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ poi: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ power: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ fuel: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ geo: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ overspeed: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ AC: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ route: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ maxstop: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ sos: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ sms: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ vibration: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ lowBattery: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ accAlarm: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ toll: {
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ harshBreak:{
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ harshAcceleration:{
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ over_stopped:{
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ over_idle:{
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+ theft:{
+ sms_status: false, email_status: false,
+ notif_status: false,
+ priority: 1, emails:[], phones:[]
+ },
+
+ };
+ dataOriginal: any;
+ fData: any = {
+
+ };
+ Load: boolean;
+ notifType: any;
+ isAddEmail: boolean =false;
+ emailList: any;
+ isAddPhone: boolean = false;
+ phonelist: any;
+ shownotifdiv: boolean=true;
+ allocatedPoints: any;
+ colorTheme = 'theme-dark-blue';
+ optiondefault: any;
+ labelSetting:boolean=true
+
+ constructor(private router: Router,private contactService: ContactService,public translate: TranslateService,private _flashMessagesService: FlashMessagesService,public dialog: MdDialog) {
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY, h:mm:ss a' }, { containerClass: this.colorTheme });
+ }
+ superAdmin:Boolean = false;
+ from_date= new Date();
+ to_date = new Date();
+
+ ngOnInit() {
+
+ var timeZones = moment.tz.names();
+ console.log('timeZones',timeZones);
+
+ var fTime = new Date().setHours(0,0,0,0);
+ this.from_date = new Date(fTime);
+
+ var td = new Date().setHours(23,59,59,999);
+ this.to_date = new Date(td);
+
+
+ this.timezoneArray=[];
+ for (var i in timeZones) {
+ this.timezoneArray.push({ viewValue: "(GMT" + moment.tz(timeZones[i]).format('Z') + ")" + timeZones[i], value: timeZones[i] });
+ }
+
+
+ setTimeout(() => {
+ $('#dbselect').multipleSelect({
+ width:420,
+ placeholder: 'Select Timezone',
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ }, 100);
+
+
+
+ this.logo=window.localStorage['logo'];
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.mobile = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.email_verfi = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).email_verfi;
+ this.phone_verfi = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phone_verfi;
+ this.GET_notif = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).GET_notif;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.fuelunit = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).fuel_unit
+ //console.log(this.mobile) email_verfi phone_verfi
+ // console.log(JSON.parse(window.atob(window.localStorage.token.split('.')[1])))\
+ var supadm = localStorage.getItem('superadmin');
+ console.log("superadmin=>",supadm);
+ if((supadm == 'ON')||(supadm == 'OFF')||(this.custtype)||(this.superAdmin)){
+
+ this.shownotifdiv = false;
+ }
+ console.log("shownotifVeh=>",this.shownotifdiv);
+
+ this.getAlert();
+
+ if(this.custtype == true){
+ this.cust = true;
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+
+
+ if( window.localStorage['Custumer'] == 'ON'){
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else{
+ this.logoutbut = true
+ }
+
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+
+ this.getCurrencies();
+ this.getLanguage();
+
+ this.getToken();
+ this.getApiKey();
+ this.getTransectionDetail();
+ if(this.superAdmin)
+ this.getRechargePlans()
+
+
+}
+
+
+myaccount(){
+
+
+ this.cond = false
+ this.router.navigateByUrl("accountSettings");
+
+
+
+// let dialogRef = this.dialog.open(MyaccountComponent, {
+// width: '903px',
+// data: {}
+// });
+
+// dialogRef.afterClosed().subscribe(result => {
+
+// if(result == "succ"){
+// console.log("Updated")
+// }
+
+// });
+
+
+}
+tost1(divid){
+ if(divid == "nofsls"){
+ this.data_descip = "Please Enter Mandatory Fields";
+ launch_toast();
+ }
+ else if(divid == "succ"){
+ this.data_descip = "Succesfully Updated";
+ launch_toast();
+ }
+ else if(divid == "currset"){
+ this.data_descip = "Currency Updated";
+ launch_toast();
+ } else if(divid == "alertset"){
+ this.data_descip = "Alert preference set";
+ launch_toast();
+ }
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast_1")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+ }
+
+
+editAccount(){
+ if(this.fs == "" || this.ls == "" || this.fs == " " || this.ls == " " ){
+ this.tost1("nofsls")
+ }
+ else{
+ var tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log('tzone=>',tzone[0]);
+ const newContact ={
+ fname: this.fs,
+ lname: this.ls,
+ org: this.or,
+ noti: this.GET_notif,
+ uid:this.useridd,
+ show_announcement:this.GET_announcememt,
+ label_setting:this.labelSetting?this.labelSetting:false,
+ digital_input:this.workingHours,
+ driverManagement:this.driverManagement,
+ paymentGateway:this.paymentGateway
+ // relay_timer:this.relay_timer
+ }
+ if(this.renewalCharges!=undefined){
+ newContact['renewal_charges']=this.renewalCharges
+ }
+ if(tzone != undefined){
+ newContact['timezone'] = tzone[0];
+ }
+
+ if(this.fuelunit != undefined){
+ newContact['fuel_unit'] = this.fuelunit;
+ }
+
+ if(this.support1 != undefined){
+ newContact['support1'] = this.support1;
+}
+ if(this.support2 != undefined){
+ newContact['support2'] = this.support2;
+}
+ if(this.support3 != undefined){
+ newContact['support3'] = this.support3;
+}
+ if(this.service1 != undefined){
+ newContact['service1'] = this.service1
+}
+ if(this.service2 != undefined){
+ newContact['service2'] = this.service2
+}
+
+
+
+
+ console.log(newContact);
+ this.contactService.updateuid(newContact) .subscribe(contact => {
+ this.contacts.push(contact);
+ this.tost1("succ");
+ window.localStorage['token'] = contact.token ;
+ this.getToken();
+ this.ngOnInit();
+ } , (err: any) => {
+
+ if(err.status == 500) {
+
+ }
+ else{
+
+
+ }
+ }
+ );
+ }
+
+}
+
+mydealer(){
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if(window.localStorage['DataLoaded'] = 'True'){
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+}
+
+verify_email(){
+ if(this.email_verfi == true){
+ this.symbol = '\u2714';
+ this.text = "Email Verified"
+ this.final_counter1 = 0;
+ return true
+ }
+ else{
+ this.symbol = 'X'
+ this.text = "Email Not Verified"
+ this.final_counter1 = 1;
+ return true
+ }
+}
+
+verify_phone(){
+ if(this.phone_verfi == true){
+ this.symbol2 = '\u2714';
+ this.text2 = "Mobile Verified"
+ this.final_counter2 = 0;
+ return true
+ }
+ else{
+ this.symbol2 = 'X'
+ this.text2 = "Mobile Not Verified"
+ this.final_counter2 =1;
+ return true
+ }
+}
+
+notifications(){
+ this.cond = false
+ this.router.navigateByUrl("notifications");
+}
+
+
+
+
+deal(){
+ if(this.custtype == true){
+ this.symbol3 = '\u2714';
+ this.text3 = "Dealer"
+ this.final_counter = 0;
+ return true
+ }
+ else{
+ this.symbol3 = 'X'
+ this.text3 = "Not a Dealer"
+ this.final_counter =1;
+ return true
+ }
+}
+
+
+
+
+ a(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+ report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+
+ vehicleRoute(){
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ dealerInfo(){
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+ route_map(){
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+
+ Ddetail(){
+ this.router.navigateByUrl("driverdetail");
+ }
+ DModel(){
+ this.router.navigateByUrl("deviceModel");
+ }
+ VType(){
+ this.router.navigateByUrl("VehicleType");
+ }
+
+
+
+
+ report_speed(){
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+
+ driverPerformance(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/Driver-performance");
+ }
+
+ geo(){
+ this.router.navigateByUrl("geofencing");
+
+ }
+ ideal(){
+ this.router.navigateByUrl("device-report/ideal-report");
+ }
+run(){
+
+}
+openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+*/
+ this.router.navigateByUrl("location");
+
+}
+
+logout(){
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+}
+devi(){
+ this.router.navigateByUrl("dashboard");
+
+}
+soon(){
+ this.router.navigateByUrl("const");
+
+}
+
+summaryReport(){
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/summary-report");
+}
+
+geofancingReport(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/geofancing");
+}
+
+overspeed(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/overspeed");
+
+}
+routeViolation(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/routeViolation");
+
+}
+
+stoppage_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/stoppage_report");
+
+}
+ignition_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/ignition_report");
+
+
+}
+
+alert_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/alert_report");
+
+
+}
+trip_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/trip_report");
+
+}
+
+group(){
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+}
+
+
+distance_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/distance_report");
+}
+
+new(){
+ this.router.navigateByUrl("new");
+
+}
+addcus(){
+ this.router.navigateByUrl("add");
+}
+selectedFile: File;
+imageURL:any;
+onFileChanged(event) {
+
+ this.selectedFile = event.target.files[0];
+}
+
+onUpload() {
+
+ const fd = new FormData();
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("Binaryimage = > ",fd );
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ var pld = {
+ _id : this.useridd,
+ imageDoc : [res['_body']]
+ }
+
+ this.contactService.updateImage(pld).subscribe(res=>{
+ console.log(res);
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ this.data_descip = "Image Succesfully Shared";
+ launch_toast();
+ })
+
+ }
+ console.log(res);
+ },err=>{
+ console.log(err);
+ })
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast_1")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+}
+
+// https://www.oneqlik.in/users/uploadImage
+getAlert() {
+ this.Load = true;
+ this.contactService.getcustToken(this.useridd).subscribe(resp => {
+ console.log(resp);
+ this.Load = false;
+ console.log(resp);
+ if (resp['cust'].alert != undefined){
+ console.log("aasas", resp['cust'].alert);
+ var dummy=resp['cust'].alert;
+ // this.data = resp['cust'].alert;
+
+
+ for(var mData in this.data){
+ for(var pData in dummy){
+ if(mData === pData){
+ console.log(dummy[mData]);
+ this.data[mData]=dummy[mData];
+ }else{
+ this.data[pData]= dummy[pData];
+ }
+ }
+
+ }
+
+ console.log("kkkk", this.data);
+ this.dataOriginal = JSON.parse(JSON.stringify(this.data));
+ }
+ }, err => {
+ this.Load = false;
+ console.log("err", err);
+ })
+
+}
+
+tab(key1, key2) {
+ if (key1 && key2)
+ this.data[key1][key2] = !this.data[key1][key2];
+
+ if (JSON.stringify(this.data) === JSON.stringify(this.dataOriginal))
+ return;
+
+ this.fData.contactid = this.useridd;
+ this.fData.alert = this.data;
+ this.Load = true;
+ this.contactService.editDealer(this.fData).subscribe(resp => {
+ this.Load = false;
+ this._flashMessagesService.show("Setting Updated", { cssClass: 'alert-success', timeout: 2000 });
+ // toastr.success("Setting Updated");
+ // this.router.navigateByUrl("/account")
+ this.dataOriginal = JSON.parse(JSON.stringify(this.data));
+ }, err => {
+ this.Load = false;
+ this._flashMessagesService.show("Server error , Try after sometime !!!", { cssClass: 'alert-denger', timeout: 2000 });
+ console.log("err", err);
+ })
+}
+
+tab1(key1, key2, value) {
+ if (key1 && key2)
+ if (!value)
+ this.data[key1][key2] = !this.data[key1][key2];
+ else
+ this.data[key1][key2] = value;
+ if (JSON.stringify(this.data) === JSON.stringify(this.dataOriginal))
+ return;
+
+ this.fData.contactid = this.useridd;
+ this.fData.alert = this.data;
+ this.Load = true;
+ this.contactService.editDealer(this.fData).subscribe(resp => {
+ // toastr.success("Setting Updated");
+ this.Load = false;
+ this._flashMessagesService.show("Setting Updated", { cssClass: 'alert-success', timeout: 2000 });
+ // this.router.navigateByUrl("/account")
+ this.dataOriginal = JSON.parse(JSON.stringify(this.data));
+ }, err => {
+ this.Load = false;
+ this._flashMessagesService.show("Server error , Try after sometime !!!", { cssClass: 'alert-denger', timeout: 2000 });
+ console.log("err", err);
+ })
+}
+
+
+onClickAddEmail(noti){
+ console.log(this.data);
+ console.log(noti);
+ this.notifType=noti;
+ this.isAddEmail=true;
+ var data = {
+ "buttonClick" : 'email',
+ "notifType" : this.notifType,
+ "compData" : this.data
+ }
+ //this.emailList=this.data[noti].emails;
+ // console.log("in Email",this.emailList);
+ let dialogRef = this.dialog.open(NotificationSettingComponent, {
+ data: {"notifData":data}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "close") {
+
+ }
+ });
+// this.modelService.getModal('myModal').open();
+}
+onClickAddPhone(noti){
+ console.log(this.data);
+ this.notifType=noti;
+ this.isAddPhone=true;
+ var data = {
+ buttonClick : 'phone',
+ "notifType" : this.notifType,
+ "compData" :this.data
+ }
+ // this.phonelist=this.data[noti].phones;
+//console.log("in Email",this.phonelist)
+// this.modelService.getModal('myModal').open();
+let dialogRef = this.dialog.open(NotificationSettingComponent, {
+ data: {"notifData":data}
+});
+dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "close") {
+
+ }
+});
+
+}
+
+
+setPriority(notiType, priority) {
+ console.log(priority);
+ console.log(this.data);
+ switch (notiType) {
+ case 'ign':
+ this.data.ign.priority = priority;
+ return;
+ case 'geo':
+ this.data.geo.priority = priority;
+ return;
+ case 'poi':
+ this.data.poi.priority = priority;
+ return;
+ case 'route':
+ this.data.route.priority = priority;
+ return;
+ case 'overspeed':
+ this.data.overspeed.priority = priority;
+ return;
+ case 'maxstop':
+ this.data.maxstop.priority = priority;
+ return;
+ case 'fuel':
+ this.data.fuel.priority = priority;
+ return;
+ case 'AC':
+ this.data.AC.priority = priority;
+ return;
+ case 'power':
+ this.data.power.priority = priority;
+ return;
+ case 'sos':
+ this.data.sos.priority = priority;
+ return;
+ default:
+ return;
+ };
+
+
+}
+
+
+changelanguage(){
+ console.log("inside function");
+ var payload = {
+ uid: this.useridd,
+ lang: this.selectedlanguage
+ }
+ this.contactService.setlanguage(payload).subscribe(res=>{
+ console.log(res);
+ // this.translate.use(this.selectedlanguage);
+ if(res.message == 'language updated sucessfully'){
+ console.log("language saved");
+ localStorage.setItem('appLang',this.selectedlanguage);
+ this.languageChangeDetection.getLanguage()
+ // this.getLanguage()
+ }
+ // this.translate.setDefaultLang('es');
+ },err=>{
+ this.selectedlanguage = 'en' ;
+ })
+
+}
+
+getLanguage(){
+ var that = this;
+var Var = { uid: this.useridd };
+ this.contactService.getLanguages(Var).subscribe(res=>{
+ this.selectedlanguage = res.language_code ;
+ console.log("fdkjjdfj",res);
+
+ if(res.isSuperAdmin)
+ {
+ this.showAnnouncementMenu=true
+ }else{
+ this.showAnnouncementMenu=false
+ }
+ this.support1=res.support1?res.support1:undefined
+ this.support2=res.support2?res.support2:undefined
+ this.support3=res.support3?res.support3:undefined
+ this.service1=res.service1?res.service1:undefined
+ this.service2=res.service2?res.service2:undefined
+ this.announcement=res.announcement?res.announcement:undefined
+ this.GET_announcememt=res.show_announcement?res.show_announcement:false;
+
+ console.log(res.isSuperAdmin,this.showAnnouncementMenu,this.announcement,this.GET_announcememt);
+
+ this.translate.setDefaultLang(this.selectedlanguage);
+
+ this.translate.use(this.selectedlanguage);
+ var currencyfiltered = this.currency.filter(d=>{
+ if(res.currency_code != undefined){
+ if(d.currencyVal === res.currency_code){
+ return d.country;
+ }
+ }else{
+ if(d.currencyVal === 'INR'){
+ return d.country;
+ }
+ }
+ })
+ this.optiondefault = currencyfiltered[0].country;
+
+
+ },err=>{
+ console.log(err);
+ })
+
+}
+
+getToken(){
+
+ this.contactService.getUserObj(this.useridd).subscribe(res=>{
+ this.timezone = res.timezone;
+ this.support1=res.support1?res.support1:undefined
+ this.support2=res.support2?res.support2:undefined
+ this.support3=res.support3?res.support3:undefined
+ this.service1=res.service1?res.service1:undefined
+ this.service2=res.service2?res.service2:undefined;
+ this.driverManagement=res.driverManagement?res.driverManagement:false;
+ this.paymentGateway=res.paymentgateway?res.paymentgateway:false;
+ if(res.digital_input){
+ this.workingHours=res.digital_input
+ }
+ if(res.renewal_charges){
+ this.renewalCharges=res.renewal_charges
+ }
+ if(res.tripGeneration != undefined){
+ this.tripGenerationVal = res.tripGeneration ;
+ }
+ // if(res.relay_timer!=undefined){
+ // this.relay_timer=res.relay_timer
+ // }
+ if(res.label_setting!=undefined){
+ this.labelSetting=res.label_setting
+ }
+ console.log("LABLE SETTING", this.labelSetting);
+
+ setTimeout(() => {
+ $('#dbselect').multipleSelect({
+ width: 300,
+ placeholder: 'Select Timezone',
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ }, 100);
+
+ })
+
+}
+
+
+
+
+getTransectionDetail(){
+ console.log("Inside Transection Detail Page");
+ this.allocatedPoints =[];
+ if(this.from_date){
+ var fd = this.from_date.toISOString();
+ }
+ if(this.to_date){
+ var td = this.to_date.toISOString()
+ }
+
+ this.contactService.getPointDetails(this.useridd,fd,td).subscribe(res=>{
+ console.log('allocatedPoint',res);
+ this.allocatedPoints = res;
+ this.show=true;
+ })
+}
+
+
+tripGenerationFunc(ev){
+ console.log(ev);
+ var payload = {
+ uid: this.useridd,
+ tripGeneration: ev.value
+ }
+ this.contactService.setlanguage(payload).subscribe(res=>{
+ console.log('res=>',res);
+ this.getToken()
+
+ this.data_descip = "Setting Saved";
+ launch_toast();
+ })
+
+
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+}
+btnTag:boolean = false;
+btnKey= 'Save'
+getApiKey(){
+ this.contactService.getgoogleApi(this.useridd).subscribe(res=>{
+ if(res.message != "api key not found"){
+ this.api_key = res.api_key;
+ this.btnTag = true;
+ this.btnKey= 'Change';
+
+ }else{
+
+ console.log('this.api_key',this.api_key);
+ }
+ })
+}
+
+saveApi(){
+ if(this.btnKey === 'Change'){
+ this.btnTag = false;
+ this.btnKey = 'Save';
+ return;
+ }
+
+ if(this.btnKey === 'Save'){
+ var pld= {
+ u_id: this.useridd,
+ api_key: this.api_key
+ }
+ this.contactService.setgoogleApi(pld).subscribe(res=>{
+ console.log(res);
+ this.data_descip = "Google API Key Saved";
+ launch_toast();
+
+ })
+
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast_1")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+}
+
+createAnnouncement(){
+ console.log("In announcement");
+ var payload = {
+ uid: this.useridd,
+ announcement: this.announcement
+ }
+ this.contactService.setlanguage(payload).subscribe(res=>{
+ console.log(res);
+ // this.translate.use(this.selectedlanguage);
+ if(res.message == 'announcement updated sucessfully'){
+ console.log("announcement saved");
+ this.tost1("succ");
+ this.getLanguage()
+ }
+ // this.translate.setDefaultLang('es');
+ })
+
+}
+
+currency=[];
+getCurrencies(){
+ this.currency = [];
+ // this.contactService.getCurrencies().subscribe(res=>{
+ var currencyObj = this.currencyJson;
+ for(var i in currencyObj){
+ if(this.data.currency != undefined){
+ var devicecurr = this.data.currency ;
+ if(i == devicecurr){
+ this.optiondefault = i+ '-' + currencyObj[i];
+ }
+
+ }else{
+ // if(i == 'INR'){
+ // this.optiondefault = i+ '-' + currencyObj[i];
+ // }
+ }
+
+ var tempObj = {
+ currencyVal : i,
+ country : i+ '-' + currencyObj[i]
+ }
+ this.currency.push(tempObj);
+ }
+
+ console.log(this.currency);
+ // this.loadropdown();
+ // })
+}
+
+dataSelect=[];
+
+filterStates(val) {
+ console.log(val)
+ // console.log(this.dummyuserData)
+ if (val) {
+ const filterValue: any = val;
+ console.log(this.currency);
+ this.dataSelect = this.currency.filter(function (d) {
+ return d.country.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase()) > -1;
+ });
+
+ return this.dataSelect;
+ }
+
+}
+
+currencySet(){
+ console.log(this.dataSelect);
+ var pld= {
+ uid : this.useridd,
+ currency_code : (this.dataSelect.length !=0)? this.dataSelect[0].currencyVal : this.optiondefault.split('-')[0]
+ }
+ console.log(pld);
+ this.contactService.setlanguage(pld).subscribe(res=>{
+ console.log(res);
+ this.tost1('currset');
+ })
+}
+rechargePlans
+getRechargePlans(){
+ this.contactService.get('/RechargePlan/get?SupAdmin='+this.useridd).subscribe(res=>{
+ console.log(res);
+ this.rechargePlans=res;
+
+ })
+}
+
+addNewPlan(){
+
+let dialogRef = this.dialog.open(AddPlanComponent, {
+ width: '600px',
+ height:'400px',
+ data: null
+});
+
+dialogRef.afterClosed().subscribe(result => {
+
+ if(result == "succ"){
+ this.getRechargePlans()
+ }
+
+});
+}
+
+deletePlan(id){
+ this.contactService.get('/RechargePlan/delete?id='+id).subscribe(res=>{
+ console.log(res);
+ this.getRechargePlans()
+
+ })
+}
+editPlan(item){
+ let dialogRef = this.dialog.open(AddPlanComponent, {
+ width: '600px',
+ height:'400px',
+ data: item
+});
+
+dialogRef.afterClosed().subscribe(result => {
+
+ if(result == "succ"){
+ this.getRechargePlans()
+ }
+
+});
+}
+
+
+
+currencyJson = {
+ "AED": "United Arab Emirates Dirham",
+ "AFN": "Afghan Afghani",
+ "ALL": "Albanian Lek",
+ "AMD": "Armenian Dram",
+ "ANG": "Netherlands Antillean Guilder",
+ "AOA": "Angolan Kwanza",
+ "ARS": "Argentine Peso",
+ "AUD": "Australian Dollar",
+ "AWG": "Aruban Florin",
+ "AZN": "Azerbaijani Manat",
+ "BAM": "Bosnia-Herzegovina Convertible Mark",
+ "BBD": "Barbadian Dollar",
+ "BDT": "Bangladeshi Taka",
+ "BGN": "Bulgarian Lev",
+ "BHD": "Bahraini Dinar",
+ "BIF": "Burundian Franc",
+ "BMD": "Bermudan Dollar",
+ "BND": "Brunei Dollar",
+ "BOB": "Bolivian Boliviano",
+ "BRL": "Brazilian Real",
+ "BSD": "Bahamian Dollar",
+ "BTC": "Bitcoin",
+ "BTN": "Bhutanese Ngultrum",
+ "BWP": "Botswanan Pula",
+ "BYN": "Belarusian Ruble",
+ "BZD": "Belize Dollar",
+ "CAD": "Canadian Dollar",
+ "CDF": "Congolese Franc",
+ "CHF": "Swiss Franc",
+ "CLF": "Chilean Unit of Account (UF)",
+ "CLP": "Chilean Peso",
+ "CNH": "Chinese Yuan (Offshore)",
+ "CNY": "Chinese Yuan",
+ "COP": "Colombian Peso",
+ "CRC": "Costa Rican Colón",
+ "CUC": "Cuban Convertible Peso",
+ "CUP": "Cuban Peso",
+ "CVE": "Cape Verdean Escudo",
+ "CZK": "Czech Republic Koruna",
+ "DJF": "Djiboutian Franc",
+ "DKK": "Danish Krone",
+ "DOP": "Dominican Peso",
+ "DZD": "Algerian Dinar",
+ "EGP": "Egyptian Pound",
+ "ERN": "Eritrean Nakfa",
+ "ETB": "Ethiopian Birr",
+ "EUR": "Euro",
+ "FJD": "Fijian Dollar",
+ "FKP": "Falkland Islands Pound",
+ "GBP": "British Pound Sterling",
+ "GEL": "Georgian Lari",
+ "GGP": "Guernsey Pound",
+ "GHS": "Ghanaian Cedi",
+ "GIP": "Gibraltar Pound",
+ "GMD": "Gambian Dalasi",
+ "GNF": "Guinean Franc",
+ "GTQ": "Guatemalan Quetzal",
+ "GYD": "Guyanaese Dollar",
+ "HKD": "Hong Kong Dollar",
+ "HNL": "Honduran Lempira",
+ "HRK": "Croatian Kuna",
+ "HTG": "Haitian Gourde",
+ "HUF": "Hungarian Forint",
+ "IDR": "Indonesian Rupiah",
+ "ILS": "Israeli New Sheqel",
+ "IMP": "Manx pound",
+ "INR": "Indian Rupee",
+ "IQD": "Iraqi Dinar",
+ "IRR": "Iranian Rial",
+ "ISK": "Icelandic Króna",
+ "JEP": "Jersey Pound",
+ "JMD": "Jamaican Dollar",
+ "JOD": "Jordanian Dinar",
+ "JPY": "Japanese Yen",
+ "KES": "Kenyan Shilling",
+ "KGS": "Kyrgystani Som",
+ "KHR": "Cambodian Riel",
+ "KMF": "Comorian Franc",
+ "KPW": "North Korean Won",
+ "KRW": "South Korean Won",
+ "KWD": "Kuwaiti Dinar",
+ "KYD": "Cayman Islands Dollar",
+ "KZT": "Kazakhstani Tenge",
+ "LAK": "Laotian Kip",
+ "LBP": "Lebanese Pound",
+ "LKR": "Sri Lankan Rupee",
+ "LRD": "Liberian Dollar",
+ "LSL": "Lesotho Loti",
+ "LYD": "Libyan Dinar",
+ "MAD": "Moroccan Dirham",
+ "MDL": "Moldovan Leu",
+ "MGA": "Malagasy Ariary",
+ "MKD": "Macedonian Denar",
+ "MMK": "Myanma Kyat",
+ "MNT": "Mongolian Tugrik",
+ "MOP": "Macanese Pataca",
+ "MRO": "Mauritanian Ouguiya (pre-2018)",
+ "MRU": "Mauritanian Ouguiya",
+ "MUR": "Mauritian Rupee",
+ "MVR": "Maldivian Rufiyaa",
+ "MWK": "Malawian Kwacha",
+ "MXN": "Mexican Peso",
+ "MYR": "Malaysian Ringgit",
+ "MZN": "Mozambican Metical",
+ "NAD": "Namibian Dollar",
+ "NGN": "Nigerian Naira",
+ "NIO": "Nicaraguan Córdoba",
+ "NOK": "Norwegian Krone",
+ "NPR": "Nepalese Rupee",
+ "NZD": "New Zealand Dollar",
+ "OMR": "Omani Rial",
+ "PAB": "Panamanian Balboa",
+ "PEN": "Peruvian Nuevo Sol",
+ "PGK": "Papua New Guinean Kina",
+ "PHP": "Philippine Peso",
+ "PKR": "Pakistani Rupee",
+ "PLN": "Polish Zloty",
+ "PYG": "Paraguayan Guarani",
+ "QAR": "Qatari Rial",
+ "RON": "Romanian Leu",
+ "RSD": "Serbian Dinar",
+ "RUB": "Russian Ruble",
+ "RWF": "Rwandan Franc",
+ "SAR": "Saudi Riyal",
+ "SBD": "Solomon Islands Dollar",
+ "SCR": "Seychellois Rupee",
+ "SDG": "Sudanese Pound",
+ "SEK": "Swedish Krona",
+ "SGD": "Singapore Dollar",
+ "SHP": "Saint Helena Pound",
+ "SLL": "Sierra Leonean Leone",
+ "SOS": "Somali Shilling",
+ "SRD": "Surinamese Dollar",
+ "SSP": "South Sudanese Pound",
+ "STD": "São Tomé and Príncipe Dobra (pre-2018)",
+ "STN": "São Tomé and Príncipe Dobra",
+ "SVC": "Salvadoran Colón",
+ "SYP": "Syrian Pound",
+ "SZL": "Swazi Lilangeni",
+ "THB": "Thai Baht",
+ "TJS": "Tajikistani Somoni",
+ "TMT": "Turkmenistani Manat",
+ "TND": "Tunisian Dinar",
+ "TOP": "Tongan Pa'anga",
+ "TRY": "Turkish Lira",
+ "TTD": "Trinidad and Tobago Dollar",
+ "TWD": "New Taiwan Dollar",
+ "TZS": "Tanzanian Shilling",
+ "UAH": "Ukrainian Hryvnia",
+ "UGX": "Ugandan Shilling",
+ "USD": "United States Dollar",
+ "UYU": "Uruguayan Peso",
+ "UZS": "Uzbekistan Som",
+ "VEF": "Venezuelan Bolívar Fuerte (Old)",
+ "VES": "Venezuelan Bolívar Soberano",
+ "VND": "Vietnamese Dong",
+ "VUV": "Vanuatu Vatu",
+ "WST": "Samoan Tala",
+ "XAF": "CFA Franc BEAC",
+ "XAG": "Silver Ounce",
+ "XAU": "Gold Ounce",
+ "XCD": "East Caribbean Dollar",
+ "XDR": "Special Drawing Rights",
+ "XOF": "CFA Franc BCEAO",
+ "XPD": "Palladium Ounce",
+ "XPF": "CFP Franc",
+ "XPT": "Platinum Ounce",
+ "YER": "Yemeni Rial",
+ "ZAR": "South African Rand",
+ "ZMW": "Zambian Kwacha",
+ "ZWL": "Zimbabwean Dollar"
+}
+}
diff --git a/src/app/account-detail/add-plan/add-plan.component.html b/src/app/account-detail/add-plan/add-plan.component.html
new file mode 100644
index 0000000..a36879e
--- /dev/null
+++ b/src/app/account-detail/add-plan/add-plan.component.html
@@ -0,0 +1,51 @@
+
+
+ {{title}}
+
+
+
+ Cancel
+ Save
+ Update
+
+
+
+
\ No newline at end of file
diff --git a/src/app/account-detail/add-plan/add-plan.component.scss b/src/app/account-detail/add-plan/add-plan.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/account-detail/add-plan/add-plan.component.spec.ts b/src/app/account-detail/add-plan/add-plan.component.spec.ts
new file mode 100644
index 0000000..b3cd2ba
--- /dev/null
+++ b/src/app/account-detail/add-plan/add-plan.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddPlanComponent } from './add-plan.component';
+
+describe('AddPlanComponent', () => {
+ let component: AddPlanComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddPlanComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddPlanComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/account-detail/add-plan/add-plan.component.ts b/src/app/account-detail/add-plan/add-plan.component.ts
new file mode 100644
index 0000000..0711c86
--- /dev/null
+++ b/src/app/account-detail/add-plan/add-plan.component.ts
@@ -0,0 +1,72 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup } from '@angular/forms';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-add-plan',
+ templateUrl: './add-plan.component.html',
+ styleUrls: ['./add-plan.component.scss']
+})
+export class AddPlanComponent implements OnInit {
+ planForm:FormGroup;
+ title="Add New Plan"
+ useridd;
+ or
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private fb:FormBuilder,private contactService:ContactService) { }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.planForm=this.fb.group({
+ Name:[''],
+ Status:[''],
+ Amount:[''],
+ Duration_days:[''],
+ SupAdmin:[this.useridd],
+ Org:[this.or]
+ })
+ if(this.data!=null){
+ this.title="Edit Plan Details";
+ this.patchPlanForm()
+ }
+ }
+
+ patchPlanForm(){
+ this.planForm.patchValue({
+ Name:this.data.Name,
+ Status:this.data.Status,
+ Amount:this.data.Amount,
+ Duration_days:this.data.Duration_days,
+ SupAdmin:[this.useridd],
+ Org:[this.or]
+ })
+ }
+
+ submit(){
+ console.log(this.planForm.value);
+ this.contactService.post('/RechargePlan/add',this.planForm.value).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close("succ")
+ })
+ }
+
+ editPlan(){
+ var data={
+ _id:this.data._id,
+ Name:this.planForm.value.Name,
+ Status:this.planForm.value.Status,
+ Amount:this.planForm.value.Amount,
+ Duration_days:this.planForm.value.Duration_days,
+ SupAdmin:this.planForm.value.SupAdmin,
+ Org:this.planForm.value.Org
+ }
+
+ this.contactService.post('/RechargePlan/edit',data).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close("succ")
+ })
+ }
+
+}
diff --git a/src/app/account/account.component.css b/src/app/account/account.component.css
new file mode 100644
index 0000000..e1cef52
--- /dev/null
+++ b/src/app/account/account.component.css
@@ -0,0 +1,486 @@
+ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+ .upper{
+ margin-top: -70px;
+ width: 100%;
+ height: 17%;
+ /* margin-left: -2px;*/
+ position: fixed;
+ background-color: white;
+ top: 0;
+ z-index: 1
+}
+.up{
+ color: gray;
+ /* Add a font */
+
+ /* Set the font-size to 25 pixels */
+ font-size: 25px;
+
+}
+.middle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+}
+
+.dropdown {
+ position: relative;
+ display: inline-block;
+}
+
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+ margin-left: -220px;
+ margin-top: -20px;
+
+}
+
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+
+.desc {
+ padding: 15px;
+ text-align: center;
+}
+#insert{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ #insert2{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ .example-container {
+ width: 500px;
+ height: 300px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ }
+
+ .example-sidenav-content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .example-sidenav {
+ padding: 20px;
+ }
+ .vertical-menu {
+ width: 250px;
+ padding-left: 10px;
+}
+
+.vertical-menu a {
+ background-color: #eee;
+ color: black;
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+
+}
+
+.vertical-menu a:hover {
+ background-color: #ccc;
+}
+
+.vertical-menu a.active {
+
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+}
+#c2 {
+
+
+}
+#c1 {
+ float:left;
+
+}
+
+body {margin:0}
+
+.icon-bar {
+ width: 17%;
+/* background-color: #555; */
+background-color: #18262F;
+ margin-top: -9px;
+ height:100%;
+ position: fixed;
+ display: inline-block;
+ margin-left: -16px;
+}
+@media screen and (max-width: 1000px){
+ .off{
+ display: none;
+ }
+}
+.icon-bar2 {
+
+ width: 299px;
+ background-color: white;
+ margin-top: -7px;
+ height:86vh;
+ position: fixed;
+
+}
+.icon-bar a {
+ display: block;
+ text-align: center;
+ padding: 16px;
+ transition: all 0.3s ease;
+ color: white;
+ font-size: 14px;
+ text-align: left;
+}
+
+.icon-bar a:hover {
+ background-color: #000;
+}
+
+.active {
+ background-color: #4CAF50 !important;
+}
+.iphone {
+ width: 201px;
+ height: 378px;
+ background: #f9f7f9;
+ border: 5px solid #c1bfc1;
+ border-radius: 45px;
+ opacity: 0.8;
+}
+.highlight {
+ width: 185px;
+ height: 366px;
+ border: 3px solid #fff;
+ border-radius: 45px;
+ position: relative;
+ z-index: 10;
+ top: -748px;
+ left: 10px;
+}
+.circle {
+ width: 7px;
+ height: 7px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -370px;
+ left: 92px;
+}
+.camera {
+ width: 10px;
+ height: 10px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -376px;
+ left: 66px;
+}
+.speaker {
+ width: 59px;
+ height: 3px;
+ background: #333;
+ border-radius: 5px;
+ position: relative;
+ top: -372px;
+ left: 73px;
+}
+.screen {
+ width: 166px;
+ height: 255px;
+ border: 3px solid #333;
+ border-radius: 5px;
+ position: relative;
+ left: 18px;
+ top: -365px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+.home1 {
+ width: 47px;
+ height: 47px;
+ background: #fff;
+ border-radius: 50%;
+ position: relative;
+ top: -353px;
+ left: 79px;
+ z-index: 2;
+}
+.home2 {
+ width: 52px;
+ height: 52px;
+ border-radius: 50%;
+ position: relative;
+ top: -403px;
+ left: 77px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+#c2{
+ background:green;
+ float:right;
+}
+#c1, #c2 {
+ width: 33%;
+ background: rebeccapurple
+}
+
+#c3 {
+ width: auto;
+ width:34%;
+ background: red
+}
+.off{
+ margin: auto;
+ width: 60%;
+ top:70%;
+ padding: 10px;
+ margin-right:30%
+
+}
+.newspaper {
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 40px; /* Firefox */
+ column-gap: 40px;
+ align-content:left;
+ text-align: left;
+}
+#demo {
+ margin: 30px 0 50px 0;
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+}
+
+#demo .wrapper {
+ display: inline-block;
+ width: 180px;
+ margin: 0 10px 0 0;
+ height: 20px;
+ position: relative;
+}
+
+#demo .parent {
+ height: 100%;
+ width: 100%;
+ display: block;
+ cursor: pointer;
+ line-height: 30px;
+ height: 30px;
+ border-radius: 5px;
+ background: #F9F9F9;
+ border: 1px solid #AAA;
+ border-bottom: 1px solid #777;
+ color: #282D31;
+ font-weight: bold;
+ z-index: 2;
+ position: relative;
+ -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+ -webkit-transition-delay: .8s;
+ text-align: center;
+}
+
+#demo .parent:hover,
+#demo .content:hover ~ .parent {
+ background: #fff;
+ -webkit-transition-delay: 0s, 0s, 0s;
+}
+
+#demo .content:hover ~ .parent {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ z-index: 0;
+}
+
+#demo .content {
+ position: absolute;
+ top: 0;
+ display: block;
+ z-index: 1;
+ height: 0;
+ width: 180px;
+ padding-top: 30px;
+ -webkit-transition: height .5s ease;
+ -webkit-transition-delay: .4s;
+ border: 1px solid #777;
+ border-radius: 5px;
+ box-shadow: 0 1px 2px rgba(0,0,0,.4);
+}
+
+#demo .wrapper:active .content {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+#demo .content:hover {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+
+#demo .content ul {
+ background: #fff;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ height: 100%;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+
+#demo .content ul a {
+ text-decoration: none;
+}
+
+#demo .content li:hover {
+ background: #eee;
+ color: #333;
+}
+
+#demo .content li {
+ list-style: none;
+ text-align: left;
+ color: #888;
+ font-size: 14px;
+ line-height: 30px;
+ height: 30px;
+ padding-left: 10px;
+ border-top: 1px solid #ccc;
+}
+
+#demo .content li:last-of-type {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+.customClass {
+ background-color: #dd3;
+ border-radius: 5px;
+ margin:5px;
+ width: 500px;
+}
+
+.customClass .img-ul-upload {
+ background-color: #000 !important;
+}
+
+.customClass .img-ul-clear {
+ background-color: #B819BB !important;
+}
+
+.customClass .img-ul-drag-box-msg {
+ color: purple !important;
+}
+
+.customClass .img-ul-container {
+ background-color: #FF6CAD !important;
+}
+.img-ul-file-upload[_ngcontent-c6] {
+ padding: 16px;
+ height: 201px !important;
+}
+.weekDays-selector input {
+ display: none!important;
+ }
+
+ .weekDays-selector input[type=checkbox] + label {
+ display: inline-block;
+ border-radius: 6px;
+ background: #dddddd;
+ height: 40px;
+ width: 34.2px;
+ margin-right: 3px;
+ line-height: 40px;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ .weekDays-selector input[type=checkbox]:checked + label {
+ background: #2AD705;
+ color: #ffffff;
+ }
+ @media screen and (max-width: 900px) {
+ .icon-bar{
+ display: none;
+
+ }
+ .sch{
+ display: none;
+ }
+ .first{
+ width:1%!important;
+ }
+ .second{
+ margin-left: 8px!important;
+ }
+ .small{
+ display: block!important;
+ }
+ .image{
+ display: none;
+ }
+ .schlar{
+ display: block!important;
+ }
+ }
+
+ @media screen and (min-width: 900px) {
+.schlar{
+ display: none;
+}
+
+ }
+ .small{
+ display: none;
+ }
+ .first{
+ float:left;
+ width: 16%;
+ height:86vh;
+ overflow-y: hidden;
+ overflow-x: hidden;
+ margin-right: 5px
+ }
+ .second{
+ width: 88%;
+ height:86vh;
+ margin-left:171px;
+ }
+ .mat-dialog-container {
+ max-width: none !important;
+}
+.sch{
+
+}
+.schlar{
+
+}
+.pointer{
+ cursor:pointer !important;
+}
+.expansion-panel__content{
+ margin-left: 0% !important;
+}
\ No newline at end of file
diff --git a/src/app/account/account.component.html b/src/app/account/account.component.html
new file mode 100644
index 0000000..5fc369b
--- /dev/null
+++ b/src/app/account/account.component.html
@@ -0,0 +1,652 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
My App
+
+
+
+
+
+
+
+
+
+ {{fs}} {{ls}}
+ {{or}}
+
+ My Account
+ Log Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{fs}} {{ls}}
+ {{or}}
+
+ My Account
+ Log Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{userId}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Device ID:
+
{{deviceid}}
+
Created by:
+
{{emailid}}
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+
+
+
+
+
+
+ Matrix Name
+ API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ User Info
+ Condition
+ value
+
+
+
+
+
+
+
+
+
+
+ add
+
+
+
+
+
+
+ add Add Scheduler
+
+
+
+
+
+
+
+
+ .....
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Name
+ ON Time
+ OFF Time
+
+
+
+
+
+
+
+ {{f_did}}
+
+ {{device.f_o_t}}
+ {{device.f_f_t}}
+
+
+
+
+
+ mode_edit
+
+
+ delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/account/account.component.spec.ts b/src/app/account/account.component.spec.ts
new file mode 100644
index 0000000..f3171ba
--- /dev/null
+++ b/src/app/account/account.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AccountComponent } from './account.component';
+
+describe('AccountComponent', () => {
+ let component: AccountComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AccountComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AccountComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/account/account.component.ts b/src/app/account/account.component.ts
new file mode 100644
index 0000000..6dbdbe9
--- /dev/null
+++ b/src/app/account/account.component.ts
@@ -0,0 +1,584 @@
+import { Component, OnInit,Output,EventEmitter } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {GmapComponent} from '../gmap/gmap.component';
+import { EditScheComponent } from '../edit-sche/edit-sche.component';
+
+import {RuleComponent} from '../rule/rule.component';
+import { ExpansionPanelsModule } from 'ng2-expansion-panels';
+import {ContactService} from '../contact.service';
+import { TimeDurationPickerModule } from 'angular2-time-duration-picker';
+import {Schedule} from '../shedule';
+import {Scheduleb} from '../scheduleb';
+import {Schedulec} from '../schedulec';
+import { DatePipe } from '@angular/common';
+import {Device} from '../device';
+import * as moment from 'moment-timezone';
+import * as io from 'socket.io-client';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import {Router, ActivatedRoute, Params} from '@angular/router';
+import { DatepickerModule as YourAlias } from 'angular2-material-datepicker'
+@Component({
+ selector: 'app-details',
+ templateUrl: './account.component.html',
+ styleUrls: ['./account.component.css'],
+ providers: [ContactService,DatePipe]
+})
+export class AccountComponent implements OnInit {
+ @Output() private onClose: EventEmitter = new EventEmitter();
+ @Output() private onCancel: EventEmitter = new EventEmitter();
+ public cancel(): void {
+ this.unselect();
+ this.onCancel.emit();
+}
+private unselect(): void {
+ //this.container.selectedPanel = undefined;
+ this.onClose.emit(this);
+}
+ animal: string;
+ name: string;
+/* foods = [
+ {value: 'SMS', viewValue: 'SMS'},
+ {value: 'Email', viewValue: 'Email'},
+ {value: 'Push', viewValue: 'Push Notification'},
+ ]; */
+ foodss = [
+ {value: 'Daily', viewValue: 'Daily'},
+/* {value: 'Weekly', viewValue: 'Weekly'},
+ {value: 'Monthly', viewValue: 'Monthly'}, */
+ ];
+
+ devices = [
+ {value: 'steak-0', viewValue: 'Steak'},
+ {value: 'pizza-1', viewValue: 'Pizza'},
+ {value: 'tacos-2', viewValue: 'Tacos'}
+ ];
+ device: Device;
+ Device_ID: string;
+ schedules: Schedule[];
+ schedule: Schedule;
+ schedulesb: Scheduleb[];
+ scheduleb: Scheduleb;
+ schedulesc: Schedulec[];
+ schedulec: Schedulec;
+ action:any;
+ rep:any;
+ month : boolean =false;
+ daydes : boolean =true;
+ myForm:any;
+ date:any;
+ dayselM:any ;
+ dayselT:any;
+ dayselW:any;
+ dayselTH:any;
+ dayselF:any;
+ dayselSa:any ;
+ dayselSu:any ;
+ Expiry:any;
+ date1:any;
+ date2:any;
+ df:any
+sheds:any;
+on_uid:any;
+off_uid:any;
+on_time_h:any;
+on_time_m:any;
+timedecoff_h:any;
+timedecoff_m:any;
+on_time:any;
+off_time:any;
+on_time_h_e:any;
+on_time_m_e:any;
+str:any;
+sub_minutes:any;
+hours_conv:any;
+hour_on:any;
+minute_on:any;
+off_time_h_e:any;
+off_time_h:any;
+off_time_m_e:any;
+off_time_m:any;
+sub_minute:any;
+hours_con:any;
+hour_off:any;
+minute_off:any
+mess:any;
+mess2:any;
+ontime:any
+offtime:any;
+dev:any;
+did:any;
+dexp:any;
+onn_time: Date ;
+offf_time: Date;
+panel:any;
+private socket;
+matrixred(link){
+ window.open(link);
+}
+saveForm(){
+
+}
+
+edit_schedule(a,b,c,d): void {
+ let dialogRef = this.dialog.open(EditScheComponent, {
+ width: '548px',
+ data: { did: this.deviceid, Device_name: a,on_time: b,off_time:c,on_id:d}
+ });
+ dialogRef.afterClosed().subscribe(result => {
+
+ this.on_table=[];
+ this.tabledata();
+
+ });
+}
+delete_schedule(did){
+
+ this.contactService.delshu(did)
+.subscribe(
+
+ dev => {
+ this.dev = dev
+ //this._flashMessagesService.show('Deleted Sucessfully !!', { timeout: 1000});
+ this.on_table=[];
+ this.tabledata();
+ }
+
+);
+ //this.on_table=[];
+ // this.tabledata();
+
+}
+
+
+logout(){
+
+ this.router.navigateByUrl("login");
+}
+
+
+soon(){
+
+ this.router.navigateByUrl("const?_i="+window.localStorage.token);
+
+}
+
+openNav() {
+
+ this.router.navigateByUrl("location?_dname="+ this.userId +"_id="+this.deviceid);
+
+}
+
+ addshe(onn_time,offf_time)
+
+ {
+
+ this.ontime = this.onn_time
+ this.offtime = this.offf_time
+ function randomString(length, chars) {
+ var mask = '';
+ if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
+ if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ if (chars.indexOf('#') > -1) mask += '0123456789';
+ if (chars.indexOf('!') > -1) mask += '~`!@#$%^&*+-:";\'<>?,./|\\';
+ var result = '';
+ for (var i = length; i > 0; --i) result += mask[Math.floor(Math.random() * mask.length)];
+ return result;
+ }
+ this.on_uid=randomString(5, 'a#A');
+ this.off_uid=randomString(6, 'a#A');
+
+
+
+ this.did =this.userId;
+ this.dexp=this.Expiry
+ if(this.rep === "Daily" ){
+
+
+
+
+
+ if(this.ontime === undefined){
+
+ this._flashMessagesService.show('Error: Enter ON Time !!', { timeout: 2000});
+
+ }
+ else if(this.offtime === undefined){
+ this._flashMessagesService.show('Error: Enter OFF Time !!', { timeout: 2000});
+ }
+ else if(this.ontime == this.offtime){
+ this._flashMessagesService.show('Error: Same ON Time and OFF Time !!', { timeout: 2000});
+
+ }
+ else{
+ const newshe ={
+ did : this.did,
+ ontime: this.ontime,
+ on_uid:this.on_uid,
+ offtime: this.offtime,
+ off_uid:this.off_uid ,
+ wday: [this.dayselM,this.dayselT,this.dayselW,this.dayselTH,this.dayselF,this.dayselSa,this.dayselSu],
+ dexp : this.dexp
+
+ }
+
+
+ this.contactService.addshe(newshe)
+ .subscribe(schedule => {
+
+ this._flashMessagesService.show('Congratulation you have sucessfully created the scheduler !!!', { timeout: 1000});
+ this.tabledata();
+ this.panel.cancel()
+ this.schedules.push(schedule);
+ this.null_fun();
+ } , (err: any) => {
+
+ if(err.status == 500)
+ {
+ this.mess = err._body.split(":")[1] ;
+ this.mess2 = this.mess.split("}")[0];
+ this._flashMessagesService.show("Error: "+this.mess2, { timeout: 2000 });
+ }
+ }
+ );
+ }}
+ else if(this.rep === "Weekly")
+ {
+
+ const newshe ={
+ // repitation: this.rep,
+ did : this.userId,
+ on_time:this.on_time,
+ on_uid:this.on_uid,
+ off_time:this.off_time,
+ off_uid:this.off_uid,
+ w_day: [this.dayselM,this.dayselT,this.dayselW,this.dayselTH,this.dayselF,this.dayselSa,this.dayselSu],
+ wexp : this.Expiry
+ }
+
+ this.contactService.addshe(newshe)
+ .subscribe(scheduleb => {
+ this._flashMessagesService.show('Congratulation you have sucessfully created the scheduler !!!', { timeout: 3000});
+ this.null_fun();
+ this.contactService.getShe(this.devicename).subscribe(
+
+ data => {
+ this.sheds = data
+ this.final = this.sheds.daily_sched
+
+ });
+
+ this.schedulesb.push(scheduleb);
+
+ }, (err: any) => {
+
+ if(err.status == 500)
+ {
+ this.mess = err._body.split(":")[1] ;
+ this.mess2 = this.mess.split("}")[0];
+
+
+ this._flashMessagesService.show("Error: Scheduling For this Device Already Exict Please Remove Earlier one !!", { timeout: 7000 });
+
+ }
+
+ }
+ );
+ }
+ else if(this.rep === "Monthly")
+ {
+ let fromdate =this.datepipe.transform(this.date1, 'yyyy-MM-dd');
+ let todate =this.datepipe.transform(this.date2, 'yyyy-MM-dd');
+
+ const newshe ={
+ did : this.deviceid,
+ fdate: fromdate,
+ tdate: todate,
+ ftime:this.on_time,
+ on_uid:this.on_uid,
+ ttime:this.off_time,
+ off_uid:this.off_uid,
+ mexp : this.Expiry
+
+ }
+
+
+ var subbed = new Date(this.date1 - 3*60*60*1000);
+
+ /* this.on_time = null; */
+ /*
+ this.contactService.addshe(newshe)
+ .subscribe(schedulec => {
+ this._flashMessagesService.show('Congratulation you have sucessfully created the scheduler !!!', { timeout: 3000});
+ this.null_fun();
+ this.schedulesc.push(schedulec);
+ console.log(schedulec.message);
+ }, (err: any) => { console.log(err.status);
+ console.log(err);
+ if(err.status == 500)
+ {
+ this.mess = err._body.split(":")[1] ;
+ this.mess2 = this.mess.split("}")[0];
+
+ console.log(this.mess);
+ this._flashMessagesService.show("Error: Scheduling For this Device Already Exict Please Remove Earlier one !!", { timeout: 7000 });
+ console.log("Error");
+ }
+
+
+
+ }
+
+ ); */
+
+ }
+ }
+
+ onChange(value){
+ if(value === "Daily"){
+ this.daydes = true;
+ this.dayselM = true ;
+ this.dayselT = true ;
+ this.dayselW = true ;
+ this.dayselTH = true ;
+ this.dayselF = true ;
+ this.dayselSa = true ;
+ this.dayselSu = true ;
+ }
+ else if(value === "Monthly")
+ {
+ this.daydes = false;
+ this.dayselM = false ;
+ this.dayselT = false ;
+ this.dayselW = false ;
+ this.dayselTH = false ;
+ this.dayselF = false ;
+ this.dayselSa = false ;
+ this.dayselSu = false ;
+
+ }
+ else{
+ this.daydes = true;
+ this.dayselM = false ;
+ this.dayselT = false ;
+ this.dayselW = false ;
+ this.dayselTH = false ;
+ this.dayselF = false ;
+ this.dayselSa = false ;
+ this.dayselSu = false ;
+
+ }
+ }
+ devi(){
+ this.router.navigateByUrl("dashboard");
+
+ }
+ cond:Boolean = false;
+ point : any = 0;
+ a(){
+
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+ report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed(){
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+
+ delete(){
+ // console.log("DELETE RUNNING");
+ }
+ jun = moment();
+ constructor(private _flashMessagesService: FlashMessagesService,private router: Router,public datepipe: DatePipe,public dialog: MdDialog, private contactService: ContactService, private activatedRoute: ActivatedRoute) {
+
+
+ }
+ openDialog(): void {
+ let dialogRef = this.dialog.open(GmapComponent, {
+ width: '480px',
+ data: { did: this.deviceid, animal: this.animal }
+ });
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log('The dialog was closed');
+
+ this.contactService.getmatrix( this.deviceid).subscribe(
+
+ mat_data => {
+ this.mat = mat_data
+/* this.final = this.sheds[length].daily_sched.ontime;
+*/
+ // console.log(this.mat);
+ // console.log( mat_data);
+ });
+
+
+
+ this.animal = result;
+ // console.log(this.animal);
+ /* this.l.push(this.animal) */
+ });
+ }
+ openDialog2(): void {
+ let dialogRef = this.dialog.open(RuleComponent, {
+ width: '700px',
+ //data: { name: "1234567890", animal: this.animal }
+ });
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log('The dialog was closed');
+ // this.animal = result;
+ // console.log(this.animal);
+ // this.l.push(this.animal)
+ });
+ }
+ private l = [];
+ userId:any;
+ divinfo(){
+
+ }
+ fs :any;
+ ls :any;
+ or :any;
+ userID :any;
+ emailid :any;
+ devicess:any;
+ fm:any;
+ deviceid:any;
+ devicedata:any;
+ devicename:any;
+ final:any;
+ final2:any;
+ onGmt:any;
+ offGmt:any;
+ mat:any;
+ on:any;
+ off:any;
+ f_on:any;
+ f_off:any;
+ d:any;
+ f_did:any;
+ f_onn:any;
+ f_offf:any;
+ f_didd:any;
+ list:any;
+ del:boolean=true;
+ on_table = [];
+ data:any;
+
+ null_fun(){
+ // console.log("NULL CALLED");
+ this.ontime = undefined;
+ this.offtime = undefined;
+ this.rep = undefined;
+ this.on_time=null;
+ this.on_uid=null;
+ this.off_time=null;
+ this.off_uid=null;
+ this.dayselM=null;
+ this.dayselT=null;
+ this.dayselW=null;
+ this.dayselTH=null;
+ this.dayselF=null;
+ this.dayselSa=null;
+ this.dayselSu=null;
+ this.Expiry=null;
+
+
+ }
+ tabledata(){
+
+ this.contactService.getShe(this.devicename).subscribe(
+
+ data => {
+
+ this.sheds = data
+ this.on_table = []
+ this.on = this.sheds.split('|')[0];
+ this.f_onn = this.on.split('-'[0]);
+ this.f_on = this.f_onn[1]
+ let final_ON = this.f_on.split(',')
+
+
+ this.off = this.sheds.split('|')[1];
+ this.f_offf = this.off.split('-'[0]);
+ this.f_off = this.f_offf[1];
+ let final_OFF = this.f_off.split(',')
+
+
+ this.d = this.sheds.split('|')[2];
+ this.f_didd = this.d.split('-')[1];
+ this.f_did = this.f_didd
+
+
+
+ let on_id = this.sheds.split('|')[3];
+ let i_onid = on_id.split('-')[1];
+ let f_onid = i_onid.split('/')[0]
+ for(let i=0;i { console.log(err.status);
+ // console.log(err);
+ if(err.status == 500)
+ {
+ // console.log("No Schedule")
+ // this.on_table = null;
+ //this.del = false;
+ this.on_table = []
+ }
+ })
+
+ }
+
+ ngOnInit() {
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+
+ this.activatedRoute.queryParams.subscribe((params: Params) => {
+ let userId = params['_did'];
+ var devicedata = userId.split('.');
+ this.deviceid = devicedata[0];
+ this.devicename = devicedata[1];
+ this.userId = this.devicename;
+
+ });
+
+
+/* this.contactService.getmatrix( this.deviceid).subscribe(
+
+ mat_data => {
+ this.mat = mat_data
+ console.log(this.mat);
+ console.log( mat_data);
+ }); */
+ this.tabledata();
+ }
+
+}
diff --git a/src/app/add-cust/add-cust.component.html b/src/app/add-cust/add-cust.component.html
new file mode 100644
index 0000000..b1248f3
--- /dev/null
+++ b/src/app/add-cust/add-cust.component.html
@@ -0,0 +1,466 @@
+
+
+
{{title | translate}}
+
+
+
+
+
+
+
+
+
+
+ {{'Please Enter address' | translate}}
+
+
+
+ Timezone
+
+ {{ zone.viewValue }}
+
+
+
+
+
{{'Upload Documents' | translate}} :
+
+
+
+
+
+
+
+
+
+ {{doc.docName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'EMERGENCY CONTACT' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'SUBMIT' | translate}}
+ {{'SUBMIT' | translate}}
+ {{'CANCEL' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add-cust/add-cust.component.scss b/src/app/add-cust/add-cust.component.scss
new file mode 100644
index 0000000..fb8e55f
--- /dev/null
+++ b/src/app/add-cust/add-cust.component.scss
@@ -0,0 +1,1180 @@
+#body{
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
+
+::-webkit-scrollbar {
+ display: none;
+ }
+ #d:hover {
+ color: rgb(14, 102, 18);
+
+
+ }
+ #ac{
+ color: rgb(38, 38, 90)
+ }
+ #active{
+ text-decoration-line: underline;
+ text-decoration-color: rgb(66, 26, 245);
+ }
+ .switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+ }
+
+ .switch input {display:none;}
+
+ .slider {
+ position: absolute;
+ cursor: pointer;
+ top: 6px;
+ left: 11px;
+ right: 7px;
+ bottom: 7px;
+ background-color: #ccc;
+ transition: .4s;
+ }
+
+ .slider:before {
+ position: absolute;
+ content: "";
+ height: 11px;
+ width: 11px;
+ left: 2px;
+ bottom: 5px;
+ background-color: white;
+ transition: .4s;
+ }
+
+ input:checked + .slider {
+ background-color: #2196F3;
+ }
+
+ input:focus + .slider {
+ box-shadow: 0 0 1px #2196F3;
+ }
+
+ input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+ }
+
+ /* Rounded sliders */
+ .slider.round {
+ border-radius: 34px;
+ }
+
+ .slider.round:before {
+ border-radius: 50%;
+ }
+
+
+.sk-fading-circle {
+ margin: 100px auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+
+ }
+
+ .sk-fading-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+ .sk-fading-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 15%;
+ height: 15%;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ }
+ .sk-fading-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg);
+ }
+ .sk-fading-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+ }
+ .sk-fading-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ }
+ .sk-fading-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg);
+ }
+ .sk-fading-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg);
+ }
+ .sk-fading-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+ }
+ .sk-fading-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg);
+ }
+ .sk-fading-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg);
+ }
+ .sk-fading-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+ }
+ .sk-fading-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg);
+ }
+ .sk-fading-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg);
+ }
+ .sk-fading-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+ }
+ .sk-fading-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+ }
+ .sk-fading-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+ }
+ .sk-fading-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+ }
+ .sk-fading-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+ }
+ .sk-fading-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+ }
+ .sk-fading-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+ }
+ .sk-fading-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+ }
+ .sk-fading-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+ }
+ .sk-fading-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+ }
+ .sk-fading-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+ }
+
+ @-webkit-keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+
+ @keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+
+
+ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+ .upper{
+ margin-top: -70px;
+ width: 100%;
+ height: 17%;
+ /* margin-left: -2px;*/
+ position: fixed;
+ background-color: white;
+ top: 0;
+ z-index: 1
+}
+.up{
+ color: gray;
+ /* Add a font */
+
+ /* Set the font-size to 25 pixels */
+ font-size: 25px;
+
+}
+.middle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+}
+
+.dropdown {
+ position: relative;
+ display: inline-block;
+}
+
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+ margin-left: -220px;
+ margin-top: -20px;
+
+}
+
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+
+.rowHeight{
+ height:60px;
+ overflow: scroll
+}
+
+.desc {
+ padding: 15px;
+ text-align: center;
+}
+#insert{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ #insert2{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ .example-container {
+ width: 500px;
+ height: 300px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ }
+
+ .example-sidenav-content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .example-sidenav {
+ padding: 20px;
+ }
+ .vertical-menu {
+ width: 250px;
+ padding-left: 10px;
+}
+
+.vertical-menu a {
+ background-color: #eee;
+ color: black;
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+
+}
+
+.vertical-menu a:hover {
+ background-color: #ccc;
+}
+
+.vertical-menu a.active {
+
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+}
+#c2 {
+
+
+}
+#c1 {
+ float:left;
+
+}
+
+body {margin:0}
+
+.icon-bar {
+ width: 17%;
+/* background-color: #555; */
+background-color: #18262F;
+ margin-top: -9px;
+ height:100%;
+ position: fixed;
+ display: inline-block;
+ margin-left: -16px;
+}
+@media screen and (max-width: 1000px){
+ .off{
+ display: none;
+ }
+}
+.icon-bar2 {
+
+ width: 299px;
+ background-color: white;
+ margin-top: -7px;
+ height:86vh;
+ position: fixed;
+
+}
+.icon-bar a {
+ display: block;
+ text-align: center;
+ padding: 16px;
+ transition: all 0.3s ease;
+ color: white;
+ font-size: 14px;
+ text-align: left;
+}
+
+.icon-bar a:hover {
+ background-color: #000;
+}
+
+.active {
+ background-color: #4CAF50 !important;
+}
+.iphone {
+ width: 201px;
+ height: 378px;
+ background: #f9f7f9;
+ border: 5px solid #c1bfc1;
+ border-radius: 45px;
+ opacity: 0.8;
+}
+.highlight {
+ width: 185px;
+ height: 366px;
+ border: 3px solid #fff;
+ border-radius: 45px;
+ position: relative;
+ z-index: 10;
+ top: -748px;
+ left: 10px;
+}
+.circle {
+ width: 7px;
+ height: 7px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -370px;
+ left: 92px;
+}
+.camera {
+ width: 10px;
+ height: 10px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -376px;
+ left: 66px;
+}
+.speaker {
+ width: 59px;
+ height: 3px;
+ background: #333;
+ border-radius: 5px;
+ position: relative;
+ top: -372px;
+ left: 73px;
+}
+.screen {
+ width: 166px;
+ height: 255px;
+ border: 3px solid #333;
+ border-radius: 5px;
+ position: relative;
+ left: 18px;
+ top: -365px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+.home1 {
+ width: 47px;
+ height: 47px;
+ background: #fff;
+ border-radius: 50%;
+ position: relative;
+ top: -353px;
+ left: 79px;
+ z-index: 2;
+}
+.home2 {
+ width: 52px;
+ height: 52px;
+ border-radius: 50%;
+ position: relative;
+ top: -403px;
+ left: 77px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+#c2{
+ //background:green;
+ float:right;
+}
+#c1, #c2 {
+ width: 33%;
+ //background: rebeccapurple
+}
+
+#c3 {
+ width: auto;
+ width:34%;
+ // background: red
+}
+.off{
+ margin: auto;
+ width: 60%;
+ top:70%;
+ padding: 10px;
+ margin-right:30%
+
+}
+.newspaper {
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 40px; /* Firefox */
+ column-gap: 40px;
+ align-content:left;
+ text-align: left;
+}
+#demo {
+ margin: 30px 0 50px 0;
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+
+}
+
+#demo .wrapper {
+ display: inline-block;
+ width: 180px;
+ margin: 0 10px 0 0;
+ height: 20px;
+ position: relative;
+
+}
+
+#demo .parent {
+ height: 100%;
+ width: 100%;
+ display: block;
+ cursor: pointer;
+ line-height: 30px;
+ height: 30px;
+ border-radius: 5px;
+ background: #F9F9F9;
+ border: 1px solid #AAA;
+ border-bottom: 1px solid #777;
+ color: #282D31;
+ font-weight: bold;
+ z-index: 2;
+ position: relative;
+ -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+ -webkit-transition-delay: .8s;
+ text-align: center;
+}
+
+#demo .parent:hover,
+#demo .content:hover ~ .parent {
+ background: #fff;
+ -webkit-transition-delay: 0s, 0s, 0s;
+}
+
+#demo .content:hover ~ .parent {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ z-index: 0;
+}
+
+#demo .content {
+ position: absolute;
+ top: 0;
+ display: block;
+ z-index: 1;
+ height: 0;
+ width: 180px;
+ padding-top: 30px;
+ -webkit-transition: height .5s ease;
+ -webkit-transition-delay: .4s;
+ border: 1px solid #777;
+ border-radius: 5px;
+ box-shadow: 0 1px 2px rgba(0,0,0,.4);
+}
+
+#demo .wrapper:active .content {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+#demo .content:hover {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+
+#demo .content ul {
+ background: #fff;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ height: 100%;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+
+#demo .content ul a {
+ text-decoration: none;
+}
+
+#demo .content li:hover {
+ background: #eee;
+ color: #333;
+}
+
+#demo .content li {
+ list-style: none;
+ text-align: left;
+ color: #888;
+ font-size: 14px;
+ line-height: 30px;
+ height: 30px;
+ padding-left: 10px;
+ border-top: 1px solid #ccc;
+}
+
+#demo .content li:last-of-type {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+.customClass {
+ background-color: #dd3;
+ border-radius: 5px;
+ margin:5px;
+ width: 500px;
+}
+
+.customClass .img-ul-upload {
+ background-color: #000 !important;
+}
+
+.customClass .img-ul-clear {
+ background-color: #B819BB !important;
+}
+
+.customClass .img-ul-drag-box-msg {
+ color: purple !important;
+}
+
+.customClass .img-ul-container {
+ background-color: #FF6CAD !important;
+}
+.img-ul-file-upload[_ngcontent-c6] {
+ padding: 16px;
+ height: 201px !important;
+}
+.weekDays-selector input {
+ display: none!important;
+ }
+
+ .weekDays-selector input[type=checkbox] + label {
+ display: inline-block;
+ border-radius: 6px;
+ background: #dddddd;
+ height: 40px;
+ width: 34.2px;
+ margin-right: 3px;
+ line-height: 40px;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ .weekDays-selector input[type=checkbox]:checked + label {
+ background: #2AD705;
+ color: #ffffff;
+ }
+ @media screen and (max-width: 900px) {
+ .icon-bar{
+ display: none;
+
+ }
+ .sch{
+ display: none;
+ }
+ .first{
+ width:1%!important;
+ }
+ .second{
+ margin-left: 8px!important;
+ }
+ .small{
+ display: block!important;
+ }
+ .image{
+ display: none;
+ }
+ .schlar{
+ display: block!important;
+ }
+ }
+
+ @media screen and (min-width: 900px) {
+.schlar{
+ display: none;
+}
+
+ }
+ .small{
+ display: none;
+ }
+ .first{
+ float:left;
+ width: 16%;
+ height:86vh;
+ overflow-y: hidden;
+ overflow-x: hidden;
+ margin-right: 5px
+ }
+ .second{
+ width: 88%;
+ height:86vh;
+ margin-left:171px;
+ }
+ .mat-dialog-container {
+ max-width: none !important;
+}
+.sch{
+
+}
+.schlar{
+
+}
+.pointer{
+ cursor:pointer !important;
+ font-size: 11px
+}
+.expansion-panel__content{
+ margin-left: 0% !important;
+}
+
+/* Side Navi */
+#mySidenav a {
+ margin-top: -9px;
+ position: absolute;
+ left: -80px;
+ transition: 0.3s;
+ width: 100px;
+ text-decoration: none;
+ font-size: 28px;
+ color: white;
+ border-radius: 0 5px 5px 0;
+}
+
+#mySidenav a:hover {
+ left: 0;
+}
+
+#about {
+ top: 20px;
+ background-color: #ffffff;
+ opacity: .4;
+}
+
+#blog {
+ top: 80px;
+ background-color: #18262F;
+ position: absolute; z-index: 99;
+}
+
+#projects {
+ top: 140px;
+ background-color: #f44336;
+}
+
+#contact {
+ top: 200px;
+ background-color: #555
+}
+
+
+.button2 {background-color: #008CBA;}
+.ngx-picker--btn {
+ color: #000;
+ background-color: transparent;
+ border: none;
+ padding: 1em;
+ font-size: 1em; }
+ .ngx-picker--btn__selected {
+ background-color: #eee; }
+ .ngx-picker--btn:hover {
+ transition: .25s ease;
+ background-color: #eee;
+ cursor: pointer; }
+ .ngx-picker--btn:focus {
+ outline-color: transparent; }
+
+ .ngx-picker--btn__month:hover {
+ border-top-left-radius: 0.2em; }
+
+ .ngx-picker--btn__done:hover {
+ border-bottom-right-radius: 0.2em; }
+
+ .ngx-picker--btn__now:hover {
+ border-bottom-left-radius: 0.2em; }
+
+ .ngx-picker--btn__next:hover {
+ border-top-right-radius: 0.2em; }
+
+ .calendar {
+ position: absolute;
+ background-color: #e6e6e6;
+ max-width: 16em;
+ min-width: 16em;
+ font-size: 16px;
+ font-family: "Arial", sans-serif;
+ border-radius: 0.2em;
+ box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); }
+
+ .calendar--previous-and-next {
+ position: absolute;
+ right: 0;
+ top: 0;
+ display: flex;
+ justify-content: flex-end; }
+
+ .calendar--footer {
+ display: flex;
+ justify-content: space-between;
+ background-color: #e6e6e6;
+ padding: 0;
+ border-radius: 0.2em; }
+
+ .calendar--years-select,
+ .calendar--months-select {
+ overflow-y: auto;
+ overflow-x: hidden;
+ max-height: 14.85em;
+ background-color: #fff;
+ width: 100%; }
+
+ .calendar--year,
+ .calendar--month {
+ display: block;
+ padding: .5em 1em;
+ width: 100%;
+ overflow: hidden;
+ color: #000; }
+ .calendar--year__selected,
+ .calendar--month__selected {
+ color: #000;
+ font-weight: bold;
+ background-color: #eee; }
+ .calendar--year:hover,
+ .calendar--month:hover {
+ cursor: pointer;
+ background-color: #eee;
+ font-weight: 400;
+ color: #000; }
+
+ .calendar--days-of-week {
+ display: flex;
+ justify-content: space-around;
+ background-color: #eee; }
+
+ .calendar--day-of-week {
+ position: relative;
+ padding: .5em;
+ text-align: center;
+ text-transform: uppercase;
+ color: #000;
+ font-size: .9em; }
+
+ .calendar--days-select {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ background-color: #fff; }
+
+ .calendar--day {
+ text-align: center;
+ width: 1.285em;
+ padding: .5em;
+ font-weight: 500;
+ color: #000; }
+ .calendar--day__muted {
+ color: #999; }
+ .calendar--day__selected {
+ background-color: #eee;
+ color: #000; }
+ .calendar--day:hover {
+ cursor: pointer;
+ color: #000;
+ background-color: #eee; }
+
+ .ngx-picker {
+ display: flex;
+ position: relative; }
+ .ngx-picker .calendar {
+ position: absolute;
+ left: 0;
+ top: 2.5em;
+ z-index: 3; }
+
+ .time-picker {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #e6e6e6; }
+
+ .time--values {
+ display: flex;
+ justify-content: space-between;
+ flex-direction: row;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #eee; }
+
+ .time--value {
+ width: 2.66em;
+ font-size: 1em;
+ padding: .5em 0;
+ text-align: center;
+ color: #000; }
+ .time--value__selected {
+ color: #000;
+ background-color: #e6e6e6; }
+ .time--value:hover {
+ transition: .25s ease;
+ cursor: pointer;
+ background-color: #e6e6e6; }
+
+ [hidden] {
+ display: none !important; }
+ #c11 {
+ width: 25%;
+ float:left
+ }
+ #c22{
+ width: 25%;
+ float:left
+ }
+ #c33 {
+ width: 25%;
+ float:left
+
+ }
+ #c44{
+ width: 25%;
+ float:left
+ }
+ #c111 {
+ width: 50%;
+ float:left
+ }
+ #c222{
+ width: 45%;
+ float:left
+ }
+ #c333 {
+ width: 5%;
+ float:left
+
+ }
+ #myTable {
+ border-collapse: collapse;
+ width: 100%;
+ border: 1px solid #ddd;
+ font-size: 12px;
+ }
+
+ #myTable th, #myTable td {
+ text-align: left;
+ padding: 12px;
+ }
+
+ #myTable tr {
+ border-bottom: 1px solid #ddd;
+ }
+
+ #myTable tr.header, #myTable tr:hover {
+ background-color: #f1f1f1;
+ }
+ * {
+ box-sizing: border-box;
+ }
+ .width{
+ width: 100%;
+ }
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 50px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img{
+ width: 50px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+}
+#myInput {
+ border-radius: 15px;
+ /* border: 2px solid #18262F; */
+ padding: 7px;
+ width: 116px;
+ height: 17px;
+ font-size: 9px;
+ outline: none;
+ float: right;
+ margin-top: 2%;
+}
+
+@-webkit-keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+
+@keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+
+@keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@-webkit-keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
+
+@keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
+
+/* Absolute Center Spinner */
+.loading {
+ position: fixed;
+ z-index: 999;
+ height: 2em;
+ width: 2em;
+ overflow: show;
+ margin: auto;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ }
+
+ /* Transparent Overlay */
+ .loading:before {
+ content: '';
+ display: block;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0,0.3);
+ }
+
+ /* :not(:required) hides these rules from IE9 and below */
+ .loading:not(:required) {
+ /* hide "loading..." text */
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+ }
+
+ .loading:not(:required):after {
+ content: '';
+ display: block;
+ font-size: 10px;
+ width: 1em;
+ height: 1em;
+ margin-top: -0.5em;
+ -webkit-animation: spinner 1500ms infinite linear;
+ -moz-animation: spinner 1500ms infinite linear;
+ -ms-animation: spinner 1500ms infinite linear;
+ -o-animation: spinner 1500ms infinite linear;
+ animation: spinner 1500ms infinite linear;
+ border-radius: 0.5em;
+ -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ }
+
+ /* Animation */
+
+ @-webkit-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-moz-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-o-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
\ No newline at end of file
diff --git a/src/app/add-cust/add-cust.component.spec.ts b/src/app/add-cust/add-cust.component.spec.ts
new file mode 100644
index 0000000..9550500
--- /dev/null
+++ b/src/app/add-cust/add-cust.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddCustComponent } from './add-cust.component';
+
+describe('AddCustComponent', () => {
+ let component: AddCustComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddCustComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddCustComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-cust/add-cust.component.ts b/src/app/add-cust/add-cust.component.ts
new file mode 100644
index 0000000..12f3367
--- /dev/null
+++ b/src/app/add-cust/add-cust.component.ts
@@ -0,0 +1,1447 @@
+import { FormGroup, FormControl, Validators, FormBuilder} from '@angular/forms';
+import {ResponseOptions, Response} from '@angular/http';
+import {Contact} from '../contact';
+import {ContactService} from '../contact.service';
+import {Otp} from '../otp';
+// import {Md5} from 'ts-md5/dist/md5';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { AbstractControl, NG_VALIDATORS, Validator, ValidatorFn } from '@angular/forms';
+const EMAIL_REGEX =/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import * as moment from 'moment-timezone';
+import { ReportService } from '../report/report.service';
+declare var google :any;
+
+
+declare var swal: any,$:any;
+@Component({
+ selector: 'app-add-cust',
+ templateUrl: './add-cust.component.html',
+ styleUrls: ['./add-cust.component.scss'],
+ providers:[ContactService]
+})
+export class AddCustComponent implements OnInit {
+ superAdmin: any;
+ role
+ show1:boolean = false;
+ show2:boolean = true;
+ show3:boolean = false;
+ first_name:any=null;
+ last_name:any=null;
+ passwordd:any=null;
+ org_name:any=null;
+ emaill:any=null;
+ timezone:any = 'Asia/Kolkata';
+ phone:any=null;
+ executed:any;
+ $event2:any;
+ dealer:any;
+ contacts: Contact[]=[];
+ contact: Contact;
+ login1:any;
+ mess2:any;
+ mess:any;
+ otp:any;
+ userID:any;
+ address:any;
+ str:boolean = false;
+ password2:any=null;
+ dealerName:any;
+ isTechnician:boolean=false;
+ dealerSelect: any=[];
+ imageuploadObject = [];
+ sup_admin: any;
+ countrySelected: {};
+ timezoneArray: any[];
+ emergencyForm:FormGroup;
+ title="ADD CUSTOMER"
+ report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed(){
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ stre(){
+ this.str =true;
+ }
+ stren(){
+ this.str =false;
+ }
+ addcus(){
+ this.router.navigateByUrl("add");
+ }
+ clear(){
+ this.first_name=' '
+ this.last_name=' '
+ this.emaill = null
+ this.phone = null
+ }
+ before:any;
+ emmnerr:any;
+ Load:any
+ $event:any;
+ constructor(private contactService: ContactService,private router: Router,private _flashMessagesService: FlashMessagesService,public dialogRef: MdDialogRef,private fb:FormBuilder,private reportService:ReportService
+ ,@Inject(MD_DIALOG_DATA) public data: any) {
+ console.log("DATATATATA",data);
+ if(data){
+ if(data.role=="technitian"){
+ this.title="ADD TECHNICIAN";
+ this.isTechnician=true;
+ this.role=data.role
+ }
+ }
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.0/js/intlTelInput-jquery.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ var initialObj = {
+ doctype:'',
+ image:'',
+ phone:''
+ }
+ this.imageuploadObject.push(initialObj);
+ }
+
+ addContact2(){
+ console.log(this.router.url);
+ var tzone
+ if(this.router.url=="/add-device"){
+ console.log("in");
+ tzone=['Asia/Kolkata']
+ this.reportService.addCustomerFunction('')
+ }else{
+
+ tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log(tzone);
+ }
+ // var tzone
+ console.log("EMERGENCY FORM",this.emergencyForm.value);
+
+ var expDate = new Date();
+ expDate.setFullYear(expDate.getFullYear()+1);
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ this.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ if(this.first_name==null || this.last_name==null || this.passwordd==null )
+ {
+ return this._flashMessagesService.show('Please fill all Requied fields', { cssClass: 'alert-danger', timeout: 3000 });
+
+ }
+ // else if((this.userID == undefined)||(this.userID.trim() == '')){
+ // return this._flashMessagesService.show('User ID is required', { cssClass: 'alert-danger', timeout: 3000 });
+ // }
+ // else if((this.emaill == undefined)||(this.emaill.trim() == '')){
+
+ // return this._flashMessagesService.show('Email is mandatory', { cssClass: 'alert-danger', timeout: 3000 });
+ // }
+ else if(this.password2 != this.passwordd){
+ // this._flashMessagesService.show('Password and Confirm Password do not match', { cssClass: 'alert-danger', timeout: 3000 });
+ this.tost1("psdnmtch")
+ }
+ else if (this.emaill && this.phone){
+ this.Load=true
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id;
+ // console.log(this.useridd);
+ }
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ email: this.emaill,
+ password: this.passwordd,
+ phone: this.phone,
+ supAdmin:this.sup_admin,
+ isDealer: false,
+ expdate : new Date(expDate).toISOString(),
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+ }
+ console.log("1->",newContact2);
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ console.log(contact);
+ // USER_ID already exists
+ this.Load=false
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+ }
+
+ }, (err: any) => {
+ // console.log(err.status);
+ console.log(err);
+ if(err.status == 500)
+ {
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // this.data_descip,
+ // 'error'
+ // )
+ }
+ else if(err.status==401){
+ this.Load=false;
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.message
+
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // 'Internal Server error , Please try after sometime !!!',
+ // 'error'
+ // )
+
+ }else{
+ this.Load=false;
+ this._flashMessagesService.show("Internal Server Error, Please try after sometime !!!", { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ });
+
+ }
+ else if(this.phone){
+ this.Load=true
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id;
+ }
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+
+ // if (!this.executed) {
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ supAdmin:this.sup_admin,
+ expdate : new Date(expDate).toISOString(),
+ phone: this.phone,
+ isDealer: false,
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+ }
+console.log("2->",newContact2);
+
+
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ console.log(contact);
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false;
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+
+ }
+ // USER_ID already exists
+
+ }, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // this.data_descip,
+ // 'error'
+ // )
+ }
+ else if(err.status==401){
+
+ this.Load=false;
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.message
+ // console.log("dadsa");
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this._flashMessagesService.show("Internal Server Error, Please try after sometime", { cssClass: 'alert-danger', timeout: 3000 });
+ }})}
+ else if((this.emaill)||(this.userID)){
+ // if (!this.executed) {
+ // this.executed = true;
+ console.log("we are here");
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id
+
+ }
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+ console.log(emergencyContact);
+
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ org_name: this.org_name,
+ email: this.emaill,
+ expdate : new Date(expDate).toISOString(),
+ supAdmin:this.sup_admin,
+ isDealer: false,
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+
+}
+console.log("3->",newContact2);
+
+
+if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+
+if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ //this.tost1("succ")
+ console.log(contact);
+ // USER_ID already exists
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+
+ }
+
+}, (err: any) => {
+ console.log();
+
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // this.data_descip,
+ // 'error'
+ // )
+ // console.log("error to display",this.emmnerr);
+ // this.tost1("Error")
+ }
+ else if(err.status == 401){
+ this.Load=false;
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ // this.emmnerr=JSON.parse(err._body);
+ // swal(
+ // 'Error',
+ // this.emmnerr.message,
+ // 'error'
+ // )
+ }else{
+ this.Load=false;
+ this._flashMessagesService.show("Internal Server Error, Please try again sometime !!", { cssClass: 'alert-danger', timeout: 3000 });
+ // this.emmnerr=JSON.parse(err._body);
+ // swal(
+ // 'Error',
+ // this.emmnerr.message,
+ // 'error'
+ // )
+ }
+});
+
+
+ }
+
+
+ }
+
+ addContact3(){
+
+ var tzone
+ if(this.router.url=="/add-device"){
+ console.log("in");
+ tzone=['Asia/Kolkata']
+ this.reportService.addCustomerFunction('')
+ }else{
+
+ tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log(tzone);
+ }
+
+ // var tzone = $('#dbselect').multipleSelect('getSelects','value');
+ // console.log(tzone);
+ console.log("EMERGENCY FORM",this.emergencyForm.value);
+
+ var expDate = new Date();
+ expDate.setFullYear(expDate.getFullYear()+1);
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ this.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ if(this.first_name==null || this.last_name==null || this.passwordd==null )
+ {
+ return this._flashMessagesService.show('Please fill all Requied fields', { cssClass: 'alert-danger', timeout: 3000 });
+
+ }
+ // else if((this.userID == undefined)||(this.userID.trim() == '')){
+ // return this._flashMessagesService.show('User ID is required', { cssClass: 'alert-danger', timeout: 3000 });
+ // }
+ // else if((this.emaill == undefined)||(this.emaill.trim() == '')){
+
+ // return this._flashMessagesService.show('Email is mandatory', { cssClass: 'alert-danger', timeout: 3000 });
+ // }
+ else if(this.password2 != this.passwordd){
+ // this._flashMessagesService.show('Password and Confirm Password do not match', { cssClass: 'alert-danger', timeout: 3000 });
+ this.tost1("psdnmtch")
+ }
+ else if (this.emaill && this.phone){
+ this.Load=true
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id;
+ // console.log(this.useridd);
+ }
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ email: this.emaill,
+ password: this.passwordd,
+ phone: this.phone,
+ supAdmin:this.sup_admin,
+ isDealer: false,
+ expdate : new Date(expDate).toISOString(),
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+ }
+ console.log("1->",newContact2);
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ console.log(contact);
+ // USER_ID already exists
+ this.Load=false
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+ // this.onNoClick("succ");
+ // this.contacts.push(contact);
+ }
+
+ }, (err: any) => {
+ // console.log(err.status);
+ console.log(err);
+ if(err.status == 500)
+ {
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // this.data_descip,
+ // 'error'
+ // )
+ }
+ else if(err.status==401){
+ this.Load=false
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.message;
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // 'Internal Server error , Please try after sometime !!!',
+ // 'error'
+ // )
+
+ }else{
+ this.Load=false
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+ }
+ });
+
+ }
+ else if(this.phone){
+ this.Load=true
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id;
+ }
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+
+ // if (!this.executed) {
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ supAdmin:this.sup_admin,
+ expdate : new Date(expDate).toISOString(),
+ phone: this.phone,
+ isDealer: false,
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+ }
+console.log("2->",newContact2);
+
+
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ console.log(contact);
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false;
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+ // this.onNoClick("succ");
+ // this.contacts.push(contact);
+ }
+ // USER_ID already exists
+
+ }, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+ }
+ else if(err.status==401){
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.message;
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // 'Internal Server error , Please try after sometime !!!',
+ // 'error'
+ // )
+ }else{
+ this.Load=false;
+ this._flashMessagesService.show('Internal Server error , Please try after sometime !!!', { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ })}
+ else if((this.emaill)||(this.userID)){
+ // if (!this.executed) {
+ // this.executed = true;
+ console.log("we are here");
+ if(this.dealerObj){
+ this.useridd= this.dealerObj.dealer_id
+
+ }
+ var emergencyContact={
+ contact1:{
+ name:this.emergencyForm.value.emg_name1,
+ cell1:this.emergencyForm.value.emg_cell1,
+ cell2:this.emergencyForm.value.emg_cell2,
+ phone1:this.emergencyForm.value.emg_phone1,
+ phone2:this.emergencyForm.value.emg_phone2
+
+ },
+ contact2:{
+ name:this.emergencyForm.value.emg_name2,
+ cell1:this.emergencyForm.value.emg_cell3,
+ cell2:this.emergencyForm.value.emg_cell4,
+ phone1:this.emergencyForm.value.emg_phone3,
+ phone2:this.emergencyForm.value.emg_phone4
+
+ }
+ }
+ console.log(emergencyContact);
+
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ org_name: this.org_name,
+ email: this.emaill,
+ expdate : new Date(expDate).toISOString(),
+ supAdmin:this.sup_admin,
+ isDealer: false,
+ Dealer: this.useridd,
+ custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ emergencyContact:emergencyContact
+
+}
+console.log("3->",newContact2);
+
+
+if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+
+ }
+ if(this.role != undefined){
+ newContact2['role'] = this.role;
+ }
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+ }
+
+if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ //this.tost1("succ")
+ console.log(contact);
+ // USER_ID already exists
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false;
+ if(this.router.url!="/add-device"){
+
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }else{
+ this._flashMessagesService.show(contact.message, { cssClass: 'alert-success', timeout: 3000 });
+ }
+ // this.onNoClick("succ");
+ // this.contacts.push(contact);
+ }
+
+}, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // this.data_descip,
+ // 'error'
+ // )
+ // console.log("error to display",this.emmnerr);
+ // this.tost1("Error")
+ }
+ else if(err.status==401){
+ this.Load=false;
+ this.emmnerr=JSON.parse(err._body);
+ this.data_descip = this.emmnerr.message;
+ this._flashMessagesService.show("Access Denied", { cssClass: 'alert-danger', timeout: 3000 });
+ // swal(
+ // 'Error',
+ // 'Internal Server error , Please try after sometime !!!',
+ // 'error'
+ // )
+ }else{
+ this.Load=false;
+ this._flashMessagesService.show( 'Internal Server error , Please try after sometime !!!', { cssClass: 'alert-danger', timeout: 3000 });
+ }});
+
+
+ }
+
+
+ }
+ data_descip:any;
+ onNoClick(a): void {
+ this.dialogRef.close(a);
+ }
+
+ closebox(){
+ this.dialogRef.close(null);
+ }
+ tost1(divid){
+ if(divid == "Error"){
+ this.data_descip = "User already registerd"
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ else if(divid == "succ"){
+ this.data_descip = "Custumer Successfully Added"
+ this._flashMessagesService.show("Custumer Successfully Added", { cssClass: 'alert-success', timeout: 3000 });
+ }
+ else if(divid == "psdnmtch"){
+ this.data_descip = "Error: Password and confirm password do not match"
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ // function launch_toast() {
+ // // console.log(divid);
+ // var x = document.getElementById("toast")
+ // //console.log(x);
+ // x.className = "show";
+ // setTimeout(function(){ x.className = x.className.replace("show", ""); }, 450000);
+ // }
+ }
+
+ valclear(){
+ this._flashMessagesService.show("Cleared", { cssClass: 'alert-warning', timeout: 200000 });
+
+ }
+
+ click1(event){
+ this.show2=false;
+ this.show3=true;
+ if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+ }
+ /* if(event.keyCode===13){
+ this.otp_window();
+ } */
+
+ else
+ event.preventDefault();
+ }
+ click2(event2){
+ this.show2=true;
+ this.show3=false;
+
+ }
+ call(e) {
+ {
+ if (e.keyCode == 32) {
+ e.preventDefault();
+ }
+ }
+ }
+ geo(){
+ this.router.navigateByUrl("geofencing");
+
+ }
+ devicess:any;
+ final:any;
+ getdev(){
+ let foods = []
+ this.contactService.getDevice(this.emailid,this.useridd).subscribe(
+
+ data => {
+ this.devicess = data
+
+ let swap;
+ for(let g = 0;gthis.devicess.devices[c+1].Device_Name){
+ swap = this.devicess.devices[c];
+ this.devicess.devices[c] = this.devicess.devices[c+1];
+ this.devicess.devices[c+1] = swap;
+ }
+ }
+ }
+
+ this.final = this.devicess.devices
+
+ for(let i=0;i {
+ $("#telephone").intlTelInput({
+ allowDropdown:true,
+ autoPlaceholder:"Enter Mobile Number",
+ initialCountry:"in",
+ preferredCountries: ["in","us" ],
+ separateDialCode:true,
+ });
+ }, 300);
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ // console.log(this.superAdmin)
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ if(!this.superAdmin){
+ this.dealerName = this.fs
+ }
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ console.log("superAdmin=>",this.sup_admin);
+
+ if(this.superAdmin){
+ this.sup_admin = this.useridd;
+ }
+
+ // this.getdev();
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.custtype == true){
+ this.cust = true;
+ }
+
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+ this.dealerDetail();
+
+ var Phoneinput = document.getElementById('telephone');
+ var that = this;
+ Phoneinput.addEventListener("countrychange",function(p) {
+ console.log("Inside Function");
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ that.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ });
+
+ var timeZn = moment.tz.guess();
+ if(timeZn != 'Asia/Calcutta'){
+ this.timezone = timeZn;
+ }
+ console.log(this.timezone);
+
+
+ var timeZones = moment.tz.names();
+ console.log(timeZones);
+ this.timezoneArray=[];
+ for (var i in timeZones) {
+ this.timezoneArray.push({ viewValue: "(GMT" + moment.tz(timeZones[i]).format('Z') + ")" + timeZones[i], value: timeZones[i] });
+ }
+
+
+ setTimeout(() => {
+ $('#dbselect').multipleSelect({
+ width: 300,
+ placeholder: 'Select Timezone',
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ console.log("INBDKJNDKJNDKJFNKJFBKHJbnkjh");
+
+ }, 100);
+
+ this.latLongDetail();
+ }
+
+ dealers_info=[];
+
+ dealerDetail(){
+ // this.dealers_info=[];
+ var super_admin = ((this.superAdmin==true)||(this.superAdmin==undefined)) ? this.useridd : this.sup_admin ;
+ this.contactService.dealer_Info_dealer_list(super_admin)
+ .subscribe(res=>{
+ console.log("Response=>",res);
+ this.dealers_info=res;
+ })
+
+
+ }
+
+
+ filterDealerStates(dlr) {
+
+ // console.log(dlr);
+ if (dlr) {
+
+ const filterdealerValue:any = dlr;
+ this.dealerSelect=[];
+ this.dealerSelect = this.dealers_info.filter(function(p){
+ var t = p.dealer_firstname.toLocaleLowerCase().indexOf(filterdealerValue.toLocaleLowerCase());
+ // this.option = this.options[i];
+
+
+ return t > -1;
+ });
+
+ return this.dealerSelect;
+ }
+
+ }
+
+ dealerObj:any;
+ dealerFinalVal(dlrr){
+
+
+ this.dealerObj=dlrr;
+ // console.log(this.dealerObj);
+
+ // this.dealerSelect = dlrr;
+ // console.log(this.dealerSelect);
+
+ }
+ documentDetail:any;
+ imageURL:any;
+
+ documentList = [
+ {
+ "docId": "Adhar",
+ "docName": "Adhar Card"
+ },
+ {
+ "docId": "voterCard",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "PAN",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "DL",
+ "docName": "Driving License"
+ },
+ {
+ "docId": "Nepali Citizenship",
+ "docName": "Nepali Citizenship"
+ }
+
+ ];
+
+ documentType(docType){
+ console.log("doctypeObject=>",docType);
+
+ }
+ selectedFile: File;
+ onFileChanged(event) {
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+ }
+
+ onUpload(imgIndex) {
+ console.log(imgIndex);
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ console.log("selected file name =>",this.selectedFile.name);
+ if(this.selectedFile.name == " "){
+ swal(
+ 'Upload Error',
+ 'Please select document type before upload !!!',
+ 'error'
+ )
+ }else{
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+ // console.log(res);
+ },err=>{
+ swal(
+ 'Server Error',
+ 'Internal Server Error , plaese try after sometime !!!',
+ 'error'
+ )
+ })
+ }
+ }
+
+ docRow:boolean=false;;
+ AddDocumentsField(addedRow){
+ if(addedRow){
+ this.docRow = true;
+ }
+ var obj={doctype:'',image:'',phone:''};
+ this.imageuploadObject.push(obj);
+ console.log(this.imageuploadObject);
+ // console.log("ImageuploadObject=>",this.imageuploadObject);
+ }
+
+ DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+ }
+ passwordtype:any= 'password';
+ passwordtype_1:any= 'password';
+ passwordIcon:any='visibility_off';
+ passwordIcon_1:any='visibility_off';
+
+ showpassword(p:any){
+ console.log('inside function');
+
+ if((p == 'p1')&&(this.passwordtype == "password")){
+ this.passwordtype = 'text';
+ this.passwordIcon = 'visibility';
+ return
+
+ }
+
+ if((p == 'p1')&&(this.passwordtype == "text")){
+ this.passwordtype = 'password';
+ this.passwordIcon = 'visibility_off';
+ return;
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "password")){
+ this.passwordtype_1 = 'text';
+ this.passwordIcon_1 = 'visibility';
+ return;
+
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "text")){
+ this.passwordtype_1 = 'password';
+ this.passwordIcon_1 = 'visibility_off';
+ return;
+ }
+
+ }
+
+
+ latLongDetail(){
+ var that =this;
+ console.log("Inside Latlong Function");
+ if (navigator.geolocation) {
+
+ if(location.protocol != 'https:'){
+ this.contactService.getlatLong().subscribe(res=>{
+ console.log(res);
+ let t_latlng = new google.maps.LatLng(res.lat, res.lon);
+ let request = {
+ latLng: t_latlng
+ };
+
+ this.getAddress(request);
+ })
+ }else{
+ navigator.geolocation.getCurrentPosition(function(position) {
+ var d_lat= position.coords.latitude;
+ var d_lng=position.coords.longitude;
+ let t_latlng = new google.maps.LatLng(d_lat, d_lng);
+ let request = {
+ latLng: t_latlng
+ };
+
+ that.getAddress(request);
+ })
+
+ }}
+ }
+
+ getAddress(request){
+ let geocoder = new google.maps.Geocoder();
+ geocoder.geocode(request, function (data, status) {
+ console.log("Inside geocoder function");
+ var userCountry;
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ var address_show = data[0];
+ console.log('var=>' ,address_show);
+ for (var ac = 0; ac < data[0].address_components.length; ac++) {
+ var component = data[0].address_components[ac];
+ switch(component.types[0]) {
+ case 'country':
+ userCountry = component.short_name;
+ console.log(userCountry);
+ break;
+ }
+ };
+
+ var aaa = $('#telephone').intlTelInput("setCountry",userCountry);
+ } else {
+ userCountry = 'in';
+ }
+ }
+ else {
+ console.log("Inside Error function");
+ userCountry = 'in';
+ }
+ })
+ }
+}
diff --git a/src/app/add-dealer/add-dealer.component.html b/src/app/add-dealer/add-dealer.component.html
new file mode 100644
index 0000000..e553aff
--- /dev/null
+++ b/src/app/add-dealer/add-dealer.component.html
@@ -0,0 +1,128 @@
+
+
+
{{'ADD DEALER' | translate}}
+
+
+
+
+
+
+
+
+ Timezone
+
+ {{ zone.viewValue }}
+
+
+
+ Inventory
+
+
+
+
+ Bussiness Type :
+
+
+
+
+
+
+
{{'Upload Documents' | translate}} :
+
+
+
+
+
+
+
+
+
+ {{doc.docName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'SUBMIT' | translate}}
+ {{'CANCEL' | translate}}
+
+
+
diff --git a/src/app/add-dealer/add-dealer.component.scss b/src/app/add-dealer/add-dealer.component.scss
new file mode 100644
index 0000000..d0af1e9
--- /dev/null
+++ b/src/app/add-dealer/add-dealer.component.scss
@@ -0,0 +1,1184 @@
+#body{
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
+
+::-webkit-scrollbar {
+ display: none;
+ }
+ #d:hover {
+ color: rgb(14, 102, 18);
+
+
+ }
+ #ac{
+ color: rgb(38, 38, 90)
+ }
+ #active{
+ text-decoration-line: underline;
+ text-decoration-color: rgb(66, 26, 245);
+ }
+ .switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+ }
+
+ .switch input {display:none;}
+
+ .slider {
+ position: absolute;
+ cursor: pointer;
+ top: 6px;
+ left: 11px;
+ right: 7px;
+ bottom: 7px;
+ background-color: #ccc;
+ transition: .4s;
+ }
+
+ .slider:before {
+ position: absolute;
+ content: "";
+ height: 11px;
+ width: 11px;
+ left: 2px;
+ bottom: 5px;
+ background-color: white;
+ transition: .4s;
+ }
+
+ input:checked + .slider {
+ background-color: #2196F3;
+ }
+
+ input:focus + .slider {
+ box-shadow: 0 0 1px #2196F3;
+ }
+
+ input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+ }
+
+ /* Rounded sliders */
+ .slider.round {
+ border-radius: 34px;
+ }
+
+ .slider.round:before {
+ border-radius: 50%;
+ }
+
+
+.sk-fading-circle {
+ margin: 100px auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+
+ }
+
+ .rowHeight{
+ height:60px;
+ overflow: scroll
+}
+
+ .sk-fading-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+
+
+ .sk-fading-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 15%;
+ height: 15%;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ }
+ .sk-fading-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg);
+ }
+ .sk-fading-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+ }
+ .sk-fading-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ }
+ .sk-fading-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg);
+ }
+ .sk-fading-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg);
+ }
+ .sk-fading-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+ }
+ .sk-fading-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg);
+ }
+ .sk-fading-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg);
+ }
+ .sk-fading-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+ }
+ .sk-fading-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg);
+ }
+ .sk-fading-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg);
+ }
+ .sk-fading-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+ }
+ .sk-fading-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+ }
+ .sk-fading-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+ }
+ .sk-fading-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+ }
+ .sk-fading-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+ }
+ .sk-fading-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+ }
+ .sk-fading-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+ }
+ .sk-fading-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+ }
+ .sk-fading-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+ }
+ .sk-fading-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+ }
+ .sk-fading-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+ }
+
+ @-webkit-keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+
+ @keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+
+
+ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+ .upper{
+ margin-top: -70px;
+ width: 100%;
+ height: 17%;
+ /* margin-left: -2px;*/
+ position: fixed;
+ background-color: white;
+ top: 0;
+ z-index: 1
+}
+.up{
+ color: gray;
+ /* Add a font */
+
+ /* Set the font-size to 25 pixels */
+ font-size: 25px;
+
+}
+.middle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+}
+
+
+
+.dropdown {
+ position: relative;
+ display: inline-block;
+}
+
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+ margin-left: -220px;
+ margin-top: -20px;
+
+}
+
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+
+.desc {
+ padding: 15px;
+ text-align: center;
+}
+#insert{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ #insert2{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ .example-container {
+ width: 500px;
+ height: 300px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ }
+
+ .example-sidenav-content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .example-sidenav {
+ padding: 20px;
+ }
+ .vertical-menu {
+ width: 250px;
+ padding-left: 10px;
+}
+
+.vertical-menu a {
+ background-color: #eee;
+ color: black;
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+
+}
+
+.vertical-menu a:hover {
+ background-color: #ccc;
+}
+
+.vertical-menu a.active {
+
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+}
+#c2 {
+
+
+}
+#c1 {
+ float:left;
+
+}
+
+body {margin:0}
+
+.icon-bar {
+ width: 17%;
+/* background-color: #555; */
+background-color: #18262F;
+ margin-top: -9px;
+ height:100%;
+ position: fixed;
+ display: inline-block;
+ margin-left: -16px;
+}
+@media screen and (max-width: 1000px){
+ .off{
+ display: none;
+ }
+}
+.icon-bar2 {
+
+ width: 299px;
+ background-color: white;
+ margin-top: -7px;
+ height:86vh;
+ position: fixed;
+
+}
+.icon-bar a {
+ display: block;
+ text-align: center;
+ padding: 16px;
+ transition: all 0.3s ease;
+ color: white;
+ font-size: 14px;
+ text-align: left;
+}
+
+.icon-bar a:hover {
+ background-color: #000;
+}
+
+.active {
+ background-color: #4CAF50 !important;
+}
+.iphone {
+ width: 201px;
+ height: 378px;
+ background: #f9f7f9;
+ border: 5px solid #c1bfc1;
+ border-radius: 45px;
+ opacity: 0.8;
+}
+.highlight {
+ width: 185px;
+ height: 366px;
+ border: 3px solid #fff;
+ border-radius: 45px;
+ position: relative;
+ z-index: 10;
+ top: -748px;
+ left: 10px;
+}
+.circle {
+ width: 7px;
+ height: 7px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -370px;
+ left: 92px;
+}
+.camera {
+ width: 10px;
+ height: 10px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -376px;
+ left: 66px;
+}
+.speaker {
+ width: 59px;
+ height: 3px;
+ background: #333;
+ border-radius: 5px;
+ position: relative;
+ top: -372px;
+ left: 73px;
+}
+.screen {
+ width: 166px;
+ height: 255px;
+ border: 3px solid #333;
+ border-radius: 5px;
+ position: relative;
+ left: 18px;
+ top: -365px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+.home1 {
+ width: 47px;
+ height: 47px;
+ background: #fff;
+ border-radius: 50%;
+ position: relative;
+ top: -353px;
+ left: 79px;
+ z-index: 2;
+}
+.home2 {
+ width: 52px;
+ height: 52px;
+ border-radius: 50%;
+ position: relative;
+ top: -403px;
+ left: 77px;
+background: #7f8282;
+background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+background: -o-linear-gradient(#e2e3e4, #7f8282);
+background: -moz-linear-gradient(#e2e3e4, #7f8282);
+background: linear-gradient(#e2e3e4, #7f8282);
+}
+#c2{
+ //background:green;
+ float:right;
+}
+#c1, #c2 {
+ width: 33%;
+ //background: rebeccapurple
+}
+
+#c3 {
+ width: auto;
+ width:34%;
+ // background: red
+}
+.off{
+ margin: auto;
+ width: 60%;
+ top:70%;
+ padding: 10px;
+ margin-right:30%
+
+}
+.newspaper {
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 40px; /* Firefox */
+ column-gap: 40px;
+ align-content:left;
+ text-align: left;
+}
+#demo {
+ margin: 30px 0 50px 0;
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+
+}
+
+#demo .wrapper {
+ display: inline-block;
+ width: 180px;
+ margin: 0 10px 0 0;
+ height: 20px;
+ position: relative;
+
+}
+
+#demo .parent {
+ height: 100%;
+ width: 100%;
+ display: block;
+ cursor: pointer;
+ line-height: 30px;
+ height: 30px;
+ border-radius: 5px;
+ background: #F9F9F9;
+ border: 1px solid #AAA;
+ border-bottom: 1px solid #777;
+ color: #282D31;
+ font-weight: bold;
+ z-index: 2;
+ position: relative;
+ -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+ -webkit-transition-delay: .8s;
+ text-align: center;
+}
+
+#demo .parent:hover,
+#demo .content:hover ~ .parent {
+ background: #fff;
+ -webkit-transition-delay: 0s, 0s, 0s;
+}
+
+#demo .content:hover ~ .parent {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ z-index: 0;
+}
+
+#demo .content {
+ position: absolute;
+ top: 0;
+ display: block;
+ z-index: 1;
+ height: 0;
+ width: 180px;
+ padding-top: 30px;
+ -webkit-transition: height .5s ease;
+ -webkit-transition-delay: .4s;
+ border: 1px solid #777;
+ border-radius: 5px;
+ box-shadow: 0 1px 2px rgba(0,0,0,.4);
+}
+
+#demo .wrapper:active .content {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+#demo .content:hover {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+}
+
+
+#demo .content ul {
+ background: #fff;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ height: 100%;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+
+#demo .content ul a {
+ text-decoration: none;
+}
+
+#demo .content li:hover {
+ background: #eee;
+ color: #333;
+}
+
+#demo .content li {
+ list-style: none;
+ text-align: left;
+ color: #888;
+ font-size: 14px;
+ line-height: 30px;
+ height: 30px;
+ padding-left: 10px;
+ border-top: 1px solid #ccc;
+}
+
+#demo .content li:last-of-type {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+.customClass {
+ background-color: #dd3;
+ border-radius: 5px;
+ margin:5px;
+ width: 500px;
+}
+
+.customClass .img-ul-upload {
+ background-color: #000 !important;
+}
+
+.customClass .img-ul-clear {
+ background-color: #B819BB !important;
+}
+
+.customClass .img-ul-drag-box-msg {
+ color: purple !important;
+}
+
+.customClass .img-ul-container {
+ background-color: #FF6CAD !important;
+}
+.img-ul-file-upload[_ngcontent-c6] {
+ padding: 16px;
+ height: 201px !important;
+}
+.weekDays-selector input {
+ display: none!important;
+ }
+
+ .weekDays-selector input[type=checkbox] + label {
+ display: inline-block;
+ border-radius: 6px;
+ background: #dddddd;
+ height: 40px;
+ width: 34.2px;
+ margin-right: 3px;
+ line-height: 40px;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ .weekDays-selector input[type=checkbox]:checked + label {
+ background: #2AD705;
+ color: #ffffff;
+ }
+ @media screen and (max-width: 900px) {
+ .icon-bar{
+ display: none;
+
+ }
+ .sch{
+ display: none;
+ }
+ .first{
+ width:1%!important;
+ }
+ .second{
+ margin-left: 8px!important;
+ }
+ .small{
+ display: block!important;
+ }
+ .image{
+ display: none;
+ }
+ .schlar{
+ display: block!important;
+ }
+ }
+
+ @media screen and (min-width: 900px) {
+.schlar{
+ display: none;
+}
+
+ }
+ .small{
+ display: none;
+ }
+ .first{
+ float:left;
+ width: 16%;
+ height:86vh;
+ overflow-y: hidden;
+ overflow-x: hidden;
+ margin-right: 5px
+ }
+ .second{
+ width: 88%;
+ height:86vh;
+ margin-left:171px;
+ }
+ .mat-dialog-container {
+ max-width: none !important;
+}
+.sch{
+
+}
+.schlar{
+
+}
+.pointer{
+ cursor:pointer !important;
+ font-size: 11px
+}
+.expansion-panel__content{
+ margin-left: 0% !important;
+}
+
+/* Side Navi */
+#mySidenav a {
+ margin-top: -9px;
+ position: absolute;
+ left: -80px;
+ transition: 0.3s;
+ width: 100px;
+ text-decoration: none;
+ font-size: 28px;
+ color: white;
+ border-radius: 0 5px 5px 0;
+}
+
+#mySidenav a:hover {
+ left: 0;
+}
+
+#about {
+ top: 20px;
+ background-color: #ffffff;
+ opacity: .4;
+}
+
+#blog {
+ top: 80px;
+ background-color: #18262F;
+ position: absolute; z-index: 99;
+}
+
+#projects {
+ top: 140px;
+ background-color: #f44336;
+}
+
+#contact {
+ top: 200px;
+ background-color: #555
+}
+
+
+.button2 {background-color: #008CBA;}
+.ngx-picker--btn {
+ color: #000;
+ background-color: transparent;
+ border: none;
+ padding: 1em;
+ font-size: 1em; }
+ .ngx-picker--btn__selected {
+ background-color: #eee; }
+ .ngx-picker--btn:hover {
+ transition: .25s ease;
+ background-color: #eee;
+ cursor: pointer; }
+ .ngx-picker--btn:focus {
+ outline-color: transparent; }
+
+ .ngx-picker--btn__month:hover {
+ border-top-left-radius: 0.2em; }
+
+ .ngx-picker--btn__done:hover {
+ border-bottom-right-radius: 0.2em; }
+
+ .ngx-picker--btn__now:hover {
+ border-bottom-left-radius: 0.2em; }
+
+ .ngx-picker--btn__next:hover {
+ border-top-right-radius: 0.2em; }
+
+ .calendar {
+ position: absolute;
+ background-color: #e6e6e6;
+ max-width: 16em;
+ min-width: 16em;
+ font-size: 16px;
+ font-family: "Arial", sans-serif;
+ border-radius: 0.2em;
+ box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); }
+
+ .calendar--previous-and-next {
+ position: absolute;
+ right: 0;
+ top: 0;
+ display: flex;
+ justify-content: flex-end; }
+
+ .calendar--footer {
+ display: flex;
+ justify-content: space-between;
+ background-color: #e6e6e6;
+ padding: 0;
+ border-radius: 0.2em; }
+
+ .calendar--years-select,
+ .calendar--months-select {
+ overflow-y: auto;
+ overflow-x: hidden;
+ max-height: 14.85em;
+ background-color: #fff;
+ width: 100%; }
+
+ .calendar--year,
+ .calendar--month {
+ display: block;
+ padding: .5em 1em;
+ width: 100%;
+ overflow: hidden;
+ color: #000; }
+ .calendar--year__selected,
+ .calendar--month__selected {
+ color: #000;
+ font-weight: bold;
+ background-color: #eee; }
+ .calendar--year:hover,
+ .calendar--month:hover {
+ cursor: pointer;
+ background-color: #eee;
+ font-weight: 400;
+ color: #000; }
+
+ .calendar--days-of-week {
+ display: flex;
+ justify-content: space-around;
+ background-color: #eee; }
+
+ .calendar--day-of-week {
+ position: relative;
+ padding: .5em;
+ text-align: center;
+ text-transform: uppercase;
+ color: #000;
+ font-size: .9em; }
+
+ .calendar--days-select {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ background-color: #fff; }
+
+ .calendar--day {
+ text-align: center;
+ width: 1.285em;
+ padding: .5em;
+ font-weight: 500;
+ color: #000; }
+ .calendar--day__muted {
+ color: #999; }
+ .calendar--day__selected {
+ background-color: #eee;
+ color: #000; }
+ .calendar--day:hover {
+ cursor: pointer;
+ color: #000;
+ background-color: #eee; }
+
+ .ngx-picker {
+ display: flex;
+ position: relative; }
+ .ngx-picker .calendar {
+ position: absolute;
+ left: 0;
+ top: 2.5em;
+ z-index: 3; }
+
+ .time-picker {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #e6e6e6; }
+
+ .time--values {
+ display: flex;
+ justify-content: space-between;
+ flex-direction: row;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #eee; }
+
+ .time--value {
+ width: 2.66em;
+ font-size: 1em;
+ padding: .5em 0;
+ text-align: center;
+ color: #000; }
+ .time--value__selected {
+ color: #000;
+ background-color: #e6e6e6; }
+ .time--value:hover {
+ transition: .25s ease;
+ cursor: pointer;
+ background-color: #e6e6e6; }
+
+ [hidden] {
+ display: none !important; }
+ #c11 {
+ width: 25%;
+ float:left
+ }
+ #c22{
+ width: 25%;
+ float:left
+ }
+ #c33 {
+ width: 25%;
+ float:left
+
+ }
+ #c44{
+ width: 25%;
+ float:left
+ }
+ #c111 {
+ width: 50%;
+ float:left
+ }
+ #c222{
+ width: 45%;
+ float:left
+ }
+ #c333 {
+ width: 5%;
+ float:left
+
+ }
+ #myTable {
+ border-collapse: collapse;
+ width: 100%;
+ border: 1px solid #ddd;
+ font-size: 12px;
+ }
+
+ #myTable th, #myTable td {
+ text-align: left;
+ padding: 12px;
+ }
+
+ #myTable tr {
+ border-bottom: 1px solid #ddd;
+ }
+
+ #myTable tr.header, #myTable tr:hover {
+ background-color: #f1f1f1;
+ }
+ * {
+ box-sizing: border-box;
+ }
+ .width{
+ width: 100%;
+ }
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 50px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img{
+ width: 50px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+}
+#myInput {
+ border-radius: 15px;
+ /* border: 2px solid #18262F; */
+ padding: 7px;
+ width: 116px;
+ height: 17px;
+ font-size: 9px;
+ outline: none;
+ float: right;
+ margin-top: 2%;
+}
+
+@-webkit-keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+
+@keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+
+@keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@-webkit-keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
+
+@keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
+
+/* Absolute Center Spinner */
+.loading {
+ position: fixed;
+ z-index: 999;
+ height: 2em;
+ width: 2em;
+ overflow: show;
+ margin: auto;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ }
+
+ /* Transparent Overlay */
+ .loading:before {
+ content: '';
+ display: block;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0,0.3);
+ }
+
+ /* :not(:required) hides these rules from IE9 and below */
+ .loading:not(:required) {
+ /* hide "loading..." text */
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+ }
+
+ .loading:not(:required):after {
+ content: '';
+ display: block;
+ font-size: 10px;
+ width: 1em;
+ height: 1em;
+ margin-top: -0.5em;
+ -webkit-animation: spinner 1500ms infinite linear;
+ -moz-animation: spinner 1500ms infinite linear;
+ -ms-animation: spinner 1500ms infinite linear;
+ -o-animation: spinner 1500ms infinite linear;
+ animation: spinner 1500ms infinite linear;
+ border-radius: 0.5em;
+ -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ }
+
+ /* Animation */
+
+ @-webkit-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-moz-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-o-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
\ No newline at end of file
diff --git a/src/app/add-dealer/add-dealer.component.spec.ts b/src/app/add-dealer/add-dealer.component.spec.ts
new file mode 100644
index 0000000..4d47e52
--- /dev/null
+++ b/src/app/add-dealer/add-dealer.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddDealerComponent } from './add-dealer.component';
+
+describe('AddDealerComponent', () => {
+ let component: AddDealerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddDealerComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddDealerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-dealer/add-dealer.component.ts b/src/app/add-dealer/add-dealer.component.ts
new file mode 100644
index 0000000..50de3f8
--- /dev/null
+++ b/src/app/add-dealer/add-dealer.component.ts
@@ -0,0 +1,801 @@
+import { FormGroup, FormControl, Validators} from '@angular/forms';
+import {ResponseOptions, Response} from '@angular/http';
+import {Contact} from '../contact';
+import {ContactService} from '../contact.service';
+import {Otp} from '../otp';
+// import {Md5} from 'ts-md5/dist/md5';
+import * as moment from 'moment-timezone';
+declare var google :any;
+
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { AbstractControl, NG_VALIDATORS, Validator, ValidatorFn } from '@angular/forms';
+const EMAIL_REGEX =/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+declare var swal: any;
+declare var ol : any;
+declare var $:any;
+
+@Component({
+ selector: 'app-add-dealer',
+ templateUrl: './add-dealer.component.html',
+ styleUrls: ['./add-dealer.component.scss'],
+ providers:[ContactService]
+})
+export class AddDealerComponent implements OnInit {
+ superAdmin: any;
+ inventoryManagement
+ show1:boolean = false;
+ show2:boolean = true;
+ passwordtype : any = 'password';
+ passwordtype_1 :any = 'password';
+ show3:boolean = false;
+ first_name:any=null;
+ imageuploadObject = [];
+ timezone:any = 'Asia/Kolkata';
+ last_name:any=null;
+ passwordd:any=null;
+ org_name:any=null;
+ emaill:any=null;
+ phone:any=null;
+ executed:any;
+ $event2:any;
+ dealer:any;
+ contacts: Contact[]=[];
+ contact: Contact;
+ login1:any;
+ mess2:any;
+ mess:any;
+ otp:any;
+ str:boolean = false;
+ password2:any=null;
+ before:any;
+ emmnerr:any;
+ Load:any
+ $event:any;
+ fs:any;
+ ls:any;
+ emailid:any;
+ or:any;
+ useridd:any;
+ custtype:any;
+ cust:boolean=false;
+ mb:any;
+ logo:any;
+ text:any;
+ userID:any;
+ address:any;
+ sup_admin: any;
+ documentDetail:any;
+ imageURL:any;
+
+ documentList = [
+ {
+ "docId": "Adhar",
+ "docName": "Adhar Card"
+ },
+ {
+ "docId": "voterCard",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "PAN",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "DL",
+ "docName": "Driving License"
+ },
+ {
+ "docId": "Nepali Citizenship",
+ "docName": "Nepali Citizenship"
+ }
+
+ ];
+ countrySelected: { countryCode: any; dialcode: any; };
+ timezoneArray: any[];
+ telCountryCode: any;
+
+ constructor(private contactService: ContactService,private router: Router,private _flashMessagesService: FlashMessagesService,public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.0/js/intlTelInput-jquery.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ var initialObj = {
+ doctype:'',
+ image:'',
+ phone:''
+ }
+ this.imageuploadObject.push(initialObj);
+ }
+bussinessType:boolean=false;
+ ngOnInit() {
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ // this.bussinessType=this.data.userInfo.bussinessType?this.data.userInfo.bussinessType=="1"?true:false:false
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ var that = this;
+ setTimeout(() => {
+ that.telCountryCode = $("#telephone").intlTelInput({
+ allowDropdown:true,
+ autoPlaceholder:"Enter Mobile Number",
+ initialCountry:"in",
+ preferredCountries: ["in","us" ],
+ separateDialCode:true,
+ });
+ }, 300);
+
+ var Phoneinput = document.getElementById('telephone');
+ var that = this;
+ Phoneinput.addEventListener("countrychange",function(p) {
+ console.log("Inside Function");
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ that.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ });
+
+
+ if(this.superAdmin){
+ this.sup_admin = this.useridd;
+ }
+
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ // this.getdev();
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.custtype == true){
+ this.cust = true;
+ }
+
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+
+ var timeZn = moment.tz.guess();
+ if(timeZn != 'Asia/Calcutta'){
+ this.timezone = timeZn;
+ }
+ console.log(this.timezone);
+
+
+var timeZones = moment.tz.names();
+console.log(timeZones);
+this.timezoneArray=[];
+for (var i in timeZones) {
+ this.timezoneArray.push({ viewValue: "(GMT" + moment.tz(timeZones[i]).format('Z') + ")" + timeZones[i], value: timeZones[i] });
+}
+
+
+setTimeout(() => {
+ $('#dbselect').multipleSelect({
+ width: 300,
+ placeholder: 'Select Timezone',
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+}, 100);
+this.latLongDetail()
+ }
+
+ stre(){
+ this.str =true;
+ }
+ stren(){
+ this.str =false;
+ }
+ addcus(){
+ this.router.navigateByUrl("add");
+ }
+ clear(){
+ this.first_name=' '
+ this.last_name=' '
+ this.emaill = null
+ this.phone = null
+ }
+
+ addContact2(){
+ var tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log(tzone);
+ var expDate = new Date()
+ expDate.setFullYear(expDate.getFullYear()+1);
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ this.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ console.log('expDate=>',expDate);
+ if(this.first_name==null || this.last_name==null || this.passwordd==null)
+ {
+ return this._flashMessagesService.show('Please fill all Requied fields', { cssClass: 'alert-danger', timeout: 3000 });
+
+ }
+ else if((this.userID == undefined)||(this.userID.trim() == '')){
+ return this._flashMessagesService.show('User ID is mandatory', { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ // else if((this.emaill == undefined)||(this.emaill.trim() == '')){
+ // return this._flashMessagesService.show('Email is mandatory', { cssClass: 'alert-danger', timeout: 3000 });
+
+ // }
+ else if(this.password2 != this.passwordd){
+ // this._flashMessagesService.show('Password and Confirm Password do not match', { cssClass: 'alert-danger', timeout: 3000 });
+ this.tost1("psdnmtch")
+ }
+ else if (this.emaill && this.phone){
+ this.Load=true
+ // if (!this.executed) {
+
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ email: this.emaill,
+ password: this.passwordd,
+ phone: this.phone,
+ isDealer: true,
+ custumer:false,
+ sysadmin:this.superAdmin,
+ expdate : new Date(expDate),
+ supAdmin:this.sup_admin,
+ user_id:this.userID,
+ address:this.address
+
+ }
+ if(this.inventoryManagement!=undefined){
+ newContact2['inventoryManagement']=this.inventoryManagement;
+ }
+ if(this.bussinessType!=undefined){
+ newContact2['bussinessType']=this.bussinessType?"1":"0";
+ }
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+
+ if (tzone != undefined) {
+ newContact2['timezone'] = tzone[0];
+ }
+
+
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ console.log(contact);
+ // USER_ID already exists
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }
+
+ }, (err: any) => {
+ // console.log(err.status);
+ // console.log(err);
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+
+ this.tost1("EmM")
+ }
+ else{
+ this.Load=false
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+
+ }
+ });
+/* this._flashMessagesService.show('OTP Sent Sucessfully', { cssClass: 'alert-success', timeout: 3000 }); */
+
+ }
+ else if((this.phone)||(this.userID)){
+ this.Load=true
+
+ // if (!this.executed) {
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ // phone: this.phone,
+ isDealer: true,
+ custumer:false,
+ sysadmin:this.superAdmin,
+ expdate : new Date(expDate).toISOString(),
+ supAdmin:this.sup_admin,
+ // user_id:this.userID,
+ address:this.address
+ }
+
+ if(this.phone){
+ newContact2['phone'] = this.phone ;
+ }
+
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+}
+ if(this.inventoryManagement!=undefined){
+ newContact2['inventoryManagement']=this.inventoryManagement;
+ }
+ if(this.bussinessType!=undefined){
+ newContact2['bussinessType']=this.bussinessType?"1":"0";
+ }
+ if(this.userID){
+ newContact2['user_id'] = this.userID ;
+
+ }
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+
+ this.clear();
+ this.Load=false;
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+
+ }
+
+ }, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+
+
+ this.tost1("EmM")
+ }
+ else{
+ this.Load=false
+ // console.log("dadsa");
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+ }})}
+ else if(this.emaill){
+ // if (!this.executed) {
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ org_name: this.org_name,
+ email: this.emaill,
+ isDealer: true,
+ custumer:false,
+ sysadmin:this.superAdmin,
+ expdate : new Date(expDate).toISOString(),
+ supAdmin:this.sup_admin,
+ user_id:this.userID,
+ address:this.address
+
+}
+
+if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+
+
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+}
+if(this.inventoryManagement!=undefined){
+ newContact2['inventoryManagement']=this.inventoryManagement;
+ }
+ if(this.bussinessType!=undefined){
+ newContact2['bussinessType']=this.bussinessType?"1":"0";
+ }
+
+if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ console.log(contact);
+ // USER_ID already exists
+
+ //this.tost1("succ")
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.clear();
+ this.Load=false
+ this.onNoClick("succ");
+ this.contacts.push(contact);
+ }
+
+}, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+ // console.log(this.emmnerr)
+ this.tost1("EmM")
+ }
+ else{
+ this.Load=false
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+
+ }});
+
+
+ }
+
+ }
+
+ data_descip:any;
+ onNoClick(a): void {
+ this.dialogRef.close(a);
+ }
+ tost1(divid){
+ if(divid == "EmM"){
+ this.data_descip = this.emmnerr.split(":")[1]
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ else if(divid == "succ"){
+ this.data_descip = "Dealer Successfully Added"
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-success', timeout: 3000 });
+ }
+ else if(divid == "psdnmtch"){
+ this.data_descip = "Error: Password and confirm password do not match"
+ this._flashMessagesService.show(this.data_descip, { cssClass: 'alert-danger', timeout: 3000 });
+ }
+ // function launch_toast() {
+ // // console.log(divid);
+ // var x = document.getElementById("toast")
+ // //console.log(x);
+ // x.className = "show";
+ // setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ // }
+ }
+
+ valclear(){
+ this._flashMessagesService.show("Cleared", { cssClass: 'alert-warning', timeout: 2000 });
+
+ }
+
+ devicess:any;
+ final:any;
+ click1(event){
+ this.show2=false;
+ this.show3=true;
+ if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+ }
+ /* if(event.keyCode===13){
+ this.otp_window();
+ } */
+
+ else
+ event.preventDefault();
+ }
+ click2(event2){
+ this.show2=true;
+ this.show3=false;
+
+ }
+ call(e) {
+ {
+ if (e.keyCode == 32) {
+ e.preventDefault();
+ }
+ }
+ }
+
+
+ getdev(){
+ let foods = []
+ this.contactService.getDevice(this.emailid,this.useridd).subscribe(
+
+ data => {
+ this.devicess = data
+
+ let swap;
+ for(let g = 0;gthis.devicess.devices[c+1].Device_Name){
+ swap = this.devicess.devices[c];
+ this.devicess.devices[c] = this.devicess.devices[c+1];
+ this.devicess.devices[c+1] = swap;
+ }
+ }
+ }
+
+ this.final = this.devicess.devices
+
+ for(let i=0;i",docType);
+
+ }
+
+ docRow:boolean=false;
+ AddDocumentsField(addedRow){
+ if(addedRow){
+ this.docRow = true;
+ }
+ var obj={doctype:'',image:''};
+ this.imageuploadObject.push(obj);
+ console.log(this.imageuploadObject);
+ // console.log("ImageuploadObject=>",this.imageuploadObject);
+}
+
+DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+}
+
+selectedFile: File;
+onFileChanged(event) {
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+}
+
+closebox(){
+ this.dialogRef.close(null);
+ }
+
+onUpload(imgIndex) {
+ console.log(imgIndex);
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+ // console.log(res);
+ },err=>{
+ console.log(err);
+ })
+
+ }
+ passwordIcon:any='visibility_off';
+ passwordIcon_1:any='visibility_off';
+
+
+ showpassword(p:any){
+
+ if((p == 'p1')&&(this.passwordtype == "password")){
+ this.passwordtype = 'text';
+ this.passwordIcon = 'visibility';
+ return;
+
+ }
+
+ if((p == 'p1')&&(this.passwordtype == "text")){
+ this.passwordtype = 'password'
+ this.passwordIcon = 'visibility_off';
+ return;
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "password")){
+ this.passwordtype_1 = 'text';
+ this.passwordIcon_1 = 'visibility';
+ return;
+
+
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "text")){
+ this.passwordtype_1 = 'password';
+ this.passwordIcon_1 = 'visibility_off';
+ return;
+ }
+
+ }
+
+ latLongDetail(){
+ var that =this;
+ console.log("Inside Latlong Function");
+ if (navigator.geolocation) {
+
+ if(location.protocol != 'https:'){
+ this.contactService.getlatLong().subscribe(res=>{
+ console.log(res);
+ let t_latlng = new google.maps.LatLng(res.lat, res.lon);
+ let request = {
+ latLng: t_latlng
+ };
+
+ this.getAddress(request);
+ })
+ }else{
+ navigator.geolocation.getCurrentPosition(function(position) {
+ var d_lat= position.coords.latitude;
+ var d_lng=position.coords.longitude;
+ let t_latlng = new google.maps.LatLng(d_lat, d_lng);
+ let request = {
+ latLng: t_latlng
+ };
+
+ that.getAddress(request);
+ })
+
+ }}
+}
+
+getAddress(request){
+ let geocoder = new google.maps.Geocoder();
+ geocoder.geocode(request, function (data, status) {
+ console.log("Inside geocoder function");
+ var userCountry;
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ var address_show = data[0];
+ console.log('var=>' ,address_show);
+ for (var ac = 0; ac < data[0].address_components.length; ac++) {
+ var component = data[0].address_components[ac];
+ switch(component.types[0]) {
+ case 'country':
+ userCountry = component.short_name;
+ console.log(userCountry);
+ break;
+ }
+ };
+
+ var aaa = $('#telephone').intlTelInput("setCountry",userCountry);
+ } else {
+ userCountry = 'in';
+ }
+ }
+ else {
+ console.log("Inside Error function");
+ userCountry = 'in';
+ }
+ })
+}
+
+
+}
diff --git a/src/app/add-device-model/add-device-model.component.css b/src/app/add-device-model/add-device-model.component.css
new file mode 100644
index 0000000..d29dec0
--- /dev/null
+++ b/src/app/add-device-model/add-device-model.component.css
@@ -0,0 +1,1068 @@
+#body{
+ overflow-x: hidden;
+ overflow-y: hidden;
+
+ }
+
+
+
+ .background-image{
+ width: 100%;
+ height: 100%;
+ max-height: 100%;
+ margin: 0;
+ padding: 0;
+ /* background-image: url('../../assets/image/trygif2.gif'); */
+ background-image: url('../../assets/image/bgtry3.jpg');
+ background-size:100%;
+ background-repeat: no-repeat;
+ }
+ /*
+ ::-webkit-scrollbar {
+ display: none;
+ } */
+
+ .switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+ }
+
+ .switch input {display:none;}
+
+ .slider {
+ position: absolute;
+ cursor: pointer;
+ top: 6px;
+ left: 11px;
+ right: 7px;
+ bottom: 7px;
+ background-color: #ccc;
+ transition: .4s;
+ }
+
+ .slider:before {
+ position: absolute;
+ content: "";
+ height: 11px;
+ width: 11px;
+ left: 2px;
+ bottom: 5px;
+ background-color: white;
+ transition: .4s;
+ }
+
+ input:checked + .slider {
+ background-color: #2196F3;
+ }
+
+ input:focus + .slider {
+ box-shadow: 0 0 1px #2196F3;
+ }
+
+ input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+ }
+
+ /* Rounded sliders */
+ .slider.round {
+ border-radius: 34px;
+ }
+
+ .slider.round:before {
+ border-radius: 50%;
+ }
+
+
+ .sk-fading-circle {
+ margin: 100px auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+
+ }
+
+ .sk-fading-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+ .sk-fading-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 15%;
+ height: 15%;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ }
+ .sk-fading-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg);
+ }
+ .sk-fading-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+ }
+ .sk-fading-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ }
+ .sk-fading-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg);
+ }
+ .sk-fading-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg);
+ }
+ .sk-fading-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+ }
+ .sk-fading-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg);
+ }
+ .sk-fading-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg);
+ }
+ .sk-fading-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+ }
+ .sk-fading-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg);
+ }
+ .sk-fading-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg);
+ }
+ .sk-fading-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+ }
+ .sk-fading-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+ }
+ .sk-fading-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+ }
+ .sk-fading-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+ }
+ .sk-fading-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+ }
+ .sk-fading-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+ }
+ .sk-fading-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+ }
+ .sk-fading-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+ }
+ .sk-fading-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+ }
+ .sk-fading-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+ }
+ .sk-fading-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+ }
+
+ @-webkit-keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+
+ @keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% { opacity: 0; }
+ 40% { opacity: 1; }
+ }
+ #d:hover {
+ color: rgb(14, 102, 18);
+
+
+ }
+ #active{
+ text-decoration-line: underline;
+ text-decoration-color: rgb(66, 26, 245);
+ }
+ #ac{
+ color: rgb(38, 38, 90)
+ }
+ ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+ .upper{
+ margin-top: -70px;
+ width: 100%;
+ height: 15%;
+ /* margin-left: -2px;*/
+ position: fixed;
+ background-color: white;
+ top: 0;
+ z-index: 1
+ }
+ .up{
+ color: gray;
+ /* Add a font */
+
+ /* Set the font-size to 25 pixels */
+ font-size: 25px;
+
+ }
+ .middle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+ }
+
+ .dropdown {
+ position: relative;
+ display: inline-block;
+ }
+
+ .dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+ margin-left: -220px;
+ margin-top: -20px;
+
+ }
+
+ .dropdown:hover .dropdown-content {
+ display: block;
+ }
+
+ .desc {
+ padding: 15px;
+ text-align: center;
+ }
+ #insert{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ #insert2{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ .example-container {
+ width: 500px;
+ height: 300px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ }
+
+ .example-sidenav-content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .example-sidenav {
+ padding: 20px;
+ }
+ .vertical-menu {
+ width: 250px;
+ padding-left: 10px;
+ }
+
+ .vertical-menu a {
+ background-color: #eee;
+ color: black;
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+
+ }
+
+ .vertical-menu a:hover {
+ background-color: #ccc;
+ }
+
+ .vertical-menu a.active {
+
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+ }
+ #c2 {
+
+
+ }
+ #c1 {
+ float:left;
+
+ }
+
+ body {margin:0}
+
+ .icon-bar {
+ width: 17%;
+ /* background-color: #555; */
+ background-color: #18262F;
+ margin-top: -9px;
+ height:100%;
+ position: fixed;
+ display: inline-block;
+ margin-left: -16px;
+ }
+ @media screen and (max-width: 1000px){
+ .off{
+ display: none;
+ }
+ }
+
+
+ /* Absolute Center Spinner */
+ .loading {
+ position: fixed;
+ z-index: 999;
+ height: 2em;
+ width: 2em;
+ overflow: show;
+ margin: auto;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ }
+
+ /* Transparent Overlay */
+ .loading:before {
+ content: '';
+ display: block;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0,0.3);
+ }
+
+ /* :not(:required) hides these rules from IE9 and below */
+ .loading:not(:required) {
+ /* hide "loading..." text */
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+ }
+
+ .loading:not(:required):after {
+ content: '';
+ display: block;
+ font-size: 10px;
+ width: 1em;
+ height: 1em;
+ margin-top: -0.5em;
+ -webkit-animation: spinner 1500ms infinite linear;
+ -moz-animation: spinner 1500ms infinite linear;
+ -ms-animation: spinner 1500ms infinite linear;
+ -o-animation: spinner 1500ms infinite linear;
+ animation: spinner 1500ms infinite linear;
+ border-radius: 0.5em;
+ -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+ }
+
+ /* Animation */
+
+ @-webkit-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-moz-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @-o-keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+ @keyframes spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+
+
+ .icon-bar2 {
+
+ width: 299px;
+ background-color: white;
+ margin-top: -7px;
+ height:86vh;
+ position: fixed;
+
+ }
+ .icon-bar a {
+ display: block;
+ text-align: center;
+ padding: 16px;
+ transition: all 0.3s ease;
+ color: white;
+ font-size: 14px;
+ text-align: left;
+ }
+
+ .icon-bar a:hover {
+ background-color: #000;
+ }
+
+ .active {
+ background-color: #4CAF50 !important;
+ }
+ .iphone {
+ width: 201px;
+ height: 378px;
+ background: #f9f7f9;
+ border: 5px solid #c1bfc1;
+ border-radius: 45px;
+ opacity: 0.8;
+ }
+ .highlight {
+ width: 185px;
+ height: 366px;
+ border: 3px solid #fff;
+ border-radius: 45px;
+ position: relative;
+ z-index: 10;
+ top: -748px;
+ left: 10px;
+ }
+ .circle {
+ width: 7px;
+ height: 7px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -370px;
+ left: 92px;
+ }
+ .camera {
+ width: 10px;
+ height: 10px;
+ background: #333;
+ border-radius: 50%;
+ position: relative;
+ top: -376px;
+ left: 66px;
+ }
+ .speaker {
+ width: 59px;
+ height: 3px;
+ background: #333;
+ border-radius: 5px;
+ position: relative;
+ top: -372px;
+ left: 73px;
+ }
+ .screen {
+ width: 166px;
+ height: 255px;
+ border: 3px solid #333;
+ border-radius: 5px;
+ position: relative;
+ left: 18px;
+ top: -365px;
+ background: #7f8282;
+ background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+ background: -o-linear-gradient(#e2e3e4, #7f8282);
+ background: -moz-linear-gradient(#e2e3e4, #7f8282);
+ background: linear-gradient(#e2e3e4, #7f8282);
+ }
+ .home1 {
+ width: 47px;
+ height: 47px;
+ background: #fff;
+ border-radius: 50%;
+ position: relative;
+ top: -353px;
+ left: 79px;
+ z-index: 2;
+ }
+ .home2 {
+ width: 52px;
+ height: 52px;
+ border-radius: 50%;
+ position: relative;
+ top: -403px;
+ left: 77px;
+ background: #7f8282;
+ background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+ background: -o-linear-gradient(#e2e3e4, #7f8282);
+ background: -moz-linear-gradient(#e2e3e4, #7f8282);
+ background: linear-gradient(#e2e3e4, #7f8282);
+ }
+ #c2{
+ background:green;
+ float:right;
+ }
+ #c1, #c2 {
+ width: 33%;
+ background: rebeccapurple
+ }
+
+ #c3 {
+ width: auto;
+ width:34%;
+ background: red
+ }
+ .off{
+ margin: auto;
+ width: 60%;
+ top:70%;
+ padding: 10px;
+ margin-right:30%
+
+ }
+ .newspaper {
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 40px; /* Firefox */
+ column-gap: 40px;
+ align-content:left;
+ text-align: left;
+ }
+ #demo {
+ margin: 30px 0 50px 0;
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+
+ }
+
+ #demo .wrapper {
+ display: inline-block;
+ width: 180px;
+ margin: 0 10px 0 0;
+ height: 20px;
+ position: relative;
+
+ }
+
+ #demo .parent {
+ height: 100%;
+ width: 100%;
+ display: block;
+ cursor: pointer;
+ line-height: 30px;
+ height: 30px;
+ border-radius: 5px;
+ background: #F9F9F9;
+ border: 1px solid #AAA;
+ border-bottom: 1px solid #777;
+ color: #282D31;
+ font-weight: bold;
+ z-index: 2;
+ position: relative;
+ -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+ -webkit-transition-delay: .8s;
+ text-align: center;
+ }
+
+ #demo .parent:hover,
+ #demo .content:hover ~ .parent {
+ background: #fff;
+ -webkit-transition-delay: 0s, 0s, 0s;
+ }
+
+ #demo .content:hover ~ .parent {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ z-index: 0;
+ }
+
+ #demo .content {
+ position: absolute;
+ top: 0;
+ display: block;
+ z-index: 1;
+ height: 0;
+ width: 180px;
+ padding-top: 30px;
+ -webkit-transition: height .5s ease;
+ -webkit-transition-delay: .4s;
+ border: 1px solid #777;
+ border-radius: 5px;
+ box-shadow: 0 1px 2px rgba(0,0,0,.4);
+ }
+
+ #demo .wrapper:active .content {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+ }
+
+ #demo .content:hover {
+ height: 123px;
+ z-index: 3;
+ -webkit-transition-delay: 0s;
+ }
+
+
+ #demo .content ul {
+ background: #fff;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ height: 100%;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+ }
+
+ #demo .content ul a {
+ text-decoration: none;
+ }
+
+ #demo .content li:hover {
+ background: #eee;
+ color: #333;
+ }
+
+ #demo .content li {
+ list-style: none;
+ text-align: left;
+ color: #888;
+ font-size: 14px;
+ line-height: 30px;
+ height: 30px;
+ padding-left: 10px;
+ border-top: 1px solid #ccc;
+ }
+
+ #demo .content li:last-of-type {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+ }
+ .customClass {
+ background-color: #dd3;
+ border-radius: 5px;
+ margin:5px;
+ width: 500px;
+ }
+
+ .customClass .img-ul-upload {
+ background-color: #000 !important;
+ }
+
+ .customClass .img-ul-clear {
+ background-color: #B819BB !important;
+ }
+
+ .customClass .img-ul-drag-box-msg {
+ color: purple !important;
+ }
+
+ .customClass .img-ul-container {
+ background-color: #FF6CAD !important;
+ }
+ .img-ul-file-upload[_ngcontent-c6] {
+ padding: 16px;
+ height: 201px !important;
+ }
+ .weekDays-selector input {
+ display: none!important;
+ }
+
+ .weekDays-selector input[type=checkbox] + label {
+ display: inline-block;
+ border-radius: 6px;
+ background: #dddddd;
+ height: 40px;
+ width: 34.2px;
+ margin-right: 3px;
+ line-height: 40px;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ .weekDays-selector input[type=checkbox]:checked + label {
+ background: #2AD705;
+ color: #ffffff;
+ }
+ @media screen and (max-width: 900px) {
+ .icon-bar{
+ display: none;
+
+ }
+ .sch{
+ display: none;
+ }
+ .first{
+ width:1%!important;
+ }
+ .second{
+ margin-left: 8px!important;
+ }
+ .small{
+ display: block!important;
+ }
+ .image{
+ display: none;
+ }
+ .schlar{
+ display: block!important;
+ }
+ }
+
+ @media screen and (min-width: 900px) {
+ .schlar{
+ display: none;
+ }
+
+ }
+ .small{
+ display: none;
+ }
+ .first{
+ float:left;
+ width: 16%;
+ height:86vh;
+ overflow-y: hidden;
+ overflow-x: hidden;
+ margin-right: 5px
+ }
+ .second{
+ width: 88%;
+ height:86vh;
+ margin-left:171px;
+ }
+ .mat-dialog-container {
+ max-width: none !important;
+ }
+ .sch{
+
+ }
+ .schlar{
+
+ }
+ .pointer{
+ cursor:pointer !important;
+ font-size: 11px
+ }
+ /* Side Navi */
+ #mySidenav a {
+ margin-top: -9px;
+ position: absolute;
+ left: -80px;
+ transition: 0.3s;
+ width: 100px;
+ text-decoration: none;
+ font-size: 28px;
+ color: white;
+ border-radius: 0 5px 5px 0;
+ }
+
+ #mySidenav a:hover {
+ left: 0;
+ }
+
+ #about {
+ top: 20px;
+ background-color: #ffffff;
+ opacity: .4;
+ }
+
+ #blog {
+ top: 80px;
+ background-color: #18262F;
+ }
+
+ #projects {
+ top: 140px;
+ background-color: #f44336;
+ }
+
+ #contact {
+ top: 200px;
+ background-color: #555
+ }
+
+ .expansion-panel__content{
+ margin-left: 0% !important;
+ }
+
+
+
+ .button2 {background-color: #008CBA;}
+ .ngx-picker--btn {
+ color: #000;
+ background-color: transparent;
+ border: none;
+ padding: 1em;
+ font-size: 1em; }
+ .ngx-picker--btn__selected {
+ background-color: #eee; }
+ .ngx-picker--btn:hover {
+ transition: .25s ease;
+ background-color: #eee;
+ cursor: pointer; }
+ .ngx-picker--btn:focus {
+ outline-color: transparent; }
+
+ .ngx-picker--btn__month:hover {
+ border-top-left-radius: 0.2em; }
+
+ .ngx-picker--btn__done:hover {
+ border-bottom-right-radius: 0.2em; }
+
+ .ngx-picker--btn__now:hover {
+ border-bottom-left-radius: 0.2em; }
+
+ .ngx-picker--btn__next:hover {
+ border-top-right-radius: 0.2em; }
+
+ .calendar {
+ position: absolute;
+ background-color: #e6e6e6;
+ max-width: 16em;
+ min-width: 16em;
+ font-size: 16px;
+ font-family: "Arial", sans-serif;
+ border-radius: 0.2em;
+ box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); }
+
+ .calendar--previous-and-next {
+ position: absolute;
+ right: 0;
+ top: 0;
+ display: flex;
+ justify-content: flex-end; }
+
+ .calendar--footer {
+ display: flex;
+ justify-content: space-between;
+ background-color: #e6e6e6;
+ padding: 0;
+ border-radius: 0.2em; }
+
+ .calendar--years-select,
+ .calendar--months-select {
+ overflow-y: auto;
+ overflow-x: hidden;
+ max-height: 14.85em;
+ background-color: #fff;
+ width: 100%; }
+
+ .calendar--year,
+ .calendar--month {
+ display: block;
+ padding: .5em 1em;
+ width: 100%;
+ overflow: hidden;
+ color: #000; }
+ .calendar--year__selected,
+ .calendar--month__selected {
+ color: #000;
+ font-weight: bold;
+ background-color: #eee; }
+ .calendar--year:hover,
+ .calendar--month:hover {
+ cursor: pointer;
+ background-color: #eee;
+ font-weight: 400;
+ color: #000; }
+
+ .calendar--days-of-week {
+ display: flex;
+ justify-content: space-around;
+ background-color: #eee; }
+
+ .calendar--day-of-week {
+ position: relative;
+ padding: .5em;
+ text-align: center;
+ text-transform: uppercase;
+ color: #000;
+ font-size: .9em; }
+
+ .calendar--days-select {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ background-color: #fff; }
+
+ .calendar--day {
+ text-align: center;
+ width: 1.285em;
+ padding: .5em;
+ font-weight: 500;
+ color: #000; }
+ .calendar--day__muted {
+ color: #999; }
+ .calendar--day__selected {
+ background-color: #eee;
+ color: #000; }
+ .calendar--day:hover {
+ cursor: pointer;
+ color: #000;
+ background-color: #eee; }
+
+ .ngx-picker {
+ display: flex;
+ position: relative; }
+ .ngx-picker .calendar {
+ position: absolute;
+ left: 0;
+ top: 2.5em;
+ z-index: 3; }
+
+ .time-picker {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #e6e6e6; }
+
+ .time--values {
+ display: flex;
+ justify-content: space-between;
+ flex-direction: row;
+ flex-wrap: wrap;
+ max-width: 16em;
+ min-width: 16em;
+ background-color: #eee; }
+
+ .time--value {
+ width: 2.66em;
+ font-size: 1em;
+ padding: .5em 0;
+ text-align: center;
+ color: #000; }
+ .time--value__selected {
+ color: #000;
+ background-color: #e6e6e6; }
+ .time--value:hover {
+ transition: .25s ease;
+ cursor: pointer;
+ background-color: #e6e6e6; }
+
+ [hidden] {
+ display: none !important; }
+ #c11 {
+ width: 25%;
+ float:left
+ }
+ #c22{
+ width: 25%;
+ float:left
+ }
+ #c33 {
+ width: 25%;
+ float:left
+
+ }
+ #c44{
+ width: 25%;
+ float:left
+ }
+ #c111 {
+ width: 50%;
+ float:left
+ }
+ #c222{
+ width: 45%;
+ float:left
+ }
+ #c333 {
+ width: 5%;
+ float:left
+
+ }
+
\ No newline at end of file
diff --git a/src/app/add-device-model/add-device-model.component.html b/src/app/add-device-model/add-device-model.component.html
new file mode 100644
index 0000000..91d93db
--- /dev/null
+++ b/src/app/add-device-model/add-device-model.component.html
@@ -0,0 +1,363 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading…
+
+
+ {{'Add Device Model' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/add-device-model/add-device-model.component.spec.ts b/src/app/add-device-model/add-device-model.component.spec.ts
new file mode 100644
index 0000000..6b7d99e
--- /dev/null
+++ b/src/app/add-device-model/add-device-model.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddDeviceModelComponent } from './add-device-model.component';
+
+describe('AddDeviceModelComponent', () => {
+ let component: AddDeviceModelComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddDeviceModelComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddDeviceModelComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-device-model/add-device-model.component.ts b/src/app/add-device-model/add-device-model.component.ts
new file mode 100644
index 0000000..7a08d99
--- /dev/null
+++ b/src/app/add-device-model/add-device-model.component.ts
@@ -0,0 +1,494 @@
+import { Component, OnInit } from '@angular/core';
+import {JSONEditor} from 'jsoneditor';
+import {Device} from '../device';
+
+import {Driver} from '../driver';
+import {Token} from '../token';
+import{Contact} from '../contact';
+import {MdSnackBar} from '@angular/material';
+import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import {ContactService} from '../contact.service';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot,ActivatedRoute,Params } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import {Observable} from 'rxjs/Rx';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import { toString } from '@ng-bootstrap/ng-bootstrap/util/util';
+@Component({
+ selector: 'app-add-device-model',
+ templateUrl: './add-device-model.component.html',
+ styleUrls: ['./add-device-model.component.css'],
+ providers: [ContactService,SidebarComponent]
+})
+export class AddDeviceModelComponent implements OnInit {
+ sos_number:any;
+ chk_status:any;
+ stop_engine:any;
+ restore_engine:any;
+
+ device_Id: string;
+ dev: any;
+ deviceId: any;
+ group_info: any;
+ executed2:any;
+ groupInfo:any;
+ devices: Device[] = []
+ device: Device
+ fuel_tank_capicity:any;
+ voltage_tank_empty:any;
+ tankfull_capicity:any;
+ tokens: Token[] = []
+ token: Token
+
+ useridd: any;
+ routeData : any=[];
+ data:any;
+ mb: any;
+ logoutbut: boolean;
+ dealer: boolean;
+ custtype: boolean;
+ cust: boolean;
+ fs: any;
+ ls: any;
+ or: any;
+ logo: any;
+ superAdmin: any;
+ timeZone:any;
+ apn:any;
+ sms_ip;
+ sms_apn;
+ sms_timezone;
+ text: any;
+ Manufacturer: any;
+ immValue: any;
+ immobilizerCmd: any;
+ deviceport : any;
+ myaccount(){
+
+ this.cond = false
+ this.router.navigateByUrl("accountSettings");
+ // let dialogRef = this.dialog.open(MyaccountComponent, {
+ // width: '903px',
+ // data: {}
+ // });
+
+ // dialogRef.afterClosed().subscribe(result => {
+
+ // if(result == "succ"){
+ // console.log("Updated")
+ // }
+
+ // });
+ }
+ openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+ */
+ this.router.navigateByUrl("location");
+
+ } logout(){
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+ devi(){
+ this.router.navigateByUrl("dashboard");
+
+ }
+ soon(){
+ this.router.navigateByUrl("const?_i="+window.localStorage.token);
+
+ }
+
+ vehicleRoute(){
+ this.cond = false
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ dealerInfo(){
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+ NewVehicleType(){
+ this.router.navigateByUrl("deviceModel");
+ // this.devices=[];
+ // ngForm.reset();
+ }
+
+
+ // new_1(){
+ // this.router.navigateByUrl("new");
+
+ // }
+
+ notification(){
+ this.cond = false
+ this.router.navigateByUrl("notifications");
+ }
+
+
+ cond:Boolean = false;
+ point : any = 0;
+ aa(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+
+ Ddetail(){
+ this.router.navigateByUrl("driverdetail");
+ }
+ DModel(){
+ this.router.navigateByUrl("deviceModel");
+ }
+
+ VType(){
+ this.router.navigateByUrl("VehicleType");
+ }
+ routeViolation(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/routeViolation");
+
+ }
+
+
+
+ alert_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/alert-report");
+
+ }
+
+ summaryReport(){
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/summary-report");
+ }
+
+ overspeed(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/overspeed");
+
+ }
+ stoppage_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/stoppage_report");
+
+ }
+ ignition_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/ignition_report");
+
+
+ }
+
+ geofancingReport(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/geofancing");
+ }
+
+ route_map(){
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+
+ distance_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/distance_report");
+ }
+
+ trip_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/trip_report");
+
+ }
+
+ addgeo(){
+ this.router.navigateByUrl("geofence-add");
+ }
+ geo(){
+ this.router.navigateByUrl("geofencing");
+
+ }
+
+ a(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+ addcus(){
+ this.router.navigateByUrl("add");
+ } report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed(){
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ device_type: any;
+ config_cmd: any;
+ loc_cmd: any;
+ imob_cmd: any;
+ reset_cmd: any;
+ resume_cmd: any;
+
+ Manf: string;
+ Model: string;
+ tkstatus:any;
+ value:any;
+Lo:string;
+ Hardware_Ver: string;
+ Loca: string;
+ temp:any
+ food:any
+ new:any;
+ email:any;
+ message:string;
+ selectedValue:any;
+ show:boolean =false;
+
+
+ /* ../../assets/image/bgtry2.jpg */
+
+ foodds = [
+ {value: 'true', viewValue: 'True'},
+ {value: 'false', viewValue: 'False'},
+
+ ];
+ cultivoChange(val){
+
+ if(val.value == "Tracker"){
+ this.show=true
+ }
+ else{
+ this.show=false
+ }
+ }
+
+ back2home(){
+ // console.log("Runnig Back")
+ this.router.navigateByUrl("dashboard");
+
+ }
+
+ constructor(private _formBuilder: FormBuilder,private router: Router, public snackBar: MdSnackBar,private contactService: ContactService,private _flashMessagesService: FlashMessagesService,private sidebar:SidebarComponent,public dialog: MdDialog,private act:ActivatedRoute) { }
+test(){
+// console.log("Runnig Test")
+// console.log(this.new.value);
+}
+
+mydealer(){
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if(window.localStorage['DataLoaded'] = 'True'){
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+}
+ /* TOKEN GENERATION */
+
+
+
+
+ /* ADD DEVICE */
+
+ mess:any;
+ mess2:any;
+ mess3:any;
+ neww:any;
+ driver:any;
+ before:any;
+ dcontact:any;
+ timer:any;
+ subscription:any;
+ Load:boolean=false
+ ign(){
+ this.router.navigateByUrl("device-report/ign-report");
+
+ }
+ addDeviceModel(signupForm){
+
+ // alert(this.useridd);
+ if(this.device_type == null||this.config_cmd == null||this.loc_cmd == null||this.imob_cmd == null||this.reset_cmd == null||this.resume_cmd == null)
+ {
+ this._flashMessagesService.show('Error :Please Insert details of Device type', { cssClass: 'alert-danger', timeout: 2000 });
+ this.Load = false;
+ return;
+ }
+
+ const newDeviceModel ={
+ device_type: this.device_type,
+ config_cmd: this.config_cmd,
+ loc_cmd: this.loc_cmd,
+ imob_cmd: this.imob_cmd,
+ reset_cmd: this.reset_cmd,
+ resume_cmd:this.resume_cmd,
+ // sms_ip:this.sms_ip,
+ // sms_apn:this.sms_apn,
+ // sms_timezone:this.sms_timezone
+
+ }
+
+ if(this.sms_ip){
+ newDeviceModel['sms_ip'] = this.sms_ip;
+ }
+
+ if(this.sms_apn){
+ newDeviceModel['sms_apn'] = this.sms_apn;
+ }
+
+ if(this.sms_timezone){
+ newDeviceModel['sms_timezone'] = this.sms_timezone;
+ }
+
+ //webservice to add new driver
+ if(this.timeZone){
+ newDeviceModel['device_timezone'] = this.timeZone;
+ }
+ if(this.apn){
+ newDeviceModel['device_apn'] = this.apn;
+ }
+ if(this.Manufacturer){
+ newDeviceModel['Manufacturer'] = this.Manufacturer;
+ }
+
+ if(this.deviceport){
+ newDeviceModel['deviceport'] = this.deviceport;
+ }
+
+ if(this.immobilizerCmd){
+ newDeviceModel['imobliser_type'] = this.immobilizerCmd;
+ }
+ console.log(newDeviceModel);
+
+ this.contactService.addDeviceModel(newDeviceModel)
+ .subscribe((dataret => {
+ this.data = dataret;
+ // this._flashMessagesService.show('Device Model Added', { cssClass: 'alert-success', timeout: 2000 });
+ // this.NewVehicleType(signupForm);
+ this.router.navigateByUrl('deviceModel');
+ }), (err: any) => {
+ this._flashMessagesService.show('Internal Server Error', { cssClass: 'alert-denger', timeout: 2000 });
+ }
+ );
+
+ }
+
+
+ imageFile:any;
+ Filename:any;
+ private fileCounter = 0;
+
+
+
+ onRemoved(file) {
+ // console.log(file);
+ }
+ group(){
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+ report_map(){
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+
+ immobilizere=[
+ {
+ value : 'serverCmmand',
+ Viewvalue : 'Server command'
+
+ },
+ {
+ value : 'mobCmd',
+ Viewvalue : 'Mobile command'
+
+ }
+ ]
+ ngOnInit() {
+ this.immobilizere;
+ this.logo=window.localStorage['logo'];
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.email = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+
+ this.act.queryParams.subscribe((params:Params) =>{
+
+
+ // console.log(params['useridd']);
+ this.routeData=params.user_id;
+ // let id= params['user_id'];
+ // this.groupId = id;
+ // console.log(this.groupId);
+
+
+ })
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ if(this.custtype == true){
+ this.cust = true;
+ }
+
+
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+
+ if( window.localStorage['Custumer'] == 'ON'){
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else{
+ this.logoutbut = true
+ }
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+
+
+ }
+
+ immobilizerType(ev:any){
+ if(ev == "serverCmd") this.immobilizerCmd = '1.0';
+ if(ev == "mobileCmd") this.immobilizerCmd = '0.0';
+ console.log(this.immobilizerCmd);
+ }
+}
diff --git a/src/app/add-distributers/add-distributers.component.html b/src/app/add-distributers/add-distributers.component.html
new file mode 100644
index 0000000..c8e5b74
--- /dev/null
+++ b/src/app/add-distributers/add-distributers.component.html
@@ -0,0 +1,755 @@
+
+
+
+
+ {{heading}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome Message :
+
+
+
+
+
Timezone
+
+
+ {{
+ zone.viewValue }}
+
+
+
+
+
+
+ {{language.view}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KYC Verification Mail :
+
+
+
+
+
+
+
+
+
+ Bussiness Type :
+
+
+
+
+
+
+
+
+
+
+
+
{{'Upload Documents' | translate }}:
+
+
+
+
+
+
+
+
+
+ {{doc.docName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{bill}}
+
+
+
+
+ United States Dollars
+ Euro
+ United Kingdom Pounds
+ Algeria Dinars
+ Argentina Pesos
+ Australia Dollars
+ Austria Schillings
+ Bahamas Dollars
+ Barbados Dollars
+ Belgium Francs
+ Bermuda Dollars
+ Brazil Real
+ Bulgaria Lev
+ Canada Dollars
+ Chile Pesos
+ China Yuan Renmimbi
+ Cyprus Pounds
+ Czech Republic Koruna
+ Denmark Kroner
+ Dutch Guilders
+ Eastern Caribbean Dollars
+ Egypt Pounds
+ Fiji Dollars
+ Finland Markka
+ France Francs
+ Germany Deutsche Marks
+ Gold Ounces
+ Greece Drachmas
+ Hong Kong Dollars
+ Hungary Forint
+ Iceland Krona
+ India Rupees
+ Indonesia Rupiah
+ Ireland Punt
+ Israel New Shekels
+ Italy Lira
+ Jamaica Dollars
+ Japan Yen
+ Jordan Dinar
+ Korea (South) Won
+ Lebanon Pounds
+ Luxembourg Francs
+ Malaysia Ringgit
+ Mexico Pesos
+ Netherlands Guilders
+ New Zealand Dollars
+ Norway Kroner
+ Pakistan Rupees
+ Palladium Ounces
+ Philippines Pesos
+ Platinum Ounces
+ Poland Zloty
+ Portugal Escudo
+ Romania Leu
+ Russia Rubles
+ Saudi Arabia Riyal
+ Silver Ounces
+ Singapore Dollars
+ Slovakia Koruna
+ South Africa Rand
+ South Korea Won
+ Spain Pesetas
+ Special Drawing Right (IMF)
+ Sudan Dinar
+ Sweden Krona
+ Switzerland Francs
+ Taiwan Dollars
+ Thailand Baht
+ Trinidad and Tobago Dollars
+ Turkey Lira
+ Venezuela Bolivar
+ Zambia Kwacha
+ Euro
+ Eastern Caribbean Dollars
+ Special Drawing Right (IMF)
+ Silver Ounces
+ Gold Ounces
+ Palladium Ounces
+ Platinum Ounces
+
+
+
+
+
+
+
+
+
+ Enter Billing Contact Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Basic
+ Advanced
+ Premium
+
+
+
+
+
+
+
+
+
+
+
+
+
Supports And Services
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'SUBMIT' | translate}}
+ {{'CANCEL' | translate}}
+
+
+
\ No newline at end of file
diff --git a/src/app/add-distributers/add-distributers.component.scss b/src/app/add-distributers/add-distributers.component.scss
new file mode 100644
index 0000000..8ce663f
--- /dev/null
+++ b/src/app/add-distributers/add-distributers.component.scss
@@ -0,0 +1,20 @@
+// ::-webkit-scrollbar {
+// width: 10px;
+// height: 10px;
+// }
+
+// /* Track */
+// ::-webkit-scrollbar-track {
+// background: rgb(153, 153, 153);
+// }
+
+// /* Handle */
+// ::-webkit-scrollbar-thumb {
+// // background: rgb(74, 118, 184);
+// background: #868e96;
+// }
+
+// /* Handle on hover */
+// ::-webkit-scrollbar-thumb:hover {
+// background: #555;
+// }
diff --git a/src/app/add-distributers/add-distributers.component.spec.ts b/src/app/add-distributers/add-distributers.component.spec.ts
new file mode 100644
index 0000000..be166f6
--- /dev/null
+++ b/src/app/add-distributers/add-distributers.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddDistributersComponent } from './add-distributers.component';
+
+describe('AddDistributersComponent', () => {
+ let component: AddDistributersComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddDistributersComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddDistributersComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-distributers/add-distributers.component.ts b/src/app/add-distributers/add-distributers.component.ts
new file mode 100644
index 0000000..3f4da71
--- /dev/null
+++ b/src/app/add-distributers/add-distributers.component.ts
@@ -0,0 +1,1148 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { ContactService } from '../contact.service';
+import { Router } from '@angular/router';
+import {Contact} from '../contact';
+import * as moment from 'moment-timezone';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
+declare var swal: any;
+declare var $:any;
+declare var google:any;
+
+
+@Component({
+ selector: 'app-add-distributers',
+ templateUrl: './add-distributers.component.html',
+ styleUrls: ['./add-distributers.component.scss']
+})
+export class AddDistributersComponent implements OnInit {
+ fs:any;
+ service2
+ service1
+ support1
+ support2;
+ support3
+ ls:any;
+ DeviceSetting={Add:true,Edit:true,Delete:false}
+ UserSetting={Add:true,Edit:true,Delete:false}
+ selectedlanguage='en';
+ DeviceOptions=[{name:"Add",value:true},{name:"Edit",value:true},{name:"Delete",value:false}];
+ UserOptions=[{name:"Add",value:true},{name:"Edit",value:true},{name:"Delete",value:false}]
+ available_languages = [{
+ view : "English",
+ id : "en"
+ },{
+ view : "Spanish",
+ id : "sp"
+ },{
+ view : "Persian",
+ id : "fa"
+},{
+ view : "Arabic",
+ id : "ar"
+},{
+ view : "Portuguese",
+ id : "pr"
+},
+{
+ view : "Albanian",
+ id : "newLan2"
+},
+{
+ view : "French",
+ id : "fr"
+},
+{
+ view : "Indonesian",
+ id : "bhasa_web"
+}];
+ emailid:any;
+ or:any;
+ useridd:any;
+ custtype:any;
+ timezoneArray=[];
+ cust:boolean=false;
+ mb:any;
+ logo:any;
+ plan
+ text:any;
+ superAdmin: any;
+ dealerName: any;
+ currencyType:any="INR";
+ sup_admin: any;
+ Load : boolean = false;
+ show1:boolean = false;
+ show2:boolean = true;
+ show3:boolean = false;
+ first_name:any=null;
+ last_name:any=null;
+ passwordd:any=null;
+ org_name:any;
+ emaill:any=null;
+ welcome_messages_status:any;
+ phone:any=null;
+ executed:any;
+ $event2:any;
+ dealer:any;
+ contacts: Contact[]=[];
+ contact: Contact;
+ login1:any;
+ mess2:any;
+ mess:any;
+ otp:any;
+ userID:any;
+ address:any;
+ str:boolean = false;
+ password2:any=null;
+ billingMail:any;
+ dealerSelect: any=[];
+ imageuploadObject = [];
+ emmnerr: any;
+ data_descip: any;
+ editVal : boolean = true;
+ heading = "ADD DISTRIBUTER";
+ distStaus:any;
+ organisation_name: any;
+ androidAppLink:any;
+ iosAppLink:any;
+
+ countrySelected: { countryCode: any; dialcode: any; };
+ billingTypeArr =['Monthly','Yearly'];
+ billingType:any;
+ billingContactDetail:any;
+ timezone:any = 'Asia/Kolkata';
+ billingRate:any;
+ billingPhone: { countryCode: any; dialcode: any; };
+ billingId: any;
+ outOfReach=3;
+ speedLimit=60;
+ kyc_verification_mail:boolean=false;
+ inventoryManagement:boolean=false;
+ bussinessType:boolean=false;
+ constructor(private contactService: ContactService,private router: Router,private _flashMessagesService: FlashMessagesService,public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.0/js/intlTelInput-jquery.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+
+ this.welcome_messages_status= true;
+ if(this.data != undefined){
+ console.log('this.data=>',this.data);
+ if(this.data.userInfo.edit == true){
+ this.heading = "EDIT DISTRIBUTER";
+ console.log(this.data);
+ this.kyc_verification_mail= this.data.userInfo.kyc_verification_mail? this.data.userInfo.kyc_verification_mail:false;
+ this.bussinessType=this.data.userInfo.bussinessType?this.data.userInfo.bussinessType=="1"?true:false:false
+ this.inventoryManagement= this.data.userInfo.inventoryManagement? this.data.userInfo.inventoryManagement:false;
+ if( this.data.userInfo.Plan)this.plan= this.data.userInfo.Plan;
+ if( this.data.userInfo.SpeedLimit)this.speedLimit= this.data.userInfo.SpeedLimit;
+
+ if( this.data.userInfo.outOfReach)this.outOfReach= this.data.userInfo.outOfReach;
+ if( this.data.userInfo.support1)this.support1= this.data.userInfo.support1
+ if( this.data.userInfo.support2)this.support2= this.data.userInfo.support2
+ if( this.data.userInfo.support3)this.support3= this.data.userInfo.support3
+ if( this.data.userInfo.service1)this.service1= this.data.userInfo.service1
+ if( this.data.userInfo.service2)this.service2= this.data.userInfo.service2
+ this.distStaus = this.data.userInfo.status;
+ this.editVal = false;
+ this.userID = this.data.userInfo ? this.data.userInfo.user_id :'';
+ this.passwordd=this.data.userInfo ? this.data.userInfo.pass :''
+ this.first_name = this.data.userInfo ? this.data.userInfo.first_name :'';
+ this.last_name = this.data.userInfo ? this.data.userInfo.last_name :'';
+ this.emaill = this.data.userInfo ? this.data.userInfo.email :'';
+ this.phone = this.data.userInfo ? this.data.userInfo.phone :'';
+ this.address = this.data.userInfo ? this.data.userInfo.address :'';
+ this.organisation_name = this.data.userInfo ? this.data.userInfo.organisation_name:'';
+ this.androidAppLink = this.data.userInfo ? this.data.userInfo.androidAppLink : '';
+ this.iosAppLink = this.data.userInfo ? this.data.userInfo.iosAppLink : '';
+ if(this.data.userInfo.billing_id){
+ this.billingId = this.data.userInfo.billing_id._id;
+ if(this.data.userInfo.billing_id.BillingType){
+ this.billingType = this.data.userInfo.billing_id.BillingType ;
+ }
+ if(this.data.userInfo.billing_id.billing_contact){
+ this.billingContactDetail = this.data.userInfo.billing_id.billing_contact ;
+ }
+ if(this.data.userInfo.billing_id.billing_rate){
+ this.billingRate = this.data.userInfo.billing_id.billing_rate;
+ }
+ if(this.data.userInfo.billing_id.email){
+ this.billingMail = this.data.userInfo.billing_id.email ;
+ }
+
+ }
+ if( this.data.userInfo.devicePermission){
+ this.DeviceSetting= this.data.userInfo.devicePermission;
+ for(let i=0;i {
+ $("#telephone").intlTelInput({
+ allowDropdown:true,
+ autoPlaceholder:"Enter Mobile Number",
+ initialCountry:"in",
+ preferredCountries: ["in","us" ],
+ separateDialCode:true,
+ });
+ }, 300);
+
+
+ var Phoneinput = document.getElementById('telephone');
+ var that = this;
+ Phoneinput.addEventListener("countrychange",function(p) {
+ console.log("Inside Function");
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ console.log(countryData);
+ that.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+ });
+
+ setTimeout(() => {
+ $("#telephoneBill").intlTelInput({
+ allowDropdown:true,
+ autoPlaceholder:"Enter Mobile Number",
+ initialCountry:"in",
+ preferredCountries: ["in","us" ],
+ separateDialCode:true,
+ });
+ }, 300);
+
+
+ var Phoneinput_bill = document.getElementById('telephoneBill');
+ var that = this;
+ Phoneinput_bill.addEventListener("countrychange",function(p) {
+ console.log("Inside Function");
+ var countryDataBill = $('#telephoneBill').intlTelInput("getSelectedCountryData");
+ console.log(countryDataBill);
+ that.billingPhone = {
+ countryCode : countryDataBill.iso2,
+ dialcode: countryDataBill.dialCode
+ }
+ console.log(that.billingPhone);
+ });
+
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ // console.log(this.superAdmin)
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ if(!this.superAdmin){
+ this.dealerName = this.fs
+ }
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ console.log("superAdmin=>",this.sup_admin);
+
+ if(this.superAdmin){
+ this.sup_admin = this.useridd;
+ }
+
+ // this.getdev();
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.custtype == true){
+ this.cust = true;
+ }
+ var timeZones = moment.tz.names();
+ console.log(timeZones);
+ this.timezoneArray=[];
+ for (var i in timeZones) {
+ this.timezoneArray.push({ viewValue: "(GMT" + moment.tz(timeZones[i]).format('Z') + ")" + timeZones[i], value: timeZones[i] });
+ }
+
+
+ setTimeout(() => {
+ $('#dbselect').multipleSelect({
+ // width: 300,
+ placeholder: 'Select Timezone',
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ }, 100);
+
+
+
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+ this.latLongDetail()
+ }
+
+
+
+ checkkeyandupdate(){
+ console.log('inside function');
+ var tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log(tzone);
+
+ if((this.emaill == undefined)||(this.emaill.trim() == '')){
+ this._flashMessagesService.show('Email is mandatory', { cssClass: 'alert-danger', timeout: 3000 });
+ return;
+
+ }
+
+ if(this.editVal === true){
+ this.addContact2();
+ }else{
+ this.editDistributers();
+ }
+ }
+
+ documentDetail:any;
+ imageURL:any;
+
+ documentList = [
+ {
+ "docId": "Adhar",
+ "docName": "Adhar Card"
+ },
+ {
+ "docId": "voterCard",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "PAN",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "DL",
+ "docName": "Driving License"
+ }
+
+ ];
+
+
+
+ onChange(ev) {
+ let dealer_status = ev.checked;
+ }
+
+ stren(){
+ this.str =false;
+ }
+
+ documentType(docType){
+ console.log("doctypeObject=>",docType);
+ }
+ selectedFile: File;
+ onFileChanged(event) {
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+ }
+
+ onUpload(imgIndex) {
+ console.log(imgIndex);
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ console.log("selected file name =>",this.selectedFile.name);
+ if(this.selectedFile.name == " "){
+ swal(
+ 'Upload Error',
+ 'Please select document type before upload !!!',
+ 'error'
+ )
+ }else{
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+ // console.log(res);
+ },err=>{
+ swal(
+ 'Server Error',
+ 'Internal Server Error , plaese try after sometime !!!',
+ 'error'
+ )
+ })
+ }
+ }
+
+ docRow:boolean=false;;
+ AddDocumentsField(addedRow){
+ if(addedRow){
+ this.docRow = true;
+ }
+ var obj={doctype:'',image:'',phone:''};
+ this.imageuploadObject.push(obj);
+ console.log(this.imageuploadObject);
+ // console.log("ImageuploadObject=>",this.imageuploadObject);
+ }
+
+ DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+ }
+ passwordtype:any= 'password';
+ passwordtype_1:any= 'password';
+ passwordIcon:any='visibility_off';
+ passwordIcon_1:any='visibility_off';
+
+ showpassword(p:any){
+ console.log('inside function');
+
+ if((p == 'p1')&&(this.passwordtype == "password")){
+ this.passwordtype = 'text';
+ this.passwordIcon = 'visibility';
+ return
+
+ }
+
+ if((p == 'p1')&&(this.passwordtype == "text")){
+ this.passwordtype = 'password';
+ this.passwordIcon = 'visibility_off';
+ return;
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "password")){
+ this.passwordtype_1 = 'text';
+ this.passwordIcon_1 = 'visibility';
+ return;
+
+ }
+
+ if((p == 'p2')&&(this.passwordtype_1 == "text")){
+ this.passwordtype_1 = 'password';
+ this.passwordIcon_1 = 'visibility_off';
+ return;
+ }
+
+ }
+
+
+
+ addContact2(){
+
+ var countryData = $('#telephone').intlTelInput("getSelectedCountryData");
+ var tzone = $('#dbselect').multipleSelect('getSelects','value');
+ console.log(tzone);
+ console.log(countryData);
+ this.countrySelected = {
+ countryCode : countryData.iso2,
+ dialcode: countryData.dialCode
+ }
+
+ if(this.first_name==null || this.last_name==null || this.passwordd==null)
+ {
+ this._flashMessagesService.show('Please fill all Requied fields', { cssClass: 'alert-danger', timeout: 3000 });
+
+ }
+ else if(this.password2 != this.passwordd){
+ // this._flashMessagesService.show('Password and Confirm Password do not match', { cssClass: 'alert-danger', timeout: 3000 });
+ // this.tost1("psdnmtch")
+ }
+ else if (this.emaill && this.phone){
+ this.Load=true
+ // if (!this.executed) {
+
+ // this.executed = true;
+ // console.log(this.dealerName._id);
+
+
+ //console.log(this.imageuploadObject);
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ email: this.emaill,
+ password: this.passwordd,
+ phone: this.phone,
+ isSuperAdmin : true,
+ isDealer: false,
+ organisation : this.useridd,
+ welcome_msg : this.welcome_messages_status,
+ // custumer:true,
+ user_id:this.userID,
+ address:this.address,
+ organisation_name: this.organisation_name,
+
+ }
+
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(this.plan!=undefined){
+ newContact2['plan']=this.plan;
+ }
+ if(this.kyc_verification_mail!=undefined){
+ newContact2['kyc_verification_mail']=this.kyc_verification_mail;
+ }
+ if(this.bussinessType!=undefined){
+ newContact2['bussinessType']=this.bussinessType?"1":"0";
+ }
+ if(this.inventoryManagement!=undefined){
+ newContact2['inventoryManagement']=this.inventoryManagement;
+ }
+
+ if(this.selectedlanguage != undefined){
+ newContact2['language_code']=this.selectedlanguage;
+ }
+
+ if(this.speedLimit != undefined){
+ newContact2['SpeedLimit']=this.speedLimit;
+ }
+
+ if(this.UserSetting != undefined){
+ newContact2['userPermission']=this.UserSetting;
+ }
+
+ if(this.DeviceSetting != undefined){
+ newContact2['devicePermission']=this.DeviceSetting;
+ }
+
+ // if(this.speedLimit != undefined){
+ // newContact2['SpeedLimit']=this.speedLimit;
+ // }
+
+ if(this.outOfReach != undefined){
+ newContact2['outOfReach']=this.outOfReach;
+ }
+
+
+
+ if(this.support1 != undefined){
+ newContact2['support1'] = this.support1;
+}
+ if(this.support2 != undefined){
+ newContact2['support2'] = this.support2;
+}
+ if(this.support3 != undefined){
+ newContact2['support3'] = this.support3;
+}
+ if(this.service1 != undefined){
+ newContact2['service1'] = this.service1
+}
+ if(this.service2 != undefined){
+ newContact2['service2'] = this.service2
+}
+ if(tzone != undefined){
+ newContact2['timezone'] = tzone[0];
+}
+
+
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ this.Load=false
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ console.log(contact);
+ if((this.billingContactDetail != undefined)||(this.billingRate != undefined)||(this.billingType != undefined)||(this.billingMail != undefined)){
+ this.addBillingDetail(contact);
+ }else{
+ this.dialogRef.close('success');
+ this.contacts.push(contact);
+ }
+
+ }
+
+
+
+ }, (err: any) => {
+ // console.log(err.status);
+ // console.log(err);
+ if(err.status == 500)
+ {
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+
+ }
+ else{
+ this.Load=false
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+
+ }
+ });
+/* this._flashMessagesService.show('OTP Sent Sucessfully', { cssClass: 'alert-success', timeout: 3000 }); */
+
+ }
+ else if(this.phone){
+ this.Load=true
+
+
+
+
+ // if (!this.executed) {
+ // this.executed = true;
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ phone: this.phone,
+ isSuperAdmin : true,
+ isDealer: false,
+ organisation : this.useridd,
+ welcome_msg : this.welcome_messages_status,
+ user_id:this.userID,
+ address:this.address,
+ organisation_name: this.organisation_name,
+ }
+
+ if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(this.speedLimit != undefined){
+ newContact2['SpeedLimit']=this.speedLimit;
+ }
+
+ if(this.UserSetting != undefined){
+ newContact2['userPermission']=this.UserSetting;
+ }
+
+ if(this.DeviceSetting != undefined){
+ newContact2['devicePermission']=this.DeviceSetting;
+ }
+
+ // if(this.speedLimit != undefined){
+ // newContact2['SpeedLimit']=this.speedLimit;
+ // }
+
+ if(this.outOfReach != undefined){
+ newContact2['outOfReach']=this.outOfReach;
+ }
+
+
+
+ if(this.support1 != undefined){
+ newContact2['support1'] = this.support1;
+}
+ if(this.support2 != undefined){
+ newContact2['support2'] = this.support2;
+}
+ if(this.support3 != undefined){
+ newContact2['support3'] = this.support3;
+}
+ if(this.service1 != undefined){
+ newContact2['service1'] = this.service1
+}
+ if(this.service2 != undefined){
+ newContact2['service2'] = this.service2
+}
+
+
+ if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+ // this.clear();
+ this.Load=false;
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.dialogRef.close('success');
+ this.contacts.push(contact);
+ }
+
+
+ }, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+ console.log(this.emmnerr);
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+ }
+ else{
+ this.Load=false
+ // console.log("dadsa");
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+ }})
+ }
+ else if(this.emaill){
+ // if (!this.executed) {
+ // this.executed = true;
+
+
+
+ const newContact2 ={
+ first_name: this.first_name,
+ last_name: this.last_name,
+ password: this.passwordd,
+ organisation_name: this.organisation_name,
+ email: this.emaill,
+ isSuperAdmin : true,
+ isDealer: false,
+ organisation :this.useridd,
+ user_id:this.userID,
+ welcome_msg : this.welcome_messages_status,
+ address:this.address,
+}
+
+if(this.countrySelected != undefined){
+ newContact2['std_code']=this.countrySelected;
+ }
+ if(this.speedLimit != undefined){
+ newContact2['SpeedLimit']=this.speedLimit;
+ }
+
+ if(this.UserSetting != undefined){
+ newContact2['userPermission']=this.UserSetting;
+ }
+
+ if(this.DeviceSetting != undefined){
+ newContact2['devicePermission']=this.DeviceSetting;
+ }
+
+ // if(this.speedLimit != undefined){
+ // newContact2['SpeedLimit']=this.speedLimit;
+ // }
+
+ if(this.outOfReach != undefined){
+ newContact2['outOfReach']=this.outOfReach;
+ }
+
+
+
+ if(this.support1 != undefined){
+ newContact2['support1'] = this.support1;
+}
+ if(this.support2 != undefined){
+ newContact2['support2'] = this.support2;
+}
+ if(this.support3 != undefined){
+ newContact2['support3'] = this.support3;
+}
+ if(this.service1 != undefined){
+ newContact2['service1'] = this.service1
+}
+ if(this.service2 != undefined){
+ newContact2['service2'] = this.service2
+}
+
+
+if(this.imageuploadObject.length > 0){
+
+ for(var d = 0 ;d {
+
+ this.Load=false
+ if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }if(contact.message == "USER_ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "User Duplicate"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Email ID already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else if(contact.message == "Mobile Number already exists"){
+ return this._flashMessagesService.show(contact.message, { cssClass: 'alert-danger', timeout: 3000 });
+ }else{
+ this.dialogRef.close('success');
+ this.contacts.push(contact);
+ }
+
+
+
+}, (err: any) => {
+ if(err.status == 500)
+ {
+ // console.log(err._body);
+ this.Load=false
+ this.emmnerr=JSON.parse(err._body);
+
+ this.data_descip = this.emmnerr.split(':')[1];
+ console.log(this.data_descip);
+ swal(
+ 'Error',
+ this.data_descip,
+ 'error'
+ )
+ // console.log("error to display",this.emmnerr);
+ // this.tost1("Error")
+ }
+ else{
+ this.Load=false;
+ swal(
+ 'Error',
+ 'Internal Server error , Please try after sometime !!!',
+ 'error'
+ )
+ }});
+
+
+ }
+
+
+ }
+
+ closebox(){
+ this.dialogRef.close(null);
+ }
+
+ click2(event2){
+ this.show2=true;
+ this.show3=false;
+
+ }
+ call(e) {
+ {
+ if (e.keyCode == 32) {
+ e.preventDefault();
+ }
+ }
+ }
+
+ click1(event){
+ this.show2=false;
+ this.show3=true;
+ if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+ }
+ /* if(event.keyCode===13){
+ this.otp_window();
+ } */
+
+ else
+ event.preventDefault();
+ }
+
+
+ editDistributers(){
+ console.log('this.address',this.address);
+ var userObj = {
+ 'first_name' : this.first_name,
+ 'user_id' : this.userID ,
+ 'last_name' : this.last_name,
+ 'phone' :this.phone,
+ 'email' : this.emaill,
+ password: this.passwordd,
+ 'contactid' : this.data.userInfo._id,
+ 'address' : this.address,
+ 'status' : this.distStaus,
+ 'organisation_name': this.organisation_name ,
+ 'welcome_msg' : this.welcome_messages_status,
+ }
+
+
+ if(this.selectedlanguage != undefined){
+ userObj['language_code']=this.selectedlanguage;
+ }
+ if(this.plan!=undefined){
+ userObj['plan']=this.plan;
+ }
+ if(this.outOfReach!=undefined){
+ userObj['outOfReach']=this.outOfReach;
+ }
+ if(this.speedLimit!=undefined){
+ userObj['SpeedLimit']=this.speedLimit;
+ }
+ if(this.UserSetting != undefined){
+ userObj['userPermission']=this.UserSetting;
+ }
+
+ if(this.DeviceSetting != undefined){
+ userObj['devicePermission']=this.DeviceSetting;
+ }
+
+ if(this.support1 != undefined){
+ userObj['support1'] = this.support1;
+}
+ if(this.support2 != undefined){
+ userObj['support2'] = this.support2;
+}
+ if(this.support3 != undefined){
+ userObj['support3'] = this.support3;
+}
+ if(this.service1 != undefined){
+ userObj['service1'] = this.service1
+}
+ if(this.service2 != undefined){
+ userObj['service2'] = this.service2
+}
+
+ if(this.kyc_verification_mail!=undefined){
+ userObj['kyc_verification_mail']=this.kyc_verification_mail;
+ }
+ if(this.inventoryManagement!=undefined){
+ userObj['inventoryManagement']=this.inventoryManagement;
+ }
+ if(this.bussinessType!=undefined){
+ userObj['bussinessType']=this.bussinessType?"1":"0";
+ }
+ console.log(userObj);
+
+ this.contactService.editUsermaster(userObj)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ if((this.billingContactDetail != undefined)||(this.billingRate != undefined)||(this.billingType != undefined)||(this.billingMail != undefined)){
+ if(this.billingId === undefined){
+ var adminId = {
+ user : {_id : this.data.userInfo._id}
+ }
+ this.addBillingDetail(adminId);
+ }else{
+ this.updateBillingDetail();
+ }
+
+ }else{
+ this.dialogRef.close('success');
+ }
+ }
+ },err=>{
+ console.log(err.status);
+ this._flashMessagesService.show('Please try again', { cssClass: 'alert-danger', timeout: 3000 });
+ })
+
+ }
+
+ stre(){
+ console.log("inside function");
+ }
+
+ addBillingDetail(distID){
+ console.log("Inside function",distID);
+
+ var payload ={
+ supAdmin: distID.user._id,
+ organisation: this.useridd,
+ billing_contact: this.billingContactDetail,
+ billing_rate: this.billingRate,
+ BillingType: this.billingType,
+ std_code: this.countrySelected,
+ email : this.billingMail
+ };
+ console.log(payload);
+
+ // this.contacts.push(contact);
+
+ this.contactService.addBillingDetail(payload).subscribe(res=>{
+ console.log("response",res);
+ this.dialogRef.close('success');
+ })
+
+ }
+
+
+ updateBillingDetail(){
+ var payload ={
+ billing_contact: this.billingContactDetail,
+ billing_rate: this.billingRate,
+ BillingType: this.billingType,
+ email : this.billingMail,
+ billingId: this.billingId
+ };
+ console.log(payload);
+ this.contactService.updateBillingDetail(payload).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('success');
+ },err=>{
+ this.dialogRef.close('success');
+ })
+ }
+
+ changelanguage(){
+
+ }
+
+
+ latLongDetail(){
+ var that =this;
+ if (navigator.geolocation) {
+ navigator.geolocation.getCurrentPosition(function(position) {
+
+ let geocoder = new google.maps.Geocoder();
+ var d_lat= position.coords.latitude;
+ var d_lng=position.coords.longitude;
+ let t_latlng = new google.maps.LatLng(d_lat, d_lng);
+
+ let request = {
+ latLng: t_latlng
+ };
+
+ geocoder.geocode(request, function (data, status) {
+ var userCountry;
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ var address_show = data[0];
+ console.log('var=>' ,address_show);
+ for (var ac = 0; ac < data[0].address_components.length; ac++) {
+ var component = data[0].address_components[ac];
+ switch(component.types[0]) {
+ case 'country':
+ userCountry = component.short_name;
+ console.log(userCountry);
+ break;
+ }
+ };
+
+ var aaa = $('#telephone').intlTelInput("setCountry",userCountry);
+ } else {
+ userCountry = 'in';
+ }
+ }
+ else {
+ userCountry = 'in';
+ }
+ })
+ });
+ // }
+ }
+
+
+
+
+ }
+
+ updateCheckedOptions(value,e,type){
+ console.log(value,e);
+ if(type=='user'){
+ for(var i=0;i
+
+
+
+
+
+ -->
+
+
+
+
+
+
+
+
+
+
+
Loading…
+
+
+ {{title| translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/add-driver/add-driver.component.spec.ts b/src/app/add-driver/add-driver.component.spec.ts
new file mode 100644
index 0000000..574c1f4
--- /dev/null
+++ b/src/app/add-driver/add-driver.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddDriverComponent } from './add-driver.component';
+
+describe('AddDriverComponent', () => {
+ let component: AddDriverComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddDriverComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddDriverComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-driver/add-driver.component.ts b/src/app/add-driver/add-driver.component.ts
new file mode 100644
index 0000000..7fb75b4
--- /dev/null
+++ b/src/app/add-driver/add-driver.component.ts
@@ -0,0 +1,738 @@
+import { Component, Inject, OnInit} from '@angular/core';
+import {JSONEditor} from 'jsoneditor';
+import {Device} from '../device';
+
+import {Driver} from '../driver';
+import {Token} from '../token';
+import{Contact} from '../contact';
+import {MdSnackBar} from '@angular/material';
+import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import {ContactService} from '../contact.service';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot,ActivatedRoute,Params } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import {Observable} from 'rxjs/Rx';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import { toString } from '@ng-bootstrap/ng-bootstrap/util/util';
+
+
+
+
+@Component({
+ selector: 'app-add-driver',
+ templateUrl: './add-driver.component.html',
+ styleUrls: ['./add-driver.component.css'],
+ providers: [ContactService,SidebarComponent]
+})
+export class AddDriverComponent implements OnInit {
+ text: any;
+ timezoneArray(arg0: any): any {
+ throw new Error("Method not implemented.");
+ }
+
+
+
+ contactNumber
+ //File uploader above
+ device_Id: string;
+ dev: any;
+ deviceId: any;
+ group_info: any;
+ executed2:any;
+ groupInfo:any;
+ devices: Device[] = []
+ device: Device
+ fuel_tank_capicity:any;
+ voltage_tank_empty:any;
+ tankfull_capicity:any;
+ tokens: Token[] = []
+ token: Token
+
+ useridd: any;
+ routeData : any=[];
+ data:any;
+ fs: any;
+ ls: any;
+ or: any;
+ mb: any;
+ custtype: any;
+ cust: boolean;
+ logoutbut: boolean;
+ dealer: boolean;
+ logo: any;
+ superAdmin: any;
+ myaccount(){
+
+ this.cond = false
+ this.router.navigateByUrl("accountSettings");
+ // let dialogRef = this.dialog.open(MyaccountComponent, {
+ // width: '903px',
+ // data: {}
+ // });
+
+ // dialogRef.afterClosed().subscribe(result => {
+
+ // if(result == "succ"){
+ // console.log("Updated")
+ // }
+
+ // });
+ }
+ group(){
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+ openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+ */
+ this.router.navigateByUrl("location");
+
+ } logout(){
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+ devi(){
+ this.router.navigateByUrl("dashboard");
+
+ }
+ soon(){
+ this.router.navigateByUrl("const?_i="+window.localStorage.token);
+
+ }
+
+ vehicleRoute(){
+ this.cond = false
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ dealerInfo(){
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+
+
+ // new_1(){
+ // this.router.navigateByUrl("new");
+
+ // }
+
+
+
+
+ cond:Boolean = false;
+ point : any = 0;
+ aa(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+
+ Ddetail(){
+ this.router.navigateByUrl("driverdetail");
+ }
+ DModel(){
+ this.router.navigateByUrl("deviceModel");
+ }
+ VType(){
+ this.router.navigateByUrl("VehicleType");
+ }
+ routeViolation(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/routeViolation");
+
+ }
+
+
+
+ alert_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/alert-report");
+
+ }
+
+ summaryReport(){
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/summary-report");
+ }
+
+ overspeed(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/overspeed");
+
+ }
+ stoppage_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/stoppage_report");
+
+ }
+ ignition_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/ignition_report");
+
+
+ }
+
+ geofancingReport(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/geofancing");
+ }
+
+ route_map(){
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+
+ distance_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/distance_report");
+ }
+
+ trip_report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/trip_report");
+
+ }
+
+ addgeo(){
+ this.router.navigateByUrl("geofence-add");
+ }
+ geo(){
+ this.router.navigateByUrl("geofencing");
+
+ }
+
+ a(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+ addcus(){
+ this.router.navigateByUrl("add");
+ } report(){
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed(){
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ name: any;
+ address: any;
+ status: any;
+ license_number: any;
+ license_upload: any;
+ overall_rating: any;
+ salary:any;
+ doj: string;
+
+ Manf: string;
+ Model: string;
+ tkstatus:any;
+ value:any;
+Lo:string;
+ Hardware_Ver: string;
+ Loca: string;
+ temp:any
+ food:any
+ new:any;
+ email:any;
+ message:string;
+ selectedValue:any;
+ show:boolean =false;
+
+ remove
+ devicename: any;
+ deviceid: any;
+ des: any;
+ model: any;
+ Des: any;
+ hrdwr: any;
+ typdev:any;
+ Device_ID: string;
+ /* ../../assets/image/bgtry2.jpg */
+
+ foodds = [
+ {value: 'true', viewValue: 'True'},
+ {value: 'false', viewValue: 'False'},
+
+ ];
+ cultivoChange(val){
+
+ if(val.value == "Tracker"){
+ this.show=true
+ }
+ else{
+ this.show=false
+ }
+ }
+
+ back2home(){
+ // console.log("Runnig Back")
+ this.router.navigateByUrl("dashboard");
+
+ }
+title="Add Driver";
+buttonText="Add";
+update:boolean=false
+ constructor(public dialogRef: MdDialogRef,@Inject(MD_DIALOG_DATA) public data1: any ,private _formBuilder: FormBuilder,private router: Router, public snackBar: MdSnackBar,private contactService: ContactService,private _flashMessagesService: FlashMessagesService,private sidebar:SidebarComponent,public dialog: MdDialog,private act:ActivatedRoute) {
+ console.log(data1);
+
+ if(Object.keys(data1).length != 0){
+ this.update=true
+ this.title="Edit Driver";
+ this.buttonText="Update"
+ this.name=data1.name;
+ this.salary=data1.salary;
+ this.doj=data1.date_of_joining;
+ this.address=data1.address;
+ this.status=data1.status;
+ this.license_number=data1.license_number
+ this.contactNumber=data1.contactNumber
+ }else{
+ this.update=false
+ this.title="Add Driver";
+ this.buttonText="Add"
+ }
+ }
+test(){
+// console.log("Runnig Test")
+// console.log(this.new.value);
+}
+
+mydealer(){
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if(window.localStorage['DataLoaded'] = 'True'){
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+}
+ /* TOKEN GENERATION */
+
+
+
+tokenn(){
+ if(this.name == null)
+ {
+
+ this._flashMessagesService.show('Error : Insert the Complete Details', { cssClass: 'alert-danger', timeout: 1000 });
+ this.tkstatus=0;
+ }
+ else{
+ // console.log("GENERATING TOKEN")
+ /* const newToken ={
+ deviceid: this.deviceid,
+ eid: "test@test.com",
+ }
+ this.contactService.addToken(newToken)
+ .subscribe(token => {
+ this.tokens.push(token);
+ });
+ this.tkstatus=1; */
+ }
+ }
+
+ /* ADD DEVICE */
+
+ mess:any;
+ mess2:any;
+ mess3:any;
+ neww:any;
+ driver:any;
+ before:any;
+ dcontact:any;
+ timer:any;
+ subscription:any;
+ Load:boolean=false
+ ign(){
+ this.router.navigateByUrl("device-report/ign-report");
+
+ }
+ addDriver(ngForm){
+
+ // alert(this.useridd);
+ if(this.name == null||this.address == null||this.status == null||this.license_number == null||this.salary == null||this.doj == null)
+ {
+
+ this._flashMessagesService.show('Error : Please insert details of Driver', { cssClass: 'alert-danger', timeout: 2000 });
+ this.Load = false
+ }
+ // else if(this.address == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert the Address ', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+ // else if(this.status == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert the Status', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+// second row
+ // else if(this.license_number == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert license number', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+ // else if(this.license_upload == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert license upload', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+ // else if(this.overall_rating == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert overall rating', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+ // third row
+ // else if(this.salary == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert salary', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+ // else if(this.doj == null)
+ // {
+ // this._flashMessagesService.show('Error : Insert date of joining', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+// else if(this.imagePath == null)
+// {
+// this._flashMessagesService.show('Error : Insert image path', { cssClass: 'alert-danger', timeout: 2000 });
+// this.Load = false
+// }
+
+
+
+else{
+ this._flashMessagesService.show('Driver Added', { cssClass: 'alert-danger', timeout: 1000 });
+ }
+
+
+
+ //this._flashMessagesService.show('Congratulation Device Added as '+this.deviceid, { cssClass: 'alert-success', timeout: 2000 });
+
+ //object should form as per the request;
+
+ if(this.update){
+ this.updateDriver()
+ }else{
+ const newDriver ={
+ name: this.name,
+ address: this.address,
+ status: this.status,
+ license_number: this.license_number,
+ overall_rating:this.overall_rating,
+ salary:this.salary,
+ doj:this.doj,
+ userid :this.routeData,
+ contactNumber:this.contactNumber,
+
+ }
+ //webservice to add new driver
+
+ this.contactService.addDriver(newDriver)
+ .subscribe((dataret => {
+ this.data = dataret
+ this.NewVehicleType(ngForm);
+ if(this.data.status == 200){
+
+ //this.driver.push(newDriver);
+ this._flashMessagesService.show("New Driver Added!", { cssClass: 'alert-danger', timeout: 2000 });
+
+ }
+
+ }), (err: any) => {
+ // console.log(err.status);
+ // console.log(err);
+ if(err.status == 500)
+ {
+
+
+ this.mess = err._body.split(":")[5] ;
+ this.mess2 = this.mess.split("_")[0];
+ this.mess3 = this.mess.split("_")[1];
+
+ // this._flashMessagesService.show(this.mess2 + this.mess3+" Duplicate Entry", { cssClass: 'alert-danger', timeout: 3000 });
+ this.Load = false
+ // console.log("Error");
+ }
+ else{
+ this._flashMessagesService.show("Error !!", { cssClass: 'alert-danger', timeout: 2000 });
+ this.Load = false
+ }
+ }
+ );
+
+ }
+
+ }
+
+ updateDriver(){
+ var data={
+ _id:this.data1._id,
+ name: this.name,
+ address: this.address,
+ status: this.status,
+ license_number: this.license_number,
+ overall_rating:this.overall_rating,
+ salary:this.salary,
+ doj:this.doj,
+ contactNumber:this.contactNumber,
+ userid :this.data1.user_id._id
+ }
+
+ this.contactService.post('/driver/updateDriverDetails',data).subscribe(res=>{
+ // this.dialogRef.close();
+ })
+ }
+
+
+ // imageFile:any;
+ // Filename:any;
+ // Lfilename:any;
+ private fileCounter = 0;
+// -------------------profile upload----------------------------------
+// onBeforeUpload = (metadata) => {
+// if (this.fileCounter % 2 === 0) {
+// metadata.abort = true;
+// } else {
+// // mutate the file or replace it entirely - metadata.file
+// metadata.url = 'http://13.126.36.205:3000/vehicleType/profileUpload'
+// }
+
+// this.fileCounter++;
+// return metadata;
+// };
+// onUploadFinished(file) {
+// debugger;
+// console.log(file);
+// this.imageFile=file;
+// console.log(this.imageFile.file.name);
+// this.Filename=this.imageFile.file.name
+// }
+
+// onRemoved(file) {
+// console.log(file);
+// }
+
+// onUploadStateChanged(state: boolean) {
+// console.log(state);
+// }
+
+// //---------------license upload------------------
+// onBeforeUpload1 = (metadata) => {
+// if (this.fileCounter % 2 === 0) {
+// metadata.abort = true;
+// } else {
+// // mutate the file or replace it entirely - metadata.file
+// metadata.url = 'http://13.126.36.205:3000/vehicleType/licenseUpload'
+// }
+
+// this.fileCounter++;
+// return metadata;
+// };
+// onUploadFinished1(file) {
+// debugger;
+// console.log(file);
+// this.imageFile=file;
+// console.log(this.imageFile.file.name);
+// this.Lfilename=this.imageFile.file.name
+// }
+
+// onRemoved1(file) {
+// console.log(file);
+// }
+
+// onUploadStateChanged1(state: boolean) {
+// console.log(state);
+// }
+
+report_map(){
+ this.router.navigateByUrl("routeMapping");
+
+}
+NewVehicleType(ngForm){
+ //this.router.navigateByUrl("addEditVehicleType");
+ this.driver=[];
+ ngForm.reset();
+}
+click1(event){
+ if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+
+ }
+ else
+ event.preventDefault();
+ }
+
+ ngOnInit() {
+
+
+ // console.log(moment("2014-06-01T12:00:00Z").tz('America/Los_Angeles').format('ha z'));
+ this.logo=window.localStorage['logo'];
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.email = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ if(this.custtype == true){
+ this.cust = true;
+ }
+
+
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if( window.localStorage['Custumer'] == 'ON'){
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else{
+ this.logoutbut = true
+ }
+
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+
+ this.act.queryParams.subscribe((params:Params) =>{
+
+
+ // console.log(params['useridd']);
+ this.routeData=params.user_id;
+ // let id= params['user_id'];
+ // this.groupId = id;
+ // console.log(this.groupId);
+
+
+ })
+
+
+
+ }
+
+ }
+// call(e) {
+// {
+// if (e.keyCode == 32) {
+// e.preventDefault();
+// }
+// }
+// }
+// click1(event){
+
+// if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+// }
+// /* if(event.keyCode===13){
+// this.otp_window();
+// } */
+
+// else
+// event.preventDefault();
+// }
+// fs:any;
+// ls:any;
+// or:any;
+// userid:any;
+// emailid :any;
+// useridd:any;
+// custtype:any;
+// cust:boolean=true;
+// isLinear = false;
+// firstFormGroup: FormGroup;
+// secondFormGroup: FormGroup;
+// phoneno: any;
+// logo:any;
+// text:any;
+// ideal(){
+// this.router.navigateByUrl("device-report/ideal-report");
+// }
+// mb:any
+ // logoutbut:boolean;
+// dealer:boolean;
+// groups=[];
+
+
+ // group(){
+ // this.cond = false
+ // this.router.navigateByUrl("group_view");
+ // }
+
+
+ // fuel_calibration(){
+ // console.log("Inside fuel Callibration !!!");
+ // if(this.fuel_tank_capicity == null)
+ // {
+
+ // this._flashMessagesService.show('Error : Empty entry', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+ // else if(this.voltage_tank_empty == null)
+ // {
+ // this._flashMessagesService.show('Error : Empty entry', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+ // else if(this.tankfull_capicity == null)
+ // {
+ // this._flashMessagesService.show('Error : Empty entry', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+
+ // const fuelCapicity ={
+ // fuelCapicity: this.fuel_tank_capicity,
+ // voltageTankempity: this.voltage_tank_empty,
+ // tankfullcapicity: this.tankfull_capicity,
+
+ // }
+
+ // console.log(fuelCapicity);
+ // }
+ //}
+
+
+
+
+
diff --git a/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.css b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.css
new file mode 100644
index 0000000..4a9cf9e
--- /dev/null
+++ b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.css
@@ -0,0 +1,20 @@
+::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+ background: rgb(143, 215, 255);;
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+
+ background: #dadada;
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+ background: #555;
+}
\ No newline at end of file
diff --git a/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.html b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.html
new file mode 100644
index 0000000..72dba6d
--- /dev/null
+++ b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
{{'ADD VEHICLE TYPE'| translate}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.spec.ts b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.spec.ts
new file mode 100644
index 0000000..bbd54dc
--- /dev/null
+++ b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddEditVehicleTypeComponent } from './add-edit-vehicle-type.component';
+
+describe('AddEditVehicleTypeComponent', () => {
+ let component: AddEditVehicleTypeComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddEditVehicleTypeComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddEditVehicleTypeComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.ts b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.ts
new file mode 100644
index 0000000..8ab016f
--- /dev/null
+++ b/src/app/add-edit-vehicle-type/add-edit-vehicle-type.component.ts
@@ -0,0 +1,562 @@
+import { Component, OnInit } from '@angular/core';
+import {JSONEditor} from 'jsoneditor';
+import {Device} from '../device';
+
+import {Driver} from '../driver';
+import {Token} from '../token';
+import {Vehicle} from '../vehicle';
+import{Contact} from '../contact';
+import {MdSnackBar} from '@angular/material';
+import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import {ContactService} from '../contact.service';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot,ActivatedRoute,Params } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import {Observable} from 'rxjs/Rx';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import { toString } from '@ng-bootstrap/ng-bootstrap/util/util';
+@Component({
+ selector: 'app-add-edit-vehicle-type',
+ templateUrl: './add-edit-vehicle-type.component.html',
+ styleUrls: ['./add-edit-vehicle-type.component.css'],
+ providers: [ContactService,SidebarComponent]
+})
+export class AddEditVehicleTypeComponent implements OnInit {
+ [x: string]: any;
+
+
+ device_Id: string;
+ dev: any;
+ deviceId: any;
+ group_info: any;
+ executed2:any;
+ groupInfo:any;
+
+
+ devices: Device[] = [];
+ device: Device;
+
+ vehicle_types:Vehicle[]=[];
+ vehicle_type:Vehicle;
+ IconType = [
+ { value: 'car', viewValue: 'Car' },
+ { value: 'bike', viewValue: 'Bike' },
+ { value: 'bus', viewValue: 'Bus' },
+ { value: 'pickup', viewValue: 'Pickup' },
+ { value: 'tractor', viewValue: 'Tractor' },
+ { value: 'truck', viewValue: 'Truck' },
+ { value: 'truck', viewValue: 'Heavy Truck' },
+ { value: 'tanker', viewValue: 'Tanker' },
+ { value: 'jcb', viewValue: 'JCB' },
+ { value: 'roadroller', viewValue: 'Roadroller' },
+ { value : 'user' ,viewValue : 'User'},
+ { value : 'ambulance' ,viewValue : 'Ambulance'},
+ // { value : 'tempo' ,viewValue : 'Tempo'}
+
+ ];
+ // { value : 'user' ,viewValue : 'User'}
+ // Bike Bus Car Heavy truck Pickup Tanker Tractor Truck JCB Roadroller
+ iconObj:any;
+ fuel_tank_capicity:any;
+ voltage_tank_empty:any;
+ tankfull_capicity:any;
+ tokens: Token[] = []
+ token: Token
+
+ useridd: any;
+ routeData : any=[];
+ data:any;
+ custtype: any;
+ cust: boolean;
+ mb: any;
+ dealer: boolean;
+ logoutbut: boolean;
+ fs: any;
+ ls: any;
+ or: any;
+ logo: any;
+ superAdmin: any;
+
+ click1(event){
+ if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39){
+
+ }
+ else
+ event.preventDefault();
+ }
+ myaccount(){
+
+ this.cond = false
+ this.router.navigateByUrl("accountSettings");
+ // let dialogRef = this.dialog.open(MyaccountComponent, {
+ // width: '903px',
+ // data: {}
+ // });
+
+ // dialogRef.afterClosed().subscribe(result => {
+
+ // if(result == "succ"){
+ // console.log("Updated")
+ // }
+
+ // });
+ }
+ openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+ */
+ this.router.navigateByUrl("location");
+
+ } logout(){
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+ devi(){
+ this.router.navigateByUrl("dashboard");
+
+ }
+ soon(){
+ this.router.navigateByUrl("const?_i="+window.localStorage.token);
+
+ }
+
+ vehicleRoute(){
+ this.cond = false
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ dealerInfo(){
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+
+
+ // new_1(){
+ // this.router.navigateByUrl("new");
+
+ // }
+
+
+
+
+ cond:Boolean = false;
+ point : any = 0;
+ aa(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+
+ // Ddetail(){
+ // this.router.navigateByUrl("driverdetail");
+ // }
+ // DModel(){
+ // this.router.navigateByUrl("deviceModel");
+ // }
+ // VType(){
+ // this.router.navigateByUrl("VehicleType");
+ // }
+ // routeViolation(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/routeViolation");
+
+ // }
+
+
+
+ // alert_report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/alert-report");
+
+ // }
+
+ // summaryReport(){
+
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/summary-report");
+ // }
+
+ // overspeed(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/overspeed");
+
+ // }
+ // stoppage_report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/stoppage_report");
+
+ // }
+ // ignition_report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/ignition_report");
+
+
+ // }
+
+ // geofancingReport(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/geofancing");
+ // }
+
+ // route_map(){
+ // this.router.navigateByUrl("routeMapping");
+
+ // }
+
+
+ // distance_report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/distance_report");
+ // }
+
+ // trip_report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/trip_report");
+
+ // }
+
+ // addgeo(){
+ // this.router.navigateByUrl("geofence-add");
+ // }
+ // geo(){
+ // this.router.navigateByUrl("geofencing");
+
+ // }
+
+ a(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+ }
+ // addcus(){
+ // this.router.navigateByUrl("add");
+ // } report(){
+ // this.cond = false
+ // this.router.navigateByUrl("device-report");
+
+ // }
+ // report_speed(){
+ // // console.log("report speed call")
+ // this.cond = false
+ // this.router.navigateByUrl("device-report/device-speed-report");
+ // }
+ brand: any;
+ description: any;
+ model: any;
+
+ // voltage_calibration=[{voltage:[],fuel:[]}];
+ voltage_calibration=[];
+ temprature_calibration=[];
+ volts;
+ ltrs:any=[];
+
+ tank_size: number;
+ mileage: number;
+
+
+ Manf: string;
+ Model: string;
+ tkstatus:any;
+ value:any;
+ Lo:string;
+ Hardware_Ver: string;
+ Loca: string;
+ temp:any
+ food:any
+ new:any;
+ email:any;
+ message:string;
+ selectedValue:any;
+ show:boolean =false;
+
+
+ /* ../../assets/image/bgtry2.jpg */
+
+ foodds = [
+ {value: 'true', viewValue: 'True'},
+ {value: 'false', viewValue: 'False'},
+
+ ];
+ cultivoChange(val){
+
+ if(val.value == "Tracker"){
+ this.show=true
+ }
+ else{
+ this.show=false
+ }
+ }
+
+ back2home(){
+ // console.log("Runnig Back")
+ this.router.navigateByUrl("dashboard");
+
+ }
+
+ constructor(private _formBuilder: FormBuilder,private router: Router, public snackBar: MdSnackBar,private contactService: ContactService,private _flashMessagesService: FlashMessagesService,private sidebar:SidebarComponent,public dialog: MdDialog,private act:ActivatedRoute) { }
+test(){
+// console.log("Runnig Test")
+// console.log(this.new.value);
+}
+
+mydealer(){
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if(window.localStorage['DataLoaded'] = 'True'){
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+}
+ /* TOKEN GENERATION */
+
+
+
+
+ /* ADD DEVICE */
+
+ mess:any;
+ mess2:any;
+ mess3:any;
+ neww:any;
+ driver:any;
+ before:any;
+ dcontact:any;
+ timer:any;
+ subscription:any;
+ Load:boolean=false
+ // ign(){
+ // this.router.navigateByUrl("device-report/ign-report");
+
+ // }
+ addVehicleType(signupForm){
+ // console.log("vehicle ICon",this.iconObj);
+
+ if(this.brand == null ||this.description == null|| this.model == null ||this.voltage_calibration == null||this.tank_size == null||this.mileage == null)
+ {
+
+ this._flashMessagesService.show('Error :Please Insert Details', { cssClass: 'alert-danger', timeout: 5000 });
+ // this.Load = false
+ //this.router.navigateByUrl("addEditVehicleType");
+ return;
+ }
+ // else if(this.description == null)
+ // {
+ // this._flashMessagesService.show('Error : Please Insert Description ', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+ // else if(this.model == null)
+ // {
+ // this._flashMessagesService.show('Error : Please Insert Model', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+// second row
+ // else if(this.voltage_calibration == null)
+ // {
+ // this._flashMessagesService.show('Error : Please insert Voltage', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+ // else if(this.tank_size == null)
+ // {
+ // this._flashMessagesService.show('Error : Please Insert Tank Size', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+
+ // else if(this.mileage == null)
+ // {
+ // this._flashMessagesService.show('Error : Please Insert Mileage', { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ // }
+
+
+
+
+
+else{
+ const newVehicleModel ={
+ brand: this.brand,
+ description: this.description,
+ model: this.model,
+ voltage_calibration: this.voltage_calibration,
+ temp_calibration: this.temprature_calibration,
+ tank_size: this.tank_size,
+ mileage: this.mileage,
+ iconType:this.iconObj.value,
+ user:this.useridd
+ }
+
+ console.log('newVehicleModel',newVehicleModel);
+//webservice to add new driver
+ // console.log('finalPayload',newVehicleModel)
+ this.contactService.addVehicleType(newVehicleModel)
+ .subscribe((dataret => {
+ // this.data = dataret
+ // this.NewVehicleType(signupForm);
+ // this._flashMessagesService.show('Vehicle Type Added', { cssClass: 'alert-success', timeout: 2000 });
+ this.router.navigateByUrl("VehicleType");
+ // this.router.navigateByUrl("VehicleType");
+ }), (err: any) => {
+
+ if(err.status == 500)
+ {
+
+
+ this.mess = err._body.split(":")[5] ;
+ this.mess2 = this.mess.split("_")[0];
+ this.mess3 = this.mess.split("_")[1];
+
+
+ this.Load = false
+
+ }
+ else{
+ this._flashMessagesService.show("Error !!", { cssClass: 'alert-danger', timeout: 2000 });
+ this.Load = false
+ }
+ }
+ );
+
+
+ }
+
+
+
+ //this._flashMessagesService.show('Congratulation Device Added as '+this.deviceid, { cssClass: 'alert-success', timeout: 2000 });
+
+ //object should form as per the request
+
+
+
+ }
+
+ NewVehicleType(ngForm){
+ //this.router.navigateByUrl("addEditVehicleType");
+ this.router.navigateByUrl("VehicleType");
+ // this.vehicle_types=[];
+ // ngForm.reset();
+ }
+
+
+ imageFile:any;
+ Filename:any;
+ private fileCounter = 0;
+
+
+ group(){
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+ onRemoved(file) {
+ // console.log(file);
+ }
+ report_map(){
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+ // loadRow(){
+ // this.voltage_calibration.push({voltage:0,fuel:0});
+ // }
+
+
+ addRow(voltage,fuel){
+ var obj={};
+ //let contact = this.voltage_calibration({voltage:0,fuel:0});
+ obj={voltage:voltage,fuel:fuel};
+ this.voltage_calibration.push(JSON.parse(JSON.stringify(obj)));
+ obj={};
+ }
+
+ addTempRow(voltage,temp){
+ var obj={};
+ //let contact = this.voltage_calibration({voltage:0,fuel:0});
+ obj={voltage:voltage,temp:temp};
+ this.temprature_calibration.push(JSON.parse(JSON.stringify(obj)));
+ obj={};
+ }
+ deltempRow(index){
+ this.temprature_calibration.splice(index, 1);
+ }
+
+ deleteRow(index){
+ this.voltage_calibration.splice(index, 1);
+ }
+ ngOnInit() {
+ this.logo=window.localStorage['logo'];
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.email = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ if(this.custtype == true){
+ this.cust = true;
+ }
+
+
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ if( window.localStorage['Custumer'] == 'ON'){
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else{
+ this.logoutbut = true
+ }
+ this.logo=window.localStorage['logo'];
+ this.text=window.localStorage['text'];
+
+ this.act.queryParams.subscribe((params:Params) =>{
+
+
+ // console.log(params['useridd']);
+ this.routeData=params.user_id;
+ // let id= params['user_id'];
+ // this.groupId = id;
+ // console.log(this.groupId);
+ this.addRow(0,0);
+ this.addTempRow(0,0);
+
+ })
+
+
+
+ }
+}
diff --git a/src/app/add-fuel-price/add-fuel-price.component.html b/src/app/add-fuel-price/add-fuel-price.component.html
new file mode 100644
index 0000000..a57e70c
--- /dev/null
+++ b/src/app/add-fuel-price/add-fuel-price.component.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
{{'Add Fuel Price' | translate}}
+
+ Back
+ Upload Excel
+
+
+
+
+
+
+
+
+
+
+
+ Browse
+ for Excel file ...
+
+ Upload
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add-fuel-price/add-fuel-price.component.scss b/src/app/add-fuel-price/add-fuel-price.component.scss
new file mode 100644
index 0000000..88909a5
--- /dev/null
+++ b/src/app/add-fuel-price/add-fuel-price.component.scss
@@ -0,0 +1,46 @@
+// #body{
+// overflow-x: hidden;
+// overflow-y: hidden;
+// }
+#myInput {
+ border-radius: 15px;
+ /* border: 2px solid #18262F; */
+ padding: 7px;
+ width: 116px;
+ height: 17px;
+ font-size: 9px;
+ outline: none;
+ float: right;
+ margin-top: 2%;
+}
+
+.headStyle {
+ text-align: center;
+ font-size: 22px;
+ font-weight: 500;
+
+ color: #6b6a6a;
+ padding-top: 7px;
+ margin: 0px;
+}
+.sidebar {
+ height: 84vh;
+ width: 24%;
+ text-align: left;
+ background: white;
+ box-shadow: 3px 1px 5px 0px #b2b0ae;
+ position: fixed;
+ padding: 10px;
+}
+.main {
+ box-shadow: 3px 1px 5px 0px #b2b0ae;
+ padding: 10px;
+ background: white;
+ // margin-left: 5px;
+}
+
+.topDiv {
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+}
diff --git a/src/app/add-fuel-price/add-fuel-price.component.spec.ts b/src/app/add-fuel-price/add-fuel-price.component.spec.ts
new file mode 100644
index 0000000..cb07e13
--- /dev/null
+++ b/src/app/add-fuel-price/add-fuel-price.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddFuelPriceComponent } from './add-fuel-price.component';
+
+describe('AddFuelPriceComponent', () => {
+ let component: AddFuelPriceComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddFuelPriceComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddFuelPriceComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-fuel-price/add-fuel-price.component.ts b/src/app/add-fuel-price/add-fuel-price.component.ts
new file mode 100644
index 0000000..76fe8c0
--- /dev/null
+++ b/src/app/add-fuel-price/add-fuel-price.component.ts
@@ -0,0 +1,155 @@
+import { Component, OnInit } from '@angular/core';
+import { FormArray, FormBuilder, FormGroup } from '@angular/forms';
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+import { ContactService } from '../contact.service';
+declare var XLSX:any;
+@Component({
+ selector: 'app-add-fuel-price',
+ templateUrl: './add-fuel-price.component.html',
+ styleUrls: ['./add-fuel-price.component.scss']
+})
+export class AddFuelPriceComponent implements OnInit {
+ petrolPrice
+ dieselPrice
+ faileduploadDevices;
+ stateArray
+Indianstate = [
+ {state:"Andhra Pradesh",petrol:"",diesel:'',date:''},
+ {state:"Arunachal Pradesh",petrol:"",diesel:'',date:''},
+ {state:"Assam",petrol:"",diesel:'',date:''},
+ {state:"Bihar",petrol:"",diesel:'',date:''},
+ {state:"Chhattisgarh",petrol:"",diesel:'',date:''},
+ {state:"Goa",petrol:"",diesel:'',date:''},
+ {state:"Gujarat",petrol:"",diesel:'',date:''},
+ {state:"Haryana",petrol:"",diesel:'',date:''},
+ {state:"Himachal Pradesh",petrol:"",diesel:'',date:''},
+ {state:"Jammu and Kashmir",petrol:"",diesel:'',date:''},
+ {state:"Jharkhand",petrol:"",diesel:'',date:''},
+ {state:"Karnataka",petrol:"",diesel:'',date:''},
+ {state:"Kerala",petrol:"",diesel:'',date:''},
+ {state:"Madhya Pradesh",petrol:"",diesel:'',date:''},
+ {state:"Maharashtra",petrol:"",diesel:'',date:''},
+ {state:"Manipur",petrol:"",diesel:'',date:''},
+ {state:"Meghalaya",petrol:"",diesel:'',date:''},
+ {state:"Mizoram",petrol:"",diesel:'',date:''},
+ {state:"Nagaland",petrol:"",diesel:'',date:''},
+ {state:"Odisha",petrol:"",diesel:'',date:''},
+ {state:"Punjab",petrol:"",diesel:'',date:''},
+ {state:"Rajasthan",petrol:"",diesel:'',date:''},
+ {state:"Sikkim",petrol:"",diesel:'',date:''},
+ {state:"Tamil Nadu",petrol:"",diesel:'',date:''},
+ {state:"Telangana",petrol:"",diesel:'',date:''},
+ {state:"Tripura",petrol:"",diesel:'',date:''},
+ {state:"Uttarakhand",petrol:"",diesel:'',date:''},
+ {state:"Uttar Pradesh",petrol:"",diesel:'',date:''},
+ {state:"West Bengal",petrol:"",diesel:'',date:''},
+ {state:"Andaman and Nicobar Islands",petrol:"",diesel:'',date:''},
+ {state:"Chandigarh",petrol:"",diesel:'',date:''},
+ {state:"Dadra and Nagar Haveli",petrol:"",diesel:'',date:''},
+ {state:"Daman and Diu",petrol:"",diesel:'',date:''},
+ {state:"Lakshadweep",petrol:"",diesel:'',date:''},
+ {state:"Delhi",petrol:"",diesel:'',date:''},
+ {state:"Puducherry",petrol:"",diesel:'',date:''},
+]
+bsConfig: Partial;
+ date=new Date();
+ uploadJSON;
+ showErrorupload_1
+ failedFiles;
+ useridd
+ constructor( private contactService:ContactService) { }
+
+ ngOnInit() {
+ this.stateArray=this.Indianstate
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY' }, { containerClass: 'theme-dark-blue' });
+ let that = this;
+ $("#excelFile").change(function(e){
+ let _e:any = e;
+ that.failedFiles=[]
+ console.log("Inside function");
+ var reader = new FileReader();
+ console.log(reader);
+ reader.onload = function(e) {
+
+ let _E:any = e;
+ var data = _E.target.result;
+
+
+ let workbook = XLSX.read(data, {type: 'binary' });
+
+ let first_sheet_name = workbook.SheetNames[0];
+
+ let worksheet = workbook.Sheets[first_sheet_name];
+ let d:any = XLSX.utils.sheet_to_json(worksheet,{raw:true});
+
+ that.uploadJSON=d.map(function(d){
+
+ if((isFinite(Number(d.lat)) && Math.abs(Number(d.lat)) <= 90)&&(isFinite(d.long) && Math.abs(d.long) <= 180)){
+ console.log(d.lat);
+ return d;
+ }else{
+ if(!(that.failedFiles.includes(d))){
+ console.log(d);
+ d.diesel=d.diesel.substring(0, (d.diesel.length - 4));
+ d.petrol=d.petrol.substring(0, (d.petrol.length - 4))
+ that.failedFiles.push(d)
+ }
+ }
+
+ });
+ console.log("file=>",that.uploadJSON);
+ that.stateArray=that.failedFiles
+ console.log("Failed",that.stateArray);
+
+ that.faileduploadDevices=that.uploadJSON;
+ that.showErrorupload_1=true
+ };
+ reader.readAsBinaryString(_e.target.files[0]);
+
+ });
+ }
+petrolChange(ev,i){
+ // console.log(ev,i);
+
+}
+
+dieselChange(ev,i){
+ // console.log(ev,i);
+
+}
+
+submit(){
+ console.log(this.stateArray);
+ for(var i=0;i{
+ console.log(res);
+ this.stateArray=this.Indianstate
+ })
+
+
+}
+ uploadExcel(){
+ for(var i=0;i{
+ console.log(res);
+ this.stateArray=this.Indianstate
+ })
+ }
+}
diff --git a/src/app/add-group/add-group.component.html b/src/app/add-group/add-group.component.html
new file mode 100644
index 0000000..2830630
--- /dev/null
+++ b/src/app/add-group/add-group.component.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{foodd}}
+
+
+
{{errortext}}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add-group/add-group.component.scss b/src/app/add-group/add-group.component.scss
new file mode 100644
index 0000000..261216e
--- /dev/null
+++ b/src/app/add-group/add-group.component.scss
@@ -0,0 +1,19 @@
+.grpStyle{
+ input{
+ height: 40px;
+ border-radius: 7px;
+ padding-left: 6px;
+ width: 200px;
+ }
+
+ md-select{
+ width: 161px;
+ padding-left: 30px;
+ }
+}
+
+.iconStyle{
+ text-align: center;
+ padding: 17px 2px 17px 2px;
+
+}
\ No newline at end of file
diff --git a/src/app/add-group/add-group.component.spec.ts b/src/app/add-group/add-group.component.spec.ts
new file mode 100644
index 0000000..d377c69
--- /dev/null
+++ b/src/app/add-group/add-group.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddGroupComponent } from './add-group.component';
+
+describe('AddGroupComponent', () => {
+ let component: AddGroupComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddGroupComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddGroupComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add-group/add-group.component.ts b/src/app/add-group/add-group.component.ts
new file mode 100644
index 0000000..2569ebf
--- /dev/null
+++ b/src/app/add-group/add-group.component.ts
@@ -0,0 +1,104 @@
+import { MdDialog } from '@angular/material';
+import { Component, OnInit } from '@angular/core';
+import {MdDialogRef} from '@angular/material';
+import {ContactService} from '../contact.service';
+
+@Component({
+ selector: 'app-add-group',
+ templateUrl: './add-group.component.html',
+ styleUrls: ['./add-group.component.scss']
+})
+export class AddGroupComponent implements OnInit {
+ be: any;
+ errortext: any;
+ name:any;
+ status:any;
+ useridd:any;
+ icon="car"
+ foodds = [
+ 'Active',"InActive"
+ ];
+ option:any;
+
+ constructor(public thisDialogRef: MdDialogRef,private contactService:ContactService) { }
+
+ ngOnInit(){
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ }
+
+ showError=false;
+ group_payload:any;
+ car_icon:any;
+ bike_icon:any;
+ truck_icon:any;
+
+ car_status(){
+ this.icon="car"
+ }
+
+ truck_status(){
+ this.icon="truck"
+ }
+ bike_status(){
+ this.icon="bike"
+ }
+
+ onCloseConfirm(name,option){
+ // console.log("done")
+ let a = name;
+
+ if(option!=undefined){
+ this.be =option;
+ }else{
+ this.be=option;
+ }
+
+
+ if((a==undefined)&&(this.be==undefined)){
+
+ this.showError=true;
+ this.errortext="Please provide details ";
+ }
+ if(a==undefined){
+ this.showError=true;
+ this.errortext="Please type group name";
+
+ }else if(this.be==undefined){
+ this.showError=true;
+ this.errortext="Please select status";
+
+ }else{
+
+
+ // console.log("now call post service here and on success response close the dialog box")
+
+ this.group_payload ={
+ "uid" :this.useridd,
+ "name" : a,
+ "status" : this.be,
+ "logopath" : this.icon
+ }
+
+ this.contactService.addGroup(this.group_payload).subscribe(
+ res => {
+ if(res){
+ // console.log(res);
+ // console.log("Group added successfully");
+ this.thisDialogRef.close("success");
+ }
+ // console.log(res);
+ },
+ err=> {
+ console.log("Check your Internet Connection");
+ });
+
+ }
+ }
+
+ onCloseCancel(){
+ // console.log("cancel button clicked");
+ this.thisDialogRef.close('Cancel');
+ }
+
+
+}
diff --git a/src/app/add/add.component.html b/src/app/add/add.component.html
new file mode 100644
index 0000000..a7bd115
--- /dev/null
+++ b/src/app/add/add.component.html
@@ -0,0 +1,746 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ "Customers" | translate }}
+
+
+
+
+ {{ "Next" | translate }} >>
+
+
+ << {{ "Previous" | translate }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ "NAME" | translate }}
+
+
+
+
+
+
+ {{ cust_array.first_name ? cust_array.first_name : "" }}
+ {{ cust_array.last_name ? cust_array.last_name : "" }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/add/add.component.scss b/src/app/add/add.component.scss
new file mode 100644
index 0000000..b7421d3
--- /dev/null
+++ b/src/app/add/add.component.scss
@@ -0,0 +1,1714 @@
+// #body{
+// overflow-x: hidden;
+// overflow-y: hidden;
+// }
+
+// .scrollbar
+// {
+// width: 100%;
+
+// height: 570px;
+// overflow: overlay;
+
+// overflow-x: hidden;
+// }
+
+// ::-webkit-scrollbar {
+// // display: none;
+// }
+// #d:hover {
+// color: rgb(14, 102, 18);
+
+// }
+// #ac{
+// color: rgb(38, 38, 90)
+// }
+// #active{
+// text-decoration-line: underline;
+// text-decoration-color: rgb(66, 26, 245);
+// }
+// .switch {
+// position: relative;
+// display: inline-block;
+// width: 60px;
+// height: 34px;
+// }
+
+// .switch input {display:none;}
+
+// .slider {
+// position: absolute;
+// cursor: pointer;
+// top: 6px;
+// left: 11px;
+// right: 7px;
+// bottom: 7px;
+// background-color: #ccc;
+// transition: .4s;
+// }
+
+// .slider:before {
+// position: absolute;
+// content: "";
+// height: 11px;
+// width: 11px;
+// left: 2px;
+// bottom: 5px;
+// background-color: white;
+// transition: .4s;
+// }
+
+// .headStyle{
+// text-align: center;
+// font-size: 22px;
+// font-weight: 500;
+
+// color: #6b6a6a;
+// padding-top: 7px;
+// margin: 0px;
+// }
+
+// input:checked + .slider {
+// background-color: #2196F3;
+// }
+
+// input:focus + .slider {
+// box-shadow: 0 0 1px #2196F3;
+// }
+
+// input:checked + .slider:before {
+// -webkit-transform: translateX(26px);
+// -ms-transform: translateX(26px);
+// transform: translateX(26px);
+// }
+
+// /* Rounded sliders */
+// .slider.round {
+// border-radius: 34px;
+// }
+
+// .slider.round:before {
+// border-radius: 50%;
+// }
+
+// .sk-fading-circle {
+// margin: 100px auto;
+// width: 40px;
+// height: 40px;
+// position: relative;
+
+// }
+
+// .sk-fading-circle .sk-circle {
+// width: 100%;
+// height: 100%;
+// position: absolute;
+// left: 0;
+// top: 0;
+// }
+
+// .sk-fading-circle .sk-circle:before {
+// content: '';
+// display: block;
+// margin: 0 auto;
+// width: 15%;
+// height: 15%;
+// background-color: #333;
+// border-radius: 100%;
+// -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+// animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+// }
+// .sk-fading-circle .sk-circle2 {
+// -webkit-transform: rotate(30deg);
+// -ms-transform: rotate(30deg);
+// transform: rotate(30deg);
+// }
+// .sk-fading-circle .sk-circle3 {
+// -webkit-transform: rotate(60deg);
+// -ms-transform: rotate(60deg);
+// transform: rotate(60deg);
+// }
+// .sk-fading-circle .sk-circle4 {
+// -webkit-transform: rotate(90deg);
+// -ms-transform: rotate(90deg);
+// transform: rotate(90deg);
+// }
+// .sk-fading-circle .sk-circle5 {
+// -webkit-transform: rotate(120deg);
+// -ms-transform: rotate(120deg);
+// transform: rotate(120deg);
+// }
+// .sk-fading-circle .sk-circle6 {
+// -webkit-transform: rotate(150deg);
+// -ms-transform: rotate(150deg);
+// transform: rotate(150deg);
+// }
+// .sk-fading-circle .sk-circle7 {
+// -webkit-transform: rotate(180deg);
+// -ms-transform: rotate(180deg);
+// transform: rotate(180deg);
+// }
+// .sk-fading-circle .sk-circle8 {
+// -webkit-transform: rotate(210deg);
+// -ms-transform: rotate(210deg);
+// transform: rotate(210deg);
+// }
+// .sk-fading-circle .sk-circle9 {
+// -webkit-transform: rotate(240deg);
+// -ms-transform: rotate(240deg);
+// transform: rotate(240deg);
+// }
+// .sk-fading-circle .sk-circle10 {
+// -webkit-transform: rotate(270deg);
+// -ms-transform: rotate(270deg);
+// transform: rotate(270deg);
+// }
+// .sk-fading-circle .sk-circle11 {
+// -webkit-transform: rotate(300deg);
+// -ms-transform: rotate(300deg);
+// transform: rotate(300deg);
+// }
+// .sk-fading-circle .sk-circle12 {
+// -webkit-transform: rotate(330deg);
+// -ms-transform: rotate(330deg);
+// transform: rotate(330deg);
+// }
+// .sk-fading-circle .sk-circle2:before {
+// -webkit-animation-delay: -1.1s;
+// animation-delay: -1.1s;
+// }
+// .sk-fading-circle .sk-circle3:before {
+// -webkit-animation-delay: -1s;
+// animation-delay: -1s;
+// }
+// .sk-fading-circle .sk-circle4:before {
+// -webkit-animation-delay: -0.9s;
+// animation-delay: -0.9s;
+// }
+// .sk-fading-circle .sk-circle5:before {
+// -webkit-animation-delay: -0.8s;
+// animation-delay: -0.8s;
+// }
+// .sk-fading-circle .sk-circle6:before {
+// -webkit-animation-delay: -0.7s;
+// animation-delay: -0.7s;
+// }
+// .sk-fading-circle .sk-circle7:before {
+// -webkit-animation-delay: -0.6s;
+// animation-delay: -0.6s;
+// }
+// .sk-fading-circle .sk-circle8:before {
+// -webkit-animation-delay: -0.5s;
+// animation-delay: -0.5s;
+// }
+// .sk-fading-circle .sk-circle9:before {
+// -webkit-animation-delay: -0.4s;
+// animation-delay: -0.4s;
+// }
+// .sk-fading-circle .sk-circle10:before {
+// -webkit-animation-delay: -0.3s;
+// animation-delay: -0.3s;
+// }
+// .sk-fading-circle .sk-circle11:before {
+// -webkit-animation-delay: -0.2s;
+// animation-delay: -0.2s;
+// }
+// .sk-fading-circle .sk-circle12:before {
+// -webkit-animation-delay: -0.1s;
+// animation-delay: -0.1s;
+// }
+
+// @-webkit-keyframes sk-circleFadeDelay {
+// 0%, 39%, 100% { opacity: 0; }
+// 40% { opacity: 1; }
+// }
+
+// @keyframes sk-circleFadeDelay {
+// 0%, 39%, 100% { opacity: 0; }
+// 40% { opacity: 1; }
+// }
+
+// ul, li {
+// list-style: none;
+// float: left;
+// line-height: 15vh;
+// }
+// .upper{
+// margin-top: -70px;
+// width: 100%;
+// height: 17%;
+// /* margin-left: -2px;*/
+// position: fixed;
+// background-color: white;
+// top: 0;
+// z-index: 1
+// }
+// .up{
+// color: gray;
+// /* Add a font */
+
+// /* Set the font-size to 25 pixels */
+// font-size: 25px;
+
+// }
+// .middle {
+// position: absolute;
+// top: 50%;
+// left: 50%;
+// transform: translate(-50%, -50%);
+// text-align: center;
+// }
+
+// .dropdown {
+// position: relative;
+// display: inline-block;
+// }
+
+// .dropdown-content {
+// display: none;
+// position: absolute;
+// background-color: #f9f9f9;
+// min-width: 160px;
+// box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+// z-index: 1;
+// margin-left: -220px;
+// margin-top: -20px;
+
+// }
+
+// .dropdown:hover .dropdown-content {
+// display: block;
+// }
+
+// .desc {
+// padding: 15px;
+// text-align: center;
+// }
+// #insert{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// #insert2{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// .example-container {
+// width: 500px;
+// height: 300px;
+// border: 1px solid rgba(0, 0, 0, 0.5);
+// }
+
+// .example-sidenav-content {
+// display: flex;
+// height: 100%;
+// align-items: center;
+// justify-content: center;
+// }
+
+// .example-sidenav {
+// padding: 20px;
+// }
+// .vertical-menu {
+// width: 250px;
+// padding-left: 10px;
+// }
+
+// .vertical-menu a {
+// background-color: #eee;
+// color: black;
+// display: block;
+// padding: 12px;
+// text-decoration: none;
+
+// }
+
+// .vertical-menu a:hover {
+// background-color: #ccc;
+// }
+
+// .vertical-menu a.active {
+
+// background: rgba(0, 0, 0, 0.8);
+// color: white;
+// }
+// #c2 {
+
+// }
+// #c1 {
+// float:left;
+
+// }
+
+// body {margin:0}
+
+// .icon-bar {
+// width: 17%;
+// /* background-color: #555; */
+// background-color: #18262F;
+// margin-top: -9px;
+// height:100%;
+// position: fixed;
+// display: inline-block;
+// margin-left: -16px;
+// }
+// @media screen and (max-width: 1000px){
+// .off{
+// display: none;
+// }
+// }
+// .icon-bar2 {
+
+// width: 299px;
+// background-color: white;
+// margin-top: -7px;
+// height:86vh;
+// position: fixed;
+
+// }
+// .icon-bar a {
+// display: block;
+// text-align: center;
+// padding: 16px;
+// transition: all 0.3s ease;
+// color: white;
+// font-size: 14px;
+// text-align: left;
+// }
+
+// .icon-bar a:hover {
+// background-color: #000;
+// }
+
+// .active {
+// background-color: #4CAF50 !important;
+// }
+// .iphone {
+// width: 201px;
+// height: 378px;
+// background: #f9f7f9;
+// border: 5px solid #c1bfc1;
+// border-radius: 45px;
+// opacity: 0.8;
+// }
+// .highlight {
+// width: 185px;
+// height: 366px;
+// border: 3px solid #fff;
+// border-radius: 45px;
+// position: relative;
+// z-index: 10;
+// top: -748px;
+// left: 10px;
+// }
+// .circle {
+// width: 7px;
+// height: 7px;
+// background: #333;
+// border-radius: 50%;
+// position: relative;
+// top: -370px;
+// left: 92px;
+// }
+// .camera {
+// width: 10px;
+// height: 10px;
+// background: #333;
+// border-radius: 50%;
+// position: relative;
+// top: -376px;
+// left: 66px;
+// }
+// .speaker {
+// width: 59px;
+// height: 3px;
+// background: #333;
+// border-radius: 5px;
+// position: relative;
+// top: -372px;
+// left: 73px;
+// }
+// .screen {
+// width: 166px;
+// height: 255px;
+// border: 3px solid #333;
+// border-radius: 5px;
+// position: relative;
+// left: 18px;
+// top: -365px;
+// background: #7f8282;
+// background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+// background: -o-linear-gradient(#e2e3e4, #7f8282);
+// background: -moz-linear-gradient(#e2e3e4, #7f8282);
+// background: linear-gradient(#e2e3e4, #7f8282);
+// }
+// .home1 {
+// width: 47px;
+// height: 47px;
+// background: #fff;
+// border-radius: 50%;
+// position: relative;
+// top: -353px;
+// left: 79px;
+// z-index: 2;
+// }
+// .home2 {
+// width: 52px;
+// height: 52px;
+// border-radius: 50%;
+// position: relative;
+// top: -403px;
+// left: 77px;
+// background: #7f8282;
+// background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+// background: -o-linear-gradient(#e2e3e4, #7f8282);
+// background: -moz-linear-gradient(#e2e3e4, #7f8282);
+// background: linear-gradient(#e2e3e4, #7f8282);
+// }
+// #c2{
+// //background:green;
+// float:right;
+// }
+// #c1, #c2 {
+// width: 33%;
+// //background: rebeccapurple
+// }
+
+// #c3 {
+// width: auto;
+// width:34%;
+// // background: red
+// }
+// .off{
+// margin: auto;
+// width: 60%;
+// top:70%;
+// padding: 10px;
+// margin-right:30%
+
+// }
+// .newspaper {
+// -webkit-column-count: 2; /* Chrome, Safari, Opera */
+// -moz-column-count: 2; /* Firefox */
+// column-count: 2;
+// -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+// -moz-column-gap: 40px; /* Firefox */
+// column-gap: 40px;
+// align-content:left;
+// text-align: left;
+// }
+// #demo {
+// margin: 30px 0 50px 0;
+// font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+
+// }
+
+// #demo .wrapper {
+// display: inline-block;
+// width: 180px;
+// margin: 0 10px 0 0;
+// height: 20px;
+// position: relative;
+
+// }
+
+// #demo .parent {
+// height: 100%;
+// width: 100%;
+// display: block;
+// cursor: pointer;
+// line-height: 30px;
+// height: 30px;
+// border-radius: 5px;
+// background: #F9F9F9;
+// border: 1px solid #AAA;
+// border-bottom: 1px solid #777;
+// color: #282D31;
+// font-weight: bold;
+// z-index: 2;
+// position: relative;
+// -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+// -webkit-transition-delay: .8s;
+// text-align: center;
+// }
+
+// #demo .parent:hover,
+// #demo .content:hover ~ .parent {
+// background: #fff;
+// -webkit-transition-delay: 0s, 0s, 0s;
+// }
+
+// #demo .content:hover ~ .parent {
+// border-bottom-left-radius: 0;
+// border-bottom-right-radius: 0;
+// z-index: 0;
+// }
+
+// #demo .content {
+// position: absolute;
+// top: 0;
+// display: block;
+// z-index: 1;
+// height: 0;
+// width: 180px;
+// padding-top: 30px;
+// -webkit-transition: height .5s ease;
+// -webkit-transition-delay: .4s;
+// border: 1px solid #777;
+// border-radius: 5px;
+// box-shadow: 0 1px 2px rgba(0,0,0,.4);
+// }
+
+// #demo .wrapper:active .content {
+// height: 123px;
+// z-index: 3;
+// -webkit-transition-delay: 0s;
+// }
+
+// #demo .content:hover {
+// height: 123px;
+// z-index: 3;
+// -webkit-transition-delay: 0s;
+// }
+
+// #demo .content ul {
+// background: #fff;
+// margin: 0;
+// padding: 0;
+// overflow: hidden;
+// height: 100%;
+// border-bottom-left-radius: 5px;
+// border-bottom-right-radius: 5px;
+// }
+
+// #demo .content ul a {
+// text-decoration: none;
+// }
+
+// #demo .content li:hover {
+// background: #eee;
+// color: #333;
+// }
+
+// #demo .content li {
+// list-style: none;
+// text-align: left;
+// color: #888;
+// font-size: 14px;
+// line-height: 30px;
+// height: 30px;
+// padding-left: 10px;
+// border-top: 1px solid #ccc;
+// }
+
+// #demo .content li:last-of-type {
+// border-bottom-left-radius: 5px;
+// border-bottom-right-radius: 5px;
+// }
+// .customClass {
+// background-color: #dd3;
+// border-radius: 5px;
+// margin:5px;
+// width: 500px;
+// }
+
+// .customClass .img-ul-upload {
+// background-color: #000 !important;
+// }
+
+// .customClass .img-ul-clear {
+// background-color: #B819BB !important;
+// }
+
+// .customClass .img-ul-drag-box-msg {
+// color: purple !important;
+// }
+
+// .customClass .img-ul-container {
+// background-color: #FF6CAD !important;
+// }
+// .img-ul-file-upload[_ngcontent-c6] {
+// padding: 16px;
+// height: 201px !important;
+// }
+// .weekDays-selector input {
+// display: none!important;
+// }
+
+// .weekDays-selector input[type=checkbox] + label {
+// display: inline-block;
+// border-radius: 6px;
+// background: #dddddd;
+// height: 40px;
+// width: 34.2px;
+// margin-right: 3px;
+// line-height: 40px;
+// text-align: center;
+// cursor: pointer;
+// }
+
+// .weekDays-selector input[type=checkbox]:checked + label {
+// background: #2AD705;
+// color: #ffffff;
+// }
+// @media screen and (max-width: 900px) {
+// .icon-bar{
+// display: none;
+
+// }
+// .sch{
+// display: none;
+// }
+// .first{
+// width:1%!important;
+// }
+// .second{
+// margin-left: 8px!important;
+// }
+// .small{
+// display: block!important;
+// }
+// .image{
+// display: none;
+// }
+// .schlar{
+// display: block!important;
+// }
+// }
+
+// @media screen and (min-width: 900px) {
+// .schlar{
+// display: none;
+// }
+
+// }
+// .small{
+// display: none;
+// }
+// .first{
+// float:left;
+// width: 16%;
+// height:86vh;
+// overflow-y: hidden;
+// overflow-x: hidden;
+// margin-right: 5px
+// }
+// .second{
+// width: 88%;
+// height:86vh;
+// margin-left:171px;
+// }
+// .mat-dialog-container {
+// max-width: none !important;
+// }
+// .sch{
+
+// }
+// .schlar{
+
+// }
+// .pointer{
+// cursor:pointer !important;
+// font-size: 11px
+// }
+// .expansion-panel__content{
+// margin-left: 0% !important;
+// }
+
+// /* Side Navi */
+// #mySidenav a {
+// margin-top: -9px;
+// position: absolute;
+// left: -80px;
+// transition: 0.3s;
+// width: 100px;
+// text-decoration: none;
+// font-size: 28px;
+// color: white;
+// border-radius: 0 5px 5px 0;
+// }
+
+// #mySidenav a:hover {
+// left: 0;
+// }
+
+// #about {
+// top: 20px;
+// background-color: #ffffff;
+// opacity: .4;
+// }
+
+// #blog {
+// top: 80px;
+// background-color: #18262F;
+// position: absolute; z-index: 99;
+// }
+
+// #projects {
+// top: 140px;
+// background-color: #f44336;
+// }
+
+// #contact {
+// top: 200px;
+// background-color: #555
+// }
+
+// .button2 {background-color: #008CBA;}
+// .ngx-picker--btn {
+// color: #000;
+// background-color: transparent;
+// border: none;
+// padding: 1em;
+// font-size: 1em; }
+// .ngx-picker--btn__selected {
+// background-color: #eee; }
+// .ngx-picker--btn:hover {
+// transition: .25s ease;
+// background-color: #eee;
+// cursor: pointer; }
+// .ngx-picker--btn:focus {
+// outline-color: transparent; }
+
+// .ngx-picker--btn__month:hover {
+// border-top-left-radius: 0.2em; }
+
+// .ngx-picker--btn__done:hover {
+// border-bottom-right-radius: 0.2em; }
+
+// .ngx-picker--btn__now:hover {
+// border-bottom-left-radius: 0.2em; }
+
+// .ngx-picker--btn__next:hover {
+// border-top-right-radius: 0.2em; }
+
+// .calendar {
+// position: absolute;
+// background-color: #e6e6e6;
+// max-width: 16em;
+// min-width: 16em;
+// font-size: 16px;
+// font-family: "Arial", sans-serif;
+// border-radius: 0.2em;
+// box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); }
+
+// .calendar--previous-and-next {
+// position: absolute;
+// right: 0;
+// top: 0;
+// display: flex;
+// justify-content: flex-end; }
+
+// .calendar--footer {
+// display: flex;
+// justify-content: space-between;
+// background-color: #e6e6e6;
+// padding: 0;
+// border-radius: 0.2em; }
+
+// .calendar--years-select,
+// .calendar--months-select {
+// overflow-y: auto;
+// overflow-x: hidden;
+// max-height: 14.85em;
+// background-color: #fff;
+// width: 100%; }
+
+// .calendar--year,
+// .calendar--month {
+// display: block;
+// padding: .5em 1em;
+// width: 100%;
+// overflow: hidden;
+// color: #000; }
+// .calendar--year__selected,
+// .calendar--month__selected {
+// color: #000;
+// font-weight: bold;
+// background-color: #eee; }
+// .calendar--year:hover,
+// .calendar--month:hover {
+// cursor: pointer;
+// background-color: #eee;
+// font-weight: 400;
+// color: #000; }
+
+// .calendar--days-of-week {
+// display: flex;
+// justify-content: space-around;
+// background-color: #eee; }
+
+// .calendar--day-of-week {
+// position: relative;
+// padding: .5em;
+// text-align: center;
+// text-transform: uppercase;
+// color: #000;
+// font-size: .9em; }
+
+// .calendar--days-select {
+// display: flex;
+// flex-wrap: wrap;
+// justify-content: space-between;
+// background-color: #fff; }
+
+// .calendar--day {
+// text-align: center;
+// width: 1.285em;
+// padding: .5em;
+// font-weight: 500;
+// color: #000; }
+// .calendar--day__muted {
+// color: #999; }
+// .calendar--day__selected {
+// background-color: #eee;
+// color: #000; }
+// .calendar--day:hover {
+// cursor: pointer;
+// color: #000;
+// background-color: #eee; }
+
+// .ngx-picker {
+// display: flex;
+// position: relative; }
+// .ngx-picker .calendar {
+// position: absolute;
+// left: 0;
+// top: 2.5em;
+// z-index: 3; }
+
+// .time-picker {
+// display: flex;
+// justify-content: space-between;
+// align-items: center;
+// flex-wrap: wrap;
+// max-width: 16em;
+// min-width: 16em;
+// background-color: #e6e6e6; }
+
+// .time--values {
+// display: flex;
+// justify-content: space-between;
+// flex-direction: row;
+// flex-wrap: wrap;
+// max-width: 16em;
+// min-width: 16em;
+// background-color: #eee; }
+
+// .time--value {
+// width: 2.66em;
+// font-size: 1em;
+// padding: .5em 0;
+// text-align: center;
+// color: #000; }
+// .time--value__selected {
+// color: #000;
+// background-color: #e6e6e6; }
+// .time--value:hover {
+// transition: .25s ease;
+// cursor: pointer;
+// background-color: #e6e6e6; }
+
+// [hidden] {
+// display: none !important; }
+// #c11 {
+// width: 25%;
+// float:left
+// }
+// #c22{
+// width: 25%;
+// float:left
+// }
+// #c33 {
+// width: 25%;
+// float:left
+
+// }
+// #c44{
+// width: 25%;
+// float:left
+// }
+// #c111 {
+// width: 50%;
+// float:left
+// }
+// #c222{
+// width: 45%;
+// float:left
+// }
+// #c333 {
+// width: 5%;
+// float:left
+
+// }
+// #myTable {
+// border-collapse: collapse;
+// width: 100%;
+// border: 1px solid #ddd;
+// font-size: 12px;
+// }
+
+// #myTable th, #myTable td {
+// text-align: left;
+// padding: 12px;
+// }
+
+// #myTable tr {
+// border-bottom: 1px solid #ddd;
+// }
+
+// // #myTable tr.header, #myTable tr:hover {
+// // background-color: #f1f1f1;
+// // }
+// * {
+// box-sizing: border-box;
+// }
+// .width{
+// width: 100%;
+// }
+
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+// /deep/ .mat-menu-panel.test{
+
+// background-color: #b7b7b7;
+// width: 160px;
+// text-align: left;
+// color: #fff;
+
+// a{
+// display: block;
+// padding: 9px 10px;
+// margin: 0;
+// border-bottom: 1px solid #999;
+// }
+// }
+
+// /deep/ .mat-menu-panel.test_1{
+
+// background-color: #b7b7b7;
+// width: 160px;
+// text-align: left;
+// color: #fff;
+// margin-top:48px;
+// }
+
+#toast #img {
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc {
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 2s,
+ fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 4s,
+ fadeout 0.5s 4.5s;
+}
+// #myInput {
+// border-radius: 15px;
+// /* border: 2px solid #18262F; */
+// padding: 7px;
+// width: 116px;
+// height: 17px;
+// font-size: 9px;
+// outline: none;
+// float: right;
+// margin-top: 2%;
+// }
+
+// @-webkit-keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+
+// @keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+
+// @keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @-webkit-keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+
+// @keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+
+// /* Absolute Center Spinner */
+// .loading {
+// position: fixed;
+// z-index: 999;
+// height: 2em;
+// width: 2em;
+// overflow: show;
+// margin: auto;
+// top: 0;
+// left: 0;
+// bottom: 0;
+// right: 0;
+// }
+
+// /* Transparent Overlay */
+// .loading:before {
+// content: '';
+// display: block;
+// position: fixed;
+// top: 0;
+// left: 0;
+// width: 100%;
+// height: 100%;
+// background-color: rgba(0,0,0,0.3);
+// }
+
+// /* :not(:required) hides these rules from IE9 and below */
+// .loading:not(:required) {
+// /* hide "loading..." text */
+// font: 0/0 a;
+// color: transparent;
+// text-shadow: none;
+// background-color: transparent;
+// border: 0;
+// }
+
+// .loading:not(:required):after {
+// content: '';
+// display: block;
+// font-size: 10px;
+// width: 1em;
+// height: 1em;
+// margin-top: -0.5em;
+// -webkit-animation: spinner 1500ms infinite linear;
+// -moz-animation: spinner 1500ms infinite linear;
+// -ms-animation: spinner 1500ms infinite linear;
+// -o-animation: spinner 1500ms infinite linear;
+// animation: spinner 1500ms infinite linear;
+// border-radius: 0.5em;
+// -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// }
+
+// /* Animation */
+
+// @-webkit-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-moz-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-o-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+
+// css style
+
+/*//////////////////////////////////////////////////////////////////
+[ FONT ]*/
+
+// ../fonts/roboto/Roboto-Regular.ttf
+// @font-face {
+// font-family: Roboto;
+// src: url('../../fonts/roboto/Roboto-Regular.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto;
+// src: url('../../fonts/roboto/Roboto-Medium.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto;
+// src: url('../../fonts/roboto/Roboto-Bold.ttf');
+// }
+
+/*//////////////////////////////////////////////////////////////////
+[ RESTYLE TAG ]*/
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+
+body,
+html {
+ height: 100%;
+ font-family: sans-serif;
+}
+
+/* ------------------------------------ */
+a {
+ margin: 0px;
+ transition: all 0.4s;
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+}
+
+a:focus {
+ outline: none !important;
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+/* ------------------------------------ */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0px;
+}
+
+p {
+ margin: 0px;
+}
+
+ul,
+li {
+ margin: 0px;
+ list-style-type: none;
+}
+
+/* ------------------------------------ */
+input {
+ display: block;
+ outline: none;
+ border: none !important;
+}
+
+textarea {
+ display: block;
+ outline: none;
+}
+
+textarea:focus,
+input:focus {
+ border-color: transparent !important;
+}
+
+/* ------------------------------------ */
+button {
+ outline: none !important;
+ border: none;
+ background: transparent;
+}
+
+button:hover {
+ cursor: pointer;
+}
+
+iframe {
+ border: none !important;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Scroll bar ]*/
+.js-pscroll {
+ position: relative;
+ overflow: hidden;
+}
+
+.table100 .ps__rail-x {
+ z-index: 1010;
+ height: 6px;
+ background-color: transparent;
+ opacity: 1 !important;
+ bottom: 10px;
+}
+
+.table100 .ps__rail-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #e6e6e6;
+ height: 100%;
+ width: calc(100% - 30px);
+ left: 15px;
+ top: 0px;
+}
+
+.table100 .ps__rail-x .ps__thumb-x {
+ height: 100%;
+ bottom: 0;
+ background-color: transparent;
+ opacity: 1 !important;
+}
+
+.table100 .ps__rail-x .ps__thumb-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #b3b3b3;
+ height: 100%;
+ width: calc(100% - 30px);
+ top: 0;
+ left: 15px;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+
+.limiter {
+ width: 100%;
+ margin: 0 auto;
+ // background: #fa71cd;
+ background: #efecec;
+ // background: -webkit-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -o-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -moz-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: linear-gradient(bottom, #c471f5, #fa71cd);
+}
+
+.container-table100 {
+ max-height: 100vh;
+ // max-width: 1366px;
+ margin: 0 auto;
+ min-height: 100vh;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ // padding: 33px 100px;
+ padding: 55px 20px 0px 20px;
+}
+
+.wrap-table100 {
+ width: 100%;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+.table100 {
+ background-color: #fff;
+}
+
+table {
+ width: 100%;
+}
+
+th,
+td {
+ font-weight: unset;
+ padding-right: 10px;
+}
+
+.column1 {
+ width: 100%;
+ padding-left: 40px;
+}
+
+.column2 {
+ width: 225px;
+ padding-left: 55px;
+ white-space: nowrap;
+
+ overflow-x: overlay;
+}
+
+.column3 {
+ // width: 205px;
+ width: 265px;
+ padding-left: 20px;
+}
+
+.column4 {
+ width: 300px;
+}
+
+.column5 {
+ width: 235px;
+}
+
+.column6 {
+ width: 170px;
+}
+
+.column7 {
+ // width: 330px;
+ width: 200px;
+}
+
+.column8 {
+ // width: 305px;
+ width: 210px;
+}
+
+.column9 {
+ width: 200px;
+}
+
+.column10 {
+ width: 200px;
+}
+
+.column11 {
+ // width: 200px;
+ width: 155px;
+}
+
+.column12 {
+ width: 225px;
+}
+
+.column13 {
+ width: 225px;
+}
+
+.column14 {
+ // width: 200px;
+ width: 150px;
+}
+.column15 {
+ // width: 200px;
+ width: 150px;
+}
+.column16 {
+ // width: 200px;
+ width: 150px;
+}
+.column17 {
+ // width: 200px;
+ width: 150px;
+}
+.column18 {
+ // width: 200px;
+ width: 175px;
+}
+.column19 {
+ // width: 200px;
+ width: 150px;
+}
+
+.column20 {
+ // width: 200px;
+ width: 150px;
+}
+.column21 {
+ // width: 200px;
+ width: 150px;
+}
+.column22 {
+ // width: 200px;
+ width: 150px;
+}
+.column23 {
+ // width: 200px;
+ width: 150px;
+}
+
+.table100 th {
+ padding-top: 21px;
+ padding-bottom: 21px;
+}
+
+.table100 td {
+ padding-top: 16px;
+ padding-bottom: 16px;
+}
+
+/*==================================================================
+[ Fix col ]*/
+.table100 {
+ width: 100%;
+ position: relative;
+}
+
+.table100-firstcol {
+ background-color: #fff;
+ position: absolute;
+ z-index: 1000;
+ width: 270px;
+ top: 0;
+ left: 0;
+}
+
+.table100-firstcol table {
+ background-color: #fff;
+}
+
+.wrap-table100-nextcols {
+ width: 100%;
+ overflow: auto;
+ padding-left: 270px;
+ padding-bottom: 28px;
+}
+
+.table100-nextcols table {
+ table-layout: fixed;
+}
+
+.shadow-table100-firstcol {
+ box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -webkit-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -o-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -ms-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+}
+
+.table100-firstcol table {
+ background-color: transparent;
+}
+
+/*==================================================================
+[ Ver1 ]*/
+
+.table100.ver1 th {
+ font-family: Roboto;
+ font-size: 14px;
+ height: 80px;
+ // color: #333333;
+ color: white;
+ // line-height: 1.4;
+ text-transform: uppercase;
+}
+
+.table100.ver1 td {
+ font-family: Roboto;
+ font-size: 15px;
+ // line-height: 1.4;
+}
+
+.table100.ver1 .table100-firstcol td {
+ color: #666666;
+ text-decoration-line: underline;
+ cursor: pointer;
+}
+
+.table100.ver1 .table100-nextcols td {
+ color: #999999;
+}
+
+.table100.ver1 tr {
+ border-bottom: 1px solid #f2f2f2;
+}
+
+// .btn-default {
+// @include btn-variant(#546e7a, #90a4ae, #78909c, #cfd8dc, #eceff1, #b0bec5, #455a64);
+
+// }
+
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ float: right;
+ text-align: center;
+ text-transform: uppercase;
+ vertical-align: middle;
+ cursor: pointer;
+ background-image: none;
+ whitespace: nowrap;
+ padding: 6px 12px;
+ font-size: 1.4rem;
+ border-radius: 0px;
+ border: 1px solid transparent;
+ text-decoration: none;
+ user-select: none;
+ background: #d8d8d8;
+ font-size: 12px;
+
+ &,
+ &:active,
+ &.active {
+ &:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &.focus {
+ text-decoration: none;
+ color: #fff;
+ }
+
+ &:active,
+ &.active {
+ outline: 0;
+ background-image: none;
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ cursor: not-allowed;
+ pointer-events: none;
+ box-shadow: none;
+ }
+
+ &.btn-xs {
+ padding: 3px 6px;
+ font-size: 1.2rem;
+ }
+
+ &.btn-sm {
+ padding: 4px 8px;
+ font-size: 1.3rem;
+ }
+
+ &.btn-lg {
+ padding: 8px 16px;
+ font-size: 1.6rem;
+ }
+}
+
+::-webkit-scrollbar {
+ width: 10px;
+ height: 5px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+ // background: rgb(74, 118, 184);
+ background: #add8e6;
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+ background: #555;
+}
+.mat-tab-body-content {
+ overflow: hidden !important;
+}
+.switch-toggle {
+ float: left;
+ background: #242729;
+}
+.switch-toggle input {
+ position: absolute;
+ opacity: 0;
+}
+.switch-toggle input + label {
+ padding: 7px;
+ float: left;
+ color: #fff;
+ cursor: pointer;
+}
+.switch-toggle input:checked + label {
+ background: green;
+}
diff --git a/src/app/add/add.component.spec.ts b/src/app/add/add.component.spec.ts
new file mode 100644
index 0000000..1cbb46c
--- /dev/null
+++ b/src/app/add/add.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddComponent } from './add.component';
+
+describe('AddComponent', () => {
+ let component: AddComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/add.component.ts b/src/app/add/add.component.ts
new file mode 100644
index 0000000..f462fbe
--- /dev/null
+++ b/src/app/add/add.component.ts
@@ -0,0 +1,1153 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { FormGroup, FormControl, Validators } from '@angular/forms';
+import { ResponseOptions, Response } from '@angular/http';
+import { Contact } from '../contact';
+import { ContactService } from '../contact.service';
+import { Otp } from '../otp';
+import {MdSnackBar} from '@angular/material';
+// import {Md5} from 'ts-md5/dist/md5';
+import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { DialogContentExampleDialogComponent } from '../dialog-content-example-dialog/dialog-content-example-dialog.component'
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { AbstractControl, NG_VALIDATORS, Validator, ValidatorFn } from '@angular/forms';
+const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
+import { AddCustComponent } from '../add-cust/add-cust.component';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import { Observable } from 'rxjs/Rx';
+import { EditCostumerComponent } from '../edit-costumer/edit-costumer.component';
+import { Subject } from 'rxjs/Subject';
+import 'rxjs/add/operator/debounceTime';
+import { ReportSettingComponent } from './report-setting/report-setting.component';
+import { environment } from '../../environments/environment';
+import { ResetPasswordComponent } from './reset-password/reset-password.component';
+import { TranslateService } from 'ng2-translate';
+import { DashboardContentComponent } from './dashboard-content/dashboard-content.component';
+import { PointShareComponent } from '../point-share/point-share.component';
+import { ShowPullDataLinkComponent } from './show-pull-data-link/show-pull-data-link.component';
+declare var swal: any;
+import * as XLSX from 'xlsx';
+import { ViewCustomerDetailsComponent } from './view-customer-details/view-customer-details.component';
+@Component({
+ selector: 'app-add',
+ templateUrl: './add.component.html',
+ styleUrls: ['./add.component.scss'],
+ providers: [ContactService, SidebarComponent]
+})
+export class AddComponent implements OnInit {
+ modelChanged: Subject = new Subject();
+ kycStatus=[{Name:'Approved',value:'Approved'},{Name:'Reject',value:'Reject'},{Name:'Pending',value:'Pending'}]
+ dealerChk: boolean = false;
+ ev: any;
+ show1: boolean = false;
+ show2: boolean = true;
+ show3: boolean = false;
+ first_name: any;
+ logoutbut: boolean;
+ last_name: any;
+ passwordd: any;
+ org_name: any;
+ allUser:boolean=false;
+ emaill: any;
+ phone: any;
+ executed: any;
+ $event2: any;
+ dealer: any;
+ contacts: Contact[] = [];
+ contact: Contact;
+ login1: any;
+ mess2: any;
+ mess: any;
+ otp: any;
+ switchVal: any;
+ str: boolean = false;
+ password2: any;
+ cust_load: any;
+ errmsg: boolean =true;
+ serviceResponse: string;
+ errorMsg: boolean;
+ showNav: boolean =false;
+ url: any;
+ dealer_Permission: any;
+ adbtn: string;
+ report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed() {
+ // console.log("report speed call")
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ stre() {
+ this.str = true;
+ }
+ stren() {
+ this.str = false;
+ }
+ addcus() {
+ this.router.navigateByUrl("add");
+ }
+
+ Ddetail() {
+ this.router.navigateByUrl("driverdetail");
+ }
+ DModel() {
+ this.router.navigateByUrl("deviceModel");
+ }
+ VType() {
+ this.router.navigateByUrl("VehicleType");
+ }
+
+
+
+ clear() {
+ this.first_name = ' '
+ this.last_name = ' '
+ this.emaill = null
+ this.phone = null
+ }
+ before: any;
+ emmnerr: any;
+ Load: any
+ $event: any;
+ openDialog() {
+
+ let dialogRef = this.dialog.open(AddCustComponent, {
+ width: '800px',
+ // height: '600px',
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "succ") {
+ this.tost1("succ");
+ this.ngOnInit();
+
+ }
+ });
+ }
+
+
+
+ constructor(private contactService: ContactService, private sidebar: SidebarComponent, public snackBar: MdSnackBar, private router: Router, private _flashMessagesService: FlashMessagesService, public dialog: MdDialog, public translate: TranslateService) {
+ this.modelChanged
+ .debounceTime(1000) // wait 300ms after the last event before emitting last event
+ .distinctUntilChanged() // only emit if value is different from previous value
+ .subscribe(myInput => {
+ this.myInput = myInput;
+ // console.log('debounce')
+ // this.dealerDetail();
+ this.showDemoVideo()
+ this.ngOnInit();
+ });
+
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+ }
+
+ data_descip: any;
+ table1ch() {
+
+ myFunction();
+ function myFunction() {
+ var input, filter, table, tr, td, i, td1;
+ input = document.getElementById("myInput");
+ filter = input.value.toUpperCase();
+ table = document.getElementById("myTable");
+ tr = table.getElementsByTagName("tr");
+ for (i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[1];
+ td1 = tr[i].getElementsByTagName("td")[0]
+ if (td) {
+ if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ }
+ else if (td1.innerHTML.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ }
+ else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+ }
+ }
+
+ tost1(divid) {
+ if (divid == "EmM") {
+ this.data_descip = this.emmnerr.split(":")[1]
+ launch_toast();
+ }
+ else if (divid == "succ") {
+ this.data_descip = "Custumer Successfully Added"
+ launch_toast();
+ }else if(divid == "reportPref"){
+ this.data_descip = "Report Preference updated !!!"
+ launch_toast();
+ }else if(divid == "password_changed"){
+ this.data_descip = "Password updated !!!";
+ launch_toast();
+ }else if(divid == "alertset"){
+ this.data_descip = "Alert preference updated !!!";
+ launch_toast();
+ }else if(divid=="kyc"){
+ this.data_descip = "KYC Status updated !!!";
+ launch_toast();
+ }
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function () { x.className = x.className.replace("show", ""); }, 4500);
+ }
+ }
+
+ valclear() {
+ this._flashMessagesService.show("Cleared", { cssClass: 'alert-warning', timeout: 2000 });
+
+ }
+
+ click1(event) {
+ this.show2 = false;
+ this.show3 = true;
+ if ((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 9 || event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
+ }
+ /* if(event.keyCode===13){
+ this.otp_window();
+ } */
+
+ else
+ event.preventDefault();
+ }
+ click2(event2) {
+ this.show2 = true;
+ this.show3 = false;
+
+ }
+ call(e) {
+ {
+ if (e.keyCode == 32) {
+ e.preventDefault();
+ }
+ }
+ }
+ geo() {
+ this.router.navigateByUrl("geofencing");
+
+ }
+ devicess: any;
+ final: any;
+ /* getdev(){
+ let foods = []
+ this.contactService.getDevice(this.emailid,this.useridd).subscribe(
+
+ data => {
+ this.devicess = data
+
+ let swap;
+ for(let g = 0;gthis.devicess.devices[c+1].Device_Name){
+ swap = this.devicess.devices[c];
+ this.devicess.devices[c] = this.devicess.devices[c+1];
+ this.devicess.devices[c+1] = swap;
+ }
+ }
+ }
+
+ this.final = this.devicess.devices
+
+ for(let i=0;i {
+ this.devicesss = data
+ // console.log(this.devicesss)
+
+ window.localStorage['Dealer_token'] = window.localStorage['token']
+ window.localStorage['token'] = this.devicesss.custumer_token;
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ window.localStorage['Custumer'] = 'ON';
+ localStorage.setItem('superadmin', "ON");
+
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ // localStorage.setItem('Dealer',"OFF");
+ // localStorage.setItem('superadmin',"OFF")
+ console.log('this.superAdmin',this.superAdmin);
+ debugger;
+ if(this.superAdmin === true){
+ localStorage.setItem('supAdminAcessToCust', 'true' );
+ }
+ if (window.localStorage['DataLoaded'] = 'True') {
+ let dlrStatus = "true";
+
+ localStorage.setItem("dlrchk", dlrStatus)
+
+ this.router.navigateByUrl("const?_status=" + "OK");
+
+ // console.log('testing', this.useridd);
+ }
+
+
+ });
+ }
+
+
+
+
+
+ myInput: any;
+ myaccount() {
+
+ let dialogRef = this.dialog.open(MyaccountComponent, {
+ width: '680px',
+
+ data: {}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ if (result == "succ") {
+ // console.log("Updated")
+ }
+
+ });
+ }
+ ign() {
+ this.router.navigateByUrl("device-report/ign-report");
+
+ }
+ openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+ */
+ this.router.navigateByUrl("location");
+
+ }
+ logout() {
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+ devi() {
+ this.router.navigateByUrl("dashboard");
+
+ }
+
+ route_map() {
+ this.router.navigateByUrl("routeMapping");
+
+ }
+ ideal() {
+ this.router.navigateByUrl("device-report/ideal-report");
+ }
+ soon() {
+ this.router.navigateByUrl("const?_i=" + window.localStorage.token);
+
+ }
+ new() {
+ this.router.navigateByUrl("new");
+
+ }
+
+ group() {
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+
+ ignition_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/ignition_report");
+
+
+ }
+
+ geofancingReport() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/geofancing");
+ }
+
+ overspeed() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/overspeed");
+
+ }
+
+ vehicleRoute() {
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ mydealer() {
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if (window.localStorage['DataLoaded'] = 'True') {
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+ }
+
+
+ dealerInfo() {
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+
+ stoppage_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/stoppage_report");
+
+ }
+
+
+ distance_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/distance_report");
+ }
+
+ trip_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/trip_report");
+
+ }
+ routeViolation() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/routeViolation");
+
+ }
+
+
+ notifications() {
+ this.cond = false
+ this.router.navigateByUrl("notifications");
+ }
+
+
+ driverPerformance() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/Driver-performance");
+ }
+
+ alert_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/alert_report");
+ }
+
+ summaryReport() {
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/summary-report");
+ }
+
+ fs: any;
+ ls: any;
+ emailid: any;
+ or: any;
+ useridd: any;
+ custtype: any;
+ custumer: any=[];
+ mb: any;
+ cust: boolean = false;
+ logo: any;
+ text: any;
+ superAdmin: Boolean = false;
+ ngOnInit() {
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ console.log('whatishere=>',this.superAdmin);
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ let test = JSON.parse(window.atob(window.localStorage.token.split('.')[1]));
+ this.dealer_Permission = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).cust_add_permission;
+
+ // console.log(test);
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.adbtn = localStorage.getItem("dlrchk");
+ localStorage.setItem("dlrchk", this.custtype);
+ // this.getdev();
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+ if (this.mb.charAt(0) == "n") {
+ this.mb = ' '
+ }
+ if (window.localStorage['Custumer'] == 'ON') {
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else {
+ this.logoutbut = true
+ }
+
+ this.logo = window.localStorage['logo'];
+ this.text = window.localStorage['text'];
+
+
+ history.pushState(null, null, document.URL);
+ window.addEventListener('popstate', function () {
+ history.pushState(null, null, document.URL);
+ });
+
+ this.logo = window.localStorage['logo'];
+ this.text = window.localStorage['text'];
+ this.getCustomer();
+ }
+
+
+ onChange(cust, ev) {
+
+ let status = ev;
+ // console.log(status.checked);
+
+ let cust_status = cust;
+ let cust_id = cust._id;
+ let cust_activity = cust.status
+ // console.log(cust_activity);
+
+
+ this.cust_load = {
+ "uId": cust_id,
+ "loggedIn_id": this.useridd,
+ "status": status.checked
+ }
+ // console.log(cust_id);
+
+
+ console.log(this.cust_load);
+ this.contactService.custStatus(this.cust_load)
+ .subscribe(res => {
+ let a = res;
+ // console.log(a);
+ // console.log("Status changed");
+ })
+ }
+
+ getCustomer(){
+ this.Load = true;
+ this.contactService.getCustumer(this.useridd, this.skip, this.limit,this.myInput,this.allUser).subscribe(
+ data => {
+ this.Load = false;
+ this.custumer=[];
+ this.custumer = data;
+ for(var i=0;i", this.custumer);
+ }, err => {
+ // console.log("errlog");
+ this.Load = false;
+ this.custumer=[];
+ this.firstcall = true;
+ this.lastcall = false;
+ });
+ }
+
+
+
+
+ edit_costumerDetail(cust_payload) {
+ // console.log("edit component method!!!");
+ console.log("cust_payload",cust_payload);
+ cust_payload.ID = 'edit';
+ let dialogRef = this.dialog.open(EditCostumerComponent, {
+ width: '700px',
+ // height: '600px',
+ data: { dealer_payload: cust_payload }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ // console.log(result);
+ if (result == "success") {
+ this.ngOnInit();
+ }
+ });
+ }
+
+ delete_costumerDetail(cust_payload){
+
+ var that =this;
+ console.log(cust_payload);
+ cust_payload.ID = 'delete';
+ cust_payload['page'] = 'cust';
+
+ let dialogRef = this.dialog.open(EditCostumerComponent, {
+ width: '500px',
+ height: '600px',
+ data: { dealer_payload: cust_payload }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+ console.log(result);
+ // console.log(result);
+ if (result == "yes") {
+ // console.log("DealerId=>",dealerDelete.dealer_id)
+ var deletePayload = {
+ 'userId' : cust_payload._id,
+ 'deleteuser' : true
+ }
+
+ console.log(deletePayload);
+ this.contactService.deleteCostumer(deletePayload)
+ .subscribe(res=>{
+ console.log(res);
+ this.serviceResponse = "User Deleted";
+ this.errorMsg =true;
+ this.ngOnInit();
+ var success = setTimeout(function(){
+ clearInterval(success);
+ that.errorMsg = false;
+ },5000)
+
+ },err=>{
+ // console.log(err.status);
+ if(err.status==401){
+ var msg=JSON.parse(err._body);
+ // console.log(msg);
+
+ this._flashMessagesService.show(msg.message, { cssClass: 'alert-warning', timeout: 2000 });
+ }
+ this.serviceResponse = "Please try after sometime";
+ var error = setTimeout(function(){
+ clearInterval(error);
+ that.errorMsg = false;
+ },5000)
+ })
+
+ }
+
+ if (result == "no") {
+ console.log(result);
+ }
+
+ });
+
+
+
+ }
+
+ skip: number = 1;
+ limit: number = 10;
+ firstcall: boolean = false;
+ lastcall: boolean = true;
+ next() {
+ this.lastcall = false;
+ this.skip += 1;
+ this.ngOnInit();
+ // this.sidebarData();
+ }
+ pre() {
+ // console.log(this.skip)
+ if (this.skip > 1) {
+ this.skip -= 1;
+ this.lastcall = false;
+ this.firstcall = false;
+ this.ngOnInit();
+ // this.sidebarData();
+ } else {
+ this.lastcall = true;
+ this.firstcall = false;
+ }
+
+ }
+
+ searchFilter(text: string) {
+ this.modelChanged.next(text);
+ // this.myInput;
+ // console.log(this.myInput);
+ // this.sidebarData()
+
+ }
+
+ viewDocuments(docs){
+ console.log("Documents=>", docs);
+ var that =this;
+ docs.ID = 'viewDoc';
+ console.log(docs);
+ let dialogRef = this.dialog.open(EditCostumerComponent, {
+ width: '900px',
+ data: { dealer_payload: docs }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "yes") {
+ this.getCustomer()
+ }
+
+ if (result == "no") {
+
+ }
+ if(result == 'imageupdated'){
+ swal(
+ 'Updated',
+ 'Documents has been Updated.',
+ 'success'
+ )
+ this.ngOnInit();
+ }
+ });
+ }
+
+ reportSetting(custObj){
+ console.log("custObj=>" , custObj);
+ var custId = custObj._id;
+ let dialogRef = this.dialog.open(ReportSettingComponent, {
+ width: '800px',
+ data : custId
+ // height: '600px',
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "updated") {
+ this.tost1("reportPref");
+ this.ngOnInit();
+
+ }
+ });
+
+ }
+
+
+
+ showMenu = environment.showLandingpageMenu;
+ showDemoVideo(){
+ let split1 = document.URL.split('//')[1];
+ console.log(split1,document);
+ let split2 = split1.split('/')[0];
+ let splitForStyle = split1.split('/')[1];
+ this.url = split2;
+ console.log("split2",this.url);
+
+
+ for(var i = 0; i {
+ console.log(res);
+ let message =res.message;
+ let action
+ this.snackBar.open(message, action, {
+ duration: 4000,
+ });
+
+ },err=>{
+ console.log(err);
+ })
+
+
+ }
+
+ resetPassword(cust_array){
+ console.log("Inside reset",cust_array);
+ let dialogRef = this.dialog.open(ResetPasswordComponent, {
+ width: '400px',
+ data : cust_array
+ // height: '600px',
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "succ") {
+ this.tost1("password_changed");
+ this.ngOnInit();
+ }
+
+ if (result == "close") {
+ // this.tost1("succ");
+ // this.ngOnInit();
+ }
+ });
+
+ }
+
+
+ custom_table(cust_arr){
+ console.log(cust_arr);
+ let dialogRef = this.dialog.open(DashboardContentComponent, {
+ width: '500px',
+ data : cust_arr
+ // height: '600px',
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "updated") {
+ this.tost1("Table Content Customised");
+ this.ngOnInit();
+ }
+
+ if (result == "close") {
+
+ }
+ });
+
+ }
+
+
+ addPoints(data){
+ let dialogRef = this.dialog.open(PointShareComponent, {
+ width: '300px',
+ data: {"userInfo":data}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if(result == 'added'){
+
+ this.data_descip = "Point Added";
+ this.ngOnInit();
+ launch_toast();
+
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+ })
+ }
+
+
+ custPhone(dlr){
+ var dphn = '';
+ if(dlr.std_code != undefined){
+ dphn = '+' + dlr.std_code.dialcode + ' ' + dlr.phone ;
+ return dphn ;
+ }else{
+ dphn = dlr.phone ;
+ return dphn ;
+ }
+}
+
+accountStatus:boolean = true;
+accountStatusOnChange(custObj, event){
+
+
+ console.log(custObj,event.checked);
+ var payload = {
+ accountSuspended : event.checked,
+ acoountId : custObj._id ,
+ suspendedBy : 'distributer'
+ }
+ var that = this;
+ swal("Are you sure ?", "Do you want to change account status ?").then((ans)=>{
+ console.log(ans);
+ that.contactService.accountSuspend(payload).subscribe(res=>{
+ console.log(res);
+ that.getCustomer();
+ that.data_descip = "Account Status Changed";
+ launch_toast();
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+ })
+
+ },err=>{
+ that.getCustomer();
+ console.log(err);
+ });
+
+}
+
+
+allUserFunction(ev){
+ console.log('event=>',ev);
+ this.allUser = ev.checked ;
+
+ this.skip = 1;
+ this.getCustomer();
+}
+
+adm_alert:boolean=false;
+alertStatus(ev,cobj){
+
+ var aAlert= ev.checked;
+
+ var pld= {
+ uid : cobj._id,
+ adminAlert : aAlert
+ }
+ console.log(pld);
+ this.contactService.setlanguage(pld).subscribe(res=>{
+ console.log(res);
+ this.tost1('alertset');
+ })
+
+}
+
+dealerAlert(ev,cobj){
+
+ var aAlert= ev.checked;
+
+ var pld= {
+ uid : cobj._id,
+ dealerAlert : aAlert
+ }
+ console.log(pld);
+ this.contactService.setlanguage(pld).subscribe(res=>{
+ console.log(res);
+ this.tost1('alertset');
+ })
+
+}
+changeKYC(data,event){
+ console.log(event);
+ var req={
+ user:data._id,
+ status:event
+ }
+ this.contactService.changeKycStatus(req).subscribe(res=>{
+ console.log(res);
+ this.tost1('kyc');
+ })
+
+}
+
+generatePullData(ev,data){
+ // if(ev.checked){
+ console.log(ev,data);
+
+ var request={
+ pullData:ev.checked,
+ pass:data.pass
+ }
+ if(data.user_id){
+ request['user_id']=data.user_id
+ }
+ if(data.phone){
+ request['phone']=data.phone
+ }
+ console.log(request);
+
+ this.contactService.post('/users/getToken',request).subscribe((res:any)=>{
+ console.log(res);
+ if(ev.checked){
+ let dialogRef = this.dialog.open(ShowPullDataLinkComponent, {
+ width: '800px',
+ // height: '600px',
+ data:res.token
+ });
+ }
+
+ })
+
+
+}
+tab:any;
+
+ downloadExcel() {
+
+ this.Load = true;
+ this.contactService.get('/users/getCustomer?uid='+this.useridd).subscribe(
+ (data:any) => {
+ this.Load = false;
+ var custumer=[];
+ custumer = data;
+ for(var i=0;i", custumer);
+ }, err => {
+ // console.log("errlog");
+ this.Load = false;
+ // custumer=[];
+ // this.firstcall = true;
+ // this.lastcall = false;
+ });
+
+
+ // for(var i=0;i {
+
+ if (result == "succ") {
+ this.tost1("succ");
+ this.ngOnInit();
+
+ }
+ });
+ }
+
+
+
+}
diff --git a/src/app/add/dashboard-content/dashboard-content.component.html b/src/app/add/dashboard-content/dashboard-content.component.html
new file mode 100644
index 0000000..1b57d65
--- /dev/null
+++ b/src/app/add/dashboard-content/dashboard-content.component.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
{{'COLUMN NAME' | translate}}
+
+
+
{{'COLUMN VISIBILITY' | translate}}
+
+
+
+
+
+
+ {{'Save' | translate}}
+ {{'Cancel' | translate}}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add/dashboard-content/dashboard-content.component.scss b/src/app/add/dashboard-content/dashboard-content.component.scss
new file mode 100644
index 0000000..6fe493a
--- /dev/null
+++ b/src/app/add/dashboard-content/dashboard-content.component.scss
@@ -0,0 +1,3 @@
+.container{
+ padding: 0px;
+}
\ No newline at end of file
diff --git a/src/app/add/dashboard-content/dashboard-content.component.spec.ts b/src/app/add/dashboard-content/dashboard-content.component.spec.ts
new file mode 100644
index 0000000..6512f11
--- /dev/null
+++ b/src/app/add/dashboard-content/dashboard-content.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DashboardContentComponent } from './dashboard-content.component';
+
+describe('DashboardContentComponent', () => {
+ let component: DashboardContentComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DashboardContentComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DashboardContentComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/dashboard-content/dashboard-content.component.ts b/src/app/add/dashboard-content/dashboard-content.component.ts
new file mode 100644
index 0000000..4c410ca
--- /dev/null
+++ b/src/app/add/dashboard-content/dashboard-content.component.ts
@@ -0,0 +1,104 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ReportSettingComponent } from '../report-setting/report-setting.component';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-dashboard-content',
+ templateUrl: './dashboard-content.component.html',
+ styleUrls: ['./dashboard-content.component.scss']
+})
+export class DashboardContentComponent implements OnInit {
+ userIdd: any;
+
+ dashboard_column = [
+ {name:"GPS",dash_column:true,value:"gps_column"},
+ {name:"AC",dash_column:true,value:"ac_column"},
+ {name:"POWER",dash_column:true,value:"power_column"},
+ {name :"GSM",dash_column:true,value:"gsm_column"},
+ {name :"IGNITION",dash_column:true,value:"ignition_column"},
+ {name:"External Volatage",dash_column:true,value:"ext_volt"},
+ {name:"Door",dash_column:false,value:"door_column"},
+ {name :"Temperature",dash_column:false,value:"temp_column"},
+ {name :"Charging status",dash_column:false,value:"charging_column"},
+
+ ];
+
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,) {
+ console.log(data);
+ console.log('data._id',data);
+ this.userIdd = data._id;
+ this.getCostumerDetail()
+ }
+
+ ngOnInit() {
+ }
+
+
+ savereportPref(){
+
+ // var dashboard_content_payload =[]
+ var tempsemp = {};
+ // dashboard_content_payload = JSON.parse(JSON.stringify(this.dashboard_column));
+ var tt =[];
+ for(var index in this.dashboard_column){
+
+ var k = this.dashboard_column[index].value;
+ let pl = { };
+ tempsemp[k] = this.dashboard_column[index].dash_column;
+
+ delete tempsemp[k].name;
+ delete tempsemp[k].value;
+ }
+ console.log(tempsemp);
+
+ var payload = {
+ dashboard_column : tempsemp,
+ user : this.userIdd
+ }
+ // console.log(payload);
+
+ this.contactService.setDashboardContent(payload).subscribe(res=>{
+
+ this.dialogRef.close('updated');
+
+ },err=>{
+ console.log(err);
+ })
+
+
+ }
+
+ cancel(){
+ this.dialogRef.close('close');
+ }
+
+ selectedStatus(ind,ev,flag){
+ this.dashboard_column[ind].dash_column = ev.checked;
+ }
+
+ getCostumerDetail(){
+ let that = this;
+
+ this.contactService.getcustToken(this.userIdd).subscribe(res=>{
+ var d_column = res.cust.dashboard_column;
+ for(let dt in d_column){
+ let arr = that.dashboard_column.filter(function(d){
+ return d.value == dt;
+ })
+
+ // arr[0].dash_column = d_column[dt].dash_column;
+ // this.dashboard_column[dt].dash_column = d_column[dt] ;
+ arr[0].dash_column = d_column[dt] ;
+
+ console.log('d_column[dt]',d_column[dt])
+ // arr[0].Astatus = tempReport[dt].Astatus;
+ }
+
+
+ console.log('this.dashboard_column=>',this.dashboard_column);
+
+ })
+ }
+}
diff --git a/src/app/add/otp-screen/otp-screen.component.html b/src/app/add/otp-screen/otp-screen.component.html
new file mode 100644
index 0000000..734026c
--- /dev/null
+++ b/src/app/add/otp-screen/otp-screen.component.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Verify OTP
+
+
+
+
+
+
+ {{ data_descip }}
+
+
+
Verify
+
+
\ No newline at end of file
diff --git a/src/app/add/otp-screen/otp-screen.component.scss b/src/app/add/otp-screen/otp-screen.component.scss
new file mode 100644
index 0000000..12bbc17
--- /dev/null
+++ b/src/app/add/otp-screen/otp-screen.component.scss
@@ -0,0 +1,36 @@
+.title {
+ font-weight: 600;
+ margin-top: 20px;
+ font-size: 24px;
+}
+
+.customBtn {
+ border-radius: 0px;
+ padding: 10px;
+}
+
+// form input {
+// display: inline-block;
+// width: 50px;
+// height: 50px;
+// text-align: center;
+// }
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
diff --git a/src/app/add/otp-screen/otp-screen.component.spec.ts b/src/app/add/otp-screen/otp-screen.component.spec.ts
new file mode 100644
index 0000000..df799fb
--- /dev/null
+++ b/src/app/add/otp-screen/otp-screen.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { OtpScreenComponent } from './otp-screen.component';
+
+describe('OtpScreenComponent', () => {
+ let component: OtpScreenComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ OtpScreenComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(OtpScreenComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/otp-screen/otp-screen.component.ts b/src/app/add/otp-screen/otp-screen.component.ts
new file mode 100644
index 0000000..6d1ccc7
--- /dev/null
+++ b/src/app/add/otp-screen/otp-screen.component.ts
@@ -0,0 +1,50 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-otp-screen',
+ templateUrl: './otp-screen.component.html',
+ styleUrls: ['./otp-screen.component.scss']
+})
+export class OtpScreenComponent implements OnInit {
+ otp
+ constructor(public dialogRef: MdDialogRef,private contactService:ContactService,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+ console.log(data);
+
+ }
+
+ ngOnInit() {
+ }
+data_descip;
+show:boolean=false;
+ verify(){
+ console.log(this.otp);
+ this.contactService.post('/users/verifyOtp',{user:this.data._id,otp:this.otp}).subscribe((res:any)=>{
+ this.data_descip = res.message;
+ launch_toast()
+ this.dialogRef.close({value:'done'});
+ },err=>{
+ console.log(err);
+ var message=JSON.parse(err._body);
+ console.log(message);
+
+ this.data_descip = "You entered wrong OTP"
+ this.show=true;
+ var that=this;
+ // this.data_descip = res.message;
+ launch_toast()
+ setTimeout(function () {that.show=false }, 4500);
+ })
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function () { x.className = x.className.replace("show", ""); }, 4500);
+ }
+ }
+
+}
diff --git a/src/app/add/report-setting/report-setting.component.html b/src/app/add/report-setting/report-setting.component.html
new file mode 100644
index 0000000..73b412f
--- /dev/null
+++ b/src/app/add/report-setting/report-setting.component.html
@@ -0,0 +1,283 @@
+
+
+
+
+
+ REPORT PREFERENCE
+
+
+
+
+
+
{{'REPORTS' | translate}}
+
+
+
{{'REPORTS VISIBILITY' | translate}}
+
+
+
{{'ADDRESS VISIBILITY' | translate}}
+
+
+
+
+
+
+
+
+
+ USER SETTINGS
+
+
+
+
+
+ Dashboard Column
+
+
+
+
+
+
+
{{'COLUMN NAME' | translate}}
+
+
+
{{'COLUMN VISIBILITY' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Save' |
+ translate}}
+ {{'Cancel' |
+ translate}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add/report-setting/report-setting.component.scss b/src/app/add/report-setting/report-setting.component.scss
new file mode 100644
index 0000000..b4b7f38
--- /dev/null
+++ b/src/app/add/report-setting/report-setting.component.scss
@@ -0,0 +1,68 @@
+.selected {
+ background-color: #5d5f62;
+ border-radius: 40px;
+}
+
+.deselected {
+ background: #db2f2f;
+ border-radius: 40px;
+}
+.form-control {
+ margin-bottom: 8px;
+}
+.selected-tab-0 md-ink-bar {
+ background-color: red;
+}
+.selected-tab-1 md-ink-bar {
+ background-color: #426e86;
+}
+.selected-tab-2 md-ink-bar {
+ background-color: green;
+}
+.mat-tab-body-content {
+ overflow: hidden !important;
+}
+.mat-tab-body.mat-tab-body-active {
+ overflow-y: hidden !important;
+}
+.project-tab {
+ // padding: 10%;
+ height: 500px;
+ // margin-top: -8%;
+}
+.project-tab #tabs {
+ background: #007b5e;
+ color: #eee;
+}
+.project-tab #tabs h6.section-title {
+ color: #eee;
+}
+.project-tab #tabs .nav-tabs .nav-item.show .nav-link,
+.nav-tabs .nav-link.active {
+ color: #0062cc;
+ background-color: transparent;
+ border-color: transparent transparent #f3f3f3;
+ border-bottom: 3px solid !important;
+ font-size: 16px;
+ font-weight: bold;
+}
+.project-tab .nav-link {
+ border: 1px solid transparent;
+ border-top-left-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+ color: #0062cc;
+ font-size: 16px;
+ font-weight: 600;
+}
+.project-tab .nav-link:hover {
+ border: none;
+}
+.project-tab thead {
+ background: #f3f3f3;
+ color: #333;
+}
+.project-tab a {
+ text-decoration: none;
+ color: #333;
+ font-weight: 600;
+}
diff --git a/src/app/add/report-setting/report-setting.component.spec.ts b/src/app/add/report-setting/report-setting.component.spec.ts
new file mode 100644
index 0000000..aa62329
--- /dev/null
+++ b/src/app/add/report-setting/report-setting.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ReportSettingComponent } from './report-setting.component';
+
+describe('ReportSettingComponent', () => {
+ let component: ReportSettingComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ReportSettingComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ReportSettingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/report-setting/report-setting.component.ts b/src/app/add/report-setting/report-setting.component.ts
new file mode 100644
index 0000000..3d5176e
--- /dev/null
+++ b/src/app/add/report-setting/report-setting.component.ts
@@ -0,0 +1,244 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { FormBuilder, FormGroup } from '@angular/forms';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-report-setting',
+ templateUrl: './report-setting.component.html',
+ styleUrls: ['./report-setting.component.scss']
+})
+export class ReportSettingComponent implements OnInit {
+ reportCheck :any;
+ addressCheck :any;
+ userSettingForm:FormGroup;
+ selectedTab=1;
+ dashboard_column = [
+ {name:"GPS",dash_column:true,value:"gps_column"},
+ {name:"AC",dash_column:true,value:"ac_column"},
+ {name:"POWER",dash_column:true,value:"power_column"},
+ {name :"GSM",dash_column:true,value:"gsm_column"},
+ {name :"IGNITION",dash_column:true,value:"ignition_column"},
+ {name:"External Volatage",dash_column:true,value:"ext_volt"},
+ {name:"Door",dash_column:false,value:"door_column"},
+ {name :"Temperature",dash_column:false,value:"temp_column"},
+ {name :"Charging status",dash_column:false,value:"charging_column"},
+
+ ];
+ reportArray = [
+ {name:"Daily Report",Rstatus:true,Astatus:false,value:"daily_report"},
+ {name:"Daywise Report",Rstatus:true,Astatus:false,value:"daywise_report"},
+ {name:"Speed Variation",Rstatus:true,Astatus:false,value:"speed_variation"},
+ {name :"Fuel Report",Rstatus : true,Astatus:false,value:"fuel_report"},
+ {name :"Idle Report",Rstatus : true,Astatus:false,value:"idle_report"},
+ {name:"Fuel Consumption Report",Rstatus:true,Astatus:false,value:"fuel_consumption_report"},
+ {name:"Trip Report",Rstatus:true,Astatus:false,value:"trip_report"},
+ {name : "Travel Path Report",Rstatus : true,Astatus:false,value:"travel_path_report"},
+ {name : "Summary Report",Rstatus : true,Astatus:false,value:"summary_report"},
+ {name : "Geofence Report",Rstatus : true,Astatus:false,value:"geofence_report"},
+ {name : "Overspeed Report",Rstatus : true,Astatus:false,value:"overspeed_report"},
+ {name : "Route Violation Report",Rstatus : true,Astatus:false,value:"route_violation_report"},
+ {name : "Stoppage Report",Rstatus : true,Astatus:true,value:"stoppage_report"},
+ {name : "Ignition Report",Rstatus : true,Astatus:true,value:"ignition_report"},
+ {name : "Distance Report",Rstatus : true,Astatus:false,value:"distance_report"},
+ {name : "POI Report",Rstatus : true,Astatus:false,value:"poi_report"},
+ {name : "SOS Report",Rstatus : true,Astatus:false,value:"sos_report"},
+ {name : "AC Report",Rstatus : true,Astatus:false,value:"ac_report"},
+ {name : "Driver Performance Report",Rstatus : true,Astatus:false,value:"driver_performance_report"},
+ {name : "User Trip Report",Rstatus : true,Astatus:true,value:"user_trip_report"},
+ {name : "Alert Report",Rstatus : true,Astatus:false,value:"alert_report"},
+ {name : "Loading Unloading Trip",Rstatus : true,Astatus:false,value:"loading_unloading_trip"},
+ {name : "Working Hours Reports",Rstatus : true,Astatus:false,value:"working_hours_report"},
+ {name : "Maintenance Reports",Rstatus : true,Astatus:false,value:"maintanance_report"},
+ {name:"Daily Logs",Rstatus:true,Astatus:false,value:"daily_logs"},
+ {name : "Notification Center",Rstatus : true,Astatus:false,value:"notification_master"},
+ ];
+ userIdd: any;
+ Address_Status_name: any = [];
+
+ constructor(public dialogRef: MdDialogRef,private fb:FormBuilder,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,) {
+ console.log(data);
+ console.log('data._id',data);
+ this.userIdd = data._id;
+
+ }
+// ac,door,immoblizer,share,tow,parking
+ ngOnInit() {
+ this.userSettingForm=this.fb.group({
+ ac:[],
+ door:[],
+ immoblizer:[],
+ share:[],
+ tow:[],
+ parking:[],
+ fuel:[],
+ temp:[],
+ satelite:[],
+ zoomLevel:[""],
+ relay_timer:[],
+ errorCode:[],
+ errorMessage:[],
+ sateliteValue:['']
+ })
+ this.getCostumerDetail();
+ // this.getUserSettings()
+ }
+
+ savereportPref(){
+ var report_preference_payload = [];
+ console.log(this.reportArray);
+
+ report_preference_payload = JSON.parse(JSON.stringify(this.reportArray));
+ var tempsemp ={};
+
+ console.log(report_preference_payload);
+ for(var index in report_preference_payload){
+ var k = report_preference_payload[index].value;
+
+ if(report_preference_payload[index].Rstatus == false){
+
+ if(report_preference_payload[index].value!="trip_report" && report_preference_payload[index].value!="ignition_report" && report_preference_payload[index].value!="stoppage_report"){
+ report_preference_payload[index].Astatus = false;
+
+ }
+ }
+ tempsemp[k] = report_preference_payload[index];
+ delete tempsemp[k].name;
+ delete tempsemp[k].value;
+ }
+ console.log(tempsemp);
+ var reportPref ={
+ reportsArr : tempsemp,
+ id :this.userIdd
+ }
+ this.contactService.setReportPrefrence(reportPref).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('updated');
+ },err=>{
+ console.log("error",err);
+ })
+ }
+ cancel(){
+ this.dialogRef.close('close');
+ }
+ Status_name = [];
+ selectedStatus(ind,ev,flag){
+ if(flag == 'rVisibility'){
+ this.reportArray[ind].Rstatus = ev.checked;
+
+ }
+ if(flag == 'aVisibility'){
+ this.reportArray[ind].Astatus = ev.checked;
+
+ }
+
+ console.log('this.reportArray',this.reportArray);
+
+
+ }
+
+ getCostumerDetail(){
+ let that = this;
+ this.contactService.getcustToken(this.userIdd).subscribe(res=>{
+ console.log("resresresresresresresresres",res);
+ var tempReport = res.cust.report_preference;
+ if(res.cust.user_settings){
+ this.userSettingForm.patchValue(res.cust.user_settings);
+ }
+
+ for(let dt in tempReport){
+ let arr = that.reportArray.filter(function(d){
+ return d.value == dt;
+ })
+ if(dt=="trip_report" || dt=="ignition_report" || dt=="stoppage_report"){
+ arr[0].Astatus = true;
+ arr[0].Rstatus = tempReport[dt].Rstatus;
+ }else{
+ arr[0].Astatus = tempReport[dt].Astatus;
+ arr[0].Rstatus = tempReport[dt].Rstatus;
+ }
+
+ }
+
+ var d_column = res.cust.dashboard_column;
+ for(let dt in d_column){
+ let arr1 = that.dashboard_column.filter(function(d){
+ return d.value == dt;
+ })
+
+ // arr[0].dash_column = d_column[dt].dash_column;
+ // this.dashboard_column[dt].dash_column = d_column[dt] ;
+ arr1[0].dash_column = d_column[dt] ;
+
+ console.log('d_column[dt]',d_column[dt])
+ // arr[0].Astatus = tempReport[dt].Astatus;
+ }
+ console.log("that.reportArray=>",that.reportArray);
+ })
+ }
+
+
+saveSettings(value){
+ console.log(value);
+ if(value==0){
+ this.savereportPref()
+ }else if(value==1){
+ var reportPref={
+ userSetting : this.userSettingForm.value,
+ id :this.userIdd
+ }
+ this.contactService.setReportPrefrence(reportPref).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('updated');
+ },err=>{
+ console.log("error",err);
+ })
+
+ }else{
+ this.savereportPref1()
+ }
+}
+
+
+ savereportPref1(){
+
+ // var dashboard_content_payload =[]
+ var tempsemp = {};
+ // dashboard_content_payload = JSON.parse(JSON.stringify(this.dashboard_column));
+ var tt =[];
+ for(var index in this.dashboard_column){
+
+ var k = this.dashboard_column[index].value;
+ let pl = { };
+ tempsemp[k] = this.dashboard_column[index].dash_column;
+
+ delete tempsemp[k].name;
+ delete tempsemp[k].value;
+ }
+ console.log(tempsemp);
+
+ var payload = {
+ dashboard_column : tempsemp,
+ user : this.userIdd
+ }
+ // console.log(payload);
+
+ this.contactService.setDashboardContent(payload).subscribe(res=>{
+
+ this.dialogRef.close('updated');
+
+ },err=>{
+ console.log(err);
+ })
+
+
+ }
+
+
+
+ selectedStatus1(ind,ev,flag){
+ this.dashboard_column[ind].dash_column = ev.checked;
+ }
+
+}
diff --git a/src/app/add/reset-password/reset-password.component.html b/src/app/add/reset-password/reset-password.component.html
new file mode 100644
index 0000000..52f0cd5
--- /dev/null
+++ b/src/app/add/reset-password/reset-password.component.html
@@ -0,0 +1,28 @@
+
+
+
+
+ {{'RESET' | translate}}
+ {{'CANCEL' | translate}}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add/reset-password/reset-password.component.scss b/src/app/add/reset-password/reset-password.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/add/reset-password/reset-password.component.spec.ts b/src/app/add/reset-password/reset-password.component.spec.ts
new file mode 100644
index 0000000..8a4642a
--- /dev/null
+++ b/src/app/add/reset-password/reset-password.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ResetPasswordComponent } from './reset-password.component';
+
+describe('ResetPasswordComponent', () => {
+ let component: ResetPasswordComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ResetPasswordComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ResetPasswordComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/reset-password/reset-password.component.ts b/src/app/add/reset-password/reset-password.component.ts
new file mode 100644
index 0000000..85902cb
--- /dev/null
+++ b/src/app/add/reset-password/reset-password.component.ts
@@ -0,0 +1,77 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MdDialog, MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-reset-password',
+ templateUrl: './reset-password.component.html',
+ styleUrls: ['./reset-password.component.scss']
+})
+export class ResetPasswordComponent implements OnInit {
+ pass:any;
+ cnfrmpass:any;
+ iType:any = "password";
+ iType_1:any="password";
+ errorMsg:string;
+ showError: boolean = false;
+
+ constructor(private contactService: ContactService,public dialog: MdDialog,public dialogRef: MdDialogRef, @Inject(MD_DIALOG_DATA) public data: any) {
+ console.log(data);
+ }
+
+ ngOnInit() {
+
+ }
+ error :boolean = false;
+ reset(){
+
+ var that = this;
+ let userid = this.data._id ;
+ console.log("reset passowrd");
+ if(this.pass != this.cnfrmpass){
+ this.error = true ;
+ that.errorMsg = "Password do not matched";
+ let showError = setTimeout(function(){ that.error = false; clearTimeout(showError); },3000)
+ }else{
+ let payLoad={
+ id : userid,
+ pass : this.pass
+ };
+ this.contactService.resetPass(payLoad).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('succ');
+ },error=>{
+ console.log(error);
+ })
+ }
+ }
+
+ closebox(){
+ console.log("close the box");
+ this.dialogRef.close('close');
+
+ }
+
+ showBtn : boolean = true;
+ showBtn_1 : boolean = true;
+ show_hide_pass(id){
+ debugger;
+ console.log(id);
+ if(id == 0){
+ this.iType = 'text';
+ this.showBtn = !this.showBtn;
+ }
+ if(id == 1){
+ this.iType = 'password';
+ this.showBtn = !this.showBtn;
+ }
+ if(id == 2){
+ this.iType_1 = 'text';
+ this.showBtn_1 = !this.showBtn_1;
+ }
+ if(id == 3){
+ this.iType_1 = 'password';
+ this.showBtn_1 = !this.showBtn_1;
+ }
+ }
+}
diff --git a/src/app/add/show-pull-data-link/show-pull-data-link.component.html b/src/app/add/show-pull-data-link/show-pull-data-link.component.html
new file mode 100644
index 0000000..af095ed
--- /dev/null
+++ b/src/app/add/show-pull-data-link/show-pull-data-link.component.html
@@ -0,0 +1,17 @@
+
+
+
\ No newline at end of file
diff --git a/src/app/add/show-pull-data-link/show-pull-data-link.component.scss b/src/app/add/show-pull-data-link/show-pull-data-link.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/add/show-pull-data-link/show-pull-data-link.component.spec.ts b/src/app/add/show-pull-data-link/show-pull-data-link.component.spec.ts
new file mode 100644
index 0000000..efcb11b
--- /dev/null
+++ b/src/app/add/show-pull-data-link/show-pull-data-link.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ShowPullDataLinkComponent } from './show-pull-data-link.component';
+
+describe('ShowPullDataLinkComponent', () => {
+ let component: ShowPullDataLinkComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ShowPullDataLinkComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ShowPullDataLinkComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/show-pull-data-link/show-pull-data-link.component.ts b/src/app/add/show-pull-data-link/show-pull-data-link.component.ts
new file mode 100644
index 0000000..f2f9df4
--- /dev/null
+++ b/src/app/add/show-pull-data-link/show-pull-data-link.component.ts
@@ -0,0 +1,25 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+
+@Component({
+ selector: 'app-show-pull-data-link',
+ templateUrl: './show-pull-data-link.component.html',
+ styleUrls: ['./show-pull-data-link.component.scss']
+})
+export class ShowPullDataLinkComponent implements OnInit {
+ url
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+ console.log(data);
+ var token=data.split('.');
+
+ this.url="https://13.126.36.205/pullData/pullDataForUser1?token="+token[1]
+ }
+
+ ngOnInit() {
+ }
+
+ close(){
+ this.dialogRef.close()
+ }
+}
diff --git a/src/app/add/view-customer-details/view-customer-details.component.html b/src/app/add/view-customer-details/view-customer-details.component.html
new file mode 100644
index 0000000..5cb03f6
--- /dev/null
+++ b/src/app/add/view-customer-details/view-customer-details.component.html
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name: {{data?data.first_name?data.first_name:'':''}} {{data?data.last_name?data.last_name:'':''}}
+
+
+ User ID: {{data?data.user_id?data.user_id:'':''}}
+
+
+
+
+
+
+ Email: {{data?data.email?data.email:'':''}}
+
+
+
Phone: {{data?data.phone?data.phone:'':''}}
+
+
+
+
+
Verify
+
+
+
+
+
+ Verify OTP
+
+
+
+
+
+
+ {{ data_descip }}
+
+
+
Verify
+
+
+
+
+
+
+
+
+
+
+
+ Password: {{data?data.pass?data.pass:'':''}}
+
+
+ Created On: {{data?data.created_on?data.created_on:'':''}}
+
+
+
+
+
+
+ Expiry date: {{data?data.expire_date?data.expire_date:'':''}}
+
+
+ Point Allocated: {{data?data.point_Allocated?data.point_Allocated:0:0}}
+
+
+
+
+
+ Dealer: {{data?data.DealerDetails[0].first_name?data.DealerDetails[0].first_name:'':''}} {{data?data.DealerDetails[0].last_name?data.DealerDetails[0].last_name:'':''}}
+
+
+
+
+
+
+
+
+ Total Vehicles: {{data?data.total_vehicle?data.total_vehicle:0:0}}
+
+
+ Deleted Vehicles: {{data?data.delDevices?data.delDevices:0:0}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Document Name
+ Document number
+ Image
+ Status
+ Action
+
+
+
+ {{doc.doctype}}
+ {{doc.phone}}
+
+
+
+
+
+
+
+
+
+
+ Pending
+ {{data.kycStatus}}
+ {{data.kycStatus}}
+ {{data.kycStatus}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Approve
+ Reject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Last Activity: {{data?data.last_activity_on?data.last_activity_on:0:0}}
+
+
+ Last Login: {{data?data.last_login?data.last_login:0:0}}
+
+
+
+
+
+ Login Type: {{data?data.login_type?data.login_type:0:0}}
+
+
+
+ Number of Mobile Login: {{data?data.notificationTokenCount? data.notificationTokenCount: 0:0}}
+
+
+
+
+
+
+
+
+
+ Customer Status:
+
+
+ Suspend Account:
+
+
+
+
+
+
+ Admin Alert:
+
+
+
+ Pull Data:
+
+
+
+
+
+
+
+ Share Customer Info:
+
+
+
+
+
+ Reset Password:
+
+
+
+
+
+
+
+
+ Dealer Alert:
+
+
+
+
+
+
+
+
+
+
+
+
+
back
+
+
Add Transaction
+
+
+
+
+
+
+
+
+
+
+ Amount
+ Payment Mode
+ Transaction ID
+ Remarks
+ Items
+ Payment Date
+ Status
+ Edit
+ Delete
+
+
+
+
+
+ {{item.Amount}}
+ {{item.PaymentMode}}
+ {{item.TransactionID}}
+ {{item.Remarks}}
+ {{item.Items}}
+
+ {{item.date | date:'medium'}}
+ N/A
+
+ {{item.Status}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/add/view-customer-details/view-customer-details.component.scss b/src/app/add/view-customer-details/view-customer-details.component.scss
new file mode 100644
index 0000000..af60775
--- /dev/null
+++ b/src/app/add/view-customer-details/view-customer-details.component.scss
@@ -0,0 +1,307 @@
+button,
+input {
+ font-family: "Montserrat", "Helvetica Neue", Arial, sans-serif;
+}
+
+a {
+ color: #f96332;
+}
+
+a:hover,
+a:focus {
+ color: #f96332;
+}
+
+p {
+ line-height: 1.61em;
+ font-weight: 300;
+ font-size: 1.2em;
+}
+
+.category {
+ text-transform: capitalize;
+ font-weight: 700;
+ color: #9a9a9a;
+}
+
+body {
+ color: #2c2c2c;
+ font-size: 14px;
+ font-family: "Montserrat", "Helvetica Neue", Arial, sans-serif;
+ overflow-x: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+}
+
+.nav-item .nav-link,
+.nav-tabs .nav-link {
+ -webkit-transition: all 300ms ease 0s;
+ -moz-transition: all 300ms ease 0s;
+ -o-transition: all 300ms ease 0s;
+ -ms-transition: all 300ms ease 0s;
+ transition: all 300ms ease 0s;
+}
+
+.card a {
+ -webkit-transition: all 150ms ease 0s;
+ -moz-transition: all 150ms ease 0s;
+ -o-transition: all 150ms ease 0s;
+ -ms-transition: all 150ms ease 0s;
+ transition: all 150ms ease 0s;
+}
+
+[data-toggle="collapse"][data-parent="#accordion"] i {
+ -webkit-transition: transform 150ms ease 0s;
+ -moz-transition: transform 150ms ease 0s;
+ -o-transition: transform 150ms ease 0s;
+ -ms-transition: all 150ms ease 0s;
+ transition: transform 150ms ease 0s;
+}
+
+[data-toggle="collapse"][data-parent="#accordion"][aria-expanded="true"] i {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.now-ui-icons {
+ display: inline-block;
+ font: normal normal normal 14px/1 "Nucleo Outline";
+ font-size: inherit;
+ // speak: none;
+ text-transform: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+@-webkit-keyframes nc-icon-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ }
+}
+
+@-moz-keyframes nc-icon-spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(360deg);
+ }
+}
+
+@keyframes nc-icon-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.now-ui-icons.objects_umbrella-13:before {
+ content: "\ea5f";
+}
+
+.now-ui-icons.shopping_cart-simple:before {
+ content: "\ea1d";
+}
+
+.now-ui-icons.shopping_shop:before {
+ content: "\ea50";
+}
+
+.now-ui-icons.ui-2_settings-90:before {
+ content: "\ea4b";
+}
+
+.nav-tabs {
+ border: 0;
+ padding: 15px 0.7rem;
+}
+
+.nav-tabs:not(.nav-tabs-neutral) > .nav-item > .nav-link.active {
+ box-shadow: 0px 5px 35px 0px rgba(0, 0, 0, 0.3);
+}
+
+.card .nav-tabs {
+ border-top-right-radius: 0.1875rem;
+ border-top-left-radius: 0.1875rem;
+}
+
+.nav-tabs > .nav-item > .nav-link {
+ color: #888888;
+ margin: 0;
+ margin-right: 5px;
+ background-color: transparent;
+ border: 1px solid transparent;
+ border-radius: 30px;
+ font-size: 14px;
+ padding: 11px 23px;
+ line-height: 1.5;
+}
+
+.nav-tabs > .nav-item > .nav-link:hover {
+ background-color: transparent;
+}
+
+.nav-tabs > .nav-item > .nav-link.active {
+ background-color: #444;
+ border-radius: 30px;
+ color: #ffffff;
+}
+
+.nav-tabs > .nav-item > .nav-link i.now-ui-icons {
+ font-size: 14px;
+ position: relative;
+ top: 1px;
+ margin-right: 3px;
+}
+
+.nav-tabs.nav-tabs-neutral > .nav-item > .nav-link {
+ color: #ffffff;
+}
+
+.nav-tabs.nav-tabs-neutral > .nav-item > .nav-link.active {
+ background-color: rgba(255, 255, 255, 0.2);
+ color: #ffffff;
+}
+
+.card {
+ border: 0;
+ border-radius: 0.1875rem;
+ display: inline-block;
+ position: relative;
+ width: 100%;
+ // margin-bottom: 30px;
+ // box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2);
+}
+
+.card .card-header {
+ background-color: transparent;
+ border-bottom: 0;
+ background-color: transparent;
+ border-radius: 0;
+ padding: 0;
+}
+
+.card[data-background-color="orange"] {
+ background-color: #2d4262;
+}
+
+.card[data-background-color="red"] {
+ background-color: #ff3636;
+}
+
+.card[data-background-color="yellow"] {
+ background-color: #ffb236;
+}
+
+.card[data-background-color="blue"] {
+ background-color: #2ca8ff;
+}
+
+.card[data-background-color="green"] {
+ background-color: #15b60d;
+}
+
+[data-background-color="orange"] {
+ background-color: #2d4262;
+}
+
+[data-background-color="black"] {
+ background-color: #2c2c2c;
+}
+
+[data-background-color]:not([data-background-color="gray"]) {
+ color: #ffffff;
+}
+
+[data-background-color]:not([data-background-color="gray"]) p {
+ color: #ffffff;
+}
+
+[data-background-color]:not([data-background-color="gray"])
+ a:not(.btn):not(.dropdown-item) {
+ color: #ffffff;
+}
+
+[data-background-color]:not([data-background-color="gray"])
+ .nav-tabs
+ > .nav-item
+ > .nav-link
+ i.now-ui-icons {
+ color: #ffffff;
+}
+
+@font-face {
+ font-family: "Nucleo Outline";
+ src: url("https://github.com/creativetimofficial/now-ui-kit/blob/master/assets/fonts/nucleo-outline.eot");
+ src: url("https://github.com/creativetimofficial/now-ui-kit/blob/master/assets/fonts/nucleo-outline.eot")
+ format("embedded-opentype");
+ src: url("https://raw.githack.com/creativetimofficial/now-ui-kit/master/assets/fonts/nucleo-outline.woff2");
+ font-weight: normal;
+ font-style: normal;
+}
+
+.now-ui-icons {
+ display: inline-block;
+ font: normal normal normal 14px/1 "Nucleo Outline";
+ font-size: inherit;
+ // speak: none;
+ text-transform: none;
+ /* Better Font Rendering */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+footer {
+ margin-top: 50px;
+ color: #555;
+ background: #fff;
+ padding: 25px;
+ font-weight: 300;
+ background: #f7f7f7;
+}
+.footer p {
+ margin-bottom: 0;
+}
+footer p a {
+ color: #555;
+ font-weight: 400;
+}
+
+footer p a:hover {
+ color: #e86c42;
+}
+
+@media screen and (max-width: 768px) {
+ .nav-tabs {
+ display: inline-block;
+ width: 100%;
+ padding-left: 100px;
+ padding-right: 100px;
+ text-align: center;
+ }
+
+ .nav-tabs .nav-item > .nav-link {
+ margin-bottom: 5px;
+ }
+}
+.mat-dialog-container {
+ padding: 0px !important;
+}
diff --git a/src/app/add/view-customer-details/view-customer-details.component.spec.ts b/src/app/add/view-customer-details/view-customer-details.component.spec.ts
new file mode 100644
index 0000000..6da6923
--- /dev/null
+++ b/src/app/add/view-customer-details/view-customer-details.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ViewCustomerDetailsComponent } from './view-customer-details.component';
+
+describe('ViewCustomerDetailsComponent', () => {
+ let component: ViewCustomerDetailsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ViewCustomerDetailsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ViewCustomerDetailsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/add/view-customer-details/view-customer-details.component.ts b/src/app/add/view-customer-details/view-customer-details.component.ts
new file mode 100644
index 0000000..d8cbbd6
--- /dev/null
+++ b/src/app/add/view-customer-details/view-customer-details.component.ts
@@ -0,0 +1,640 @@
+import { Component, Inject, OnInit, TemplateRef } from '@angular/core';
+import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { BsDatepickerConfig, BsModalRef, BsModalService } from 'ngx-bootstrap';
+import { ContactService } from '../../contact.service';
+import { OtpScreenComponent } from '../otp-screen/otp-screen.component';
+import { saveAs } from 'file-saver';
+import { ShowPullDataLinkComponent } from '../show-pull-data-link/show-pull-data-link.component';
+import { FormBuilder, FormGroup } from '@angular/forms';
+import { ResetPasswordComponent } from '../reset-password/reset-password.component';
+declare var swal: any;
+declare var $:any;
+@Component({
+ selector: 'app-view-customer-details',
+ templateUrl: './view-customer-details.component.html',
+ styleUrls: ['./view-customer-details.component.scss']
+})
+export class ViewCustomerDetailsComponent implements OnInit {
+ testDocuments;
+ documentList = [
+ {
+ "docId": "Adhar card",
+ "docName": "Adhar Card"
+ },
+ {
+ "docId": "voter Id",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "PAN card",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "Driving License",
+ "docName": "Driving License"
+ },
+ {
+ "docId": "RC Book",
+ "docName": "RC Book"
+ },
+ {
+ "docId": "Device Image",
+ "docName": "Device Image"
+ },
+ {
+ "docId": "Other",
+ "docName": "Other"
+ }
+
+ ];
+ otp
+ data_descip
+ doclist:boolean=true;
+ showUpload: boolean=false;
+ Load: boolean;
+ uploadStatus: any = 'Upload';
+ ifuploadArr: boolean ;
+ useridForDocUpload: any;
+ disableDelete: boolean;
+ errorMsg: string;
+ showError: boolean = false;
+ dealerStatus: any;
+ superAdmin: any;
+ superadminAccess: any;
+ imageuploadObject = [];
+ label: any;
+ modalRef: BsModalRef;
+ header: any;
+ useridd;
+ options: any=[{selectedValue : '',value:''}];
+ transactionForm:FormGroup;
+ items=['New GPS','GPS Renewal','Service','SIM + Software','Software','SIM']
+ PaymentMode =['Cash','Cheque','Net Banking','UPI','Wallet','Others']
+ custtype: any;
+ bsConfig: Partial;
+ constructor(public dialogRef: MdDialogRef,private fb:FormBuilder,public dialog: MdDialog,private contactService: ContactService,private modalService: BsModalService,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+ this.testDocuments = this.data.imageDoc;
+ console.log(data,this.testDocuments);
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ if(this.testDocuments){
+ console.log("INDJj");
+
+ if(this.testDocuments.length != 0){
+ for(var i=0;i {
+ console.log('device api respoonse=>',resp);
+ for(let i=0;i {
+ $('#dbselect').multipleSelect({
+ width: 384,
+ placeholder: 'Select Vehicles',
+ filter: true,
+ // single: false,
+ // selectAll: false
+
+ })
+
+ // that.showLoader = false;
+ }, 100);
+
+
+
+ }
+
+ verify(){
+
+ let dialogRef = this.dialog.open(OtpScreenComponent,{
+ // width: '800px',
+ // // height: '600px',
+ disableClose: true,
+ data:this.data
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ console.log(result);
+
+ if (result.value == "done") {
+ this.data.phone_verfi=true;
+
+ }
+ });
+
+ }
+
+
+
+ downloadDoc(doc:any){
+ console.log(doc.image);
+ var imageLink = doc.image;
+ var filetext = imageLink.split('.');
+ console.log(filetext[1]);
+
+ this.contactService.DownloadDocument(doc.image).subscribe(res=>{
+ console.log(res);
+ this.saveToFileSystem(res,doc,filetext[1]);
+ },err=>{
+ console.log(err);
+ })
+ }
+
+ private saveToFileSystem(response,doc,fileex) {
+ console.log(response._body);
+ if(fileex == 'pdf'){
+ console.log("Inside pdf");
+ var blob = new Blob([response._body], { type: "application/pdf" });
+ }else{
+ var blob = new Blob([response._body], { type: "image/png" });
+ }
+
+ var filename = doc.doctype+'_'+doc.phone;
+ // console.log(filename);
+ saveAs(blob,filename);
+ }
+
+ deleteDoc(doc,index){
+ console.log(index);
+ console.log(doc);
+
+ }
+
+ Adddocuments(doc){
+ console.log(doc);
+ this.disableDelete = true;
+ this.showUpload = true;
+ if(this.imageuploadObject.length == 0){
+ this.ifuploadArr = false;
+ }
+ }
+
+ docRow:boolean=false;
+ AddDocumentsField(addedRow:any){
+ console.log("Inside function !!!");
+ if(addedRow){
+ this.docRow = true;
+ }
+ var obj={doctype:'',image:'',phone:''};
+ this.imageuploadObject.push(obj);
+ console.log(this.imageuploadObject);
+ }
+
+ DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ this.showUpload = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+ }
+
+ documentType(docType){
+ console.log("doctypeObject=>",docType);
+
+ }
+ selectedFile: File;
+ onFileChanged(event) {
+ console.log(event.target.files[0]);
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+ }
+
+ onUpload(imgIndex) {
+ console.log(imgIndex);
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ console.log("selected file name =>",this.selectedFile.name);
+ if(this.selectedFile.name == " "){
+ swal(
+ 'Upload Error',
+ 'Please select document type before upload !!!',
+ 'error'
+ )
+ }else{
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.Load = true;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ this.Load = false;
+ this.ifuploadArr = true;
+
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+
+ },err=>{
+ this.Load= false;
+ // this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ })
+ }
+ }
+
+
+ SaveDocuments(actionString,objIndex){
+ console.log(this.imageuploadObject);
+ console.log("Save");
+ var imageuploadArr = {
+ _id : this.useridForDocUpload
+ }
+ if(actionString == 'deldoc'){
+ this.testDocuments.splice(objIndex,1);
+ console.log("testArray after deleting doc =>",this.testDocuments);
+ }
+ for(var d = 0 ;d {
+ console.log(res);
+ if(actionString != 'deldoc'){
+ // this.thisDialogRef.close("imageupdated");
+ }
+ if(actionString == 'deldoc'){
+ this.imageuploadObject = [];
+ }
+ },err=>{
+ // this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ })
+ }
+
+ expand(value){
+ console.log(value);
+ if(value){
+ document.getElementById('container').style.width='80vh'
+ }else{
+
+ }
+
+
+ }
+
+
+changeKYC(event){
+ console.log(event);
+ var req={
+ user:this.data.dealer_payload._id,
+ status:event
+ }
+ this.contactService.changeKycStatus(req).subscribe(res=>{
+ console.log(res);
+ // this.tost1('kyc');
+ this.dialogRef.close('yes')
+ })
+
+}
+
+openModal(template: TemplateRef,data) {
+ this.modalRef = this.modalService.show(template,{'backdrop':'static',class:'modal-lg modal-dialog-centered'});
+ this.header=data.doctype
+ // this.image='https://www.oneqlik.in/'+data.image
+ }
+
+ onChange(cust, ev) {
+
+ let status = ev;
+ // console.log(status.checked);
+
+ let cust_status = cust;
+ let cust_id = cust._id;
+ let cust_activity = cust.status
+ // console.log(cust_activity);
+
+
+ var cust_load = {
+ "uId": cust_id,
+ "loggedIn_id": this.useridd,
+ "status": status.checked
+ }
+ // console.log(cust_id);
+
+
+ console.log(cust_load);
+ this.contactService.custStatus(cust_load)
+ .subscribe(res => {
+ let a = res;
+ // console.log(a);
+ // console.log("Status changed");
+ })
+ }
+
+ accountStatus:boolean = true;
+accountStatusOnChange(custObj, event){
+
+
+ console.log(custObj,event.checked);
+ var payload = {
+ accountSuspended : event.checked,
+ acoountId : custObj._id ,
+ suspendedBy : 'distributer'
+ }
+ var that = this;
+ swal("Are you sure ?", "Do you want to change account status ?").then((ans)=>{
+ console.log(ans);
+ that.contactService.accountSuspend(payload).subscribe(res=>{
+ console.log(res);
+ // that.getCustomer();
+ that.data_descip = "Account Status Changed";
+ launch_toast();
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+ })
+
+ },err=>{
+ // that.getCustomer();
+ console.log(err);
+ });
+
+}
+
+adm_alert:boolean=false;
+alertStatus(ev,cobj){
+
+ var aAlert= ev.checked;
+
+ var pld= {
+ uid : cobj._id,
+ adminAlert : aAlert
+ }
+ console.log(pld);
+ this.contactService.setlanguage(pld).subscribe(res=>{
+ console.log(res);
+ // this.tost1('alertset');
+ })
+
+}
+
+dealerAlert(ev,cobj){
+
+ var aAlert= ev.checked;
+
+ var pld= {
+ uid : cobj._id,
+ dealerAlert : aAlert
+ }
+ console.log(pld);
+ this.contactService.setlanguage(pld).subscribe(res=>{
+ console.log(res);
+ // this.tost1('alertset');
+ })
+
+}
+
+
+generatePullData(ev,data){
+ // if(ev.checked){
+ console.log(ev,data);
+
+ var request={
+ pullData:ev.checked,
+ pass:data.pass
+ }
+ if(data.user_id){
+ request['user_id']=data.user_id
+ }
+ if(data.phone){
+ request['phone']=data.phone
+ }
+ console.log(request);
+
+ this.contactService.post('/users/getToken',request).subscribe((res:any)=>{
+ console.log(res);
+ if(ev.checked){
+ let dialogRef = this.dialog.open(ShowPullDataLinkComponent, {
+ width: '800px',
+ // height: '600px',
+ data:res.token
+ });
+ }
+
+ })
+
+
+}
+
+show:boolean=false;
+ verify1(){
+ console.log(this.otp);
+ this.contactService.post('/users/verifyOtp',{user:this.data._id,otp:this.otp}).subscribe((res:any)=>{
+ this.data_descip = res.message;
+ launch_toast()
+ this.dialogRef.close({value:'done'});
+ },err=>{
+ console.log(err);
+ var message=JSON.parse(err._body);
+ console.log(message);
+
+ this.data_descip = "You entered wrong OTP"
+ this.show=true;
+ var that=this;
+ // this.data_descip = res.message;
+ launch_toast()
+ setTimeout(function () {that.show=false }, 4500);
+ })
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function () { x.className = x.className.replace("show", ""); }, 4500);
+ }
+ }
+
+ add:boolean=true;
+
+addPayment(){
+ if(this.buttonText=="Update"){
+ this.updatePayment()
+ }else{
+ this.transactionForm.patchValue({
+ VehicleNo:$('#dbselect').multipleSelect('getSelects','value')
+
+ })
+
+ this.contactService.post('/CustomerPayment/add',this.transactionForm.value).subscribe(res=>{
+ // console.log(res);
+ this.getPayments()
+ })
+ }
+
+
+}
+payementsArray
+getPayments(){
+this.payementsArray=[]
+ this.contactService.get('/CustomerPayment/get?Customer_ID='+this.data._id).subscribe(res=>{
+ // console.log(res);
+ this.payementsArray=res
+ })
+
+}
+paymentId
+buttonText="Save"
+editPayment(data){
+ this.paymentId=data._id
+ this.transactionForm.patchValue({
+ Customer_ID:data.Customer_ID,
+ Amount:data.Amount,
+ Items:data.Items,
+ PaymentMode:data.PaymentMode,
+ Remarks:data.Remarks,
+ Status:data.Status,
+ TransactionID:data.TransactionID,
+ VehicleNo:data.VehicleNo,
+ supAdmin:data.supAdmin,
+ })
+this.buttonText="Update";
+this.add=!this.add;
+
+}
+
+updatePayment(){
+ this.contactService.post('/CustomerPayment/update',{id:this.paymentId,data:this.transactionForm.value}).subscribe(res=>{
+ this.getPayments()
+ })
+}
+
+deletePayment(data){
+ this.contactService.post('/CustomerPayment/delete',{_id:data._id}).subscribe(res=>{
+ this.getPayments()
+ })
+}
+
+addButton(){
+ this.add=!this.add;
+ this.buttonText="Save";
+ // this.transactionForm.reset()
+}
+
+shareUserCredential(){
+ console.log('this.data',this.data);
+ var cost_id = this.data._id;
+ this.contactService.shareCostumerInfo(cost_id).subscribe(res=>{
+ console.log(res);
+ let message =res.message;
+ let action
+ // this.snackBar.open(message, action, {
+ // duration: 4000,
+ // });
+
+ },err=>{
+ console.log(err);
+ })
+
+
+ }
+
+ resetPassword(){
+ // console.log("Inside reset",cust_array);
+ let dialogRef = this.dialog.open(ResetPasswordComponent, {
+ width: '400px',
+ data : this.data
+ // height: '600px',
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if (result == "succ") {
+ // this.tost1("password_changed");
+ this.ngOnInit();
+ }
+
+ if (result == "close") {
+ // this.tost1("succ");
+ // this.ngOnInit();
+ }
+ });
+
+ }
+
+}
diff --git a/src/app/addpoi-bylocation/addpoi-bylocation.component.html b/src/app/addpoi-bylocation/addpoi-bylocation.component.html
new file mode 100644
index 0000000..abb4507
--- /dev/null
+++ b/src/app/addpoi-bylocation/addpoi-bylocation.component.html
@@ -0,0 +1,28 @@
+{{'Add POI' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ POI Type
+
+ {{type.view}}
+
+
+
+
+
+ {{'Save' | translate}}
+
+
+ {{'Cancel' | translate}}
+
+
\ No newline at end of file
diff --git a/src/app/addpoi-bylocation/addpoi-bylocation.component.scss b/src/app/addpoi-bylocation/addpoi-bylocation.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/addpoi-bylocation/addpoi-bylocation.component.spec.ts b/src/app/addpoi-bylocation/addpoi-bylocation.component.spec.ts
new file mode 100644
index 0000000..9fb70eb
--- /dev/null
+++ b/src/app/addpoi-bylocation/addpoi-bylocation.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddpoiBylocationComponent } from './addpoi-bylocation.component';
+
+describe('AddpoiBylocationComponent', () => {
+ let component: AddpoiBylocationComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddpoiBylocationComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddpoiBylocationComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/addpoi-bylocation/addpoi-bylocation.component.ts b/src/app/addpoi-bylocation/addpoi-bylocation.component.ts
new file mode 100644
index 0000000..d1f41bc
--- /dev/null
+++ b/src/app/addpoi-bylocation/addpoi-bylocation.component.ts
@@ -0,0 +1,188 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../contact.service';
+declare var google: any;
+@Component({
+ selector: 'app-addpoi-bylocation',
+ templateUrl: './addpoi-bylocation.component.html',
+ styleUrls: ['./addpoi-bylocation.component.scss']
+})
+export class AddpoiBylocationComponent implements OnInit {
+ poiName:any;
+ address:any;
+ useridd: any;
+ Saddress: any;
+ lattitude:any;
+ longitude:any;
+ poitype:any;
+ poiType=[
+ {view : "Provider",value:""},
+ {view : "Customer",value:"customer"},
+ {view : "Garage",value:"garage"},
+ {view : "Emergency",value:"emergency"},
+ {view : "Others",value:"others"},
+ {view : "Gas Station",value:"gas_station"},
+ {view :"Residence",value : "residence"},
+ {view : "City",value:"city"},
+ {view : "Work",value:"work"},
+ {view : "Resturant",value:"resturant"},
+ {view : "Shopping",value:"shopping"},
+ {view : "Bank",value:"bank"},
+ {view : "School",value:"school"},
+ {view :"Super Market",value : "supermarket"},
+ {view :"Gym",value : "gym"},
+ {view : "Home", value : "home"},
+ {view :"Grocery Store",value : "grocery_store"}
+ ];
+
+ constructor(public dialogRef: MdDialogRef,@Inject(MD_DIALOG_DATA) public data: any,public contactService: ContactService) {
+ // console.log("deviceInfo=>",data);
+ this.lattitude = data.deviceData.lat;
+ this.longitude = data.deviceData.long;
+ console.log('this.lattitude',this.lattitude);
+ console.log('this.longitude',this.longitude);
+
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ }
+
+ ngOnInit() {
+ // this.Saddress = new google.maps.places.Autocomplete(document.getElementById('txtSource'));
+ this.getAddress();
+
+ }
+
+
+
+ saveDetails(){
+ // console.log(this.address_show);
+ var locationObj = {
+ 'type' : 'Point',
+ "coordinates": [this.longitude,this.lattitude]
+ }
+ // this.Saddress = document.getElementById('txtSource');
+ // this.address =this.Saddress.value;
+ var poiObj = {
+ poi: [
+ {
+ "location": locationObj,
+ "poiname" : this.poiName,
+ "status": "Active",
+ "address" : this.address_show,
+ "user" : this.useridd,
+ "radius" : 30
+ }
+ ]
+ }
+
+ if(this.poitype != undefined){
+ poiObj.poi[0]['poi_type'] = this.poitype ;
+ }
+
+ this.contactService.addOnePoi(poiObj)
+ .subscribe(res=>{
+ // console.log(res);
+ },err=>{
+ // console.log(err);
+ })
+ // console.log(poiObj);
+ this.dialogRef.close("success");
+ }
+
+ close(){
+ this.dialogRef.close();
+ }
+
+ address_show:any;
+ getAddress() {
+
+ var outerThis = this;
+
+ let d_lat = (this.lattitude != undefined)?this.lattitude : null;
+ let d_lng = (this.longitude != undefined)?this.longitude : null;
+
+
+ var latlng_1 =
+ {
+ "lat": d_lat,
+ "long": d_lng
+ }
+ this.contactService.getAddressByApi(latlng_1).subscribe(res=>{
+
+ if(res.message == "Address not found in databse"){
+ let geocoder = new google.maps.Geocoder();
+ let t_latlng = new google.maps.LatLng(d_lat, d_lng);
+
+ let request = {
+ latLng: t_latlng
+ };
+ geocoder.geocode(request, function (data, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ outerThis.address_show = data[0].formatted_address;
+ // console.log(outerThis.address_show);
+
+ } else {
+ // console.log("No address available")
+ outerThis.address_show = "No address available";
+ }
+ }
+ else {
+
+ outerThis.address_show = 'NA';
+
+
+ }
+
+ })
+ }else{
+
+ outerThis.address_show = res.address;
+ }
+ })
+
+
+
+
+
+ // if (this.lattitude== undefined) {
+ // this.lattitude = null;
+ // this.longitude = null;
+ // }
+ // var geocoder = new google.maps.Geocoder();
+ // var latlng = new google.maps.LatLng(this.lattitude, this.longitude);
+
+ // var request = {
+ // latLng: latlng
+ // };
+
+
+
+ // geocoder.geocode(request, function (data, status) {
+ // if (status == google.maps.GeocoderStatus.OK) {
+ // if (data[0] != null) {
+ // outerThis.address_show = data[0].formatted_address;
+
+
+ // } else {
+
+ // outerThis.address_show = "No address available";
+ // }
+ // }
+ // else {
+
+ // outerThis.address_show = outerThis.lattitude + ", " + outerThis.longitude;
+
+
+ // }
+
+ // })
+
+
+ }
+
+
+}
+
+
+
+
\ No newline at end of file
diff --git a/src/app/address-update/address-update.component.html b/src/app/address-update/address-update.component.html
new file mode 100644
index 0000000..f613d45
--- /dev/null
+++ b/src/app/address-update/address-update.component.html
@@ -0,0 +1,43 @@
+
+
+
+
+
{{'Address' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Current address' | translate}}
+ {{'Suggested address' | translate}}
+ {{'Added On' | translate}}
+ {{'Status' |translate}}
+ {{'Added By' | translate}}
+ {{'Location Point' | translate}}
+ {{'Update Address' | translate}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/address-update/address-update.component.scss b/src/app/address-update/address-update.component.scss
new file mode 100644
index 0000000..7a5fa9b
--- /dev/null
+++ b/src/app/address-update/address-update.component.scss
@@ -0,0 +1,38 @@
+
+
+.topDiv{
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+}
+
+.rowStyle{
+ // margin: 5px;
+ // background: white;
+ height: 84vh;
+ // box-shadow: 3px 1px 5px 0px #b2b0ae;
+ }
+
+ #deviceTable input {
+ border-radius: 5px;
+ }
+
+ ::-webkit-scrollbar {
+ width: 10px;
+ }
+
+ /* Track */
+ ::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+ }
+
+ /* Handle */
+ ::-webkit-scrollbar-thumb {
+ // background: rgb(74, 118, 184);
+ background: #868e96;
+ }
+
+ /* Handle on hover */
+ ::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ }
diff --git a/src/app/address-update/address-update.component.spec.ts b/src/app/address-update/address-update.component.spec.ts
new file mode 100644
index 0000000..25849fd
--- /dev/null
+++ b/src/app/address-update/address-update.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddressUpdateComponent } from './address-update.component';
+
+describe('AddressUpdateComponent', () => {
+ let component: AddressUpdateComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddressUpdateComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddressUpdateComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/address-update/address-update.component.ts b/src/app/address-update/address-update.component.ts
new file mode 100644
index 0000000..4127722
--- /dev/null
+++ b/src/app/address-update/address-update.component.ts
@@ -0,0 +1,258 @@
+import { Component, OnInit } from '@angular/core';
+import { MdDialog } from '@angular/material';
+import { Router } from '@angular/router';
+import { ContactService } from '../contact.service';
+declare var moment,$:any;
+declare var swal:any;
+
+@Component({
+ selector: 'app-address-update',
+ templateUrl: './address-update.component.html',
+ styleUrls: ['./address-update.component.scss']
+})
+export class AddressUpdateComponent implements OnInit {
+ addressArr:any=[];
+ tabelObj: any;
+ useridd: any;
+ identifier:any='addressComponent'
+ constructor(public dialog: MdDialog, private router: Router, private contactService: ContactService) { }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ var td= this.todate.setHours(0,0,0,0);
+ this.todate = new Date(td);
+ this.testTable();
+
+ }
+
+
+ testTable() {
+ const that = this;
+ console.log("inside function");
+ $(document).ready(function() {
+ that.tabelObj = $('#deviceTable').DataTable({
+ 'serverSide': true,
+ "processing": true,
+ "searching": false,
+ pagingType: 'full_numbers',
+ pageLength: 25,
+ "scrollY":'65vh',
+ // "ordering": true,
+ order: [[0, 'desc']],
+ "scrollCollapse": true,
+ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ ajax: (dataTablesParameters,callback) => {
+ // dataTablesParameters.op = {};
+ // dataTablesParameters.select = [];
+ // dataTablesParameters.find = {};
+ // dataTablesParameters.columns = [
+ // { data: "_id","orderable": "true" },
+ // { data: "address" },
+ // { data: "current_address" },
+ // { data: "createdBy.first_name" },
+ // { data: "createdBy.last_name" },
+ // { data: "createdOn" },
+ // { data: "status" },
+ // { data: "location.coordinates" },
+ // { data: null, defaultContent: '' }
+ // ]
+
+ // if (that.Fromdate) {
+ // var fdate = new Date(that.Fromdate).toISOString()
+ // dataTablesParameters.find['createdOn'] = dataTablesParameters.find['createdOn'] ? dataTablesParameters.find['createdOn'] : {};
+ // dataTablesParameters.find['createdOn']['$gte'] = fdate
+ // };
+
+ // if (that.todate) {
+ // var tdate = new Date(that.todate).toISOString()
+ // dataTablesParameters.find['createdOn'] = dataTablesParameters.find['createdOn'] ? dataTablesParameters.find['createdOn'] : {};
+ // dataTablesParameters.find['createdOn']['$lte'] = tdate;
+ // }
+ // dataTablesParameters.find['user'] = that.useridd;
+ var suburl = "";
+ suburl += "/googleAddress/test1";
+ that.contactService.getApprovalAddressList(that.useridd).subscribe(resp => {
+ console.log("Response from datatable=>", resp);
+
+ callback(resp);
+ }, err => {
+
+ });
+
+ },
+ "rowCallback": function(row: Node, data: any | Object, index: number){
+ $('#updateAddress',row).bind('click',()=>{
+
+
+
+ // var warningMsg = "Are you sure that you want to permanently delete the selected device ?" ;
+ swal({
+ // title: 'Are you sure?',
+ text: "Do you want to approve this address ?",
+ type: 'warning',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Yes, approve'
+ }).then((result: { value: boolean; }) =>{
+ if(result){
+ var payLoad={
+ lat : data.location.coordinates[1],
+ long: data.location.coordinates[0],
+ address : data.address,
+ mid: data._id
+ }
+ that.contactService.changeAddress(payLoad).subscribe(res=>{
+
+ swal(
+ 'Updated',
+ 'Address Updated',
+ 'success'
+ )
+
+ that.tabelObj.ajax.reload();
+ })
+ }
+ });
+ })
+
+ },
+
+ "columns": [
+ {
+ "data": "_id",
+ "visible":false,
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+
+ {
+ "data": "current_address",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+ {
+ "data": "address",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+ {
+ "data": "createdOn",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ var expDate = new Date(data);
+ return data ? (moment(expDate).format('llll')) : "";
+ }
+ },
+ {
+ "data": "status",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ return data?data:'';
+ }
+ },
+ {
+ "data": "createdBy",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ console.log(row);
+ var firstName=data.first_name?data.first_name:'';
+ var lastName=data.last_name?data.last_name:''
+ // var isUserename = row.user;
+ // if(isUserename != undefined){
+ // name = data.first_name?data.first_name:''
+ // :''+ ' '+ data.last_name?data.last_name:'';
+ // }
+ return firstName+' '+lastName;
+ }
+ },
+
+ {
+ "data": "location",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ return data?(data.coordinates[1] + ',' + data.coordinates[0]):'';
+ }
+ } ,
+ {
+ "data":null,
+
+ "render":function(data,type,row){
+ if(row.status == 'Pending'){
+ return ' '
+ }else{
+ return ' '
+ }
+
+
+ }
+ }
+ ],
+
+ });
+
+ });
+
+ }
+
+ Fromdate= new Date();
+ todate = new Date();
+
+ getReport(event){
+
+ console.log("inside function");
+ if(event == 'getExcel'){
+ this.exportExcel();
+ }else{
+ var deviceId: any;
+ var tpdata = event ;
+ var that = this;
+ var fd = new Date(tpdata.fromDate);
+ var td = new Date(tpdata.toDate);
+
+ this.Fromdate = fd;
+ this.todate = td;
+ this.tabelObj.ajax.reload();
+
+ }
+
+ }
+
+ tab:any;
+exportExcel()
+{
+
+ var tab_text="";
+ var textRange; var j=0;
+ var table = $('#deviceTable').clone();
+ table[0].querySelector("thead").remove();
+ table[0].prepend($(".dataTable thead").clone()[0]);
+ this.tab = table[0];//document.getElementById('deviceTable'); // id of table
+
+ for(j = 0 ; j < this.tab.rows.length ; j++)
+ {
+ tab_text=tab_text+this.tab.rows[j].innerHTML+" ";
+
+ }
+
+ tab_text=tab_text+"
";
+
+ tab_text= tab_text.replace(/ ]*>|<\/input>/gi, ""); // reomves input params
+
+ var ua = window.navigator.userAgent;
+ var msie = ua.indexOf("MSIE ");
+
+ var sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
+
+ return (sa);
+}
+
+
+
+}
diff --git a/src/app/alert.component.ts b/src/app/alert.component.ts
new file mode 100644
index 0000000..63ffc4e
--- /dev/null
+++ b/src/app/alert.component.ts
@@ -0,0 +1,51 @@
+import { Component, OnInit } from '@angular/core';
+
+import { Alert, AlertType } from './alert';
+import { AlertService } from './alert.service';
+
+@Component({
+ moduleId: module.id,
+ selector: 'alert',
+ templateUrl: './community/community.component.html'
+})
+
+export class AlertComponent {
+ alerts: Alert[] = [];
+
+ constructor(private alertService: AlertService) { }
+
+ ngOnInit() {
+ this.alertService.getAlert().subscribe((alert: Alert) => {
+ if (!alert) {
+ // clear alerts when an empty alert is received
+ this.alerts = [];
+ return;
+ }
+
+ // add alert to array
+ this.alerts.push(alert);
+ });
+ }
+
+ removeAlert(alert: Alert) {
+ this.alerts = this.alerts.filter(x => x !== alert);
+ }
+
+ cssClass(alert: Alert) {
+ if (!alert) {
+ return;
+ }
+
+ // return css class based on alert type
+ switch (alert.type) {
+ case AlertType.Success:
+ return 'alert alert-success';
+ case AlertType.Error:
+ return 'alert alert-danger';
+ case AlertType.Info:
+ return 'alert alert-info';
+ case AlertType.Warning:
+ return 'alert alert-warning';
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/app/alert.service.ts b/src/app/alert.service.ts
new file mode 100644
index 0000000..009f4b8
--- /dev/null
+++ b/src/app/alert.service.ts
@@ -0,0 +1,57 @@
+import { Injectable } from '@angular/core';
+import { Router, NavigationStart } from '@angular/router';
+import { Observable } from 'rxjs';
+import { Subject } from 'rxjs/Subject';
+
+import { Alert, AlertType } from './alert';
+
+@Injectable()
+export class AlertService {
+ private subject = new Subject();
+ private keepAfterRouteChange = false;
+
+ constructor(private router: Router) {
+ // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
+ router.events.subscribe(event => {
+ if (event instanceof NavigationStart) {
+ if (this.keepAfterRouteChange) {
+ // only keep for a single route change
+ this.keepAfterRouteChange = false;
+ } else {
+ // clear alert messages
+ this.clear();
+ }
+ }
+ });
+ }
+
+ getAlert(): Observable {
+ return this.subject.asObservable();
+ }
+
+ success(message: string, keepAfterRouteChange = false) {
+ this.alert(AlertType.Success, message, keepAfterRouteChange);
+ }
+
+ error(message: string, keepAfterRouteChange = false) {
+ this.alert(AlertType.Error, message, keepAfterRouteChange);
+ }
+
+ info(message: string, keepAfterRouteChange = false) {
+ this.alert(AlertType.Info, message, keepAfterRouteChange);
+ }
+
+ warn(message: string, keepAfterRouteChange = false) {
+ this.alert(AlertType.Warning, message, keepAfterRouteChange);
+ }
+
+ alert(type: AlertType, message: string, keepAfterRouteChange = false) {
+ this.keepAfterRouteChange = keepAfterRouteChange;
+ this.subject.next({ type: type, message: message });
+ }
+
+ clear() {
+ // clear alerts
+ this.subject.next();
+ }
+}
\ No newline at end of file
diff --git a/src/app/alert.ts b/src/app/alert.ts
new file mode 100644
index 0000000..299f43b
--- /dev/null
+++ b/src/app/alert.ts
@@ -0,0 +1,11 @@
+export class Alert {
+ type: AlertType;
+ message: string;
+}
+
+export enum AlertType {
+ Success,
+ Error,
+ Info,
+ Warning
+}
\ No newline at end of file
diff --git a/src/app/all-menus/all-menus.component.html b/src/app/all-menus/all-menus.component.html
new file mode 100644
index 0000000..3e0342e
--- /dev/null
+++ b/src/app/all-menus/all-menus.component.html
@@ -0,0 +1,440 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{fs}} {{ls}}
+
{{mb}}
+
+
+ {{pointCount}}
+
+
{{or}}
+
+
+
+
+ {{'My Account' | translate}}
+
+
+ {{'Dealer Account' | translate}}
+ {{'Admin Account' | translate}}
+ {{'Log Out' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/all-menus/all-menus.component.scss b/src/app/all-menus/all-menus.component.scss
new file mode 100644
index 0000000..6ac560a
--- /dev/null
+++ b/src/app/all-menus/all-menus.component.scss
@@ -0,0 +1,234 @@
+.custom_style {
+ // position: fixed;
+ // top:0 ;
+ // left:0;
+ // right :0;
+ // background: #2D4262;
+ // padding-top: 0%;
+ // padding-bottom: 0%;
+ // line-height: 2.8;
+ // box-shadow: -1px 7px 7px -5px rgb(48, 68, 99);
+
+ // ================changed style==================
+ position: fixed;
+ background: #2d4262;
+ padding-top: 1%;
+ padding: 0;
+ width: 100%;
+ box-shadow: -1px 7px 7px -5px #304463;
+}
+
+.changePadding {
+ flex: 1;
+ text-align: center;
+ padding-left: 90px;
+}
+
+.changePadding1 {
+ flex: 1;
+ text-align: center;
+ padding-left: 15px;
+}
+
+.list_style {
+ margin-left: 100px;
+ ul {
+ li {
+ a {
+ color: white;
+ }
+ }
+ }
+}
+
+.dropdown_style {
+ // background: #b9b7b7 ;
+ // background: linear-gradient(to bottom, #2c3e50,#bdc3c7);
+ // background: #D42021;
+
+ background: #2d4262;
+
+ padding-top: 0;
+ padding-bottom: 0;
+
+ cursor: pointer;
+ a {
+ color: white;
+ }
+}
+
+.dropdown-menu > a:hover {
+ background-color: #2a3132;
+ background-image: none;
+}
+
+.hoverStyle:hover {
+ background-color: #2a3132;
+ background-image: none;
+}
+
+.nav-item > a:hover {
+ background-color: #2a3132;
+}
+
+::-webkit-scrollbar {
+ width: 10px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+ background: rgb(74, 118, 184);
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+ background: #555;
+}
+
+@media (max-width: 1540px) {
+ #navbarSupportedContent {
+ margin-left: 50px;
+ }
+}
+
+@media (min-width: 1366px) {
+ #navbarSupportedContent {
+ margin-left: 50px;
+ }
+}
+
+@media (max-width: 1366px) {
+ .list_style {
+ font-size: 13px;
+ }
+}
+
+@media (max-width: 1366px) {
+ .changePadding {
+ padding-left: 0px;
+ }
+ .changePadding1 {
+ padding-left: 0px;
+ }
+}
+
+::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+ background: rgb(143, 215, 255);
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+ background: #dadada;
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+ background: #555;
+}
+
+#navbarSupportedContent {
+ margin-left: 100px;
+}
+@media (max-width: 1537px) {
+ #navbarSupportedContent {
+ margin-left: 0px;
+ }
+}
+
+@media (max-width: 1537px) {
+ .list_style {
+ font-size: 13px;
+ }
+}
+
+// @media (min-width:1366px){
+// .list_style{
+// font-size: 14px;
+// }
+
+// }
+// @media (max-width:1476px){
+
+// .list_style{
+// font-size: 14px;
+// }
+// }
+
+// 1366,1440
+
+// .bg-light{
+// background: #737373;
+
+// }
+
+// .bg-light :hover{
+// background: #dbd4d4;
+
+// }
+
+// .navbar-nav > li > .dropdown-menu { background-color: #FF0000; }
+// .dropdown-menu > .active > a,.dropdown-menu > .active > a:hover.dropdown-menu > .active > a:focus {color: #555555!important; background-color: #e7e7e7!important;}
+
+li a.nav-link {
+ width: max-content !important;
+ // padding: 20px 5px !important;
+}
+
+.dropdown-submenu {
+ position: relative;
+}
+
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px;
+ border-radius: 0 6px 6px 6px;
+}
+
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+
+.dropdown-submenu > a:after {
+ display: block;
+ content: " ";
+ float: right;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #ccc;
+ margin-top: 5px;
+ margin-right: -10px;
+}
+
+.dropdown-submenu:hover > a:after {
+ border-left-color: #fff;
+}
+
+.dropdown-submenu.pull-left {
+ float: none;
+}
+
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: -100%;
+ margin-left: 10px;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
+}
diff --git a/src/app/all-menus/all-menus.component.spec.ts b/src/app/all-menus/all-menus.component.spec.ts
new file mode 100644
index 0000000..f94b78b
--- /dev/null
+++ b/src/app/all-menus/all-menus.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AllMenusComponent } from './all-menus.component';
+
+describe('AllMenusComponent', () => {
+ let component: AllMenusComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AllMenusComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AllMenusComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/all-menus/all-menus.component.ts b/src/app/all-menus/all-menus.component.ts
new file mode 100644
index 0000000..6fcd95d
--- /dev/null
+++ b/src/app/all-menus/all-menus.component.ts
@@ -0,0 +1,917 @@
+// import { Component, OnInit } from '@angular/core';
+
+// @Component({
+// selector: 'app-all-menus',
+// templateUrl: './all-menus.component.html',
+// styleUrls: ['./all-menus.component.scss']
+// })
+// export class AllMenusComponent implements OnInit {
+
+// constructor() { }
+
+// ngOnInit() {
+// }
+
+// }
+
+
+// import { Component, OnInit } from '@angular/core';
+
+// @Component({
+// selector: 'app-poi-menu',
+// templateUrl: './poi-menu.component.html',
+// styleUrls: ['./poi-menu.component.scss']
+// })
+// export class PoiMenuComponent implements OnInit {
+
+// constructor() { }
+
+// ngOnInit() {
+// }
+
+// }
+////////////////////////////
+import { Component, OnInit, Input } from '@angular/core';
+import { Params, Router, ActivatedRoute } from '@angular/router'
+import { ContactService } from '../contact.service';
+import { TranslateService } from 'ng2-translate';
+import { MdDialog } from '@angular/material';
+import { DemoVideosComponent } from '../const/demo-videos/demo-videos.component';
+// import { PoiListComponent } from '../poi-list/poi-list.component';
+// import { PoiDtlDelComponent } from "../poi-dtl-del/poi-dtl-del.component";
+// import { MdDialog } from '@angular/material';
+// import { Data } from '../data';
+
+declare var google: any,$:any;
+@Component({
+ selector: 'app-all-menus',
+ templateUrl: './all-menus.component.html',
+ styleUrls: ['./all-menus.component.scss']
+})
+export class AllMenusComponent implements OnInit {
+ //
+ marker1: any;
+ mapData: any[];
+ routePath: any;
+ before: any;
+ logoutbut: boolean;
+ cust: boolean = false;
+ logo: any;
+ text: any;
+ fs: any; ls: any; emailid: any; or: any; useridd: any; mb: any; custtype: any; dealer: any;
+ showImage: any;
+ groups = [];
+ group_info: any;
+ deviceId: any;
+ device_update: any;
+ markerpoi: any;
+ superAdmin: any = false;
+ waypoints_path:any;
+ routeData:any;
+ cnt:any =0;
+ showIMEI=false
+ dbMap:any;
+ dbMapInit:any = false;
+ menuFlag:any ='';
+ isOperator: boolean = false;
+ isOrganisation: boolean = false;
+ reportPrefrecne: any;
+ paddingLeft:boolean=false
+ reportArray = [
+ {name:"Daily Report",Rstatus:true,Astatus:false,value:"daily_report"},
+ {name:"Daywise Report",Rstatus:true,Astatus:false,value:"daywise_report"},
+ {name:"Speed Variation",Rstatus:true,Astatus:false,value:"speed_variation"},
+ {name :"Fuel Report",Rstatus : true,Astatus:false,value:"fuel_report"},
+ {name :"Idle Report",Rstatus : true,Astatus:false,value:"idle_report"},
+ {name:"Fuel Consumption Report",Rstatus:true,Astatus:false,value:"fuel_consumption_report"},
+ {name:"Trip Report",Rstatus:true,Astatus:false,value:"trip_report"},
+ {name : "Travel Path Report",Rstatus : true,Astatus:false,value:"travel_path_report"},
+ {name : "Summary Report",Rstatus : true,Astatus:false,value:"summary_report"},
+ {name : "Geofence Report",Rstatus : true,Astatus:false,value:"geofence_report"},
+ {name : "Overspeed Report",Rstatus : true,Astatus:false,value:"overspeed_report"},
+ {name : "Route Violation Report",Rstatus : true,Astatus:false,value:"route_violation_report"},
+ {name : "Stoppage Report",Rstatus : true,Astatus:false,value:"stoppage_report"},
+ {name : "Ignition Report",Rstatus : true,Astatus:false,value:"ignition_report"},
+ {name : "Distance Report",Rstatus : true,Astatus:false,value:"distance_report"},
+ {name : "POI Report",Rstatus : true,Astatus:false,value:"poi_report"},
+ {name : "SOS Report",Rstatus : true,Astatus:false,value:"sos_report"},
+ {name : "AC Report",Rstatus : true,Astatus:false,value:"ac_report"},
+ {name : "Driver Performance Report",Rstatus : true,Astatus:false,value:"driver_performance_report"},
+ {name : "User Trip Report",Rstatus : true,Astatus:false,value:"user_trip_report"},
+ {name : "Alert Report",Rstatus : true,Astatus:false,value:"alert_report"} ,
+ {name : "Loading Unloading Trip",Rstatus : true,Astatus:false,value:"loading_unloading_trip"} ,
+ {name : "Working Hours Reports",Rstatus : true,Astatus:false,value:"working_hours_report"},
+ {name : "Maintenance Reports",Rstatus : true,Astatus:false,value:"maintanance_report"},
+ {name:"Daily Logs",Rstatus:true,Astatus:false,value:"daily_logs"},
+ {name : "Notification Center",Rstatus : true,Astatus:false,value:"notification_master"},
+ ];
+ availaPointsFlag: boolean = false;
+ pointCount: number = 0;
+ adressTab: boolean=false;
+ phone: any;
+ // ,public dialog: MdDialog
+ constructor(public dialog: MdDialog,private router: Router, private route: ActivatedRoute, private contactService: ContactService,public translate: TranslateService) {
+ this.contactService.totalTicketCount.subscribe(totalTicketCount => {
+ // this.ticketCount = totalTicketCount
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.phone=JSON.parse(window.atob(window.localStorage.token.split(".")[1])).phn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.isOrganisation = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation;
+ // console.log("jwtvalue",JSON.parse(window.atob(window.localStorage.token.split(".")[1])));
+ this.ngOnInit()
+ });
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+
+ if(this.useridd=="59cbbdbe508f164aa2fef3d8"){
+ this.showIMEI=true;
+
+ }
+ console.log("USEERRRR",this.useridd,'59cbbdbe508f164aa2fef3d8', this.showIMEI);
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.isOrganisation = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation;
+ // console.log("jwtvalue",JSON.parse(window.atob(window.localStorage.token.split(".")[1])));
+
+ var routeID = localStorage.getItem('routeId')
+
+ // this.route.params.subscribe((params:Params)=>{
+ // let id= params['routePath._id'];
+ // this.getRouteData(routeID);
+
+ // });
+
+ }
+ link
+ menuWidth:any;
+ sup_admin:boolean;
+ isOrgnaisation:boolean=false;
+ ngOnInit() {
+ // console.log("Inside all app menu component---------------------------------------------");
+ // this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ if(localStorage.getItem('superadmin')=="ON"){
+ this.sup_admin = true;
+ this.logoutbut = false;
+ this.dealer = false;
+ }
+
+ this.logo = window.localStorage['logo'];
+
+ // this.text = window.localStorage['text'];
+ // window.localStorage['DataUpdate'] = 'Tthis.rue'
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ // this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.isOrganisation = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ // // this.routePath = JSON.parse(localStorage.getItem('routeData'));
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.isOperator = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isOperator;
+
+ this.reportPrefrecne = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).report_preference;
+
+ let that = this;
+ if(this.reportPrefrecne !=undefined){
+
+ var tempReport = this.reportPrefrecne;
+ console.log(this.reportPrefrecne);
+
+ for(let dt in tempReport){
+ let arr = that.reportArray.filter(function(d){
+ return d.value == dt;
+ })
+ arr[0].Astatus = tempReport[dt]?tempReport[dt].Astatus:false;
+ arr[0].Rstatus = tempReport[dt]?tempReport[dt].Rstatus:false;
+ }
+
+ }
+
+
+
+ // console.log("this.reportPrefrecne=>",this.reportPrefrecne);
+
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+
+ // let foods = [];
+
+ // if (this.mb.charAt(0) == "n") {
+ // this.mb = ' '
+ // }
+ if (window.localStorage['Custumer'] == 'ON') {
+ // this.logoutbut = true;
+ this.sup_admin =false;
+ this.dealer = true;
+ }else if(window.localStorage['superadmin']=='ON'){
+ this.logoutbut = false;
+ }
+ else {
+ this.logoutbut = true;
+ }
+
+ this.getLanguage()
+
+
+ this.menuFlag = this.contactService.menuReturnGet();
+ var chkProfilePic = localStorage.getItem('profilePic');
+ // console.log('chkProfilePic',chkProfilePic);
+ if(chkProfilePic == null){
+ this.getProfileImagePath();
+ }else{
+ this.ppSHOW = true;
+ this.profilePic = chkProfilePic ;
+ }
+
+ this.availaPointsFlag = false ;
+ if((this.custtype === true)||((this.superAdmin === true)&&(this.isOrganisation === false))){
+ // console.log("Inside FunctionCheckpoint");
+ this.availaPointsFlag = true ;
+ this.getPointAvailable(this.useridd);
+ }
+ this. checkPassword();
+ // if(this.useridd === '59cbbdbe508f164aa2fef3d8'){
+ // this.adressTab = true;
+ // }
+
+ $(document).on('click', '.dropdown-menu', function (e) {
+ e.stopPropagation();
+ });
+ // this.getLink()
+
+ }
+
+ getLink(){
+ // 9481773053'
+ console.log("PHONE_________-------",this.phone);
+
+ this.contactService.get('/pullData/getSetuLink?mobileNumber='+this.phone).subscribe((res:any)=>{
+ console.log(res);
+ if(res.link){
+ this.link=res.link
+
+ }
+ })
+ }
+
+//2 menu dashboard
+ soon(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("const?_i=" + window.localStorage.token);
+ }
+ // 3 menu
+ group(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+
+ this.router.navigateByUrl("group_view");
+ }
+ // 4 menu
+ devi(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+
+ this.router.navigateByUrl("dashboard");
+ }
+
+ productSummary(id){
+ this.router.navigateByUrl("product-summary");
+
+ }
+
+ orderSummary(id){
+ this.router.navigateByUrl("orderSummary");
+
+ }
+
+ tempDetal(id){
+ this.router.navigateByUrl("device-report/temp_report");
+
+ }
+ //5 menu
+ openNav(id) {
+ this.contactService.menuReturnSet(id);
+ this.router.navigate(['/location'],{queryParams : {pageid : 'locationComponent'}});
+ }
+
+
+
+ //6 menu
+ geo(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("geofencing");
+ }
+ // 7 menu
+ report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report");
+
+ }
+
+ daywisereport(){
+ this.router.navigateByUrl("device-report/daywise-report");
+ }
+ subAdmin(){
+ this.router.navigateByUrl("suAdmin");
+ }
+
+ modelMaster(){
+ this.router.navigateByUrl("ModelMaster");
+ }
+
+
+ vehicleExpense(id){
+ this.router.navigateByUrl("vehicleExpense");
+ }
+
+ temp_report(id){
+ this.router.navigateByUrl("device-report/tempGraph");
+ }
+
+ commandQueue(id){
+ this.router.navigateByUrl("commanQueue");
+ }
+
+ addressList(id){
+ this.router.navigateByUrl("addreessUpdate");
+ }
+
+
+ censorDetail(id){
+ this.router.navigateByUrl("censor");
+
+ }
+ fuelPrice(id){
+ console.log(id);
+ this.router.navigate(["/FuelPrice"]);
+ }
+
+ daily_logs(){
+ this.router.navigateByUrl("device-report/dailyLogs");
+ }
+
+ workingHour(id){
+ this.router.navigateByUrl("workhourReport");
+ }
+
+ reminder_list(id)
+ {
+ this.router.navigateByUrl("vehicle/reminder_service");
+
+ }
+
+
+
+ TrackingHistory(id){
+ // this.menuFlag = this.contactService.menuReturnSet(id);
+ // this.router.navigateByUrl("location/live-history");
+
+ this.contactService.menuReturnSet(id);
+ this.router.navigate(['/location'],{queryParams : {pageid : 'locationHistory'}});
+ }
+
+
+ dev_fuel_report(){
+ this.router.navigateByUrl("device-report/dev-fuel-report");
+ }
+ fuel_report1(){
+ this.router.navigateByUrl("device-report/fuel_report");
+ }
+
+ POI_report(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/POI_report");
+ }
+
+ SOS_report(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/devicesosReport");
+ }
+
+
+ //8
+ report_speed(id) {
+
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ //9
+ trip_report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/trip_report");
+//10
+ }
+
+ acReport(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/ac_report");
+ }
+ summaryReport(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/summary-report");
+ }
+ //11
+ geofancingReport(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/geofancing");
+ }
+//12
+
+travelPath(id){
+ // TravelPathReportComponent
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/travel_path");
+}
+
+messageUtility(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("messageUtility");
+}
+Rechange(id){
+this.menuFlag = this.contactService.menuReturnSet(id);
+ // this.router.navigateByUrl("recharge");
+}
+
+billing(id){
+
+ this.router.navigateByUrl("billingDashboard");
+}
+
+overspeed(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/overspeed");
+
+}
+//13
+routeViolation(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/routeViolation");
+}
+
+mainReport(){
+ this.router.navigateByUrl("maintananceReport");
+
+}
+
+idleReport(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/idle-report");
+}
+//14
+stoppage_report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/stoppage_report");
+}
+//15
+ignition_report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/ignition_report");
+}
+//16
+
+distance_report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/distance_report");
+}
+//17
+alert_report(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/alert-report");
+
+}
+
+POIlist(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("POI_list");
+}
+
+userTrip(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/deviceTrip");
+
+}
+
+driverPerformance(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/Driver-performance");
+}
+//18
+
+vehicleRoute(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("vehicleRoute");
+}
+
+
+//19
+route_map(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("routeMapping");
+
+}
+
+route_plan(id){
+this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("routePlan");
+}
+
+route_planReport(id){
+this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("routePlanReportNew");
+}
+//20
+addcus(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ localStorage.removeItem('mapLoad_ID')
+ this.router.navigateByUrl("add");
+}
+//21
+Ddetail(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("driverdetail");
+}
+
+userMaster(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("userLogs");
+}
+
+cssupport(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("cus_support");
+}
+
+adddistributers(){
+ this.router.navigateByUrl("distributersList");
+}
+
+deviceMaster(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("deviceMaster");
+}
+
+deviceRenew(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("RenewReport");
+}
+deviceInventory(){
+ this.router.navigateByUrl("deviceInventory");
+}
+gpsMaster(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("gpsMaster");
+
+}
+
+technician(id){
+ this.router.navigateByUrl("technician");
+}
+
+jobCard(id)
+{
+ this.router.navigateByUrl("JobCard");
+}
+
+cmdMaster(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("cmdMaster");
+
+}
+
+deviceEntry(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("deviceEntry");
+}
+
+deviceInventoryList(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("Inventorylist");
+}
+//22
+poiMenu(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("poimenu");
+}
+//23
+myaccount(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("accountSettings");
+}
+
+loadUnload(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("device-report/tripLoadUnload");
+
+}
+
+
+load_management(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("loadManagement");
+}
+
+// LR_Number(id){
+// this.menuFlag = this.contactService.menuReturnSet(id);
+// this.router.navigateByUrl("lrinput");
+// }
+
+fuel_report(id){
+ console.log(id);
+
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("fuel_Report");
+
+}
+//24
+ mydealer(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ localStorage.removeItem("in1");
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('supAdminAcessToCust');
+ localStorage.removeItem('devices');
+ localStorage.removeItem('custId')
+ window.localStorage['DataUpdate'] = 'True';
+ if (window.localStorage['DataLoaded'] = 'True') {
+ window.localStorage['Custumer'] = 'OFF';
+ localStorage.setItem('Dealer',"ON");
+ // this.dealer = false;
+ this.sup_admin =false;
+ this.logoutbut= true;
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ this.router.navigateByUrl("add");
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+ }
+
+
+ super_Admin(id){
+
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ // localStorage.setItem('token',localStorage.getItem('superAdminToken'));
+ var tempsup = localStorage.getItem('superAdminToken');
+ localStorage.removeItem('supAdminAcessToCust');
+ localStorage.removeItem("in1");
+ if(tempsup == null){
+ // console.log("Inside if block");
+ this.sup_admin = false;
+ this.logoutbut= true;
+
+ }else{
+ window.localStorage['token'] = window.localStorage['superAdminToken'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if(window.localStorage['DataLoaded'] = 'True'){
+ // let dlrStatus = "true";
+ localStorage.setItem('superadmin',"OFF");
+ this.sup_admin =false;
+ this.logoutbut=true;
+ // localStorage.setItem("dlrchk",dlrStatus)
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ this.router.navigateByUrl("dealerInfo");
+
+ // this.router.navigateByUrl("const?_status="+"OK");
+
+
+ }
+ }
+
+
+
+ }
+ //25
+
+
+ notification(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("notifications");
+ }
+ DModel(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("deviceModel");
+ }
+ VType(id) {
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("VehicleType");
+ }
+ dealerInfo(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+ logout() {
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+
+
+
+
+
+
+ goback() {
+ this.router.navigateByUrl("vehicleRoute");
+ }
+
+ new() {
+ this.router.navigateByUrl("new");
+ }
+
+ checkPassword(){
+ this.contactService.getImagePath(this.useridd).subscribe((res:any)=>{
+ if(localStorage.getItem('currentpwd') && localStorage.getItem('currentuser')){
+
+ if(res._id==localStorage.getItem('currentuser')){
+ if(localStorage.getItem('currentpwd')!=res.pass){
+ if(localStorage.getItem('currentpwd')!='XIt8UXhmjW'){
+ this.logout()
+ }
+
+ }
+ }
+ // pass
+ }else{
+
+ this.logout()
+ }
+ })
+ }
+
+ ppSHOW:boolean = false;
+ profilePic = '';
+ getProfileImagePath(){
+ // console.log('check profile pic function');
+ this.contactService.getImagePath(this.useridd).subscribe((res:any)=>{
+
+ // console.log(res);
+ if(res.imageDoc.length != 0){
+ var str = res.imageDoc[0]
+ var splitStr = str.split('/');
+ // console.log(splitStr);
+ var concatStr ='';
+ for(var i=1 ; i< splitStr.length ; i++){
+ if(i > 0){
+ var tt = splitStr[i];
+ concatStr += '/'+tt ;
+ }
+ }
+ // console.log(concatStr);
+ this.ppSHOW = true;
+ this.profilePic = 'https://www.oneqlik.in' + concatStr;
+ localStorage.setItem('profilePic',this.profilePic)
+ localStorage.setItem('org',JSON.stringify(res.organisation))
+ }else{
+ this.ppSHOW = false ;
+ }
+
+ })
+ }
+
+
+
+ cond: Boolean = false;
+ point: any = 0;
+ aa() {
+
+ if (this.point == 0) {
+ this.cond = true;
+ this.point++;
+ }
+ else if (this.point % 2 == 0) {
+ this.cond = true;
+ this.point++;
+ }
+ else {
+ this.cond = false
+ this.point++;
+ }
+
+
+
+
+
+ }
+
+selectedlanguage:any;
+classVar:any = 'defaultClass';
+classVarDashboard:any = 'styleDefaultDashboard';
+getLanguage(){
+// var Var = { uid: this.useridd };
+// this.contactService.getLanguages(Var).subscribe(res=>{
+ this.selectedlanguage = localStorage.getItem('appLang');
+
+ if(this.selectedlanguage != undefined){
+ if(this.selectedlanguage=='newLan2'){
+ this.paddingLeft=true
+ }else{
+ this.paddingLeft=false
+ }
+ this.translate.setDefaultLang(this.selectedlanguage);
+ this.translate.use(this.selectedlanguage);
+ // localStorage.setItem('appLang',this.selectedlanguage);
+ if(this.selectedlanguage != 'en'){
+ this.classVar = 'changedclass';
+ this.classVarDashboard = 'stylechangedDashboard';
+ }
+
+ if(this.selectedlanguage == 'en'){
+ this.classVar = 'defaultClass';
+ this.classVarDashboard = 'styleDefaultDashboard';
+ }
+
+ }else{
+ this.translate.setDefaultLang('en');
+ localStorage.setItem('appLang','en');
+ this.translate.use('en');
+ this.classVar = 'defaultClass';
+ this.classVarDashboard = 'styleDefaultDashboard';
+ }
+
+// },err=>{
+// console.log(err);
+// })
+
+}
+
+ dataArrayCoords: any;
+ currentLatitude: any;
+ currentLongitude: any;
+ marker: any;
+
+
+
+ livetrack(id){
+ this.router.navigateByUrl("live");
+
+ }
+
+
+ getPointAvailable(distId){
+ var distPoint = '0';
+ this.contactService.getAvialblePoints(distId,distPoint).subscribe(res=>{
+ // console.log(res.available_points);
+ this.pointCount =res.available_points?res.available_points: 0 ;
+ })
+ }
+
+
+
+ tutorialVideos(){
+
+ let dialogRef = this.dialog.open(DemoVideosComponent, {
+ // width: '903px',
+ // data: { Type: type, dataset: datasets }
+ panelClass: 'custom-dialog-container'
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "OKK") {
+
+ }
+ else if (result == "No_Dev") {
+
+
+ }
+ });
+
+ }
+ reports(){
+ this.router.navigate(['/reports/start'])
+ }
+ reportScedule(){
+ this.router.navigate(['/report-schedule'])
+ }
+ imeiFind(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigate(["/IEMI_Finder"]);
+ }
+
+ userFinder(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigate(["/USER_Finder"]);
+ }
+
+
+ issueList(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigate(["/issueList"]);
+ }
+ RTOMaster(id){
+ this.menuFlag = this.contactService.menuReturnSet(id);
+ this.router.navigate(["/RTO_Master"]);
+ }
+ deviceList(){
+ this.router.navigate(['/deviceList'])
+ }
+ inActiveAdmins(){
+ this.router.navigate(['/inactiveAdmins'])
+ }
+ toll(){
+ this.router.navigate(['/toll'])
+ }
+}
diff --git a/src/app/app.component.css b/src/app/app.component.css
new file mode 100644
index 0000000..7608301
--- /dev/null
+++ b/src/app/app.component.css
@@ -0,0 +1,124 @@
+
+::-webkit-scrollbar {
+ display: none;
+ }
+ body::-webkit-scrollbar {
+ display: none;
+}
+menu */
+.navigation {
+ width: 300px;
+}
+
+
+
+
+/* reset our lists to remove bullet points and padding */
+.mainmenu, .submenu {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+/* make ALL links (main and submenu) have padding and background color */
+.mainmenu a {
+ display: block;
+ background-color: #CCC;
+ text-decoration: none;
+ padding: 10px;
+ color: #000;
+}
+
+/* add hover behaviour */
+.mainmenu a:hover {
+ background-color: #C5C5C5;
+}
+
+
+/* when hovering over a .mainmenu item,
+ display the submenu inside it.
+ we're changing the submenu's max-height from 0 to 200px;
+*/
+
+.mainmenu li:hover .submenu {
+ display: block;
+ max-height: 200px;
+}
+
+/*
+ we now overwrite the background-color for .submenu links only.
+ CSS reads down the page, so code at the bottom will overwrite the code at the top.
+*/
+
+.submenu a {
+ background-color: #999;
+}
+
+/* hover behaviour for links inside .submenu */
+.submenu a:hover {
+ background-color: #666;
+}
+
+/* this is the initial state of all submenus.
+ we set it to max-height: 0, and hide the overflowed content.
+*/
+.submenu {
+ overflow: hidden;
+ max-height: 0;
+ -webkit-transition: all 0.5s ease-out;
+}
+body{
+ height:100%; width:100%;
+
+}
+::-webkit-scrollbar {
+ display: none;
+ }
+ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+ footer {
+ background:#FAFAFA;
+ bottom: 0;
+ width: 100%;
+ /* height: 50px;
+ padding: 20px; */
+ position: fixed;
+ opacity: 1.0;
+ filter: alpha(opacity=50);
+ text-align: center;
+ border-top:1px solid #ddd;
+}
+footer:hover{
+ opacity: 1.0;
+ filter: alpha(opacity=100);
+}
+.active-link{
+ border-bottom: 1px solid #1ba0c0;
+ font-weight: bold;
+ }
+a:hover{
+ text-decoration: none;
+ color: #1ba0c0!important;
+}
+ .main{
+ /* padding: 16px;
+ padding-right: 0%;
+ margin-top: 48px;
+ height: 89vh; */
+ }
+ header{
+ overflow: hidden;
+ background-color: #333;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ }
+
+
+ .tableHeader{
+ background-color: #A2C523;
+ color : white;
+ }
\ No newline at end of file
diff --git a/src/app/app.component.html b/src/app/app.component.html
new file mode 100644
index 0000000..088118c
--- /dev/null
+++ b/src/app/app.component.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
new file mode 100644
index 0000000..9510495
--- /dev/null
+++ b/src/app/app.component.spec.ts
@@ -0,0 +1,32 @@
+import { TestBed, async } from '@angular/core/testing';
+
+import { AppComponent } from './app.component';
+
+describe('AppComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ AppComponent
+ ],
+ }).compileComponents();
+ }));
+
+ it('should create the app', async(() => {
+ const fixture = TestBed.createComponent(AppComponent);
+ const app = fixture.debugElement.componentInstance;
+ expect(app).toBeTruthy();
+ }));
+
+ it(`should have as title 'app'`, async(() => {
+ const fixture = TestBed.createComponent(AppComponent);
+ const app = fixture.debugElement.componentInstance;
+ expect(app.title).toEqual('app');
+ }));
+
+ it('should render title in a h1 tag', async(() => {
+ const fixture = TestBed.createComponent(AppComponent);
+ fixture.detectChanges();
+ const compiled = fixture.debugElement.nativeElement;
+ expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!');
+ }));
+});
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
new file mode 100644
index 0000000..75c783e
--- /dev/null
+++ b/src/app/app.component.ts
@@ -0,0 +1,163 @@
+import { environment } from './../environments/environment';
+import { Component, Inject } from '@angular/core';
+import { RouterLinkActive } from '@angular/router';
+import { Title } from '@angular/platform-browser';
+import {ContactService} from './contact.service';
+import{Http, Headers} from '@angular/http';
+import 'rxjs/add/operator/map';
+import { Observable } from 'rxjs/Observable';
+import { Injectable } from '@angular/core';
+import { TranslateService } from 'ng2-translate';
+import { LoginComponent } from './login/login.component';
+import { DOCUMENT } from '@angular/common';
+
+
+
+@Injectable()
+@Component({
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.css'],
+ providers: [LoginComponent],
+
+})
+export class AppComponent {
+userData:any;
+url:any;
+
+logo:any;
+text:any;
+address:any;
+mobile:any;
+dev_url = environment.hostUrl;
+showMenu = environment.showLandingpageMenu;
+headerfooterPadding:any;
+margintop:any;
+ showNav: boolean;
+constructor(private titleService: Title,private contactService: ContactService,private http: Http,public translate: TranslateService,public loginComp : LoginComponent){
+ console.log("showMenu=>",this.showMenu);
+ let split1 = document.URL.split('//')[1];
+ let split2 = split1.split('/')[0];
+ let splitForStyle = split1.split('/')[1];
+ this.url = split2;
+
+
+ // let split3 = document.URL.split('referrer_token')[1] || localStorage.getItem('referrer_token');
+
+
+ var decode_token = function(token){
+ var decodeToken = function(token){
+ return token ? (window.atob(token)):token;
+ }
+ var parseToken = function(token){
+ if(token && typeof(token)=='string'){
+ try {
+ return JSON.parse(token)
+ } catch (e) {
+ return "";
+ }
+ }
+ else
+ return "";
+ }
+ var getData = function(token){
+ return token ? {
+ "referer": decodeToken(token._referrer),
+ "username": decodeToken(token._u),
+ "pass": decodeToken(token._p)
+ } : null;
+ }
+ return getData(parseToken(decodeToken(token)));
+ }
+
+let token = document.URL.split('referrer_token=')[1] || localStorage.getItem('referrer_token=');
+console.log(token);
+ var split3 = decode_token(token) ;
+ console.log(split3);
+ if(split3 && split3.referer){
+ // var referrer_token = split3.substring(1);
+ // var referer_data = window.atob(referrer_token).split(",");
+ // var referer = referer_data[0].split("=")[1];
+ // var username = referer_data[1].split("=")[1];
+ // var password = referer_data[2].split("=")[1];
+ // console.log(referer);
+ // console.log(username);
+ // console.log(password);
+ // var r1 = referer.split('"')[0];
+ // var u1 = username.split('"')[0];
+ // var p1 = password.split('"')[0];
+ // console.log(r1);
+ // var reffere_obj = {
+ // user : username,
+ // pass : password
+ // }
+ localStorage.setItem('referer_obj',JSON.stringify(split3));
+ localStorage.setItem('referrer_token=',token);
+ var referer = split3['referer'];
+ this.contactService.getReferenceId(referer).subscribe(res=>{
+ // localStorage.setItem('referrer_token',split3);
+ this.loginComp.loginemail() ;
+ },err=>{
+ console.log(err);
+ })
+
+ }else{
+
+ for(var i = 0; i {
+ this.userData = data
+
+ this.logo = this.dev_url+this.userData.logo;
+ this.titleService.setTitle(this.userData.organisationName);
+ this.text=this.userData.text;
+ this.address = this.userData.address;
+ console.log("this.userData.email",this.userData.email);
+ // this.dealerId =
+ console.log("this.userData",this.userData);
+ window.localStorage['dealerName']= this.userData.dealerName;
+ window.localStorage['DealerID'] = this.userData.email;
+ window.localStorage['DealerPhone'] =this.userData.contactNumber;
+ window.localStorage['logo'] =this.logo;
+ window.localStorage['address'] =this.userData.address;
+ window.localStorage['text'] = this.text;
+ window.localStorage['mobile'] = this.userData.contactNumber;
+ window.localStorage['facebook'] = this.userData.facebook;
+ window.localStorage['android'] = this.userData.androidApp;
+ window.localStorage['iphone'] = this.userData.appleApp;
+ window.localStorage['organisationName'] = this.userData.organisationName;
+ if(window.localStorage[this.userData.dealerName]){
+ console.log("Dealer Name =>", this.userData.dealerName);
+ }
+ })
+
+ // translate.setDefaultLang('en');
+ // translate.use('en');
+
+ }
+
+};
+
+
+color:any;
+fun1(value){
+
+ if(value=="signup"){
+ this.color='red';
+ // console.log(this.color);
+ }
+}
+ngOnDestroy() {
+ window.localStorage.clear();
+}
+
+
+}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
new file mode 100644
index 0000000..0a4b5e0
--- /dev/null
+++ b/src/app/app.module.ts
@@ -0,0 +1,635 @@
+import { Ng2OrderModule } from 'ng2-order-pipe';
+import { BrowserModule } from '@angular/platform-browser';
+import { NgModule , NO_ERRORS_SCHEMA } from '@angular/core';
+import { AppComponent } from './app.component';
+import { ModalModule, TimepickerModule } from 'ngx-bootstrap';
+import {FlexLayoutModule} from "@angular/flex-layout";
+import {NgxPaginationModule} from 'ngx-pagination';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import {TranslateModule, TranslateStaticLoader, TranslateLoader} from 'ng2-translate/ng2-translate';
+import { routes2 } from './dash/dash.router';
+import { routes } from './app.router';
+import {SoonComponent} from './soon/soon.component';
+import { CommunityComponent } from './community/community.component';
+import { LoginComponent } from './login/login.component';
+import { SignupComponent } from './signup/signup.component';
+import { SupportComponent } from './support/support.component';
+import { HomeComponent } from './home/home.component';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+/* import { AuthService, AppGlobals } from 'angular2-google-login';
+ */import { ReCaptchaModule } from 'angular2-recaptcha';
+
+import {ResponseOptions, Response, Http} from '@angular/http';
+import { HttpModule } from '@angular/http';
+import { StormpathModule } from 'angular-stormpath';
+import { AlertComponent } from './alert.component';
+import { AlertService } from './alert.service';
+import { NguiPopupModule } from '@ngui/popup';
+import {GmapComponent} from './gmap/gmap.component';
+import {LoginsucComponent} from './login_sucess/loginsuc.component';
+ /* import { AgmCoreModule } from 'angular2-google-maps/core'; */
+import { Ng2DropdownModule } from 'ng2-material-dropdown';
+import { DashComponent } from './dash/dash.component';
+import { Data } from "./data";
+import { Ng2CarouselamosModule } from 'ng2-carouselamos';
+import { CarouselModule } from 'ngx-bootstrap';
+import { ChartsModule } from 'ng2-charts';
+import {CountDown} from "ng2-date-countdown";
+import { SimpleTimer } from 'ng2-simple-timer';
+import { MomentModule } from 'angular2-moment';
+// import { AgmCoreModule } from '@agm/core';
+/* import {GaugesModule} from 'ng-canvas-gauges/lib'; */
+
+
+
+ import { GaugeModule } from 'angular-gauge';
+ import { FlashMessagesModule } from 'angular2-flash-messages';
+import { FormWizardModule } from 'angular2-wizard';
+
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
+import { AccountComponent } from './account/account.component';
+import {ProgressBarModule} from "ng2-progress-bar";
+import { DashboardComponent } from './dashboard/dashboard.component';
+import { DialogContentExampleDialogComponent } from './dialog-content-example-dialog/dialog-content-example-dialog.component';
+import { GatewayComponent } from './gateway/gateway.component';
+import { DragulaModule } from 'ng2-dragula';
+// import { DatepickerModule } from 'angular2-material-datepicker'
+import { ExpansionPanelsModule } from 'ng2-expansion-panels';
+import {ResizableModule} from 'angular2-resizable';
+import { DetailsComponent } from './details/details.component';
+import { RuleComponent } from './rule/rule.component';
+// import { ImageUploadModule } from "angular2-image-upload";
+import { PasswordStrengthBarModule } from 'ng2-password-strength-bar';
+import { ConstComponent } from './const/const.component';
+import { MDBBootstrapModule } from 'angular-bootstrap-md';
+import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
+import { LocationComponent } from './location/location.component';
+import { EditScheComponent } from './edit-sche/edit-sche.component';
+import { DatepickerModule, BsDatepickerModule } from 'ngx-bootstrap/datepicker';
+import { AngularDateTimePickerModule } from 'angular2-datetimepicker';
+import {IfScrollbarsModule} from 'ng2-if-scrollbars';
+
+// import { IonicApp, IonicModule } from 'ionic-angular';
+import { LoaderServiceComponent } from './loader-service/loader-service.component';
+import { GeofencingComponent } from './geofencing/geofencing.component';
+import { GeofenceAddComponent } from './geofence-add/geofence-add.component';
+import { GeofencingViewComponent } from './geofencing-view/geofencing-view.component';
+import { GeofencingView2Component } from './geofencing-view2/geofencing-view2.component';
+import { DeviceReportComponent } from './device-report/device-report.component';
+import { DeviceEditComponent } from './dashboard/device-edit/device-edit.component';
+import { DeviceSpeedReportComponent } from './device-report/device-speed-report/device-speed-report.component';
+import { DeviceShareComponent } from './dashboard/device-share/device-share.component';
+import { ShareUserComponent } from './dashboard/share-user/share-user.component';
+import { DateTimePickerModule } from 'ng-pick-datetime';
+import { SpeednotifyComponent } from './dashboard/speednotify/speednotify.component';
+import { ShareLocComponent } from './location/share-loc/share-loc.component';
+import { AddComponent } from './add/add.component';
+import { ResetpwdComponent } from './resetpwd/resetpwd.component';
+import { GetdevdetailComponent } from './const/getdevdetail/getdevdetail.component';
+import { IdealReportComponent } from './device-report/ideal-report/ideal-report.component';
+import { SidebarComponent } from './sidebar/sidebar.component';
+import {DatainjectionService} from './datainjection.service';
+import {ContactService} from './contact.service';
+import { NotificationComponent } from './notification/notification.component';
+import { MyaccountComponent } from './myaccount/myaccount.component';
+import { AddCustComponent } from './add-cust/add-cust.component';
+import { IgnReportComponent } from './device-report/ign-report/ign-report.component';
+import { SpecDevComponent } from './spec-dev/spec-dev.component';
+//import {NgxPaginationModule} from 'ngx-pagination';
+import {Ng2PaginationModule} from 'ng2-pagination';
+import { AboutUsComponent } from './about-us/about-us.component';
+import { ServicesComponent } from './services/services.component';
+import { TripDetailsComponent } from './device-report/trip-details/trip-details.component';
+import { SummaryReportComponent } from './device-report/summary-report/summary-report.component';
+import {GeofancingReportComponent} from './device-report/geofancing-report/geofancing-report.component';
+import { OverSpeedComponent } from './device-report/over-speed/over-speed.component';
+import { RouteViolationComponent } from './device-report/route-violation/route-violation.component';
+import { StoppageReportComponent } from './device-report/stoppage-report/stoppage-report.component';
+import { IgnitionReportComponent } from './device-report/ignition-report/ignition-report.component';
+import { DistanceReportComponent } from './device-report/distance-report/distance-report.component';
+import { AlertReportComponent } from './device-report/alert-report/alert-report.component';
+import { TripReportComponent } from './device-report/trip-report/trip-report.component';
+import { GroupComponent } from './group/group.component';
+import { AddGroupComponent } from './add-group/add-group.component';
+import { DialogDemoComponent } from './dialog-demo/dialog-demo.component';
+import { EditGroupComponent } from './edit-group/edit-group.component';
+import { DeleteGroupComponent } from './delete-group/delete-group.component';
+
+import { SidemenuFuelComponent } from './sidemenu-fuel/sidemenu-fuel.component';
+import { VehicleRouteComponent } from './vehicle-route/vehicle-route.component';
+import { RouteSetComponent } from './route-set/route-set.component';
+import { ShowRouteComponent } from './show-route/show-route.component';
+import { DealersInfoComponent } from './dealers-info/dealers-info.component';
+import { RouteMappingComponent } from './route-mapping/route-mapping.component';
+import { RouteMapAddComponent } from './route-map-add/route-map-add.component';
+import { PointOfIntrestComponent } from './point-of-intrest/point-of-intrest.component';
+import { RouteDeleteComponent } from './route-delete/route-delete.component';
+import { AddDealerComponent } from './add-dealer/add-dealer.component';
+import { NotificationMasterComponent } from './notification-master/notification-master.component';
+import { EditCostumerComponent } from './edit-costumer/edit-costumer.component';
+import { EditDealerComponent } from './edit-dealer/edit-dealer.component';
+import { DriversPerformanceReportComponent } from './device-report/drivers-performance-report/drivers-performance-report.component';
+import { TripHistoryComponent } from './trip-history/trip-history.component';
+import { PoiListComponent } from './poi-list/poi-list.component';
+
+import { ShowCaliberationComponent} from './show-caliberation/show-caliberation.component';
+import {VehicleTypeComponent} from './vehicle-type/vehicle-type.component';
+import { DriverDetailComponent } from './driver-detail/driver-detail.component';
+import { DeviceModelComponent } from './device-model/device-model.component';
+import { AddEditVehicleTypeComponent } from './add-edit-vehicle-type/add-edit-vehicle-type.component';
+import { AddDriverComponent } from './add-driver/add-driver.component';
+import { AddDeviceModelComponent } from './add-device-model/add-device-model.component';
+import { MdButtonModule, MdCheckboxModule, MaterialModule,MdAutocompleteModule, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { EditRouteMapComponent } from './edit-route-map/edit-route-map.component';
+import { POIdetailsComponent } from './poidetails/poidetails.component';
+import { PoiDtlDelComponent } from './poi-dtl-del/poi-dtl-del.component';
+import { AcReportComponent } from './device-report/ac-report/ac-report.component';
+import { FuelReportComponent } from './device-report/fuel-report/fuel-report.component';
+import { PoiMenuComponent } from './poi-menu/poi-menu.component';
+import { AllMenusComponent } from './all-menus/all-menus.component';
+import { LoadManagementComponent } from './load-management/load-management.component';
+import { FuelReportGraphComponent } from './fuel-report-graph/fuel-report-graph.component';
+import { EditVehicleTypeComponent } from './edit-vehicle-type/edit-vehicle-type.component';
+import { Ng2SearchPipeModule } from 'ng2-search-filter';
+import { UserMasterComponent } from './user-master/user-master.component';
+import { DeviceComponent } from './device/device.component';
+import { GpsMasterComponent } from './gps-master/gps-master.component';
+import { CmdPacketMasterComponent } from './cmd-packet-master/cmd-packet-master.component';
+import { EditDeviceMasterComponent } from './device/edit-device-master/edit-device-master.component';
+import { GpsEditMasterComponent } from './gps-master/gps-edit-master/gps-edit-master.component';
+import { POIReportComponent } from './device-report/poi-report/poi-report.component';
+import { AddpoiBylocationComponent } from './addpoi-bylocation/addpoi-bylocation.component';
+import { POIreportComponent } from './poireport/poireport.component';
+import { LRNumberComponent } from './lr-number/lr-number.component';
+import { DayWiseReportComponent } from './device-report/day-wise-report/day-wise-report.component';
+import { DeviceFuelReportComponent } from './device-report/device-fuel-report/device-fuel-report.component';
+import { SOSAlertComponent } from './sosalert/sosalert.component';
+import { EditDeviceModelComponent } from './edit-device-model/edit-device-model.component';
+import { PoiMasterEditComponent } from './poi-master-edit/poi-master-edit.component';
+import { NotificationSettingComponent } from './notification-setting/notification-setting.component';
+import { DeviceSOSreportComponent } from './device-report/device-sosreport/device-sosreport.component';
+import { SearchFilterPipe } from './search-filter.pipe';
+import { LiveHistoryComponent } from './location/live-history/live-history.component';
+import { DeviceEntryComponent } from './device-entry/device-entry.component';
+import { InventoryListComponent } from './inventory-list/inventory-list.component';
+import { AcreportInfoComponent } from './device-report/ac-report/acreport-info/acreport-info.component';
+import { GeneralSettingsComponent } from './dashboard/general-settings/general-settings.component';
+import { DistributersListComponent } from './distributers-list/distributers-list.component';
+import { AddDistributersComponent } from './add-distributers/add-distributers.component';
+import { CostumerSupportComponent } from './costumer-support/costumer-support.component';
+import { CreateTripComponent } from './location/create-trip/create-trip.component';
+import { TripByDeviceComponent } from './device-report/trip-by-device/trip-by-device.component';
+import { FuelObjectcomponentComponent } from './fuel-objectcomponent/fuel-objectcomponent.component';
+import { TravelPathReportComponent } from './device-report/travel-path-report/travel-path-report.component';
+import { ExpenseComponentComponent } from './device-report/trip-by-device/expense-component/expense-component.component';
+import { ExpenselistComponent } from './device-report/trip-by-device/expenselist/expenselist.component';
+import { ReportSettingComponent } from './add/report-setting/report-setting.component';
+import { NormalCertComponent } from './device/normal-cert/normal-cert.component';
+import { CertOptionComponent } from './device/cert-option/cert-option.component';
+import { IdleReportComponent } from './device-report/idle-report/idle-report.component';
+import { VehicleReminderComponent } from './vehicle-reminder/vehicle-reminder.component';
+
+import { AddReminderComponent } from './vehicle-reminder/add-reminder/add-reminder.component';
+import { ImmobilizeComponent } from './location/immobilize/immobilize.component';
+import { ReportFilterComponent } from './device-report/report-filter/report-filter.component';
+import { ResetPasswordComponent } from './add/reset-password/reset-password.component';
+import { DealerPermissionComponent } from './dealers-info/dealer-permission/dealer-permission.component';
+import { DashboardContentComponent } from './add/dashboard-content/dashboard-content.component';
+import { SharedDevicesComponent } from './const/shared-devices/shared-devices.component';
+import { DailyLogsComponent } from './device-report/daily-logs/daily-logs.component';
+import { VehicleExpensesComponent } from './vehicle-expenses/vehicle-expenses.component';
+import { AddVehicleExpensesComponent } from './vehicle-expenses/add-vehicle-expenses/add-vehicle-expenses.component';
+import { VehicleExpenseDetailComponent } from './vehicle-expenses/vehicle-expense-detail/vehicle-expense-detail.component';
+import { ProductSummaryComponent } from './product-summary/product-summary.component';
+import { AddProductComponent } from './product-summary/add-product/add-product.component';
+import { ProductShopComponent } from './product-shop/product-shop.component';
+import { ProductOverviewComponent } from './product-shop/product-overview/product-overview.component';
+import { PointShareComponent } from './point-share/point-share.component';
+import { MessageUtilityComponent } from './message-utility/message-utility.component';
+import { TripLoadUnloadComponent } from './device-report/trip-load-unload/trip-load-unload.component';
+import { BuyNowComponent } from './product-shop/buy-now/buy-now.component';
+import { BillingInfoComponent } from './product-shop/billing-info/billing-info.component';
+import { OrderSummaryComponent } from './product-shop/order-summary/order-summary.component';
+import { OrderDetailsComponent } from './product-shop/order-details/order-details.component';
+import { DemoVideosComponent } from './const/demo-videos/demo-videos.component';
+import { SafePipe } from './const/safe.pipe';
+import { BillingDashboardComponent } from './billing-dashboard/billing-dashboard.component';
+import { WorkingHourDetailComponent } from './device-report/working-hour-detail/working-hour-detail.component';
+import { WorkingHourReportComponent } from './device-report/working-hour-report/working-hour-report.component';
+import { AccountDetailComponent } from './account-detail/account-detail.component';
+import { TempretureGraphComponent } from './device-report/tempreture-graph/tempreture-graph.component';
+import { CensorDisplayComponent } from './censor-display/censor-display.component';
+import { ManualAddressComponent } from './const/manual-address/manual-address.component';
+import { AddressUpdateComponent } from './address-update/address-update.component';
+import { CmdUIComponent } from './location/cmd-ui/cmd-ui.component';
+import { CommanQueueComponent } from './comman-queue/comman-queue.component';
+import { CommandWindowComponent } from './location/command-window/command-window.component';
+import { AddDeviceComponent } from './location/add-device/add-device.component';
+import { MaintananceComponent } from './device-report/maintanance/maintanance.component';
+import { SubAminComponent } from './sub-amin/sub-amin.component';
+import { AddsubadminComponent } from './sub-amin/addsubadmin/addsubadmin.component';
+import { PlayTripComponent } from './play-trip/play-trip.component';
+import { TempretureReportComponent } from './device-report/tempreture-report/tempreture-report.component';
+import { CommentWindowComponent } from './comment-window/comment-window.component';
+import { DetailComponent } from './device-report/distance-report/details/details.component';
+import { DailyDetailsComponent } from './device-report/daily-details/daily-details.component';
+import { AnnouncementComponent } from './const/announcement/announcement.component';
+import { ReportModule } from './report/report.module';
+import { ReportService } from './report/report.service';
+import { DeviceRenewComponent } from './device-renew/device-renew.component';
+import { ReportScheduleComponent } from './report-schedule/report-schedule.component';
+import { DeviceListComponent } from './device-list/device-list.component';
+import { TollComponent } from './toll/toll.component';
+import { RenewalHistoryComponent } from './dashboard/renewal-history/renewal-history.component';
+import { DeviceInventoryComponent } from './device-inventory/device-inventory.component';
+import { SelectUntrackVehiclesComponent } from './geofencing/select-untrack-vehicles/select-untrack-vehicles.component';
+import { IssueListComponent } from './issue-list/issue-list.component';
+import { TechnicianComponent } from './technician/technician.component';
+import { JobCardComponent } from './job-card/job-card.component';
+import { AddJobCardComponent } from './job-card/add-job-card/add-job-card.component';
+import { RechargeComponent } from './recharge/recharge.component';
+import { AddPlanComponent } from './account-detail/add-plan/add-plan.component';
+import { RenewVehicleComponent } from './dashboard/renew-vehicle/renew-vehicle.component';
+import { RoutePlanComponent } from './route-plan/route-plan.component';
+import { RoutPlanReportComponent } from './rout-plan-report/rout-plan-report.component';
+import { ShowPullDataLinkComponent } from './add/show-pull-data-link/show-pull-data-link.component';
+import { NewTempReportComponent } from './device-report/tempreture-report/new-temp-report/new-temp-report.component';
+import { RouteListComponent } from './route-plan/route-list/route-list.component';
+import { HualtListComponent } from './route-plan/hualt-list/hualt-list.component';
+import { InactiveAdminComponent } from './inactive-admin/inactive-admin.component';
+import { UserFinderComponent } from './user-finder/user-finder.component';
+import { ShowVehiclesComponent } from './show-vehicles/show-vehicles.component';
+import { ViewCustomerDetailsComponent } from './add/view-customer-details/view-customer-details.component';
+import { OtpScreenComponent } from './add/otp-screen/otp-screen.component';
+import { KycApprovalComponent } from './kyc-approval/kyc-approval.component';
+import { FuelPriceComponent } from './fuel-price/fuel-price.component';
+import { AddFuelPriceComponent } from './add-fuel-price/add-fuel-price.component';
+import { ShoRoutePlanComponent } from './location/sho-route-plan/sho-route-plan.component';
+import { EChalanComponent } from './dashboard/e-chalan/e-chalan.component';
+import { TrackedVehiclesComponent } from './vehicle-route/tracked-vehicles/tracked-vehicles.component';
+import { RtoMasterComponent } from './rto-master/rto-master.component';
+import { DeviceKYCComponent } from './kyc-approval/device-kyc/device-kyc.component';
+import { DeviceDocComponent } from './kyc-approval/device-doc/device-doc.component';
+import { NewRoutePlanReportComponent } from './rout-plan-report/new-route-plan-report/new-route-plan-report.component';
+import { ModelMasterComponent } from './model-master/model-master.component';
+import { TrackedUntrackedVehiclesComponent } from './poireport/tracked-untracked-vehicles/tracked-untracked-vehicles.component';
+import { NotificationForCCComponent } from './notification-for-cc/notification-for-cc.component';
+import { AddNewDeviceComponent } from './dashboard/add-new-device/add-new-device.component';
+import { ViewCertificateComponent } from './dashboard/view-certificate/view-certificate.component';
+import { NewEditDeviceComponent } from './dashboard/new-edit-device/new-edit-device.component';
+import { DownloadCertificateComponent } from './dashboard/download-certificate/download-certificate.component';
+// import { DisatanceReportComponent } from './report/disatance-report/disatance-report.component';
+// import { MainComponent } from './report/main/main.component';
+// import { AcReportsComponent } from './report/ac-report/ac-report.component';
+
+
+
+
+
+
+
+
+
+
+
+// import { LiveTrackingComponent } from './live-tracking/live-tracking.component';
+
+
+// import { NgSelectModule } from '@ng-select/ng-select';
+// import { EditDeviceMasterComponent } from './device/src/app/device/edit-device-master/edit-device-master.component';
+
+
+// import { NgCircleProgressModule } from 'ng-circle-progress';
+
+// import { NgCircleProgressModule } from 'ng-circle-progress';
+
+/* const googleMapsCore = AgmCoreModule.forRoot({
+ apiKey : 'AIzaSyDZKxpYMfGSyStS3fLuVqHuM6ZEJWtF1-k',
+}); */
+
+/* const googleMapsCore = AgmCoreModule.forRoot({
+ apiKey : 'AIzaSyDZKxpYMfGSyStS3fLuVqHuM6ZEJWtF1-k',
+}); */
+
+export function createTranslateLoader(http: Http) {
+ return new TranslateStaticLoader(http, './assets/i18n', '.json');
+}
+
+
+@NgModule({
+ declarations: [
+
+ AppComponent,
+ CommunityComponent,
+ LoginComponent,
+ SignupComponent,
+ CountDown,
+ SupportComponent,
+ HomeComponent,
+ AlertComponent,
+ LoginsucComponent,
+ GmapComponent,
+ DashComponent,
+ SoonComponent,
+ AccountComponent,
+ DashboardComponent,
+ DialogContentExampleDialogComponent,
+ GatewayComponent,
+ DetailComponent,
+ RuleComponent,
+ ConstComponent,
+ LocationComponent,
+ EditScheComponent,
+ LoaderServiceComponent,
+ GeofencingComponent,
+ GeofenceAddComponent,
+ GeofancingReportComponent,
+ GeofencingViewComponent,
+ GeofencingView2Component,
+ DeviceReportComponent,
+ DeviceEditComponent,
+ DeviceSpeedReportComponent,
+ DeviceShareComponent,
+ ShareUserComponent,
+ SpeednotifyComponent,
+ ShareLocComponent,
+ AddComponent,
+ ResetpwdComponent,
+ GetdevdetailComponent,
+ IdealReportComponent,
+ SidebarComponent,
+ NotificationComponent,
+ MyaccountComponent,
+ AddCustComponent,
+ IgnReportComponent,
+ SpecDevComponent,
+ AboutUsComponent,
+ ServicesComponent,
+ TripDetailsComponent,
+ SummaryReportComponent,
+ GeofancingReportComponent,
+ OverSpeedComponent,
+ RouteViolationComponent,
+ StoppageReportComponent,
+ IgnitionReportComponent,
+ DistanceReportComponent,
+ AlertReportComponent,
+ TripReportComponent,
+ GroupComponent,
+ AddGroupComponent,
+ DialogDemoComponent,
+ EditGroupComponent,
+ DeleteGroupComponent,
+ AccountDetailComponent,
+ SidemenuFuelComponent,
+ VehicleRouteComponent,
+ RouteSetComponent,
+ ShowRouteComponent,
+ DealersInfoComponent,
+ RouteMappingComponent,
+ RouteMapAddComponent,
+ PointOfIntrestComponent,
+ RouteDeleteComponent,
+ AddDealerComponent,
+ NotificationMasterComponent,
+ EditCostumerComponent,
+ EditDealerComponent,
+ DriversPerformanceReportComponent,
+ TripHistoryComponent,
+ PoiListComponent,
+ ShowCaliberationComponent,
+ VehicleTypeComponent,
+ DriverDetailComponent,
+ DeviceModelComponent,
+ AddEditVehicleTypeComponent,
+ AddDriverComponent,
+ AddDeviceModelComponent,
+ EditRouteMapComponent,
+ POIdetailsComponent,
+ PoiDtlDelComponent,
+ AcReportComponent,
+ FuelReportComponent,
+ PoiMenuComponent,
+ AllMenusComponent,
+ LoadManagementComponent,
+ FuelReportGraphComponent,
+ EditVehicleTypeComponent,
+ UserMasterComponent,
+ DeviceComponent,
+ GpsMasterComponent,
+ CmdPacketMasterComponent,
+ EditDeviceMasterComponent,
+ GpsEditMasterComponent,
+ POIReportComponent,
+ AddpoiBylocationComponent,
+ POIreportComponent,
+ LRNumberComponent,
+ DayWiseReportComponent,
+ DeviceFuelReportComponent,
+ SOSAlertComponent,
+ EditDeviceModelComponent,
+ PoiMasterEditComponent,
+ NotificationSettingComponent,
+ DeviceSOSreportComponent,
+ SearchFilterPipe,
+ LiveHistoryComponent,
+ DeviceEntryComponent,
+ InventoryListComponent,
+ AcreportInfoComponent,
+ GeneralSettingsComponent,
+ DistributersListComponent,
+ AddDistributersComponent,
+ CostumerSupportComponent,
+ CreateTripComponent,
+ TripByDeviceComponent,
+ FuelObjectcomponentComponent,
+ TravelPathReportComponent,
+ ExpenseComponentComponent,
+ ExpenselistComponent,
+ ReportSettingComponent,
+ NormalCertComponent,
+ CertOptionComponent,
+ IdleReportComponent,
+ VehicleReminderComponent,
+ AddReminderComponent,
+ ImmobilizeComponent,
+ ReportFilterComponent,
+ ResetPasswordComponent,
+ DealerPermissionComponent,
+ DashboardContentComponent,
+ SharedDevicesComponent,
+ DailyLogsComponent,
+ VehicleExpensesComponent,
+ AddVehicleExpensesComponent,
+ VehicleExpenseDetailComponent,
+ ProductSummaryComponent,
+ AddProductComponent,
+ ProductShopComponent,
+ ProductOverviewComponent,
+ PointShareComponent,
+ MessageUtilityComponent,
+ TripLoadUnloadComponent,
+ BuyNowComponent,
+ BillingInfoComponent,
+ OrderSummaryComponent,
+ OrderDetailsComponent,
+ DemoVideosComponent,
+ SafePipe,
+ BillingDashboardComponent,
+ WorkingHourReportComponent,
+ WorkingHourDetailComponent,
+ TempretureGraphComponent,
+ CensorDisplayComponent,
+ ManualAddressComponent,
+ AddressUpdateComponent,
+ CmdUIComponent,
+ CommanQueueComponent,
+ CommandWindowComponent,
+ AddDeviceComponent,
+ MaintananceComponent,
+ SubAminComponent,
+ AddsubadminComponent,
+ PlayTripComponent,
+ TempretureReportComponent,
+ CommentWindowComponent,
+ DailyDetailsComponent,
+ DetailsComponent,
+ AnnouncementComponent,
+ DeviceRenewComponent,
+ ReportScheduleComponent,
+ DeviceListComponent,
+ TollComponent,
+ RenewalHistoryComponent,
+ DeviceInventoryComponent,
+ SelectUntrackVehiclesComponent,
+ IssueListComponent,
+ TechnicianComponent,
+ JobCardComponent,
+ AddJobCardComponent,
+ RechargeComponent,
+ AddPlanComponent,
+ RenewVehicleComponent,
+ RoutePlanComponent,
+ RoutPlanReportComponent,
+ ShowPullDataLinkComponent,
+ NewTempReportComponent,
+ RouteListComponent,
+ HualtListComponent,
+ InactiveAdminComponent,
+ UserFinderComponent,
+ ShowVehiclesComponent,
+ ViewCustomerDetailsComponent,
+ OtpScreenComponent,
+ KycApprovalComponent,
+ FuelPriceComponent,
+ AddFuelPriceComponent,
+ ShoRoutePlanComponent,
+ EChalanComponent,
+ TrackedVehiclesComponent,
+ RtoMasterComponent,
+ DeviceKYCComponent,
+ DeviceDocComponent,
+ NewRoutePlanReportComponent,
+ ModelMasterComponent,
+ TrackedUntrackedVehiclesComponent,
+ NotificationForCCComponent,
+ AddNewDeviceComponent,
+ ViewCertificateComponent,
+ NewEditDeviceComponent,
+ DownloadCertificateComponent,
+ // LiveTrackingComponent,
+ // MainComponent,
+ // DisatanceReportComponent,
+ // AcReportsComponent
+
+ ],
+ imports: [
+ /*
+ AgmCoreModule.forRoot({
+ apiKey: 'AIzaSyDZKxpYMfGSyStS3fLuVqHuM6ZEJWtF1-k'
+ }), */
+ // NgCircleProgressModule.forRoot({
+ // // set defaults here
+ // radius: 100,
+ // outerStrokeWidth: 16,
+ // innerStrokeWidth: 8,
+ // outerStrokeColor: "#78C000",
+ // innerStrokeColor: "#C7E596",
+ // animationDuration: 300,
+
+ // }),
+ IfScrollbarsModule,
+ GaugeModule.forRoot(),
+ /* GaugesModule, */
+ DateTimePickerModule ,
+ AngularDateTimePickerModule,
+ BrowserModule,
+ NgbModule.forRoot(),
+ NgxPaginationModule,
+ MDBBootstrapModule.forRoot(),
+ BsDatepickerModule.forRoot(),
+ ExpansionPanelsModule,
+ routes2,
+ Ng2SearchPipeModule,
+ Ng2OrderModule,
+ MomentModule,
+ PasswordStrengthBarModule,
+ DatepickerModule,
+ DragulaModule,
+ routes,
+ ResizableModule,
+ ProgressBarModule,
+ FlashMessagesModule,
+ // NgSelectModule,
+ FormsModule,
+ ReactiveFormsModule,
+ ReCaptchaModule,
+ HttpModule,
+ StormpathModule,
+ NguiPopupModule,
+ /* googleMapsCore, */
+ Ng2DropdownModule,
+ BrowserAnimationsModule,
+ NoopAnimationsModule,
+ MdButtonModule,
+ MdCheckboxModule,
+ MdAutocompleteModule,
+ ChartsModule,
+ FlexLayoutModule,
+ MaterialModule,
+ TranslateModule.forRoot({
+ provide: TranslateLoader,
+ useFactory: (createTranslateLoader),
+ deps: [Http]
+ }),
+
+ FormWizardModule,BrowserModule, ChartsModule,
+ Ng2CarouselamosModule,
+ // GaugeModule.forRoot(),
+ CarouselModule.forRoot(),
+ TimepickerModule.forRoot(),
+ BsDatepickerModule.forRoot(),
+ ReportModule,
+ ModalModule.forRoot()
+
+ ],
+ schemas: [ NO_ERRORS_SCHEMA ],
+ entryComponents:[PoiDtlDelComponent,EditDeviceMasterComponent,AcreportInfoComponent,GpsEditMasterComponent,RenewalHistoryComponent,PoiMenuComponent,ExpenseComponentComponent,
+ AddpoiBylocationComponent,CreateTripComponent,CommentWindowComponent,DetailComponent,DailyDetailsComponent,RenewVehicleComponent,ViewCustomerDetailsComponent,OtpScreenComponent,DeviceDocComponent,TrackedUntrackedVehiclesComponent,DownloadCertificateComponent,
+ AnnouncementComponent,SelectUntrackVehiclesComponent,ExpenselistComponent,AddPlanComponent,AddDriverComponent,ShowPullDataLinkComponent,HualtListComponent,ShoRoutePlanComponent,EChalanComponent,TrackedVehiclesComponent,ViewCertificateComponent,],
+ providers: [/* AuthService , */ AlertService, Data, SimpleTimer,DatainjectionService,ContactService,ReportService,
+ { provide: MD_DIALOG_DATA, useValue: {} },
+ { provide: MdDialogRef, useValue: {} }],
+ exports: [AllMenusComponent],
+ bootstrap: [AppComponent]
+})
+export class AppModule {
+ constructor(){
+ //for raw angular running on 4200
+ var a="http://localhost:3005";
+
+ //for built angular served by backend
+ //var a="";
+ }
+
+ }
diff --git a/src/app/app.router.ts b/src/app/app.router.ts
new file mode 100644
index 0000000..175fa61
--- /dev/null
+++ b/src/app/app.router.ts
@@ -0,0 +1,565 @@
+import { ServicesComponent } from './services/services.component';
+import { AboutUsComponent } from './about-us/about-us.component';
+import { ModuleWithProviders } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+
+import { AppComponent } from './app.component';
+// import { DetailsComponent } from './details/details.component';
+import { RuleComponent } from './rule/rule.component';
+import {AccountComponent} from './account/account.component';
+import {DashComponent} from './dash/dash.component';
+import { CommunityComponent } from './community/community.component';
+import { LoginComponent } from './login/login.component';
+import { SignupComponent } from './signup/signup.component';
+import { SupportComponent } from './support/support.component';
+
+import {GmapComponent} from './gmap/gmap.component';
+import {SoonComponent} from './soon/soon.component';
+import { GatewayComponent } from './gateway/gateway.component';
+import { ConstComponent } from './const/const.component';
+import { LocationComponent } from './location/location.component';
+import { EditScheComponent } from './edit-sche/edit-sche.component';
+import { GeofencingComponent } from './geofencing/geofencing.component';
+import { GeofenceAddComponent } from './geofence-add/geofence-add.component';
+import { GeofencingViewComponent } from './geofencing-view/geofencing-view.component';
+
+import { GeofencingView2Component } from './geofencing-view2/geofencing-view2.component';
+import { DeviceEditComponent } from './dashboard/device-edit/device-edit.component';
+import { ResetpwdComponent } from './resetpwd/resetpwd.component';
+import { GetdevdetailComponent } from './const/getdevdetail/getdevdetail.component';
+import { MyaccountComponent } from './myaccount/myaccount.component';
+import {DashboardComponent} from './dashboard/dashboard.component';
+import {DialogContentExampleDialogComponent} from './dialog-content-example-dialog/dialog-content-example-dialog.component';
+import { DeviceShareComponent } from './dashboard/device-share/device-share.component';
+import { ShareUserComponent } from './dashboard/share-user/share-user.component';
+import { SpeednotifyComponent } from './dashboard/speednotify/speednotify.component';
+import { ShareLocComponent } from './location/share-loc/share-loc.component';
+import { AddComponent } from './add/add.component';
+import { SidebarComponent } from './sidebar/sidebar.component';
+import { NotificationComponent } from './notification/notification.component';
+import { AddCustComponent } from './add-cust/add-cust.component';
+import { SpecDevComponent } from './spec-dev/spec-dev.component';
+import { GroupComponent } from './group/group.component';
+import { AddGroupComponent } from './add-group/add-group.component';
+import { EditGroupComponent } from './edit-group/edit-group.component';
+import { DeleteGroupComponent } from './delete-group/delete-group.component';
+
+import { SidemenuFuelComponent } from './sidemenu-fuel/sidemenu-fuel.component';
+import { VehicleRouteComponent } from './vehicle-route/vehicle-route.component';
+import { RouteSetComponent } from './route-set/route-set.component';
+import { ShowRouteComponent } from './show-route/show-route.component';
+import { DealersInfoComponent } from './dealers-info/dealers-info.component';
+import { RouteMappingComponent } from './route-mapping/route-mapping.component';
+import { RouteMapAddComponent } from './route-map-add/route-map-add.component';
+import { PointOfIntrestComponent } from './point-of-intrest/point-of-intrest.component';
+import { RouteDeleteComponent } from './route-delete/route-delete.component';
+import { AddDealerComponent } from './add-dealer/add-dealer.component';
+import { NotificationMasterComponent } from './notification-master/notification-master.component';
+import { EditCostumerComponent } from './edit-costumer/edit-costumer.component';
+import { EditDealerComponent } from './edit-dealer/edit-dealer.component';
+import { TripHistoryComponent } from './trip-history/trip-history.component';
+import { PoiListComponent } from './poi-list/poi-list.component';
+
+import { ShowCaliberationComponent} from './show-caliberation/show-caliberation.component';
+import {VehicleTypeComponent} from './vehicle-type/vehicle-type.component';
+import { DriverDetailComponent } from './driver-detail/driver-detail.component';
+import { DeviceModelComponent } from './device-model/device-model.component';
+import { AddEditVehicleTypeComponent } from './add-edit-vehicle-type/add-edit-vehicle-type.component';
+import { AddDriverComponent } from './add-driver/add-driver.component';
+import { AddDeviceModelComponent } from './add-device-model/add-device-model.component';
+import { EditRouteMapComponent } from './edit-route-map/edit-route-map.component';
+import { POIdetailsComponent } from './poidetails/poidetails.component';
+import { PoiMenuComponent } from "./poi-menu/poi-menu.component";
+import { LoadManagementComponent } from './load-management/load-management.component';
+import { FuelReportGraphComponent } from './fuel-report-graph/fuel-report-graph.component';
+import { EditVehicleTypeComponent } from './edit-vehicle-type/edit-vehicle-type.component';
+import { UserMasterComponent } from './user-master/user-master.component'
+import { DeviceComponent } from './device/device.component';
+import { GpsMasterComponent } from './gps-master/gps-master.component';
+import { CmdPacketMasterComponent } from './cmd-packet-master/cmd-packet-master.component';
+import { POIreportComponent } from './poireport/poireport.component';
+import { LRNumberComponent } from './lr-number/lr-number.component';
+import { SOSAlertComponent } from './sosalert/sosalert.component';
+import { HomeComponent } from './home/home.component';
+import { EditDeviceModelComponent } from './edit-device-model/edit-device-model.component';
+import { PoiMasterEditComponent } from './poi-master-edit/poi-master-edit.component';
+import { NotificationSettingComponent } from './notification-setting/notification-setting.component';
+import { LiveHistoryComponent } from './location/live-history/live-history.component';
+import { DeviceEntryComponent } from './device-entry/device-entry.component';
+import { InventoryListComponent } from './inventory-list/inventory-list.component';
+import { GeneralSettingsComponent } from './dashboard/general-settings/general-settings.component';
+import { DistributersListComponent } from './distributers-list/distributers-list.component';
+import { AddDistributersComponent } from './add-distributers/add-distributers.component';
+import { CostumerSupportComponent } from './costumer-support/costumer-support.component';
+import { FuelObjectcomponentComponent } from './fuel-objectcomponent/fuel-objectcomponent.component';
+import { ReportSettingComponent } from './add/report-setting/report-setting.component';
+import { NormalCertComponent } from './device/normal-cert/normal-cert.component';
+import { CertOptionComponent } from './device/cert-option/cert-option.component';
+
+import { VehicleReminderComponent } from './vehicle-reminder/vehicle-reminder.component';
+
+import { AddReminderComponent } from './vehicle-reminder/add-reminder/add-reminder.component';
+import { ImmobilizeComponent } from './location/immobilize/immobilize.component';
+import { ResetPasswordComponent } from './add/reset-password/reset-password.component';
+import { DealerPermissionComponent } from './dealers-info/dealer-permission/dealer-permission.component';
+import { DashboardContentComponent } from './add/dashboard-content/dashboard-content.component';
+import { SharedDevicesComponent } from './const/shared-devices/shared-devices.component';
+import { VehicleExpensesComponent } from './vehicle-expenses/vehicle-expenses.component';
+import { AddVehicleExpensesComponent } from './vehicle-expenses/add-vehicle-expenses/add-vehicle-expenses.component';
+import { VehicleExpenseDetailComponent } from './vehicle-expenses/vehicle-expense-detail/vehicle-expense-detail.component';
+import { ProductSummaryComponent } from './product-summary/product-summary.component';
+import { AddProductComponent } from './product-summary/add-product/add-product.component';
+import { ProductShopComponent } from './product-shop/product-shop.component';
+import { ProductOverviewComponent } from './product-shop/product-overview/product-overview.component';
+import { PointShareComponent } from './point-share/point-share.component';
+import { MessageUtilityComponent } from './message-utility/message-utility.component';
+import { BuyNowComponent } from './product-shop/buy-now/buy-now.component';
+import { BillingInfoComponent } from './product-shop/billing-info/billing-info.component';
+import { OrderSummaryComponent } from './product-shop/order-summary/order-summary.component';
+import { OrderDetailsComponent } from './product-shop/order-details/order-details.component';
+import { DemoVideosComponent } from './const/demo-videos/demo-videos.component';
+import { BillingDashboardComponent } from './billing-dashboard/billing-dashboard.component';
+import { AccountDetailComponent } from './account-detail/account-detail.component';
+import { CensorDisplayComponent } from './censor-display/censor-display.component';
+import { ManualAddressComponent } from './const/manual-address/manual-address.component';
+import { AddressUpdateComponent } from './address-update/address-update.component';
+import { CmdUIComponent } from './location/cmd-ui/cmd-ui.component';
+import { CommanQueueComponent } from './comman-queue/comman-queue.component';
+import { CommandWindowComponent } from './location/command-window/command-window.component';
+import { AddDeviceComponent } from './location/add-device/add-device.component';
+import { SubAminComponent } from './sub-amin/sub-amin.component';
+import { AddsubadminComponent } from './sub-amin/addsubadmin/addsubadmin.component';
+import { PlayTripComponent } from './play-trip/play-trip.component';
+import { DetailsComponent } from './details/details.component';
+import { DisatanceReportComponent } from './report/report component/disatance-report/disatance-report.component';
+import { MainComponent } from './report/main/main.component';
+import { AcReportsComponent } from './report/report component/ac-report/ac-report.component';
+import { DailyReportComponent } from './report/report component/daily-report/daily-report.component';
+import { DailyLogssComponent } from './report/report component/daily-logs/daily-logs.component';
+import { DayWiseReportComponent } from './report/report component/day-wise-report/day-wise-report.component';
+import { GeofancingReportComponent } from './report/report component/geofancing-report/geofancing-report.component';
+import { IdleReportComponent } from './report/report component/idle-report/idle-report.component';
+import { IgnitionReportComponent } from './report/report component/ignition-report/ignition-report.component';
+import { TripLoadUnloadComponent } from './report/report component/trip-load-unload/trip-load-unload.component';
+import { OverSpeedComponent } from './report/report component/over-speed/over-speed.component';
+import { POIReportComponent } from './report/report component/poi-report/poi-report.component';
+import { RouteViolationComponent } from './report/report component/route-violation/route-violation.component';
+import { DeviceSpeedReportComponent } from './report/report component/device-speed-report/device-speed-report.component';
+import { SummaryReportComponent } from './report/report component/summary-report/summary-report.component';
+import { StoppageReportComponent } from './report/report component/stoppage-report/stoppage-report.component';
+import { DeviceSOSreportComponent } from './report/report component/device-sosreport/device-sosreport.component';
+import { TripReportComponent } from './report/report component/trip-report/trip-report.component';
+import { TravelPathReportComponent } from './report/report component/travel-path-report/travel-path-report.component';
+import { WorkingHourReportComponent } from './report/report component/working-hour-report/working-hour-report.component';
+import { MaintananceComponent } from './report/report component/maintanance/maintanance.component';
+import { NotificationMastersComponent } from './report/report component/notification-master/notification-master.component';
+import { DriversPerformanceReportComponent } from './report/report component/drivers-performance-report/drivers-performance-report.component';
+import { DeviceRenewComponent } from './device-renew/device-renew.component';
+import { ReportScheduleComponent } from './report-schedule/report-schedule.component';
+import { DeviceFuelReportComponent } from './device-report/device-fuel-report/device-fuel-report.component';
+import { NoReportComponent } from './report/report component/no-report/no-report.component';
+import { StartComponent } from './report/report component/start/start.component';
+import { TempretureReportComponent } from './device-report/tempreture-report/tempreture-report.component';
+import { TempretureGraphComponent } from './device-report/tempreture-graph/tempreture-graph.component';
+import { DeviceListComponent } from './device-list/device-list.component';
+import { TollComponent } from './toll/toll.component';
+import { NewTravelPathReportComponent } from './report/report component/new-travel-path-report/new-travel-path-report.component';
+import { DeviceInventoryComponent } from './device-inventory/device-inventory.component';
+import { IssueListComponent } from './issue-list/issue-list.component';
+import { PushDataReportComponent } from './report/report component/push-data-report/push-data-report.component';
+import { TechnicianComponent } from './technician/technician.component';
+import { JobCardComponent } from './job-card/job-card.component';
+import { AddJobCardComponent } from './job-card/add-job-card/add-job-card.component';
+import { RechargeComponent } from './recharge/recharge.component';
+import { RoutePlanComponent } from './route-plan/route-plan.component';
+import { RoutPlanReportComponent } from './rout-plan-report/rout-plan-report.component';
+import { RouteListComponent } from './route-plan/route-list/route-list.component';
+import { InactiveAdminComponent } from './inactive-admin/inactive-admin.component';
+import { UserFinderComponent } from './user-finder/user-finder.component';
+import { ShowVehiclesComponent } from './show-vehicles/show-vehicles.component';
+import { KycApprovalComponent } from './kyc-approval/kyc-approval.component';
+import { FuelPriceComponent } from './fuel-price/fuel-price.component';
+import { AddFuelPriceComponent } from './add-fuel-price/add-fuel-price.component';
+import { RtoMasterComponent } from './rto-master/rto-master.component';
+import { NewRoutePlanReportComponent } from './rout-plan-report/new-route-plan-report/new-route-plan-report.component';
+import { ModelMasterComponent } from './model-master/model-master.component';
+import { PerformanceReportComponent } from './report/report component/performance-report/performance-report.component';
+import { NotificationForCCComponent } from './notification-for-cc/notification-for-cc.component';
+import { AddNewDeviceComponent } from './dashboard/add-new-device/add-new-device.component';
+
+// -----------------------------------------
+// import { DriversPerformanceReportComponent } from './device-report/drivers-performance-report/drivers-performance-report.component';
+// import { IdealReportComponent } from './device-report/ideal-report/ideal-report.component';
+// import { DeviceSpeedReportComponent } from './device-report/device-speed-report/device-speed-report.component';
+// import { IgnReportComponent } from './device-report/ign-report/ign-report.component';
+// import { TripDetailsComponent } from './device-report/trip-details/trip-details.component';
+// import { SummaryReportComponent } from './device-report/summary-report/summary-report.component';
+// import { GeofancingReportComponent } from './device-report/geofancing-report/geofancing-report.component';
+// import { OverSpeedComponent } from './device-report/over-speed/over-speed.component';
+// import { RouteViolationComponent } from './device-report/route-violation/route-violation.component';
+// import { StoppageReportComponent } from './device-report/stoppage-report/stoppage-report.component';
+// import { IgnitionReportComponent } from './device-report/ignition-report/ignition-report.component';
+// import { DistanceReportComponent } from './device-report/distance-report/distance-report.component';
+// import { AlertReportComponent } from './device-report/alert-report/alert-report.component';
+// import { TripReportComponent } from './device-report/trip-report/trip-report.component';
+// import { POIReportComponent } from './device-report/poi-report/poi-report.component';
+// import { DayWiseReportComponent } from './device-report/day-wise-report/day-wise-report.component';
+// import { AcReportComponent } from './device-report/ac-report/ac-report.component';
+import { FuelReportComponent } from './device-report/fuel-report/fuel-report.component';
+import { NewEditDeviceComponent } from './dashboard/new-edit-device/new-edit-device.component';
+// import { DeviceFuelReportComponent } from './device-report/device-fuel-report/device-fuel-report.component';
+// import { DeviceSOSreportComponent } from './device-report/device-sosreport/device-sosreport.component';
+// import { TripByDeviceComponent } from './device-report/trip-by-device/trip-by-device.component';
+// import { IdleReportComponent } from './device-report/idle-report/idle-report.component';
+// import { TravelPathReportComponent } from './device-report/travel-path-report/travel-path-report.component';
+// import { ExpenseComponentComponent } from './device-report/trip-by-device/expense-component/expense-component.component';
+// import { ExpenselistComponent } from './device-report/trip-by-device/expenselist/expenselist.component';
+// import { WorkingHourReportComponent } from './device-report/working-hour-report/working-hour-report.component';
+// import { ReportFilterComponent } from './device-report/report-filter/report-filter.component';
+// import { TripLoadUnloadComponent } from './device-report/trip-load-unload/trip-load-unload.component';
+// import { MaintananceComponent } from './device-report/maintanance/maintanance.component';
+// import { WorkingHourDetailComponent } from './device-report/working-hour-detail/working-hour-detail.component';
+// import { TempretureGraphComponent } from './device-report/tempreture-graph/tempreture-graph.component';
+// import { TempretureReportComponent } from './device-report/tempreture-report/tempreture-report.component';
+// import { DeviceReportComponent } from './device-report/device-report.component';
+// import { DailyDetailsComponent } from './device-report/daily-details/daily-details.component';
+
+export const router: Routes =[
+ { path: '', redirectTo: 'login', pathMatch: 'full' },
+
+ { path: 'community', component: CommunityComponent },
+ { path: 'rule', component: RuleComponent },
+ { path: 'login', component: LoginComponent },
+ { path: 'home', component: HomeComponent },
+ { path: 'signup', component: SignupComponent },
+ { path: 'support', component: SupportComponent },
+ { path: 'gmap', component: GmapComponent },
+ { path: 'dash', component: DashComponent},
+ { path: 'account', component: AccountComponent},
+ // {path: 'soon', component:SoonComponent},
+ {path: 'details', component:DetailsComponent},
+ {path: 'gateway', component:GatewayComponent},
+ {path: 'const', component:ConstComponent },
+ {path: 'location', component:LocationComponent},
+ {path : 'location/immobilize', component : ImmobilizeComponent},
+ {path: 'dashboard', component:DashboardComponent},
+ {path: 'dashboard/:id', component:DashboardComponent},
+ {path: 'edit-sche', component:EditScheComponent},
+ {path : 'device/certOptioon',component :CertOptionComponent},
+ {path: 'geofencing', component:GeofencingComponent},
+ {path : 'add/reset_password', component : ResetPasswordComponent},
+ {path: 'geofence-add', component:GeofenceAddComponent},
+ {path: 'geofencing-view', component: GeofencingViewComponent},
+ {path: 'geofencing-view2', component: GeofencingView2Component},
+ {path: 'add-device', component:DialogContentExampleDialogComponent},
+ {path: 'dashboard/device-edit', component:DeviceEditComponent},
+
+ {path: 'deealer/dealer_permission', component:DealerPermissionComponent},
+ {path: 'playTrip',component:PlayTripComponent},
+
+ {path : 'device/normal_cert', component : NormalCertComponent},
+ {path : 'add/report_sestting',component : ReportSettingComponent},
+ {path : 'add/dashboard_content', component : DashboardContentComponent},
+ // {path : 'device-report/dailyLogs',component : DailyLogsComponent},
+ {path: 'vehicleExpense',component : VehicleExpensesComponent},
+ {path :'addVehicleExpense', component : AddVehicleExpensesComponent},
+ {path : 'vehExpenseDetail', component : VehicleExpenseDetailComponent},
+ {path: 'dashboard/device-share', component:DeviceShareComponent},
+ {path : 'product-summary', component : ProductSummaryComponent},
+ {path :'product-summary/add_product',component: AddProductComponent},
+ {path : 'product-shop/product-overview', component : ProductOverviewComponent},
+ {path: 'dashboard/share-user', component:ShareUserComponent},
+ {path: 'dashboard/speednotify', component:SpeednotifyComponent},
+ {path: 'location/share-loc', component:ShareLocComponent},
+ {path: 'add', component:AddComponent},
+ {path : 'const/shared_devices',component : SharedDevicesComponent},
+ {path: 'resetpwd', component:ResetpwdComponent},
+ {path: 'const/getdevdetail', component:GetdevdetailComponent},
+ {path: 'sidebar', component:SidebarComponent},
+ {path: 'notification', component:NotificationComponent},
+ {path: 'myaccount', component:MyaccountComponent},
+ {path: 'add-cust',component:AddCustComponent},
+ {path: 'spec-dev', component:SpecDevComponent},
+ {path: 'about-us',component:AboutUsComponent},
+ {path: 'services',component:ServicesComponent},
+ {path:'device-details',component:DetailsComponent},
+ {path: 'location/live-history',component:LiveHistoryComponent},
+ {path:'vehicle/reminder_service',component:VehicleReminderComponent},
+ {path : "vehicle_reminder/add_reminder" , component:AddReminderComponent},
+ {path: 'productShop' , component : ProductShopComponent},
+ {path:'product-shop/buyProduct',component : BuyNowComponent},
+ {path :'product-shop/BillingInfo',component : BillingInfoComponent},
+ {path:"cmdWind",component:CommandWindowComponent},
+ {path : 'orderSummary',component : OrderSummaryComponent},
+ {path: 'orderDetail', component: OrderDetailsComponent},
+ {path : 'demoVideos', component : DemoVideosComponent},
+ {path: 'POI_list',component: POIreportComponent},
+ {path:'manualAddress',component : ManualAddressComponent},
+ {path :'add_device', component: AddDeviceComponent},
+ {path : 'CmdUIComponent',component:CmdUIComponent},
+ {path : 'addreessUpdate',component:AddressUpdateComponent},
+ {path: 'group_view',component: GroupComponent},
+ {path: 'addgroup',component: AddGroupComponent},
+ {path : 'sosalert', component: SOSAlertComponent},
+ {path: 'editgrp',component: EditGroupComponent},
+ {path: 'deleteGrp',component: DeleteGroupComponent},
+ {path : 'commanQueue',component: CommanQueueComponent},
+ {path: 'accountSettings',component: AccountDetailComponent},
+ {path: 'notifSettings',component: NotificationSettingComponent},
+ {path : 'PointShareComponent',component : PointShareComponent},
+ {path: 'messageUtility',component : MessageUtilityComponent},
+ {path: 'censor',component : CensorDisplayComponent},
+ // {path : 'live',component : LiveTrackingComponent},
+ {path: 'fuelComp',component: SidemenuFuelComponent},
+ {path: 'vehicleRoute',component: VehicleRouteComponent},
+ {path: 'setRoute',component: RouteSetComponent},
+ {path: 'viewRoute',component: ShowRouteComponent},
+ {path: 'dealerInfo',component: DealersInfoComponent},
+ {path: 'routeMapping',component: RouteMappingComponent},
+ {path: 'editrouteMap',component: EditRouteMapComponent},
+ {path : 'suAdmin', component : SubAminComponent},
+ {path: 'subAdmin/addSubAdmin',component:AddsubadminComponent},
+ {path: 'addRouteMap',component: RouteMapAddComponent},
+ {path: 'Point_Of_Intrest',component:PointOfIntrestComponent},
+ {path: 'POI_master_edit',component:PoiMasterEditComponent},
+ {path : 'cus_support', component : CostumerSupportComponent},
+
+ {path: 'routeDelete',component:RouteDeleteComponent},
+ {path: 'addDealer',component:AddDealerComponent},
+ {path: 'distributersList', component : DistributersListComponent},
+ {path : 'addDistributers', component : AddDistributersComponent},
+ {path: 'notifications',component:NotificationMasterComponent},
+ {path: 'edit-cust',component:EditCostumerComponent},
+ {path: 'edit-dealer',component:EditDealerComponent},
+ {path: 'tripHistory',component:TripHistoryComponent},
+ {path: 'fuelobj',component:FuelObjectcomponentComponent},
+ {path: 'poiList',component:PoiListComponent},
+ {path: 'loadManagement',component:LoadManagementComponent},
+ {path: 'lrinput',component:LRNumberComponent},
+
+ {path: 'showCaliberation',component:ShowCaliberationComponent},//----path
+ {path: 'VehicleType',component:VehicleTypeComponent},
+ {path: 'driverdetail',component:DriverDetailComponent},//path
+ {path: 'deviceModel',component:DeviceModelComponent},//path
+ {path: 'billingDashboard',component : BillingDashboardComponent},
+ {path : 'generalSetting', component : GeneralSettingsComponent},
+ {path: 'addEditVehicleType',component:AddEditVehicleTypeComponent},
+ {path: 'addDriver',component:AddDriverComponent},
+ {path: 'addDeviceModel',component:AddDeviceModelComponent},
+ {path: 'poilist',component:POIdetailsComponent},
+ {path: 'poimenu',component:PoiMenuComponent},
+ {path: 'fuel_Report',component:FuelReportGraphComponent},
+ {path: 'editVehicle_type',component:EditVehicleTypeComponent},
+ {path: 'editDeviceModel',component:EditDeviceModelComponent},
+ {path: 'userLogs',component:UserMasterComponent},
+ {path: 'deviceMaster',component:DeviceComponent},
+ {path: 'gpsMaster',component:GpsMasterComponent},
+ {path: 'cmdMaster',component:CmdPacketMasterComponent},
+ {path : 'deviceEntry', component : DeviceEntryComponent},
+ {path : 'Inventorylist', component : InventoryListComponent},
+ {path : 'RenewReport', component : DeviceRenewComponent},
+ {path : 'report-schedule', component : ReportScheduleComponent},
+
+ // --------------------OLD--------------------------/
+ // {path: 'device-report/tripsDetails',component:TripDetailsComponent},
+ // {path : 'device-report/tripexpense',component : ExpenseComponentComponent},
+ // {path: 'device-report/device-speed-report', component:DeviceSpeedReportComponent},
+ // {path:'daily-details',component:DailyDetailsComponent},
+ // {path: 'device-report', component:DeviceReportComponent},
+ // {path : 'device-report/expenseList',component : ExpenselistComponent},
+ // {path: 'device-report/ideal-report', component: IdealReportComponent },
+ // {path: 'device-report/ign-report', component:IgnReportComponent},
+ // {path : 'device-report/idle-report', component : IdleReportComponent},
+ // {path : 'workhourReport', component : WorkingHourReportComponent},
+ // {path : 'work_detail', component : WorkingHourDetailComponent},
+ // {path: 'device-report/devicesosReport',component:DeviceSOSreportComponent},
+ // {path: 'device-report/summary-report',component:SummaryReportComponent},
+ // {path: 'device-report/daywise-report',component:DayWiseReportComponent},
+ {path: 'device-report/dev-fuel-report',component:DeviceFuelReportComponent},
+ // {path: 'device-report/geofancing',component:GeofancingReportComponent},
+ // {path: 'device-report/overspeed',component: OverSpeedComponent},
+ // {path: 'device-report/routeViolation',component: RouteViolationComponent},
+ // {path: 'device-report/stoppage_report',component: StoppageReportComponent},
+ // {path: 'device-report/ignition_report',component: IgnitionReportComponent},
+ // {path: 'device-report/distance_report',component: DistanceReportComponent},
+ // {path: 'device-report/alert_report',component: AlertReportComponent},
+ // {path: 'device-report/trip_report',component: TripReportComponent},
+ // {path: 'device-report/POI_report',component: POIReportComponent},
+ // {path: 'device-report/deviceTrip',component: TripByDeviceComponent},
+ // {path: 'report_filter',component: ReportFilterComponent},
+ // {path: 'device-report/ac_report',component: AcReportComponent},
+ // {path: 'device-report/tripLoadUnload',component: TripLoadUnloadComponent},
+ // {path : 'device-report/travel_path' ,component : TravelPathReportComponent},
+ // // {path : 'device-report/ac_report/info',component:AcreportInfoComponent},
+ {path: 'device-report/fuel_report',component: FuelReportComponent},
+ {path : 'device-report/temp_report', component : TempretureReportComponent},
+ // {path: 'device-report/Driver-performance',component:DriversPerformanceReportComponent},
+ {path : 'device-report/tempGraph',component : TempretureGraphComponent},
+ // {path: 'maintananceReport',component: MaintananceComponent},
+
+ //--------------------------------
+ {path : 'deviceList',component : DeviceListComponent},
+ {path : 'toll',component : TollComponent},
+ {path : 'deviceInventory',component : DeviceInventoryComponent},
+ {path : 'technician',component : TechnicianComponent},
+ {path : 'JobCard',component : JobCardComponent},
+ {path : 'JobCardAdd',component : AddJobCardComponent},
+ {
+ path: 'reports',
+ component: MainComponent, // this is the component with the in the template
+ // loadChildren: () => import('./report/report.module').then(m => m.ReportModule),
+ children: [
+ {
+ path: 'ac_report', // child route path
+ component: AcReportsComponent,
+ },
+ {
+ path: 'distance_report', // child route path
+ component: DisatanceReportComponent,
+ },
+ {
+ path: 'daily_report', // child route path
+ component: DailyReportComponent,
+ },
+ {
+ path: 'daily_logs',
+ component: DailyLogssComponent,
+ },
+ {
+ path: 'daywise_report',
+ component: DayWiseReportComponent,
+ },
+ {
+ path: 'geofence_report',
+ component: GeofancingReportComponent,
+ },
+ {
+ path: 'idle_report',
+ component: IdleReportComponent,
+ },
+ {
+ path: 'ignition_report',
+ component: IgnitionReportComponent,
+ },
+ {
+ path: 'loading_unloading_trip',
+ component: TripLoadUnloadComponent,
+ },
+ {
+ path: 'overspeed_report',
+ component: OverSpeedComponent,
+ },
+ {
+ path: 'poi_report',
+ component: POIReportComponent,
+ },
+ {
+ path: 'route_violation_report',
+ component: RouteViolationComponent,
+ },
+ {
+ path: 'speed_variation',
+ component: DeviceSpeedReportComponent,
+ },
+ {
+ path: 'summary_report',
+ component: SummaryReportComponent,
+ },
+ {
+ path: 'stoppage_report',
+ component: StoppageReportComponent,
+ },
+ {
+ path: 'sos_report',
+ component: DeviceSOSreportComponent,
+ },
+ {
+ path: 'trip_report',
+ component: TripReportComponent,
+ },
+ {
+ path: 'travel_path_report',
+ component: NewTravelPathReportComponent,
+ },
+ {
+ path: 'working_hours_report',
+ component: WorkingHourReportComponent,
+ },
+ {
+ path: 'maintanance_report',
+ component: MaintananceComponent,
+ },
+ {
+ path: 'notification_master',
+ component: NotificationMastersComponent,
+ },
+ {
+ path: 'driver_performance_report',
+ component: DriversPerformanceReportComponent,
+ },
+ {
+ path: 'no-report',
+ component: NoReportComponent,
+ },
+ {
+ path: 'start',
+ component: StartComponent,
+ },
+ {
+ path: 'dataPushReport',
+ component: PushDataReportComponent,
+ },
+ {path:"performanceReport",component:PerformanceReportComponent},
+
+ // AC_report','daily_report','daily_logs','dayWiseReport','distance_report','geofence_report','idle_report',
+ // 'ignition_report','loadunloadTrip','over_speed','poi_report','route_violation_report','speed_variation',
+ // 'summary_report','stoppage_report','device_sos_report',
+ // 'trip_report','travel_path-report','working_hours_report','maintanance_report'notification_master Driver_performance
+ ],
+ },
+ {
+ path:'IEMI_Finder',component:SoonComponent
+ },
+ {
+ path:'USER_Finder',component:UserFinderComponent
+ },
+ {
+ path:'issueList',component:IssueListComponent
+ },
+ {
+ path:'recharge',component:RechargeComponent
+ },
+ {
+ path:'inactiveAdmins',component:InactiveAdminComponent
+ },
+ {
+ path:'routePlan',component:RouteListComponent
+ },
+ {
+ path:'addRoutePlan',component:RoutePlanComponent
+ },
+ {
+ path:'routePlanReport',component:RoutPlanReportComponent
+ },
+ {
+ path:'ViewVehicle',component:ShowVehiclesComponent
+ },
+ {
+ path:"add_newDevice",component:AddNewDeviceComponent
+ },
+
+ {path:'KycApproval',component:KycApprovalComponent},
+ {path:'NotificationForCC',component:NotificationForCCComponent},
+ {path:'FuelPrice',component:FuelPriceComponent},
+ {path:'addFuelPrice',component:AddFuelPriceComponent},
+ {path:'RTO_Master',component:RtoMasterComponent},
+ // {path:'routePlanReportNew',component:NewRoutePlanReportComponent},
+ {path:'routePlanReportNew',component:RoutPlanReportComponent},
+ {path:'ModelMaster',component:ModelMasterComponent},
+ {path:"editDevice",component:NewEditDeviceComponent},
+ {path: '**', redirectTo: 'login', pathMatch: 'full'},
+
+];
+
+export const routes: ModuleWithProviders = RouterModule.forRoot(router);
+
diff --git a/src/app/billing-dashboard/billing-dashboard.component.html b/src/app/billing-dashboard/billing-dashboard.component.html
new file mode 100644
index 0000000..1871718
--- /dev/null
+++ b/src/app/billing-dashboard/billing-dashboard.component.html
@@ -0,0 +1,46 @@
+
+
+
+
+
{{'BILLING DETAIL' | translate}}
+
+
+
+
+
+
+
+
+
+
Loading…
+
+
+
+
+ Transection ID
+ Distrubuter Name
+ Billing Date
+ No. of Device
+ Amount Paid
+ Rate
+ Status
+ Billing Type
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/billing-dashboard/billing-dashboard.component.scss b/src/app/billing-dashboard/billing-dashboard.component.scss
new file mode 100644
index 0000000..b616a70
--- /dev/null
+++ b/src/app/billing-dashboard/billing-dashboard.component.scss
@@ -0,0 +1,90 @@
+
+
+.topDiv{
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+ }
+
+ .rowStyle{
+ // margin: 5px;
+ // background: white;
+ height: 84vh;
+ // box-shadow: 3px 1px 5px 0px #b2b0ae;
+ }
+
+ #deviceTable input {
+ border-radius: 5px;
+ }
+
+ ::-webkit-scrollbar {
+ width: 10px;
+ }
+
+ /* Track */
+ ::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+ }
+
+ /* Handle */
+ ::-webkit-scrollbar-thumb {
+ // background: rgb(74, 118, 184);
+ background: #868e96;
+ }
+
+ /* Handle on hover */
+ ::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ }
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+ }
+
+ #toast #img{
+ width: 250px;
+ height: s50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+ }
+ #toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ #toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+ }
\ No newline at end of file
diff --git a/src/app/billing-dashboard/billing-dashboard.component.spec.ts b/src/app/billing-dashboard/billing-dashboard.component.spec.ts
new file mode 100644
index 0000000..feca6de
--- /dev/null
+++ b/src/app/billing-dashboard/billing-dashboard.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { BillingDashboardComponent } from './billing-dashboard.component';
+
+describe('BillingDashboardComponent', () => {
+ let component: BillingDashboardComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ BillingDashboardComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(BillingDashboardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/billing-dashboard/billing-dashboard.component.ts b/src/app/billing-dashboard/billing-dashboard.component.ts
new file mode 100644
index 0000000..bf4aeec
--- /dev/null
+++ b/src/app/billing-dashboard/billing-dashboard.component.ts
@@ -0,0 +1,374 @@
+import { Component, OnInit } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import { Params,Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+
+declare var google: any;
+declare var $:any;
+declare var swal:any;
+declare var html2canvas:any;
+declare var pdfMake :any ;
+import * as moment from 'moment';
+import { ContactService } from '../contact.service';
+import { environment } from '../../environments/environment';
+
+
+@Component({
+ selector: 'app-billing-dashboard',
+ templateUrl: './billing-dashboard.component.html',
+ styleUrls: ['./billing-dashboard.component.scss']
+})
+export class BillingDashboardComponent implements OnInit {
+ ignition_data: any =[];
+ fs : any;
+ ls : any;
+ emailid : any;
+ date1 = new Date();
+
+ before:any;
+ or : any;
+ useridd :any;
+ time :any;
+ device_data:any;
+ devicess:any;
+ final:any;
+ custtype:any;
+ cust:boolean=false;
+ Load : Boolean = false;
+ date : any;
+ devicesss:any;
+ mb:any;
+ logoutbut:boolean;
+ dealer:boolean;
+ text:any;
+ option:any;
+ finall:any;
+ Fromdate:any;
+ todate:any;
+ options=[];
+ logo:any;
+ superAdmin:Boolean = false;
+ dev_url = environment.hostUrl;
+ t:any;
+ dataSelect:any;
+ errorMsg: any;
+ errorDialog: boolean=false;
+ searchText:any;
+tabelObj:any;
+ tableFlag: boolean=true;
+ identifier : String = "billing_detail";
+ stoppage_data:any;
+ arrival_time:any;
+ departure_time:any;
+ report_to_show =[];
+ Durations:any;
+ address_show:any;
+ start_add_lat:any;
+ start_add_long:any;
+ uId:any;
+ vName:any;
+ deviceArr = [];
+ from_date: any;
+ data_descip: string;
+
+ constructor(private contactService: ContactService,private router: Router,public dialog: MdDialog) {
+
+
+ }
+
+ ngOnInit() {
+ this.t = document.getElementById("download");
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ var fd = new Date();
+ this.from_date = new Date(fd.setDate(1));
+ console.log(this.from_date);
+ var pdate = moment(fd).endOf('month').format('YYYY-MM-DD hh:mm');
+ this.todate = new Date(pdate);
+ this.testTable();
+ }
+
+ tab:any;
+ optionVal:any;
+exportExcel()
+{
+
+ var tab_text="";
+ var textRange; var j=0;
+ var table = $('#deviceTable').clone();
+ table[0].querySelector("thead").remove();
+ table[0].prepend($(".dataTable thead").clone()[0]);
+ this.tab = table[0];//document.getElementById('deviceTable'); // id of table
+
+ for(j = 0 ; j < this.tab.rows.length ; j++)
+ {
+ tab_text=tab_text+this.tab.rows[j].innerHTML+" ";
+
+ }
+
+ tab_text=tab_text+"
";
+
+ tab_text= tab_text.replace(/ ]*>|<\/input>/gi, ""); // reomves input params
+
+ var ua = window.navigator.userAgent;
+ var msie = ua.indexOf("MSIE ");
+
+ var sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
+
+ return (sa);
+}
+
+userArr:any;
+billingStauts :any;
+billingType :any;
+getReport(event){
+ console.log("inside function",event);
+ if(event == 'getExcel'){
+ this.exportExcel();
+ }else{
+ var userId: any;
+ var tpdata = event ;
+ var that = this;
+ var fd = new Date(event.date);
+ this.from_date = new Date(fd.setDate(1));
+ var pdate = moment(fd).endOf('month').format('YYYY-MM-DD hh:mm');
+ this.todate = new Date(pdate);
+ console.log(this.todate);
+
+ userId= event.user;
+ this.billingStauts = event.status[0];
+ this.billingType = event.type[0]
+ this.userArr = userId[0];
+ console.log(this.billingStauts,this.billingType,this.userArr,this.from_date,this.todate);
+ this.tabelObj.ajax.reload();
+
+ }
+
+}
+
+testTable() {
+ const that = this;
+ console.log("inside function");
+ $(document).ready(function() {
+ that.tabelObj = $('#deviceTable').DataTable({
+ // dom: 'Bfrtip',
+ // buttons: [
+ // 'copy', 'csv', 'excel', 'pdf', 'print'
+ // ] ,
+ "processing": true,
+ "searching": true,
+ pagingType: 'full_numbers',
+ pageLength: 25,
+ serverSide: true,
+ "scrollY":'65vh',
+ "scrollCollapse": true,
+ order: [[0, 'asc']],
+ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ ajax: (dataTablesParameters,callback) => {
+ dataTablesParameters.op = {};
+ dataTablesParameters.select = [];
+ dataTablesParameters.find = {};
+ that.Load = true;
+
+ dataTablesParameters.columns = [
+ {data : '_id', "orderable": "true" },
+ {data : "user"} ,
+ { data: "user.first_name" },
+ { data: "user.last_name" },
+ { data: "billing_type" },
+ { data: "total_Amount" },
+ { data: "GST" },
+ { data: "Status" },
+ { data: "Rate" },
+ { data: "Number_of_Devices" },
+ { data: "billing_Date" },
+ ]
+ console.log(that.todate);
+
+
+ // if (that.from_date) {
+ // dataTablesParameters.find['created_on'] = dataTablesParameters.find['created_on'] ? dataTablesParameters.find['created_on'] : {};
+ // dataTablesParameters.find['created_on']['$gte'] = {
+ // _eval: 'date',
+ // value: new Date(that.from_date).toISOString()
+ // }
+ // };
+
+ // if (that.todate) {
+ // dataTablesParameters.find['created_on'] = dataTablesParameters.find['created_on'] ? dataTablesParameters.find['created_on'] : {};
+ // dataTablesParameters.find['created_on']['$lte'] = {
+ // _eval: 'date',
+ // value: new Date(that.todate).toISOString()
+ // };
+ // }
+
+
+
+ if(that.userArr){
+ dataTablesParameters.find.user = that.userArr;
+ }
+ if(that.billingType){
+ dataTablesParameters.find.billing_type = that.billingType;
+ }
+ if(that.billingStauts){
+
+ dataTablesParameters.find.Status = that.billingStauts;
+
+ }
+ console.log(dataTablesParameters);
+
+ var suburl = "";
+ suburl += "/billing/getBillingDetail";
+ that.contactService.post(suburl, dataTablesParameters).subscribe(resp => {
+ that.Load = false;
+ callback(resp);
+
+ }, err => {
+ that.Load = false;
+ callback({data:[]});
+ console.log(err);
+
+ });
+
+
+ },
+ "rowCallback": function(row: Node, data: any | Object, index: number){
+ $('#changeStatus', row).bind('click', () => {
+ console.log(data);
+ swal("Are you sure ?", "Do you want to change payment status ?").then((ans)=>{
+ console.log(ans);
+ that.changeStatus(data);
+ },err=>{
+ console.log(err);
+ });
+
+ });
+ },
+ "columns": [
+ {
+ "data": "_id",
+ "visible": false,
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+ {
+ "data": "user",
+ render: function(data, type, row) {
+ console.log(row);
+ var fName = row.user?row.user.first_name:'' ;
+ var lName = row.user?row.user.last_name:''
+ return fName + ' ' + lName;
+ }
+ },
+ {
+ "data": "billing_Date",
+ render: function(data, type, row) {
+ var billDate = new Date(data);
+ return data ? (moment(billDate).format('LL')) : "";
+
+ }
+ },
+ {
+ "data": "Number_of_Devices",
+ render: function(data, type, row) {
+ return data?data:'';
+ }
+ },
+ {
+ "data": "total_Amount",
+ render: function(data, type, row) {
+ return data?data:0;
+
+ }
+ },
+
+
+ {
+ "data": "Rate",
+ "defaultContent": "_id",
+ render: function(data, type, row) {
+ return data;
+ }
+ } ,
+ {
+ "data": "Status",
+ "defaultContent": "_id",
+ render: function(data, type, row) {
+ var btnclr = "white";
+ if(data === 'Pending'){
+ btnclr = "red";
+
+ } else{
+ btnclr = "green";
+ }
+ return ''+data+' '
+ // return data?data:'';
+ }
+ } ,
+ {
+ "data": "billing_type",
+ "defaultContent": "_id",
+ render: function(data, type, row) {
+ return data?data:'';
+ }
+ }
+ // { data: "billing_type" },
+
+ ],
+ // "columnDefs": [
+ // { className: "dt-body-left", "targets": [ 0,1,2,3 ] },
+ // {
+ // "targets": '_all',
+ // "createdCell": function (td, cellData, rowData, row, col) {
+ // $(td).css('padding', '18px')
+ // }
+ // } ,
+ // { "width": "10px", "targets": 0 },
+ // { "width": "40px", "targets": 1 },
+ // { "width": "100px", "targets": 2 },
+ // { "width": "70px", "targets": 3 },
+
+ // ]
+ });
+
+ });
+
+}
+
+changeStatus(data){
+ console.log(data);
+ var statusVal =(data.Status === "Pending")?'Paid': 'Pending';
+ var payload = {
+ docId : data._id,
+ status : statusVal
+ }
+ console.log(payload);
+
+ this.contactService.changeBillingStauts(payload).subscribe(res=>{
+ this.data_descip = "Payment Status Changed";
+ launch_toast();
+ this.tabelObj.draw();
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+
+
+ },err=>{
+
+ })
+
+}
+
+
+
+}
diff --git a/src/app/censor-display/censor-display.component.html b/src/app/censor-display/censor-display.component.html
new file mode 100644
index 0000000..9b9167b
--- /dev/null
+++ b/src/app/censor-display/censor-display.component.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
{{'Sensor Detail' | translate}}
+
+
+
+
diff --git a/src/app/censor-display/censor-display.component.scss b/src/app/censor-display/censor-display.component.scss
new file mode 100644
index 0000000..e980949
--- /dev/null
+++ b/src/app/censor-display/censor-display.component.scss
@@ -0,0 +1,90 @@
+
+
+.topDiv{
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+ }
+
+ .rowStyle{
+ // margin: 5px;
+ // background: white;
+ height: 84vh;
+ // box-shadow: 3px 1px 5px 0px #b2b0ae;
+ }
+
+ #deviceTable input {
+ border-radius: 5px;
+ }
+
+ ::-webkit-scrollbar {
+ width: 10px;
+ }
+
+ /* Track */
+ ::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+ }
+
+ /* Handle */
+ ::-webkit-scrollbar-thumb {
+ // background: rgb(74, 118, 184);
+ background: #868e96;
+ }
+
+ /* Handle on hover */
+ ::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ }
+
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 150px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+ }
+ #toast #img{
+ width: 150px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+ }
+ #toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ #toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+ }
\ No newline at end of file
diff --git a/src/app/censor-display/censor-display.component.spec.ts b/src/app/censor-display/censor-display.component.spec.ts
new file mode 100644
index 0000000..18a5843
--- /dev/null
+++ b/src/app/censor-display/censor-display.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CensorDisplayComponent } from './censor-display.component';
+
+describe('CensorDisplayComponent', () => {
+ let component: CensorDisplayComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CensorDisplayComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CensorDisplayComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/censor-display/censor-display.component.ts b/src/app/censor-display/censor-display.component.ts
new file mode 100644
index 0000000..deef132
--- /dev/null
+++ b/src/app/censor-display/censor-display.component.ts
@@ -0,0 +1,154 @@
+import { Component, OnInit } from '@angular/core';
+import { MdDialog, MdSnackBar } from '@angular/material';
+import { ContactService } from '../contact.service';
+declare var google : any;
+
+@Component({
+ selector: 'app-censor-display',
+ templateUrl: './censor-display.component.html',
+ styleUrls: ['./censor-display.component.scss']
+})
+export class CensorDisplayComponent implements OnInit {
+ identifier : String = "censor_detail";
+ Load : boolean = false;
+ superAdmin: any;
+ emailid: any;
+ useridd: any;
+ custtype: any;
+ data_descip: string;
+ censorType:any=[];
+ tempreture1: any=0;
+ tempreture2: any=0;
+ gaugeLabel= false;
+ constructor(public dialog: MdDialog,public snackBar: MdSnackBar,private contactService: ContactService) { }
+
+ ngOnInit() {
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+
+
+ }
+
+
+ deviceArr = [];
+ Fromdate = new Date() ;
+ todate = new Date();
+
+
+ getReport(event){
+ var deviceId: any;
+ var tpdata = event ;
+ var that = this;
+
+ console.log(event);
+ if(event.device.length==0){
+ deviceId=[];
+ }else{
+ deviceId= event.device;
+ }
+ this.deviceArr = deviceId;
+
+ this.getExpenses()
+}
+
+getExpenses(){
+
+ if(this.deviceArr.length === 0){
+ this.data_descip = "Please Select Device";
+ return launch_toast() ;
+ }
+
+ var getExpensesPayload = {
+ user : this.useridd,
+ vehicle : this.deviceArr[0]
+ }
+
+ this.tempreture1=0
+ this.tempreture2=0
+ console.log('getExpensesPayload',getExpensesPayload);
+ this.censorType = [];
+ this.contactService.getdevById(this.deviceArr[0]).subscribe(res=>{
+ console.log('resresresresres=>',JSON.parse(res['_body']));
+ var devObj = JSON.parse(res['_body']);
+ // (parseFloat(temp)/10).toFixed(2)
+ this.tempreture1 = Number(devObj.temp?(parseFloat(devObj.temp)/10).toFixed(2) : 0 );
+ this.tempreture2 = Number(devObj.temp1?(parseFloat(devObj.temp1)/10).toFixed(2) : 0) ;
+ console.log(this.tempreture2,(this.tempreture1));
+ var that = this ;
+ // setTimeout(function(){
+ this.gaugeLabel=true;
+ google.charts.load('current', {'packages':['gauge']});
+ google.charts.setOnLoadCallback(drawChart);
+ // }, 5000);
+
+ },err=>{
+ this.data_descip = "Internal Server Error";
+ return launch_toast() ;
+ })
+ // mainUrl + "expense/expensebycateogry?user=" + this.islogin._id + "&fdate=" + new Date(this.datetimeStart).toISOString() + "&tdate=" + new Date(this.datetimeEnd).toISOString() + "&vehicle=" + this._vehId._id;
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+ var that=this;
+ function drawChart() {
+
+
+
+ var data = google.visualization.arrayToDataTable([
+ ['Label', 'Value'],
+ ['Temp 1', that.tempreture1],
+
+ ]);
+
+ var options = {
+ width: 400, height: 120,
+ redFrom: 90, redTo: 100,
+ yellowFrom:75, yellowTo: 90,
+ minorTicks: 5
+ };
+
+ var data_1 = google.visualization.arrayToDataTable([
+ ['Label', 'Value'],
+ ['Temp 2', that.tempreture2],
+ ]);
+
+ var options_1 = {
+ width: 400, height: 120,
+ redFrom: 90, redTo: 100,
+ yellowFrom:75, yellowTo: 90,
+ minorTicks: 5
+ };
+
+ var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
+ var chart_1 = new google.visualization.Gauge(document.getElementById('chart_div_1'));
+
+ chart.draw(data, options);
+ chart_1.draw(data_1, options_1);
+
+ // setInterval(function() {
+ // data.setValue(0, 1, 40 + Math.round(60 * Math.random()));
+ // chart.draw(data, options);
+ // }, 13000);
+ // setInterval(function() {
+ // data.setValue(1, 1, 40 + Math.round(60 * Math.random()));
+ // chart.draw(data, options);
+ // }, 5000);
+ // setInterval(function() {
+ // data.setValue(2, 1, 60 + Math.round(20 * Math.random()));
+ // chart.draw(data, options);
+ // }, 26000);
+}
+}
+
+
+
+
+
+}
diff --git a/src/app/cmd-packet-master/cmd-packet-master.component.html b/src/app/cmd-packet-master/cmd-packet-master.component.html
new file mode 100644
index 0000000..f07544a
--- /dev/null
+++ b/src/app/cmd-packet-master/cmd-packet-master.component.html
@@ -0,0 +1,49 @@
+
+
+
{{'CMD PACKETS' | translate}}
+
+
+
+
+ {{'Device ID' | translate}}
+ {{'Protocol ID' | translate}}
+ {{'Command' | translate}}
+ {{'Created on' | translate}}
+ {{'ACC' | translate}}
+ {{'Battery Status' | translate}}
+ {{'GSM Signal' | translate}}
+
+
+
+
+
+
+
diff --git a/src/app/cmd-packet-master/cmd-packet-master.component.scss b/src/app/cmd-packet-master/cmd-packet-master.component.scss
new file mode 100644
index 0000000..e1d088b
--- /dev/null
+++ b/src/app/cmd-packet-master/cmd-packet-master.component.scss
@@ -0,0 +1,21 @@
+.headStyle{
+ text-align: center;
+ font-size: 22px;
+ font-weight: 500;
+ margin-top: 10px;
+ color: #6b6a6a;
+ }
+
+ .InputStyle{
+ padding: 10px;
+ background-color: #efefef;
+ margin-bottom: 10px;
+ .selecStyle{
+ display: inherit;
+ width: 56%;
+ padding-left: 16px;
+ margin-left: 50px;
+
+ border-radius: 10px;
+ }
+ }
diff --git a/src/app/cmd-packet-master/cmd-packet-master.component.spec.ts b/src/app/cmd-packet-master/cmd-packet-master.component.spec.ts
new file mode 100644
index 0000000..c465beb
--- /dev/null
+++ b/src/app/cmd-packet-master/cmd-packet-master.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CmdPacketMasterComponent } from './cmd-packet-master.component';
+
+describe('CmdPacketMasterComponent', () => {
+ let component: CmdPacketMasterComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CmdPacketMasterComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CmdPacketMasterComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/cmd-packet-master/cmd-packet-master.component.ts b/src/app/cmd-packet-master/cmd-packet-master.component.ts
new file mode 100644
index 0000000..73f85bb
--- /dev/null
+++ b/src/app/cmd-packet-master/cmd-packet-master.component.ts
@@ -0,0 +1,227 @@
+import { Component, OnInit } from '@angular/core';
+import { ContactService } from './../contact.service';
+
+declare var $: any, DataTable: any;
+import * as moment from 'moment';
+@Component({
+ selector: 'app-cmd-packet-master',
+ templateUrl: './cmd-packet-master.component.html',
+ styleUrls: ['./cmd-packet-master.component.scss']
+})
+export class CmdPacketMasterComponent implements OnInit {
+ option: any;
+ Fromdate = new Date();
+ todate = new Date();
+ tabelObj: any;
+ emailid: any;
+ useridd: any;
+ supadm: any;
+ constructor(public contactService: ContactService) {
+ this.Fromdate.setHours(0, 0, 0);
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.supadm = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+
+ }
+
+ ngOnInit() {
+
+ this.testTable();
+ this.getAllDevice();
+ }
+
+ callfunction(): void {
+ this.tabelObj.draw();
+ }
+
+
+ testTable() {
+ const that = this;
+
+ $(document).ready(function () {
+ that.tabelObj = $('#cmdTable').DataTable({
+ "serverSide": true,
+ "processing": true,
+ "searching": false,
+ ajax: (dataTablesParameters: any, callback) => {
+
+ dataTablesParameters.op = {};
+ dataTablesParameters.select = [];
+ dataTablesParameters.find = {};
+ // dataTablesParameters.order = [{column: 3, dir: "desc"}];
+
+
+ // console.log(dataTablesParameters);
+ // console.log("callback", callback);
+
+ // dataTablesParameters.find = {
+ // _id: that.useridd
+ // };
+ dataTablesParameters.columns = [
+ { data: "device_id" },
+ { data: "protocal_id" },
+ { data: "cmd" },
+ { data: "insertionTime" },
+ { data: "ACC" },
+ { data: "batteryStatus" },
+ { data: "gsmSignal" }]
+
+ // dataTablesParameters.find.supAdmin = that.useridd;
+
+ if ((that.deviceSelect) && (that.deviceSelect != '') && (that.deviceSelect[0].id != "all")) {
+ // console.log(that.deviceSelect[0].id);
+ dataTablesParameters.find.device_id = that.deviceSelect[0].id;
+ }
+ if (that.Fromdate) {
+ that.Fromdate.setHours(0,0,0,0);
+ dataTablesParameters.find['insertionTime'] = dataTablesParameters.find['insertionTime'] ? dataTablesParameters.find['insertionTime'] : {};
+ dataTablesParameters.find['insertionTime']['$gte'] = {
+ _eval: 'date',
+ value: new Date(that.Fromdate).toISOString()
+ }
+ };
+ // }
+ if (that.todate) {
+ that.todate.setSeconds(0);
+ that.todate.setMilliseconds(0);
+ dataTablesParameters.find['insertionTime'] = dataTablesParameters.find['insertionTime'] ? dataTablesParameters.find['insertionTime'] : {};
+ dataTablesParameters.find['insertionTime']['$lte'] = {
+ _eval: 'date',
+ value: new Date(that.todate).toISOString()
+ };
+ }
+ // if(this.supadm){
+ // dataTablesParameters.find.supAdmin = that.useridd;
+ // }
+ var suburl = "";
+ suburl += "/cmdPackets/datatable";
+ // console.log(suburl);
+ // console.log(dataTablesParameters);
+ // console.log(suburl)
+ that.contactService.post(suburl, dataTablesParameters).subscribe(resp => {
+
+ callback(resp);
+
+ }, err => {
+ // console.log(err);
+ // console.log(err.status);
+ });
+ },
+
+ "columns": [
+ {
+ "data": "device_id",
+ "render": function (data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "protocal_id",
+ "render": function (data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "cmd",
+ "render": function (data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "insertionTime",
+ "render": function (data, type, row) {
+ var created_time = new Date(data);
+
+ return moment(created_time).format('dddd,ll,LTS');
+ }
+ },
+ {
+ data: "ACC",
+ "render": function (data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "batteryStatus",
+ "render": function (data, type, row) {
+
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "gsmSignal",
+ "render": function (data, type, row) {
+ return data ? data : "";
+ }
+ }
+ ],
+ columnDefs: [
+ {
+ // The `data` parameter refers to the data for the cell (defined by the
+ // `data` option, which defaults to the column being worked with, in
+ // this case `data: 0`.
+
+ },
+ ]
+ });
+ });
+
+ }
+
+
+ deviceObj = [];
+ getAllDevice() {
+ this.contactService.alldevices()
+ .subscribe(res => {
+ // console.log("allDevices=>", res);
+ this.deviceObj = [];
+ var Alldevices = {
+ id: "all",
+ viewValue: "ALL Devices"
+ }
+ this.deviceObj.push(Alldevices);
+
+ for (var i = 0; i < res.length; i++) {
+ Alldevices = {
+ id: res[i].Device_ID,
+ viewValue: res[i].Device_ID ? res[i].Device_ID : ""
+ }
+
+ this.deviceObj.push(Alldevices)
+ }
+ // console.log("deviceArray", this.deviceObj);
+
+ }, err => {
+ // console.log(err.status);
+ })
+ }
+
+
+ deviceSelect: any = [];
+ deviceName: any;
+ filterDevices(dlr) {
+
+ // console.log("deviceData=>", dlr);
+ if (dlr) {
+ // console.log(dlr);
+
+ const filterdealerValue: any = dlr;
+
+ this.deviceSelect = [];
+ this.deviceSelect = this.deviceObj.filter(function (pp) {
+
+ // console.log(pp);
+ var t = pp.viewValue.toLocaleLowerCase().indexOf(filterdealerValue.toLocaleLowerCase());
+
+ return t > -1;
+ });
+ return this.deviceSelect;
+ }
+
+ }
+
+
+ filterStates(option) {
+ // console.log(option);
+ }
+}
diff --git a/src/app/comman-queue/comman-queue.component.html b/src/app/comman-queue/comman-queue.component.html
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/comman-queue/comman-queue.component.scss b/src/app/comman-queue/comman-queue.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/comman-queue/comman-queue.component.spec.ts b/src/app/comman-queue/comman-queue.component.spec.ts
new file mode 100644
index 0000000..ef24f27
--- /dev/null
+++ b/src/app/comman-queue/comman-queue.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CommanQueueComponent } from './comman-queue.component';
+
+describe('CommanQueueComponent', () => {
+ let component: CommanQueueComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CommanQueueComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CommanQueueComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/comman-queue/comman-queue.component.ts b/src/app/comman-queue/comman-queue.component.ts
new file mode 100644
index 0000000..10bb423
--- /dev/null
+++ b/src/app/comman-queue/comman-queue.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-comman-queue',
+ templateUrl: './comman-queue.component.html',
+ styleUrls: ['./comman-queue.component.scss']
+})
+export class CommanQueueComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit() {
+ }
+
+}
diff --git a/src/app/comment-window/comment-window.component.html b/src/app/comment-window/comment-window.component.html
new file mode 100644
index 0000000..4afb538
--- /dev/null
+++ b/src/app/comment-window/comment-window.component.html
@@ -0,0 +1,581 @@
+
+
+
+
+ User Details
+
+
+
+
Name
+
{{userDetail.first_name}} {{userDetail.last_name}}
+
+
+
+
+
+
+
+
Phone
+
{{userDetail.phone}}
+
+
+
+
+
+
+
+
Email
+
{{userDetail.email}}
+
+
+
+
+
+
+
Imei
+
{{data.deviceData.did}}
+
+
+
+
+
+
+ Emergency Contact
+
+
+
Contact 1:
+
+
+
+
+
Name :
+
{{emergencyContactData.contact1.name}}
+
+
+
+
+
+
+
+
Cell 1:
+
{{emergencyContactData.contact1.cell1}}
+
+
+
+
+
+
+
+
Cell 2:
+
{{emergencyContactData.contact1.cell2}}
+
+
+
+
+
+
+
+
Phone 1:
+
{{emergencyContactData.contact1.phone1}}
+
+
+
+
+
+
+
+
Phone 2:
+
{{emergencyContactData.contact1.phone2}}
+
+
+
+
+
+
+
+
Contact 1:
+
+
+
+
+
Name:
+
{{emergencyContactData.contact2.name}}
+
+
+
+
+
+
+
+
Cell 1:
+
{{emergencyContactData.contact2.cell1}}
+
+
+
+
+
+
+
+
Cell 2:
+
{{emergencyContactData.contact2.cell2}}
+
+
+
+
+
+
+
+
Phone 1:
+
{{emergencyContactData.contact2.phone1}}
+
+
+
+
+
+
+
+
Phone 2:
+
{{emergencyContactData.contact2.phone2}}
+
+
+
+
+
+
+
No Data Found
+
+
+
+
+
+
+ Assets
+
+
+
+
+
Vrn:
+
{{assetsData.Device_Name?assetsData.Device_Name:""}}
+
+
+
+
+
+
+
Engine:
+
{{assetsData.engineNo?assetsData.engineNo:""}}
+
+
+
+
+
+
+
Chassis:
+
{{assetsData.ChassisNo?assetsData.ChassisNo:""}}
+
+
+
+
+
+
+
Colour:
+
{{assetsData.colour?assetsData.colour:""}}
+
+
+
+
+
+
+
+
Model:
+
{{assetsData.model?assetsData.model:""}}
+
+
+
+
+
+
+
+
Brand:
+
{{assetsData.manufacturingCompany}}
+
+
+
+
+
+
+
Tpin:
+
{{assetsData.tpin}}
+
+
+
+
+
+
+
epin:
+
{{assetsData.epin}}
+
+
+
+
+
+
+
+
+ Driver Info
+
+
+
+
+
Driver Name:
+
{{assetsData.driver_name?assetsData.driver_name:''}}
+
+
+
+
+
+
+
Driver Contact Number:
+
{{assetsData.contact_number?assetsData.contact_number:''}}
+
+
+
+
+
+
+
+
+
+ Enter Comment *
+
+ {{templatemessage}}
+
+
+
+ Cancel
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/comment-window/comment-window.component.scss b/src/app/comment-window/comment-window.component.scss
new file mode 100644
index 0000000..2e31c09
--- /dev/null
+++ b/src/app/comment-window/comment-window.component.scss
@@ -0,0 +1,18 @@
+.nav-link {
+ color: black;
+}
+.actives {
+ background: #426e86;
+ color: white;
+}
+.selected-tab-0 md-ink-bar {
+ background-color: red;
+}
+.selected-tab-1 md-ink-bar {
+ background-color: #426e86;
+}
+.selected-tab-2 md-ink-bar {
+ background-color: green;
+}
+// .mat-tab-body-content {
+// }
diff --git a/src/app/comment-window/comment-window.component.spec.ts b/src/app/comment-window/comment-window.component.spec.ts
new file mode 100644
index 0000000..26e084f
--- /dev/null
+++ b/src/app/comment-window/comment-window.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CommentWindowComponent } from './comment-window.component';
+
+describe('CommentWindowComponent', () => {
+ let component: CommentWindowComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CommentWindowComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CommentWindowComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/comment-window/comment-window.component.ts b/src/app/comment-window/comment-window.component.ts
new file mode 100644
index 0000000..a9f22b8
--- /dev/null
+++ b/src/app/comment-window/comment-window.component.ts
@@ -0,0 +1,102 @@
+import { Component, Inject, NgZone, OnInit } from '@angular/core';
+import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../contact.service';
+
+@Component({
+ selector: 'app-comment-window',
+ templateUrl: './comment-window.component.html',
+ styleUrls: ['./comment-window.component.scss']
+})
+export class CommentWindowComponent implements OnInit {
+ useridd: any;
+ commentMsg:any;
+ assetsData:any
+ showAssets:boolean=false;
+ showEmergencyContact:boolean=false;
+ emergencyContactData:any;
+ userDetail: any={
+ first_name :"",
+ last_name:"",
+ phone:"",
+ email:"",
+
+ };
+ selectedTab=1;
+
+ constructor(public dialogRef: MdDialogRef,private errorDialog: MdDialog,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService, private ngZone: NgZone) { }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ console.log('this.data',this.data);
+ console.log('commentMsg',this.commentMsg);
+ this.contactService.getUserObj(this.data.deviceData.user).subscribe(res=>{
+ this.userDetail = res;
+ if(res.emergency_contact){
+ this.emergencyContactData=res.emergency_contact;
+ this.showEmergencyContact=true;
+ }
+ // console.log(this.emergencyContactData)
+ })
+ this.getDeviceData()
+
+
+ }
+ //https://socket.oneqlik.in/devices/getDevicebyId?deviceId=868003033811113
+ getDeviceData(){
+ this.contactService.getdevById(this.data.deviceData.did).subscribe((res:any) => {
+ // this.assetsData=res;
+ this.assetsData = JSON.parse(res['_body']);
+ // console.log("-------",this.assetsData);
+ this.showAssets=true
+
+ },err=>{
+ console.log(err);
+
+ })
+ }
+ templatemessage:any;
+ templatemessage1:any;
+ comment(){
+ var that =this;
+ console.log('Comment Here',this.data);
+ console.log('commentMsg',this.commentMsg);
+ if((this.commentMsg=='')||(this.commentMsg == undefined)){
+ console.log("Please Type Error Message");
+ this.templatemessage = "Please Type Comment First" ;
+ var error = setTimeout(()=>{
+ that.templatemessage = '';
+ clearTimeout(error);
+ },5000)
+ }else{
+ var payload={
+ notification_id : this.data.deviceData._id,
+ commentSaved : true,
+ comment : this.commentMsg
+ };
+ this.contactService.commentSave(payload).subscribe(res=>{
+ console.log(res);
+ this.templatemessage1 = "Comment Saved";
+ var error = setTimeout(()=>{
+ that.templatemessage1 = '';
+ this.dialogRef.close(this.data.deviceData._id);
+ clearTimeout(error);
+ },3000)
+ },err=>{
+ console.log(err);
+ })
+ }
+ }
+ close(){
+ console.log("close",this.dialogRef)
+ this.errorDialog.closeAll()
+ this.dialogRef.close()
+
+ }
+ selectTab(value){
+ console.log(value);
+
+ this.selectedTab=value;
+ }
+
+}
diff --git a/src/app/community/community.component.html b/src/app/community/community.component.html
new file mode 100644
index 0000000..8beb96b
--- /dev/null
+++ b/src/app/community/community.component.html
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/app/community/community.component.ts b/src/app/community/community.component.ts
new file mode 100644
index 0000000..8a4619e
--- /dev/null
+++ b/src/app/community/community.component.ts
@@ -0,0 +1,19 @@
+import { Component, OnInit, ViewChild, EventEmitter, Output } from '@angular/core';
+
+
+
+@Component({
+ selector: 'app-child',
+ templateUrl: './community.component.html',
+ providers: [ ]
+})
+export class CommunityComponent implements OnInit {
+
+
+ @Output() messageEvent = new EventEmitter();
+ constructor() { }
+
+ ngOnInit() {
+
+ }
+ }
\ No newline at end of file
diff --git a/src/app/const/announcement/announcement.component.html b/src/app/const/announcement/announcement.component.html
new file mode 100644
index 0000000..465bff8
--- /dev/null
+++ b/src/app/const/announcement/announcement.component.html
@@ -0,0 +1,12 @@
+
+
+
+ {{announcement}}
+
+
+
diff --git a/src/app/const/announcement/announcement.component.scss b/src/app/const/announcement/announcement.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/const/announcement/announcement.component.spec.ts b/src/app/const/announcement/announcement.component.spec.ts
new file mode 100644
index 0000000..1b077e1
--- /dev/null
+++ b/src/app/const/announcement/announcement.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AnnouncementComponent } from './announcement.component';
+
+describe('AnnouncementComponent', () => {
+ let component: AnnouncementComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AnnouncementComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AnnouncementComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/announcement/announcement.component.ts b/src/app/const/announcement/announcement.component.ts
new file mode 100644
index 0000000..1b4f17b
--- /dev/null
+++ b/src/app/const/announcement/announcement.component.ts
@@ -0,0 +1,26 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-announcement',
+ templateUrl: './announcement.component.html',
+ styleUrls: ['./announcement.component.scss']
+})
+export class AnnouncementComponent implements OnInit {
+ announcement
+ constructor(public dialogRef: MdDialogRef,private contactService: ContactService,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+ console.log(data,"In Announcement-----------")
+ if(Object.keys(data).length === 0){
+ this.announcement="There is no Announcement"
+ }else{
+ this.announcement=data
+
+ }
+ }
+
+ ngOnInit() {
+ }
+
+}
diff --git a/src/app/const/const.component.css b/src/app/const/const.component.css
new file mode 100644
index 0000000..34cc344
--- /dev/null
+++ b/src/app/const/const.component.css
@@ -0,0 +1,279 @@
+#body {
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
+
+.topDiv {
+ padding: 0px;
+}
+
+.colStyle {
+ box-shadow: 6px 6px 16px -8px rgba(0, 0, 0, 0.75);
+ margin-left: 10px;
+ margin-right: 10px;
+ margin-top: 5px;
+}
+.colStyle:hover {
+ box-shadow: 6px 6px 16px -8px rgba(0, 0, 0, 0.75);
+ margin-left: 10px;
+ margin-right: 10px;
+ margin-top: 5px;
+}
+
+.todayStyle {
+ color: #86ac41;
+}
+.weekStyle {
+ color: #4897d8;
+}
+.monthStyle {
+ color: #f5be41;
+}
+
+.paidStyle {
+ color: #86ac41;
+}
+.pendingStyle {
+ color: #cb0000;
+}
+
+.selectedRunning {
+ text-align: center;
+ padding: 20px;
+ background: #86ac41;
+ cursor: pointer;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.selectedStopped {
+ text-align: center;
+ padding: 20px;
+ cursor: pointer;
+ background: #cb0000;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.selectedOur {
+ text-align: center;
+ padding: 20px;
+ background: #4897d8;
+ cursor: pointer;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.selectAll {
+ text-align: center;
+ padding: 20px;
+ background: #f0810f;
+ cursor: pointer;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.selectIdling {
+ text-align: center;
+ padding: 20px;
+ background: #f5be41;
+ cursor: pointer;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.expireStatus {
+ text-align: center;
+ padding: 20px;
+ background: #712d33;
+ cursor: pointer;
+ color: white;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+.animateClass_7:active {
+ box-shadow: 0 1px #666;
+ transform: translateY(1px);
+}
+
+.selectedNoGPS {
+ text-align: center;
+ padding: 20px;
+ background: #5b7065;
+ cursor: pointer;
+ color: white;
+ font-size: 14px;
+}
+
+::-webkit-scrollbar {
+ display: none;
+}
+
+.selectedRunning_1 {
+ text-align: center;
+ background: #34675c;
+ color: white;
+ padding: 20px;
+ cursor: pointer;
+}
+
+.selectedStopped_1 {
+ text-align: center;
+ background: #50312f;
+ color: white;
+ padding: 20px;
+ cursor: pointer;
+}
+
+.selectedOur_1 {
+ text-align: center;
+ background: #426e86;
+ color: white;
+ cursor: pointer;
+ padding: 20px;
+}
+
+.selectAll_1 {
+ text-align: center;
+ background: #063852;
+ color: white;
+ cursor: pointer;
+ padding: 20px;
+}
+
+.selectIdling_1 {
+ text-align: center;
+ background: #16253d;
+ cursor: pointer;
+ color: white;
+ padding: 20px;
+}
+
+.selectedNoGPS_1 {
+ text-align: center;
+ background: #4d648d;
+ cursor: pointer;
+ color: white;
+ padding: 20px;
+}
+.expireStatus_1 {
+ text-align: center;
+ background: #503167;
+ cursor: pointer;
+ color: white;
+ padding: 20px;
+}
+@media (max-width: 1388px) {
+ .selectAll_1 {
+ text-align: center;
+ padding: 19px;
+ background: #063852;
+ color: white;
+ cursor: pointer;
+ }
+
+ .selectAll {
+ text-align: center;
+ padding: 19px;
+ background: #f0810f;
+ cursor: pointer;
+ color: white;
+ font-size: 14px;
+ }
+}
+
+.menus {
+ overflow: auto;
+ margin-bottom: 0.01em;
+ position: fixed;
+ left: 0px;
+ width: 100%;
+ overflow: scroll;
+ z-index: 999;
+}
+.menus::-webkit-scrollbar {
+ -webkit-appearance: none;
+}
+
+.menus::-webkit-scrollbar:vertical {
+ width: 11px;
+}
+
+.menus::-webkit-scrollbar:horizontal {
+ height: 11px;
+}
+
+.menus::-webkit-scrollbar-thumb {
+ border-radius: 8px;
+ border: 2px solid white; /* should match background, can't be transparent */
+ background-color: rgba(0, 0, 0, 0.5);
+}
+.custom-slider-main {
+ display: flex;
+ overflow: hidden;
+ scroll-behavior: smooth;
+}
+.name:hover {
+ text-decoration: underline;
+}
+
+/* .info-box {
+} */
+
+/* Smartphones (landscape) ----------- */
+@media only screen and (min-width: 321px) {
+ /* Styles */
+}
+
+/* Smartphones (portrait) ----------- */
+@media only screen and (max-width: 320px) {
+ /* Styles */
+}
+
+/* iPads (portrait and landscape) ----------- */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+ /* Styles */
+}
+
+/* iPads (landscape) ----------- */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) {
+ /* Styles */
+}
+
+/* iPads (portrait) ----------- */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait) {
+ /* Styles */
+}
+/**********
+iPad 3
+**********/
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) and (-webkit-min-device-pixel-ratio: 2) {
+ /* Styles */
+}
+
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
+ /* Styles */
+}
+/* Desktops and laptops ----------- */
+@media only screen and (min-width: 1224px) {
+ /* Styles */
+}
+
+/* Large screens ----------- */
+@media only screen and (min-width: 1824px) {
+ /* Styles */
+}
+
+/* iPhone 4 ----------- */
+@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (orientation: landscape) and (-webkit-min-device-pixel-ratio: 2) {
+ /* Styles */
+}
+
+@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
+ /* Styles */
+}
diff --git a/src/app/const/const.component.html b/src/app/const/const.component.html
new file mode 100644
index 0000000..6556ba3
--- /dev/null
+++ b/src/app/const/const.component.html
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{deviceSummary.status |
+ translate}} {{deviceSummary.total}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'ADDED VEHICLES' | translate}}
+
+
+
+
+
+
{{count.value}}
+
{{count.key |translate}}
+
+
+
+
+
+
+
+
+
+
{{'GOING TO EXPIRE VEHICLES' | translate}}
+
+
+
+
+
+
{{count.value}}
+
{{count.key | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
{{'RENEWED VEHICLES'|translate}}
+
+
+
+
+
+
{{count.value}}
+
{{count.key | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'FUEL PRICE' | translate}}
+
+
+ {{ustate}}
+
+
+
+
+
+
+
+
+
+
+ {{count.price}}/{{count.unit}}
+
{{count.fuel |translate}}
+
+ {{valueSymbol}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'Alerts' |
+ translate}}
+
+
+
+
+
+
+ {{noti.count}}
+ {{noti.name}}
+
+
+
+
+
+
+
+
+
+
+
+
Reminders
+
+
+ {{reminder.viewValue}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Next' | translate}} >>>
+ <<< {{'Previous' | translate}}
+
+
+
+
+
+
+
+
+
+
+ {{'Icon' | translate}}
+ {{'Reg. Num.' | translate}}
+ {{'Group' | translate}}
+ {{"Today's ODO" | translate}}
+ {{'Total ODO' | translate}}
+ {{'Location' | translate}}
+ {{'Last update' | translate}}
+ {{'Trip status' | translate}}
+ {{'Status' | translate}}
+ {{'User' | translate}}
+ {{'Satellites' | translate}}
+ {{'Speed' | translate}}
+ {{'Voltage' | translate}}
+ {{'Temp' | translate}}
+ Fuel
+
+ {{'AC' | translate}}
+ {{'POWER' | translate}}
+
+ {{'IGN' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+ supervised_user_circle
+
+
{{device.Device_Name}}
+
+
+
+ {{device.vehicleGroup?device.vehicleGroup.name:''}}
+
+
+
+
+ {{device.currentODO}}
+
+
+
+
+ {{device.total_odo
+ ? (device.total_odo | number: '1.2-2' ): 0}}
+
+
+
+
+
+
+
{{device.locationAddress}}
+
+
+
+
+
+
+
+
+ {{device.last_ping_on|date:'medium'}}
+ {{device.currentTripStatus||'NA'}}
+
+
+ {{device.status}}
+
+ [Power Disconnected]
+
+ {{device.user?(device.user.first_name + " "+ device.user.last_name):""}}
+ {{device.satellites?device.satellites:"NA"}}
+ {{device.last_speed?device.last_speed:0}}
+ {{device.battery?device.battery:0}}
+ {{device.temp?gettemp(device.temp):'0'}}
+ {{getfuel(device,i)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/const/const.component.spec.ts b/src/app/const/const.component.spec.ts
new file mode 100644
index 0000000..7735236
--- /dev/null
+++ b/src/app/const/const.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ConstComponent } from './const.component';
+
+describe('ConstComponent', () => {
+ let component: ConstComponent;
+ let fixture: ComponentFixture
;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ConstComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ConstComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/const.component.ts b/src/app/const/const.component.ts
new file mode 100644
index 0000000..7ca32af
--- /dev/null
+++ b/src/app/const/const.component.ts
@@ -0,0 +1,3262 @@
+import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
+import { GetdevdetailComponent } from '../const/getdevdetail/getdevdetail.component';
+import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
+import { MDBBootstrapModule } from 'angular-bootstrap-md';
+import { ContactService } from '../contact.service';
+import { Params, Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { window } from 'angular-bootstrap-md/utils/facade/browser';
+import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { DatainjectionService } from '../datainjection.service';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import { NotificationComponent } from '../notification/notification.component';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import { Observable } from 'rxjs/Rx';
+import * as moment from 'moment';
+import { Subject } from 'rxjs/Subject';
+declare var Chart :any;
+declare var swal : any;
+
+import 'rxjs/add/operator/debounceTime';
+import { SharedDevicesComponent } from './shared-devices/shared-devices.component';
+import { DemoVideosComponent } from './demo-videos/demo-videos.component';
+import { ManualAddressComponent } from './manual-address/manual-address.component';
+import { TranslateService } from 'ng2-translate';
+import {AnnouncementComponent} from './announcement/announcement.component'
+declare var $: any;
+
+declare var google: any;
+declare var ol : any;
+
+@Component({
+ selector: 'app-const',
+
+ templateUrl: './const.component.html',
+ styleUrls: ['./const.component.css'],
+ providers: [SidebarComponent, NotificationComponent],
+
+})
+export class ConstComponent implements OnInit {
+// {_id: "power", count: 3}
+// // 1: {_id: "immo", count: 3}
+// // 2: {_id: "overspeed", count: 23}
+// // 3: {_id: "IGN", count: 543}
+// // 4: {_id: "theft", count: 145}
+// // 5: {_id: "SOS", count: 6}
+ notificationArray=[{name:'Power',type:'power',count:0},{name:'Ignition',type:'IGN',count:0},{name:'Parking',type:'theft',count:0},
+ {name:'Toll',type:'toll',count:0},{name:'Over Speed',type:'overspeed',count:0},{name:'Geo-Fence',type:'Geo-Fence',count:0} ]
+ @ViewChild('widgetsContent') widgetsContent: ElementRef;
+ superAdmin: Boolean = false;
+ modelChanged: Subject = new Subject();
+ fs: any;
+ ls: any;
+ cond: Boolean = false;
+ roadShow:Boolean=true;
+ point: any = 0;
+ loading: any; loadingName: any;
+ unloading: any; unloadingName: any;
+ not_on_root: any; norName: any;
+ address_show: string;
+ deviceData: any;
+ baba: any[];
+ arrival_time: Date;
+ Durations: string;
+ status_toShow: string;
+ lattitude: any;
+ longitude: any;
+ filtes: any;
+ total_final: any;
+ vehicleDetail: any;
+ add_dev: boolean;
+ textStatus: string;
+ fuelUrl = "";
+ Running: any;
+ iconHide: boolean = true;
+ groupId: any;
+ groupName: any;
+ fuelvariable : any = "FUEL (LITRE)";
+ fuelflag = 'l';
+
+ setTimeOut = {
+ value: 20,
+ viewValue: "20 Seconds"
+ };
+ timout = [{
+ value: 10,
+ viewValue: "10 Seconds"
+ },
+ {
+ value: 20,
+ viewValue: "20 Seconds"
+ },
+ {
+ value: 30,
+ viewValue: "30 Seconds"
+ }]
+
+
+ interval: any;
+ changeTime: any;
+ pwrURL: any;
+ gpsImg: string;
+ gStatus: string;
+ pStatus: string;
+
+ showDataByGroup = function () {
+ return this.contactService.getService();
+ }
+ fuelCount=[{
+ fuel : 'Diesel',
+ price: 0 ,
+ unit : 'litre'
+},{
+ fuel : 'Petrol',
+ price: 0 ,
+ unit : 'litre'
+}]
+ devIcon: string;
+ roadicon = "../../assets/image/roadBoard.jpg";
+ supAdm: any;
+ DealerID: any;
+ expiredDevices: any;
+ expired_ids: any;
+ ACImg: string;
+ aStatus: string;
+ deviceBarChart: any;
+ devicePiChart: any;
+ devicePiChart_1: any;
+ notifArr: any=[];
+ gps_column: Boolean = true;
+ ac_column: Boolean = true;
+ power_column: Boolean = true;
+ gsm_column: Boolean = true;
+ ignition_column: Boolean = true;
+ ext_volt: Boolean = true;
+ isOrganisation: any;
+ userState: any;
+ currState: any;
+ leftPaddle: HTMLCollectionOf;
+ rightPaddle: HTMLCollectionOf;
+ itemsLength: any;
+ itemSize: any;
+ paddleMargin: number;
+ getMenuWrapperSize: () => any;
+ menuWrapperSize: any;
+ menuVisibleSize: any;
+ getMenuSize: () => number;
+ menuSize: any;
+ menuInvisibleSize: number;
+ showButton:boolean=false
+ getMenuPosition: () => any;
+
+ myaccount() {
+
+ this.cond = false
+ this.router.navigateByUrl("accountSettings");
+
+
+
+ }
+ scrollLeft(){
+ this.showButton=!this.showButton
+ this.widgetsContent.nativeElement.scrollLeft -= 260;
+ }
+
+ scrollRight(){
+ this.showButton=!this.showButton
+ this.widgetsContent.nativeElement.scrollLeft += 260;
+ }
+
+ a() {
+
+ if (this.point == 0) {
+ this.cond = true;
+ this.point++;
+ }
+ else if (this.point % 2 == 0) {
+ this.cond = true;
+ this.point++;
+ }
+ else {
+ this.cond = false
+ this.point++;
+ }
+ }
+ report() {
+
+ this.cond = false
+ this.router.navigateByUrl("device-report");
+
+ }
+ report_speed() {
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/device-speed-report");
+ }
+ emailid: any;
+
+ or: any;
+ onn_time: any;
+ min: any;
+ corect_min: any;
+ hr: any
+ from: any;
+ to: any;
+ devicess: any;
+ Load: Boolean = false;;
+
+ // public pieChartLabels:string[] = ['Moving', 'Idle', 'Engine Off'];
+ // public pieChartData:number[] = [500, 200, 100];
+ // public pieChartType:string = 'pie';
+ public doughnutChartLabels: string[] = ['Stopped', 'Maintenance', 'Idle', 'Running', 'Out off reach', 'No GPS'];
+
+ public runningDoughnutChartLabels: any = ['Transit', 'Reverse Transit', 'No Trip'];
+ public stoppedDoughnutChartLabels: string[] = ['Less than 2 hours', 'More than 2 hours', 'More than 6 hours', 'More than 24 hours'];
+ public idleDoughnutChartLabels = ['Less than 15 min.', 'More than 1 hr.', 'More than 15 min.', 'More than 30 min.'];
+ public maintenanceDoughnutChartLabels = ['Maintenance'];
+ public noGPSDoughnutChartLabels = ['No GPS'];
+ public outofreachDoughnutChartLabels = ['Out Of Reach'];
+
+
+
+ public doughnutChartData: number[] = [1];
+ public doughnutChartType: string = 'doughnut';
+ public doughnutradius_width = [20, 20, 20, 20, 20, 20];
+
+
+
+ public doughnutChartLabels_running: string[] = ['Vehicles Running'];
+ public doughnutChartData_running: number[] = [1];
+ public doughnutChartData_idle: number[] = [1];
+ public doughnutChartData_stopped: number[] = [1];
+ public Dmaintanance = [1]
+ public doughnutChartData_our = [1];
+
+ // public doughnutChartLabels:string[] = ['Vehicles Stopped', 'Vehicles under Maintenance', 'Idle Vehicles' , 'Out off reach Vehicles','Vehicles Running'];
+
+ /////piechart-start
+ public barChartOptions: any = {
+ scaleShowVerticalLines: false,
+ responsive: true
+ };
+ public barChartLabels = [];
+ public barChartType: string = 'bar';
+ public barChartLegend: boolean = true;
+
+ public barChartData = [{ data: [0, 0, 0, 0, 0, 0, 0], label: 'Total Distance' }];
+
+
+
+ MapLoad: any;
+ ign() {
+ this.router.navigateByUrl("device-report/ign-report");
+
+ }
+
+ /* ................................................................ */
+ // plotgraph(a) {
+
+ // var tempTime = new Date()
+ // var time;
+ // var t = new Date(tempTime.getFullYear(),
+ // tempTime.getMonth(),
+ // tempTime.getDate(),
+ // 23, 59, 59, 999);
+ // /*
+ // time = new Date(t.getTime() + 1).toISOString() */
+ // time = new Date().setHours(0, 0, 0, 0) - 1;
+ // let timee = new Date(time).toISOString();
+ // /* this.Load = true; */
+ // this.MapLoad = true;
+ // this.contactService.getDashboardGraph(a.did, timee).subscribe(
+
+ // data => {
+ // this.devicess = data
+
+
+ // this.randomize(this.devicess);
+
+ // });
+
+
+ // }
+
+ public randomize(a): void {
+
+ let data = [];
+ let label = [];
+
+ this.barChartLabels.length = 0;
+ if (this.devicess.length < 7) {
+ for (var q = 0; q < (7 - this.devicess.length); q++) {
+ var lastDate = this.devicess[this.devicess.length - 1].Date
+ this.devicess.push({
+ "Toal_Dis": 0,
+ "Date": new Date(new Date(lastDate).getTime() + (1000 * 60 * 60 * 24)).toISOString()
+ })
+ }
+ }
+
+ for (var t = 0; t < this.devicess.length; t++) {
+ var day = 0;
+ var month = 0;
+ var year = 0;
+ var final_date = null;
+ data.push(parseFloat(this.devicess[t].Total_Dis).toFixed(2));
+ // var g = new Date(this.devicess[t].Date);
+
+ // day = g.getDate()+1;
+ // month = g.getMonth()+1;
+ // year = g.getFullYear();
+ final_date = moment(this.devicess[t].Date).add(1, 'ms').format('DD/MM/YYYY');
+ // final_date = day+"/"+month+"/"+year
+ this.barChartLabels.push(final_date);
+
+ }
+
+ let clone = JSON.parse(JSON.stringify(this.barChartData));
+ let clone2 = JSON.parse(JSON.stringify(this.barChartLabels));
+ clone[0].data = data;
+
+ // this.barChartLabels=label;
+ this.barChartData = clone;
+ /* this.Load = false; */
+ this.MapLoad = false;
+
+ }
+ /////piechart-end
+
+
+ public chartHovered(e: any): void {
+
+ }
+
+
+ public chartClicked(e: any): void {
+
+
+ }
+ geo() {
+ this.router.navigateByUrl("geofencing");
+
+ }
+ ideal() {
+ this.router.navigateByUrl("device-report/ideal-report");
+ }
+
+ vehicleRoute() {
+ this.router.navigateByUrl("vehicleRoute");
+
+ }
+
+ report_map() {
+ this.router.navigateByUrl("routeMapping");
+
+ }
+
+ Ddetail() {
+ this.router.navigateByUrl("driverdetail");
+ }
+ DModel() {
+ this.router.navigateByUrl("deviceModel");
+ }
+ VType() {
+ this.router.navigateByUrl("VehicleType");
+ }
+
+
+
+ driverPerformance() {
+ this.router.navigateByUrl("device-report/Driver-performance");
+ }
+
+
+ notification() {
+ this.router.navigateByUrl("notifications");
+ }
+
+
+ openNav() {
+ /* document.getElementById("myNav").style.width = "100%";
+ */
+ this.router.navigateByUrl("location");
+
+ }
+ openDialog4(type) {
+ var datasets
+
+ if (type == "idel") {
+
+ datasets = this.idle_ids;
+
+ }
+ else if (type == "stop") {
+ datasets = this.off_ids;
+ }
+ else if (type == "maintain") {
+ datasets = this.maintenance_ids
+ ;
+ }
+ else if (type == "outoff") {
+ datasets = this.outofreach_ids;
+ }
+ let dialogRef = this.dialog.open(GetdevdetailComponent, {
+ width: '903px',
+ data: { Type: type, dataset: datasets }
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+
+
+ if (result == "OKK") {
+
+ }
+ else if (result == "No_Dev") {
+
+
+ }
+ });
+ }
+
+
+ constructor(public dialog: MdDialog, private router: Router, private contactService: ContactService, private injectData: DatainjectionService, private activatedRoute: ActivatedRoute,
+ private val: SidebarComponent, private inject: DatainjectionService, private notify: NotificationComponent,public translate: TranslateService) {
+
+ window.localStorage['GetDevData'] = 'True'
+ // console.log("p1");
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.activatedRoute.queryParams.subscribe((params: Params) => {
+ // console.log('p3');
+ this.aa = params['_status'];
+
+ if (this.aa != "OK") {
+ window.localStorage['checker'] = 'Data'
+ }
+ else {
+ window.localStorage['checker'] = params['_status'];
+ }
+
+ });
+
+ this.latLongDetail()
+ }
+ logout() {
+ window.localStorage.clear();
+ this.router.navigateByUrl("login");
+ }
+ devi() {
+ this.router.navigateByUrl("dashboard");
+
+ }
+ soon() {
+ this.ngOnInit();
+ this.router.navigateByUrl("const");
+
+ }
+
+ Poiview() {
+ this.router.navigateByUrl("poilist");
+ }
+
+ summaryReport() {
+
+ this.cond = false
+ this.router.navigateByUrl("device-report/summary-report");
+ }
+
+ geofancingReport() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/geofancing");
+ }
+
+ overspeed() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/overspeed");
+
+ }
+ routeViolation() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/routeViolation");
+
+ }
+
+ stoppage_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/stoppage_report");
+
+ }
+ ignition_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/ignition_report");
+
+
+ }
+
+ alert_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/alert_report");
+
+
+ }
+ trip_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/trip_report");
+
+ }
+
+ group() {
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+
+
+ notifications() {
+ this.cond = false
+ this.router.navigateByUrl("notifications");
+ }
+
+ distance_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/distance_report");
+ }
+
+ dealerInfo() {
+ this.cond = false
+ this.router.navigateByUrl("dealerInfo");
+ }
+
+ AC_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/ac_report");
+ }
+
+ fuel_report() {
+ this.cond = false
+ this.router.navigateByUrl("device-report/fuel_report");
+ }
+
+
+ new() {
+
+ this.router.navigateByUrl("new");
+
+ }
+ addcus() {
+ this.router.navigateByUrl("add");
+ }
+ total_vech: any;
+ idle_vech: any;
+ off_vech: any;
+ maintanance: any;
+ useridd: any;
+ final: any;
+ foods = [];
+ userID: any;
+ OutOfReach: any;
+ no_data: any;
+ expire_status
+ custtype: any;
+ cust: Boolean = false;
+ //new:any
+ // vewdev(id,name,type){
+
+ // if(type=="Tracker"){
+
+ // this.router.navigateByUrl("location?_dname="+name+"_id="+id);
+
+
+ // }
+ // else{
+ // this.router.navigateByUrl("account?_did="+id+"."+name);
+ // }
+ // }
+
+ refreshsidebar(data, id) {
+
+ let arr = []
+ for (var q = 0; q < data.length; q++) {
+ let a = {
+ "Device_Name": data[q],
+ "Device_ID": id[q]
+ }
+ arr.push(a)
+ }
+
+ }
+
+
+ runnig: any;
+ idle_ids: any;
+ maintenance_ids: any;
+ off_ids: any;
+ outofreach_ids: any;
+ checker: any;
+ aa: any;
+ subscription: any;
+ timer: any;
+ timer_out: any;
+ runnigg: any;
+ alldevvice: any;
+ id_all: any;
+ id_running: any;
+ id_idel: any;
+ id_stop: any;
+ id_main: any;
+
+
+ id_out: any;
+ before: any;
+ mb: any;
+ mobile: any;
+ logoutbut: boolean;
+ dealer: boolean;
+ idle_duration: any;
+ off_duration: any;
+ running_details: any;
+ no_gps_name: any;
+
+ mydealer() {
+ window.localStorage['token'] = window.localStorage['Dealer_token'];
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ if (window.localStorage['DataLoaded'] = 'True') {
+ window.localStorage['Custumer'] = 'OFF'
+ this.router.navigateByUrl("add")
+ // this.router.navigateByUrl("const?_status="+"OK");
+ }
+ }
+ logo: any;
+ text: any;
+ private socket_Ing
+ savedInt: any;
+ ngOnInit() {
+ this.Load = true;
+ this.foods = [];
+ this.savedInt = JSON.parse(localStorage.getItem('refreshInterval'))
+ if (this.savedInt) {
+ this.setTimeOut.value = this.savedInt;
+
+ }
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.isOrganisation = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation;
+ console.log('JSON.parse(window.atob(window.localStorage.token.split(".")[1]))',JSON.parse(window.atob(window.localStorage.token.split(".")[1])));
+
+ var alpha = JSON.parse(window.atob(window.localStorage.token.split(".")[1]));
+ // console.log(alpha);
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ var fuelvalue = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).fuel_unit;
+ // this.vehicleDetail = JSON.parse(window.localStorage.getItem('devices'));
+
+ var dashboard_content = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).dashboard_column;
+ console.log('dashboard_content',dashboard_content);
+
+ this.gps_column = dashboard_content.gps_column ;
+ this.ac_column = dashboard_content.ac_column ;
+ this.power_column = dashboard_content.power_column ;
+ this.gsm_column = dashboard_content.gsm_column ;
+ this.ignition_column = dashboard_content.ignition_column ;
+ this.ext_volt = dashboard_content.ext_volt ;
+// this.door_column: false
+// this.temp_column: false
+// this.charging_column: false
+ if(this.superAdmin){
+ console.log("NDDDDDDDDDDDDDJSSSSSSSSSSSSSSSSSSSSSSS");
+
+ this.supAdm = this.useridd;
+ }
+ if(this.custtype){
+ this.DealerID = this.useridd
+ }
+
+
+ console.log("Cust!!!!!!!!!!!!!!!!!!!!!!!");
+
+ if(fuelvalue != undefined){
+ if(fuelvalue == "PERCENTAGE"){
+ this.fuelvariable = "FUEL (PERCENTAGE)";
+ this.fuelflag = 'p';
+ }else{
+ this.fuelvariable = "FUEL (LITRE)" ;
+ this.fuelflag = 'l';
+ }
+ }
+
+ // this.abc(this.vehicleDetail);
+
+
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+ if (this.mb.charAt(0) == "n") {
+ this.mb = ' '
+ }
+
+ if (window.localStorage['Custumer'] == 'ON') {
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else {
+ this.logoutbut = true
+ }
+
+ this.logo = window.localStorage['logo'];
+ this.text = window.localStorage['text'];
+
+ this.to = new Date().toISOString();
+ var d = new Date();
+ let a = d.setHours(0, 0, 0, 0)
+ this.from = new Date(a).toISOString();
+
+ var dataRoutedFromGroups = this.showDataByGroup();
+ if (dataRoutedFromGroups && dataRoutedFromGroups.dataSource == "GROUPS") {
+ this.groupId = dataRoutedFromGroups._id;
+ this.groupName = dataRoutedFromGroups.name;
+
+ }
+
+ this.socket_Ing = this.injectData.getSocket_gps();
+
+ this.socket_Ing.on('connect', function (this) {
+ // console.log("No function")
+
+ });
+
+ this.modelChanged
+ .debounceTime(2000) // wait 300ms after the last event before emitting last event
+ .distinctUntilChanged() // only emit if value is different from previous value
+ .subscribe(myInput => {
+ this.myInput = myInput;
+ // console.log('debounce')
+ this.sidebarData(10);
+
+ });
+
+
+
+ // var retrievedData = localStorage.getItem("devices");
+ // var cord = JSON.parse(retrievedData);
+ // this.final = cord;
+
+
+
+ this.timer = Observable.timer(100, 100);
+ this.subscription = this.timer.subscribe(t => {
+ var retrievedData = localStorage.getItem("devices");
+ var cord = JSON.parse(retrievedData);
+ this.final = cord
+ if (this.final == null || !this.final) {
+
+ }
+ else {
+ if (this.final.length <= 0) {
+
+ if (localStorage.getItem("DataLoaded") == "True") {
+ this.subscription.unsubscribe();
+ window.localStorage['DataLoaded'] = 'False'
+ }
+
+ }
+ else {
+ this.final = cord
+
+
+ if (localStorage.getItem("LoadGraph") == "True") {
+ this.foods = []
+
+ for (let i = 0; i < this.final.length; i++) {
+
+ if (this.final[i].type_of_device == "Tracker") {
+
+
+ let a = {
+ value: this.final[i].Device_Name,
+ viewValue: this.final[i].Device_Name,
+ did: this.final[i].Device_ID,
+
+ }
+
+ this.foods.push(a);
+ }
+
+ }
+ this.new = this.foods[0];
+
+ this.timer_out = true;
+ this.subscription.unsubscribe();
+
+ }
+
+ }
+ }
+
+ });
+
+
+
+ // history.pushState(null, null, document.URL);
+ // window.addEventListener('popstate', function () {
+ // history.pushState(null, null, document.URL);
+ // });
+
+
+
+ this.socket_Ing = this.injectData.getSocket_gps();
+
+ // this.socket_Ing.on('connect', function (this) {
+
+
+ // });
+
+ this.reminderVal = this.reminderType[3].value;
+ this.fuelUrl = '../../assets/image/nofuel.png'
+ this.getGraphFunction();
+ this.sidebarData(10);
+ this.timeIntervalRefresh()
+ // this.Ing_Status()
+ // if((this.superAdmin === false)&&(this.custtype === false)){
+ // this.vehicleUtilizationGraph();
+ // this.expenseChart();
+ // }
+
+ if((this.superAdmin === false)&&(this.custtype === false)){
+ this.vehicleUtilizationGraph();
+ this.expenseChart();
+ this.utilisationChart();
+ this.vehicleReminder();
+ }
+ if((this.superAdmin === true)||(this.custtype === true)){
+ this.getTotalDeviceCount();
+ this.getTotalExpiredDeviceCount();
+ this.getTotalRenewedDeviceCount();
+ }
+
+
+ this.getApiKey();
+
+ this.getuserObject();
+ this.getLanguage();
+ this.getNotificationCount()
+ }
+
+
+ notificationCount=[]
+ getNotificationCount(){
+ this.contactService.get('/notifs/getNotificationsCount?user='+this.useridd+'&from='+this.from+'&to='+this.to).subscribe((res:any)=>{
+ console.log(res);
+ for(var i=0;i{
+
+ if(res.timezone==="Asia/Kolkata"){
+ this.fuelCard = true;
+ }
+
+ })
+ }
+
+ fuelCard = false;
+
+
+ getGraphFunction() {
+
+ this.contactService.getDashboard(this.emailid, this.from, this.to, this.useridd, this.groupId,this.supAdm,this.DealerID).subscribe(
+ data => {
+ console.log('datadatadatadatadaata=>',data);
+ localStorage.setItem('dashboardCount',JSON.stringify(data))
+ this.devicess = data
+ this.total_vech = this.devicess.Total_Vech;
+ this.idle_vech = this.devicess["Ideal Devices"];
+ this.off_vech = this.devicess["OFF Devices"];
+ this.maintanance = this.devicess["Maintance Device"];
+ this.expiredDevices = this.devicess["expire_status"];
+ this.OutOfReach = this.devicess["OutOfReach"];
+ this.no_data = this.devicess["no_data"]?this.devicess["no_data"]:0;
+ this.Running = this.devicess["running_devices"];
+ this.expire_status= this.devicess["expire_status"];
+ // this.idle_duration = this.devicess.idle_duration;
+ // this.off_duration = this.devicess.off_duration;
+
+ let a = this.idle_vech + this.off_vech + this.maintanance + this.OutOfReach
+ let b = this.total_vech - a;
+
+ // this.idle_ids = this.devicess.idle_name
+ // this.maintenance_ids = this.devicess.maintenance_name
+ // this.expired_ids = this.devicess.expire_name
+ // this.off_ids = this.devicess.off_name
+ // this.runnigg = this.devicess.runnig_name
+ // this.outofreach_ids = this.devicess.outOfReach_name
+ // this.alldevvice = this.devicess.All_Device_name
+ // this.no_gps_name = this.devicess.no_gps_name;
+ // this.id_running = this.devicess.running_id;
+ // this.id_stop = this.devicess.off_ids;
+ // this.id_out = this.devicess.outofreach_ids;
+ // this.id_main = this.devicess.maintenance_ids;
+ // this.id_idel = this.devicess.idle_ids;
+
+ // this.loading = this.devicess.running_details.forward.count;
+ // this.unloading = this.devicess.running_details.reverse.count;
+ // this.not_on_root = this.devicess.running_details.not_on_route.count;
+
+ if (this.idle_duration && this.idle_duration.idle_lessthan15min +
+ this.idle_duration.idle_morethan1hour +
+ this.idle_duration.idle_morethan15min +
+ this.idle_duration.idle_morethan30min > 0) {
+ this.doughnutChartData_idle = [
+ this.idle_duration.idle_lessthan15min,
+ this.idle_duration.idle_morethan1hour,
+ this.idle_duration.idle_morethan15min,
+ this.idle_duration.idle_morethan30min
+ ];
+ }
+
+
+
+
+ if (this.off_duration && this.off_duration.stopped_lessthan2hours +
+ this.off_duration.stopped_morethan2hours +
+ this.off_duration.stopped_morethan6hours +
+ this.off_duration.stopped_morethan24hours > 0) {
+ this.doughnutChartData_stopped = [
+ this.off_duration.stopped_lessthan2hours,
+ this.off_duration.stopped_morethan2hours,
+ this.off_duration.stopped_morethan6hours,
+ this.off_duration.stopped_morethan24hours
+ ];
+ }
+
+
+ if (this.running_details && this.running_details.forward.count +
+ this.running_details.not_on_route.count +
+ this.running_details.reverse.count > 0) {
+ this.doughnutChartData_running = [
+ this.running_details.forward.count,
+ this.running_details.reverse.count,
+ this.running_details.not_on_route.count
+
+ ];
+ }
+
+
+ // if (this.devicess.running_details.forward.names.length == 0) {
+ // this.loadingName = "NA";
+ // } else {
+ // this.loadingName = this.devicess.running_details.forward.names
+ // }
+
+ // if (this.devicess.running_details.reverse.names.length == 0) {
+ // this.unloadingName = "NA";
+ // } else {
+ // this.unloadingName = this.devicess.running_details.reverse.names
+ // }
+
+ // if (this.devicess.running_details.not_on_route.names.length == 0) {
+ // this.norName = "NA";
+ // } else {
+ // this.norName = this.devicess.running_details.not_on_route.names
+ // }
+
+
+
+ this.runnig = b;
+
+ let r = (this.off_vech / this.total_vech) * 100;
+ let s = (this.maintanance / this.total_vech) * 100;
+ let t = (this.idle_vech / this.total_vech) * 100;
+ let u = (this.OutOfReach / this.total_vech) * 100;
+
+ if (this.total_vech != 0) this.doughnutChartData = [];
+ this.doughnutChartData.push(this.off_vech, this.maintanance, this.idle_vech, this.runnig, this.OutOfReach);
+
+ this.DeviceSummaryArr[0].total = this.total_vech ;
+ this.DeviceSummaryArr[1].total = this.Running;
+ this.DeviceSummaryArr[2].total = this.off_vech;
+ this.DeviceSummaryArr[3].total = this.idle_vech ;
+ this.DeviceSummaryArr[4].total = this.OutOfReach;
+ this.DeviceSummaryArr[5].total = this.expire_status ;
+ this.DeviceSummaryArr[6].total = this.no_data?this.no_data:0 ;
+ this.utilisationChart()
+
+ this.Load =false;
+ });
+ }
+
+
+ showVehiclesByStatus() {
+
+
+ // this.router.navigate(['/dashboard',vehStatus]);
+ }
+
+ showVehiclesByGroup = function (group) {
+
+ this.router.navigate(['/dashboard', group._id]);
+ }
+
+ imgShow: Boolean = false;
+
+ abc(div) {
+ console.log('div=>',div);
+
+ this.deviceData = div;
+ var outerThis = this;
+ var start_add: any;
+ if (this.deviceData.length == 0) {
+ this.firstcall = true;
+ this.lastcall = false;
+ }
+
+
+ for (var j = 0; j < this.deviceData.length; j++) {
+ if (this.deviceData[j].status_updated_at == undefined) {
+ let dev_status_1 = this.deviceData[j].status ? this.deviceData[j].status : "Not available";
+ this.deviceData[j].status = dev_status_1;
+
+ } else {
+ var dev_status = this.deviceData[j] ? this.deviceData[j].status : "NA";
+ // previous function for date difference conversion
+
+ // this.arrival_time = new Date(this.deviceData[j].status_updated_at);
+
+ // var curr_time = new Date();
+ // var fd = new Date(this.arrival_time).getTime();
+ // var td = curr_time.getTime();
+ // var timedev_status_difference = td - fd;
+ // var total_min = timedev_status_difference / 60000;
+ // var hours = total_min / 60
+ // var rhours = Math.floor(hours);
+ // var minutes = (hours - rhours) * 60;
+ // var rminutes = Math.round(minutes);
+ // this.Durations = rhours + " " + 'hrs' + " " + rminutes + " " + 'min';
+
+ // previous function for date difference conversion
+
+ // new conversion logic
+ var curr_time:any = new Date();
+ this.arrival_time = new Date(this.deviceData[j].status_updated_at);
+ var fd:any = new Date(this.arrival_time);
+ console.log('curr_time',curr_time,this.arrival_time);
+ var diffInMilliSeconds= Math.abs(curr_time - fd) / 1000;
+
+ // calculate days
+ const days = Math.floor(diffInMilliSeconds / 86400);
+ diffInMilliSeconds -= days * 86400;
+ console.log('calculated days', days);
+
+ // calculate hours
+ const hours = Math.floor(diffInMilliSeconds / 3600) % 24;
+ diffInMilliSeconds -= hours * 3600;
+ console.log('calculated hours', hours);
+
+ // calculate minutes
+ const minutes = Math.floor(diffInMilliSeconds / 60) % 60;
+ diffInMilliSeconds -= minutes * 60;
+ console.log('minutes', minutes);
+
+ let difference = '';
+ if (days > 0) {
+ difference += (days === 1) ? `${days} day, ` : `${days} days, `;
+ }
+
+ difference += (hours === 0 || hours === 1) ? `${hours} hour, ` : `${hours} hours, `;
+
+ difference += (minutes === 0 || hours === 1) ? `${minutes} minutes` : `${minutes} minutes`;
+
+ // new conversion logic
+ this.Durations = difference ;
+ console.log('this.Durationsthis.Durationsthis.Durationsthis.Durations',this.Durations);
+
+ if (dev_status == undefined) {
+
+
+ this.status_toShow = "NA";
+
+ } else {
+ this.status_toShow = dev_status + " " + "Since" + " " + this.Durations;
+ }
+
+ this.deviceData[j].status = this.status_toShow;
+ this.deviceData[j].tStatus = dev_status;
+ this.deviceData[j].roadShow = true;
+
+ // console.log("Device Status =>", this.deviceData[j].status);
+
+ }
+ // if(this.deviceData[j].distanceVariation){
+ // if(this.deviceData[j].distanceVariation[0]=="+"){
+ // var milege=(this.deviceData[j].total_odo/100)*(Number(this.deviceData[j].distanceVariation.substring(1)))
+ // console.log("MILEGE->",milege,'-',this.deviceData[j].total_odo);
+ // this.deviceData[j].total_odo=this.deviceData[j].total_odo+milege
+
+ // }else{
+ // var milege=(this.deviceData[j].total_odo/100)*(Number(this.deviceData[j].distanceVariation.substring(1)))
+ // console.log("MILEGE->",milege,'-',this.deviceData[j].total_odo);
+ // this.deviceData[j].total_odo=this.deviceData[j].total_odo-milege
+ // }
+ // }
+ this.getAddress(this.deviceData[j])
+
+ }
+
+ console.log('this.deviceData',this.deviceData);
+
+
+ }
+
+ doughnutOptions = {
+ percentageInnerCutout: 80
+
+ }
+
+ options = {
+
+ legend: {
+ display: false
+ },
+ cutoutPercentage: 75
+
+ }
+
+ options1 = {
+ legend: {
+ display: false
+ },
+ // tooltips: {
+ // enabled: false
+ // },
+ cutoutPercentage: 75
+ }
+
+
+
+
+
+ // graph according to vechical status
+
+
+ // ['Vehicles Stopped', 'Vehicles under Maintenance', 'Idle Vehicles' ,'Vehicles Running', 'Out off reach Vehicles'];
+
+
+
+ public chartColors: Array = [
+
+ {
+
+ backgroundColor: [
+ '#ffafaf',
+ 'rgba(152,92,16,1)',
+ '#ffd366',
+ 'lightgreen',
+ '#afe1ff',
+ '#efefef'
+
+
+ ],
+
+ }
+ ];
+ public chartColors_running: Array = [
+ {
+ backgroundColor: ['lime', 'lightgreen', 'green', 'darkgreen']
+ }
+ ];
+ public chartColors_idle: Array = [
+ {
+ backgroundColor: ['#ffeb3b94', '#ffd366', '#efb62a', '#f9b101'],
+ }
+ ];
+ public chartColors_stopped: Array = [
+ {
+ backgroundColor: ['#ffafaf', 'tomato', 'red', 'darkred']
+ }
+ ];
+ public chartColors_main: Array = [
+ {
+ backgroundColor: 'rgba(152,92,16,1)'
+ }
+ ];
+ public chartColors_Our: Array = [
+ {
+ backgroundColor: '#afe1ff'
+ }
+ ];
+ public chartColors_NoGps: Array = [
+ {
+ backgroundColor: '#efefef'
+ }
+ ];
+
+ filterId :any;
+
+ getDeviceBYfilter(i) {
+ if(i==1){
+ this.skip = 0;
+ }
+ this.filterId = 'r';
+ clearInterval(this.interval);
+ var a = "RUNNING"
+ // console.log(this.skip,this.limit);
+ // console.log(this.DealerID);
+ var status_1 = false;
+ this.contactService.getDeviceByFilter_dash(a,this.emailid, this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+ this.final = res.devices;
+ // this.final =this.filtes;
+ this.Ing_Status();
+ this.abc(this.final);
+
+ })
+ }
+
+ getDeviceBYfilterIdle(i) {
+ if(i==2){
+ this.skip=0;
+ }
+ this.filterId = 'i';
+
+ clearInterval(this.interval);
+ var a = "IDLING"
+ var status_1 = false;
+ this.contactService.getDeviceByFilter_dash(a,this.emailid, this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+ this.filtes = res.devices;
+ this.abc(this.filtes);
+
+ })
+
+
+ }
+
+ getDeviceBYfilterStop(i) {
+ console.log("inside function");
+ if(i==3){
+ this.skip =0;
+ }
+ this.filterId = 's';
+ // console.log(this.skip);
+ clearInterval(this.interval);
+ var a = "STOPPED"
+ var status_1 = false;
+ this.contactService.getDeviceByFilter_dash(a,this.emailid, this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+ // console.log("stoppedveh=>",res);
+ for(var i=0 ;i {
+
+ this.filtes = res.devices;
+
+ this.abc(this.filtes);
+
+ })
+
+
+ }
+
+ getDeviceBYfilterOUR(i) {
+ if(i==5){
+ this.skip =0
+ }
+ this.filterId = 'our';
+ clearInterval(this.interval);
+ var a = "OUT OF REACH"
+ var status_1 = false;
+ this.contactService.getDeviceByFilter_dash(a,this.emailid, this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+ // console.log("ourveh=>",res)
+ this.filtes = res.devices;
+
+ this.abc(this.filtes);
+
+ })
+ }
+
+ getDeviceBYfilterNOGPS(i) {
+ if(i==6){
+ this.skip =0;
+ }
+ this.filterId = 'nogpsfix';
+ clearInterval(this.interval);
+ var nogps = "no_gps_fix_devices";
+ var status_1 = false;
+ this.contactService.getDeviceByFilter_dash(nogps,this.emailid, this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+
+ this.filtes = res.devices;
+
+ this.abc(this.filtes);
+
+ })
+
+ }
+ getDeviceBYfilterEXPIRED(i){
+ if(i==7){
+ this.skip =0;
+ }
+ this.filterId = 'm';
+ clearInterval(this.interval);
+ var a = "Expired";
+
+ var status_1:any;
+
+ this.contactService.getDeviceByFilter_dash(a,this.emailid,this.useridd, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID,status_1)
+ .subscribe(res => {
+
+ this.filtes = res.devices;
+
+ this.abc(this.filtes);
+
+ })
+ }
+
+ getDeviceBYfilterNoData(i) {
+ if (i == 7) {
+ this.skip = 0;
+ }
+ this.filterId = 'm';
+ clearInterval(this.interval);
+ var a = "NO DATA";
+
+ var status_1: any;
+
+ this.contactService.getDeviceByFilter_dash(a, this.emailid, this.useridd, this.skip, this.limit, this.myInput, this.supAdm, this.DealerID, status_1)
+ .subscribe(res => {
+
+ this.filtes = res.devices;
+
+ this.abc(this.filtes);
+
+ })
+ }
+
+ alldev() {
+ // console.log("localstorageComp")
+ var retrievedData = localStorage.getItem("devices");
+ var cord = JSON.parse(retrievedData);
+ this.filtes = cord;
+ this.abc(this.filtes)
+ }
+
+selectedlanguage:any
+ // ----------------new login method-------------------------
+ vewdevLogin(id) {
+ console.log(id);
+ localStorage.setItem("custId", id);
+ localStorage.removeItem("in1");
+ this.selectedlanguage = localStorage.getItem('appLang');
+ this.translate.setDefaultLang(this.selectedlanguage);
+ this.translate.use(this.selectedlanguage);
+ this.contactService.getcustToken(id).subscribe(
+ data => {
+ // this.devicesss = data
+ // console.log(this.devicesss)
+
+ window.localStorage['Dealer_token'] = window.localStorage['token']
+ window.localStorage['token'] =data.custumer_token;
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ window.localStorage['Custumer'] = 'ON';
+ localStorage.setItem('superadmin', "ON");
+
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ // localStorage.setItem('Dealer',"OFF");
+ // localStorage.setItem('superadmin',"OFF")
+ console.log('this.superAdmin',this.superAdmin);
+ // debugger;
+ if(this.superAdmin === true){
+ localStorage.setItem('supAdminAcessToCust', 'true' );
+ }
+ if (window.localStorage['DataLoaded'] = 'True') {
+ let dlrStatus = "true";
+
+ localStorage.setItem("dlrchk", dlrStatus)
+
+ this.router.navigateByUrl("const?_status=" + "OK");
+
+ // console.log('testing', this.useridd);
+ }
+ this.deviceData=[]
+ this.supAdm=undefined
+ this.reload()
+ this.ngOnInit()
+ this.contactService.totalTicketCount.next(0);
+
+ });
+ }
+
+ vewdev(id, name, type, expDate,lastSpeed,status) {
+ // console.log(lastSpeed);
+
+ var exStatus = status.slice(0,7);
+ if(exStatus === 'Expired'){
+ swal({
+ title: 'Expired',
+ text: "Renew Your subscription for uninterrupted service",
+ type: 'warning',
+ showCancelButton: false,
+ confirmButtonColor: '#3085d6',
+
+ confirmButtonText: 'ok'
+ })
+
+ }else{
+ let currDate = new Date().getTime();
+ let chkDate = new Date(expDate).getTime();
+
+ var dataStatus = {
+ vehicleId: id,
+ vehicleName: name,
+ vehicleType: type
+ }
+ // console.log("Inside View Dev",dataStatus);
+ if (type == "Tracker") {
+ localStorage.setItem('last_speed',lastSpeed );
+ this.router.navigateByUrl("location?_dname=" + name + "_id=" + id);
+ window.localStorage['devDetail'] = JSON.stringify(dataStatus);
+ }
+ else {
+ localStorage.setItem('last_speed',lastSpeed );
+ this.router.navigateByUrl("account?_did=" + id + "." + name);
+ }
+ }
+
+ }
+
+
+ // changing color of icon according to response
+ sidebarData(i) {
+ if(i==0){
+ this.skip=0;
+ }
+ // console.log(this.skip, this.limit);
+ this.filterId = '' ;
+ if (this.checker == "OK" || this.checker == "ok") {
+
+ this.injectData.getData(this.emailid, this.useridd, this.groupId, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID).subscribe(
+ (data) => {
+ this.devicess = data;
+ this.final = this.devicess.devices;
+
+ this.total_final = this.final;
+
+ if (this.final.length == 0 || this.final == null || !this.final) {
+ this.add_dev = false
+
+ }
+ else {
+ this.add_dev = true
+ }
+ this.Ing_Status();
+ // this.refresh();
+ let val = JSON.stringify(this.final);
+ localStorage.setItem("devices", val);
+ window.localStorage['LoadGraph'] = 'True'
+ window.localStorage['checker'] = 'Data'
+ window.localStorage['DataLoaded'] = 'True'
+
+ // window.localStorage['GetDevData'] = 'False'
+
+ // this.table();
+ // this.subscription.unsubscribe();
+ },
+ (err) => {
+ if (err) {
+ console.log(err);
+ }
+ }
+ )
+ }
+ else if (window.localStorage.DataUpdate == 'True') {
+
+
+ this.final = []
+ this.injectData.getData(this.emailid, this.useridd, this.groupId, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID).subscribe(
+ (data) => {
+ this.devicess = data
+ this.final = this.devicess.devices
+ this.total_final = this.final;
+ if (this.final.length == 0 || this.final == null || !this.final) {
+ this.add_dev = false
+ this.Load = false;
+ }
+ else {
+ this.add_dev = true
+ }
+ this.Ing_Status();
+ // this.refresh();
+
+ let val = JSON.stringify(this.final);
+ localStorage.setItem("devices", val);
+ window.localStorage['DataUpdate'] = 'False'
+ window.localStorage['LoadGraph'] = 'True'
+ window.localStorage['DataLoaded'] = 'True'
+
+ // window.localStorage['GetDevData'] = 'False'
+ // this.subscription.unsubscribe();
+ this.Load = false;
+ // this.table();
+ // this.subscription.unsubscribe();
+
+ },
+ (err) => {
+ if (err) {
+ this.Load = false
+ }
+ }
+ )
+ }
+ else if (this.checker == "Data") {
+
+ var retrievedData = localStorage.getItem("devices");
+ var cord = JSON.parse(retrievedData);
+ this.final = cord
+ this.total_final = this.final
+ if (this.final.length == 0 || this.final == null || !this.final) {
+ this.add_dev = false
+ this.Load = false;
+ }
+ this.total_final = this.final
+ window.localStorage['DataLoaded'] = 'True'
+ this.Ing_Status();
+ // this.refresh();
+
+ // this.subscription.unsubscribe();
+ // window.localStorage['GetDevData'] = 'False'
+ this.Load = false;
+ // this.table();
+ // this.subscription.unsubscribe();
+
+ }
+
+ else {
+
+ this.injectData.getData(this.emailid, this.useridd, this.groupId, this.skip, this.limit, this.myInput,this.supAdm,this.DealerID).subscribe(
+ (data) => {
+ this.devicess = data
+ this.final = this.devicess.devices
+ this.total_final = this.final;
+ if (this.final.length == 0 || this.final == null || !this.final) {
+ this.add_dev = false
+ this.Load = false;
+ }
+ else {
+ this.add_dev = true
+ }
+ this.Ing_Status();
+ //this.refresh();
+
+ let val = JSON.stringify(this.final);
+ localStorage.setItem("devices", val);
+ window.localStorage['LoadGraph'] = 'True'
+ window.localStorage['checker'] = 'Data'
+ window.localStorage['DataLoaded'] = 'True'
+
+ // window.localStorage['GetDevData'] = 'False'
+ this.Load = false;
+ // this.subscription.unsubscribe();
+ // this.table();
+ // this.subscription.unsubscribe();
+
+ },
+ (err) => {
+ if (err) {
+ this.Load = false;
+ }
+ }
+ )
+ }
+
+ // }
+
+ // })
+
+ }
+
+
+ Ing_Status() {
+
+ // this.ing_Arr = []
+ var that = this;
+ // setInterval(function(){
+
+ for (var y = 0; y < that.final.length; y++) {
+ that.socket_Ing.emit('acc', that.final[y].Device_ID)
+ that.socket_Ing.on(that.final[y].Device_ID + 'acc', that.accListener(y, that.final[y]));
+ var d = new Date();
+ var a = d.setHours(0, 0, 0, 0);
+
+ }
+
+
+
+ // console.log('socket function');
+
+ that.abc(that.total_final);
+ // },(1000*that.setTimeOut.value))
+ }
+
+
+ imgUrlacc: any;
+ ing_Arr = [];
+
+ accListener(index, dev) {
+
+
+ var outerThis = this;
+ var ing
+ return function (acc, from, time) {
+ var newNum = "Ignition";
+ var newTitle = "Ignition_Time";
+ var todaysODO = "Todays_ODO"
+ var newVal = acc;
+
+ //var newTim = time;
+ var dt = new Date(time);
+ let day = dt.getDate();
+ let month = dt.getMonth() + 1;
+ let year = dt.getFullYear();
+
+ let final_date = day + "/" + month + "/" + year
+ let tm = new Date(time).toLocaleTimeString();
+
+ let total = final_date + " " + tm
+
+ outerThis.ing_Arr.push(from)
+ dev[newNum] = newVal;
+ dev[newTitle] = total;
+ dev[todaysODO] = dev.today_odo
+
+ var i = outerThis.final.indexOf(index);
+ outerThis.final[i] = dev;
+ outerThis.total_final = outerThis.final;
+
+
+ }
+
+ }
+ imgurl: any;
+ test(a, b) {
+ this.textStatus = "";
+ //let b = a.split("|")[0]
+ var IgnTime = moment(b).format('lll');
+ if (!a) {
+ this.imgurl = "../../assets/image/enginena.png";
+ this.textStatus = "Ignition Status: NA"
+ return true;
+ }
+ else if (a == "1") {
+ this.imgurl = "../../assets/image/enginegreen.png";
+ this.textStatus = "Ignition Status: ON | Last Updated: " + IgnTime
+ return true;
+ }
+ else if (a == "0") {
+
+ this.imgurl = "../../assets/image/enginered.png"
+ this.textStatus = "Ignition Status: OFF | Last Updated:" + IgnTime
+
+ return true;
+ }
+ else {
+ this.imgurl = "../../assets/image/enginena.png";
+ return false;
+ }
+ }
+
+ testtPower(pwr) {
+ if (!pwr) {
+ this.pwrURL = "../../assets/image/noPower.png";
+ this.pStatus = "No Power";
+ return true;
+ } else if (pwr == "1") {
+ this.pwrURL = "../../assets/image/power_on.png";
+ this.pStatus = "Power ON";
+ return true;
+ } else if (pwr == "0") {
+ this.pwrURL = "../../assets/image/power_off.png";
+ this.pStatus = "Power OFF";
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+ gsmURL:any;
+ gsmStatus:any;
+ testSignal(signal:any,dev:any){
+
+
+ var signalNumricvalue = parseInt(signal);
+
+ if(signalNumricvalue == 0) {
+ this.gsmURL = "../../assets/images/tower/tower0.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ } else if ((signalNumricvalue > 0)&&(signalNumricvalue<5)) {
+ this.gsmURL = "../../assets/images/tower/tower5.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ } else if ((signalNumricvalue >= 5)&&(signalNumricvalue<10)) {
+ this.gsmURL = "../../assets/images/tower/tower10.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ } else if ((parseFloat(signal) >= 10)&&(parseFloat(signal)<15)) {
+ this.gsmURL = "../../assets/images/tower/tower15.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ } else if ((signalNumricvalue >= 15)&&(signalNumricvalue<20)) {
+ this.gsmURL = "../../assets/images/tower/tower20.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ }
+ else if ((signalNumricvalue >= 20)&&(signalNumricvalue<25)) {
+ this.gsmURL = "../../assets/images/tower/tower25.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ }
+ else if (signalNumricvalue >= 25){
+ this.gsmURL = "../../assets/images/tower/tower30.png";
+ this.gsmStatus = "Signal strength" + " "+ signal;
+ return true;
+ }else{
+ this.gsmURL = "../../assets/images/tower/tower7.png";
+ this.gsmStatus = "No Signal";
+ return true;
+ }
+
+ }
+
+ gpsStatus(gTrack) {
+ if (!gTrack) {
+ this.gpsImg = "../../assets/image/no_gps.png";
+ this.gStatus = "GPS NOT SUPPORTED"
+ return true;
+ } else if (gTrack == "1") {
+ this.gpsImg = "../../assets/image/gpsOn.png";
+ this.gStatus = "GPS ON"
+ return true;
+ } else if (gTrack == "0") {
+ this.gpsImg = "../../assets/image/gps_off.png";
+ this.gStatus = "GPS OFF"
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ gpsACStatus(ACtrack) {
+ if (!ACtrack) {
+ // grey
+ this.ACImg = "../../assets/image/acGrey.png";
+ this.aStatus = "AC NOT SUPPORTED"
+ return true;
+ } else if (ACtrack == "1") {
+ // green
+ this.ACImg = "../../assets/image/acGreen.png";
+ this.aStatus = "AC ON"
+ return true;
+ } else if (ACtrack == "0") {
+ // red
+ this.ACImg = "../../assets/image/acRed.png";
+ this.aStatus = "AC OFF"
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+
+ iconCheck(status, iconType) {
+
+ var devStatus = status.split(" ");
+
+ if ((iconType == 'car') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/outOfReach_car.png";
+ return this.devIcon;
+ } else if ((iconType == 'car') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/running_car.png";
+ return this.devIcon;
+ } else if ((iconType == 'car') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/stopped_car.png";
+ return this.devIcon;
+ } else if ((iconType == 'car') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/idle_car.png";
+ return this.devIcon;
+ } else if ((iconType == 'car') && (devStatus[0] == "NO")) {
+ this.devIcon = "../../assets/image/no_data.png";
+ return this.devIcon;
+ }
+ else if ((iconType == 'bike') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/outOfReach_bike.png";
+ return this.devIcon;
+ } else if ((iconType == 'bike') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/running_bike.png";
+ return this.devIcon;
+ } else if ((iconType == 'bike') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/stopped_bike.png";
+ return this.devIcon;
+ } else if ((iconType == 'bike') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/idle_bike.png";
+ return this.devIcon;
+ // }
+ } else if ((iconType == 'bike') && (devStatus[0] == "NO")) {
+ this.devIcon = "../../assets/image/no_data.png";
+ return this.devIcon;
+ } else if ((iconType == 'bus') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/bus_out.png";
+ return this.devIcon;
+ } else if ((iconType == 'bus') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/bus_running.png";
+ return this.devIcon;
+ } else if ((iconType == 'bus') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/bus_stop.png";
+ return this.devIcon;
+ } else if ((iconType == 'bus') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/idle_bus.png";
+ return this.devIcon;
+ } else if ((iconType == 'bus') && (devStatus[0] == "NO")) {
+ this.devIcon = "../../assets/image/no_data.png";
+ return this.devIcon;
+ }
+ else if ((iconType == 'truck') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/our_truck.png";
+ return this.devIcon;
+ } else if ((iconType == 'truck') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/running_truck.png";
+ return this.devIcon;
+ } else if ((iconType == 'truck') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/stopped_truck.png";
+ return this.devIcon;
+ } else if ((iconType == 'truck') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/idle_truck.png";
+ return this.devIcon;
+ } else if ((iconType == 'truck') && (devStatus[0] == "NO")) {
+ this.devIcon = "../../assets/image/no_data.png";
+ return this.devIcon;
+ }
+ else if ((iconType == 'tractor') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/tractor_blue.png";
+ return this.devIcon;
+ } else if ((iconType == 'tractor') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/tractor_green.png";
+ return this.devIcon;
+ } else if ((iconType == 'tractor') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/tractor_red.png";
+ return this.devIcon;
+ } else if ((iconType == 'tractor') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/tractor_yellow.png";
+ return this.devIcon;
+ }
+ else if ((iconType == 'tractor') && (devStatus[0] == "NO")) {
+ this.devIcon = "../../assets/image/no_data.png";
+ return this.devIcon;
+ }
+ else if((!iconType)&&(devStatus[0] == "OUT")){
+ this.devIcon = "../../assets/image/outOfReach_car.png";
+ return this.devIcon;
+ } else if((!iconType)&&(devStatus[0] == "RUNNING")){
+ this.devIcon = "../../assets/image/running_car.png";
+ return this.devIcon;
+ }else if((!iconType)&&(devStatus[0] == "STOPPED")){
+ this.devIcon = "../../assets/image/stopped_car.png";
+ return this.devIcon;
+ }else if((!iconType)&&(devStatus[0] == "IDLING")){
+ this.devIcon = "../../assets/image/idle_car.png";
+ return this.devIcon;
+ }else if ((iconType == 'user') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/user_b.png";
+ return this.devIcon;
+ } else if ((iconType == 'user') && (devStatus[0] == "RUNNING")) {
+ this.devIcon = "../../assets/image/user_g.png";
+ return this.devIcon;
+ } else if ((iconType == 'user') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/user_r.png";
+ return this.devIcon;
+ } else if ((iconType == 'user') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/user_y.png";
+ return this.devIcon;
+
+ }else if ((iconType == 'jcb') && (devStatus[0] == "OUT")) {
+ this.devIcon = "../../assets/image/jcb_blue.png";
+ return this.devIcon;
+ } else if ((iconType == 'jcb') && (devStatus[0] == "RUNNING")) {
+
+ this.devIcon = "../../assets/image/jcb_green.png";
+ return this.devIcon;
+ } else if ((iconType == 'jcb') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/image/jcb_red.png";
+ return this.devIcon;
+ } else if ((iconType == 'jcb') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/image/jcb_yellow.png";
+ return this.devIcon;
+ }
+ else if ((iconType == 'ambulance') && (devStatus[0] == "OUT")) {
+
+ this.devIcon = "../../assets/images/liveTrackIcons/ambulance_b.png";
+ return this.devIcon;
+ } else if ((iconType == 'ambulance') && (devStatus[0] == "RUNNING")) {
+
+ this.devIcon = "../../assets/images/liveTrackIcons/ambulance_g.png";
+ return this.devIcon;
+ } else if ((iconType == 'ambulance') && (devStatus[0] == "STOPPED")) {
+ this.devIcon = "../../assets/images/liveTrackIcons/ambulance_r.png";
+ return this.devIcon;
+ } else if ((iconType == 'ambulance') && (devStatus[0] == "IDLING")) {
+ this.devIcon = "../../assets/images/liveTrackIcons/ambulance_y.png";
+ return this.devIcon;
+ }
+ else{
+ this.devIcon = "../../assets/image/noIcon.png";
+ return this.devIcon
+ }
+
+ }
+
+
+ myInput: any;
+
+ //sorting
+ key: string = 'Device_Name'; //set default
+ reverse: boolean = false;
+ sort(key) {
+ // console.log(key);
+ this.key = key;
+ this.reverse = !this.reverse;
+ }
+
+ //initializing p to one
+ page: number = 1;
+
+
+
+ it: number;
+ timeIntervalRefresh() {
+ // var that=this;
+ clearInterval(this.interval);
+
+ this.it = (1000 * this.setTimeOut.value);
+
+ this.interval = setInterval(() => {
+ this.sidebarData(10);
+ this.getGraphFunction();
+ this.getNotificationCount()
+ }, this.it);
+
+
+ }
+
+
+ refreshFUnction(ev) {
+
+
+ this.setTimeOut.value = ev;
+
+ this.timeIntervalRefresh();
+
+ }
+
+
+
+ // refreshData(){
+
+ // this.sidebarData(); // simply signal for the service to update its data stream
+ // }
+
+ locationAddress: any;
+ getAddress(device) {
+ var ds = device.status;
+ var exStatus = ds.slice(0,7);
+ if(exStatus === 'Expired'){
+ // swal({
+ // title: 'Expired',
+ // text: "Renew Your subscription for uninterrupted service",
+ // type: 'warning',
+ // showCancelButton: false,
+ // confirmButtonColor: '#3085d6',
+
+ // confirmButtonText: 'ok'
+ // })
+ }else{
+ this.lattitude = device.last_location?device.last_location.lat:0;
+ this.longitude = device.last_location?device.last_location.long:0;
+ var latlng_1 =
+ {
+ "lat": device.last_location?device.last_location.lat:0,
+ "long": device.last_location?device.last_location.long:0
+ }
+ this.contactService.getAddressByApi(latlng_1).subscribe(res=>{
+ // console.log('addressresponse=>',res);
+ if(res.message == "Address not found in databse"){
+ this.addressConversionBygoogleAPI(device);
+ }else{
+ device.locationAddress = res.address;
+ device['pen'] = true;
+
+ }
+ })
+ }
+
+
+ }
+
+
+
+ addressConversionBygoogleAPI(device){
+ var outerThis = this;
+ if (device.last_location == undefined) {
+ this.lattitude = null;
+ this.longitude = null;
+ } else {
+
+ this.lattitude = device.last_location.lat;
+ this.longitude = device.last_location.long;
+ }
+
+
+ var geocoder = new google.maps.Geocoder();
+ var latlng = new google.maps.LatLng(this.lattitude, this.longitude);
+
+ var request = {
+ latLng: latlng,
+
+ };
+
+
+
+ geocoder.geocode(request, function (data, status) {
+ console.log('request',data);
+
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ console.log('request',request);
+ outerThis.address_show = data[0].formatted_address;
+ device.locationAddress = outerThis.address_show;
+ device['pen'] = true;
+ outerThis.saveAddress(outerThis.lattitude,outerThis.longitude,outerThis.address_show);
+
+ } else {
+
+ device.locationAddress = "No address available";
+
+ }
+ }
+ else {
+
+ outerThis.address_show = outerThis.lattitude + ", " + outerThis.longitude;
+ device.locationAddress = outerThis.address_show;
+ device['pen'] = true;
+
+ }
+
+ })
+
+ }
+
+ translateAddressToHindi(device){
+ console.log("Device",device);
+ // translation
+ var index=this.deviceData.indexOf(device);
+ console.log("herk",this.deviceData.indexOf(device))
+ this.contactService.addressTranslationInHindi({text:device.locationAddress}).subscribe(res=>{
+ this.deviceData[index].locationAddress=res.translation;
+ console.log(res);
+ })
+
+
+ }
+
+
+ saveAddress(lat,lng,address){
+ var addressObj = {"lat":lat,
+ "long":lng,
+ "address":address
+ }
+ this.contactService.saveAdd(addressObj).subscribe(res=>{
+ console.log(res);
+ },err=>{
+ console.log("couldn't save address");
+ })
+
+ }
+
+
+
+ updateAddress(dev){
+ console.log(dev);
+
+ let dialogRef = this.dialog.open(ManualAddressComponent, {
+ width: '600px',
+ data: dev
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "success") {
+ console.log(result);
+ }
+
+ else if (result == "cancel") {
+ console.log(result);
+ }
+ });
+
+ }
+
+
+ skip: number = 0;
+ limit: number = 10;
+ firstcall: boolean = false;
+ lastcall: boolean = true;
+ next() {
+ this.lastcall = false;
+ this.skip += 1;
+ // console.log("skip=>",this.skip);
+ if(this.filterId== 'i'){
+ this.getDeviceBYfilterIdle(10);
+
+ }else if(this.filterId == 'r'){
+ this.getDeviceBYfilter(10);
+
+ }else if(this.filterId == 's'){
+ this.getDeviceBYfilterStop(10);
+
+ }else if(this.filterId == 'm'){
+ this.getDeviceBYfilterMain(10);
+
+ }else if(this.filterId == 'our'){
+ this.getDeviceBYfilterOUR(10);
+ }else if(this.filterId == 'nogpsfix'){
+ this.getDeviceBYfilterNOGPS(10);
+ } else if(this.filterId == 'av'){
+ this.getAddedVehList(this.keyIdentifier);
+ }
+ else if(this.filterId == 'ev'){
+ this.getExpiredVehList(this.keyIdentifier);
+ }
+ else if(this.filterId == 'rv'){
+ this.renewedVehList(this.keyIdentifier);
+ }else{
+ this.sidebarData(10);
+
+ }
+
+
+ }
+ pre() {
+ // console.log(this.skip)
+ if (this.skip > 0) {
+ this.skip -= 1;
+ this.lastcall = false;
+ if(this.filterId== 'i'){
+ this.getDeviceBYfilterIdle(10);
+
+ }else if(this.filterId == 'r'){
+ this.getDeviceBYfilter(10);
+
+ }else if(this.filterId == 's'){
+ this.getDeviceBYfilterStop(10);
+
+ }else if(this.filterId == 'm'){
+ this.getDeviceBYfilterMain(10);
+
+ }else if(this.filterId == 'our'){
+ this.getDeviceBYfilterOUR(10);
+ }else if(this.filterId == 'nogpsfix'){
+ this.getDeviceBYfilterNOGPS(10);
+ }
+ else if(this.filterId == 'av'){
+ this.getAddedVehList(this.keyIdentifier);
+
+ }
+ else if(this.filterId == 'ev'){
+ this.getExpiredVehList(this.keyIdentifier);
+
+ }
+ else if(this.filterId == 'rv'){
+ this.renewedVehList(this.keyIdentifier);
+ }else{
+ this.sidebarData(10);
+
+ }
+ } else {
+ this.lastcall = true;
+ this.firstcall = false;
+ }
+
+ }
+
+
+ searchFilter(text: string,id) {
+ this.modelChanged.next(text);
+
+ }
+
+
+ getfuel(device,ind){
+ // console.log(ind);
+ // console.log(device);
+ // debugger;
+ var show_val = '';
+ if(this.fuelflag == 'l'){
+ if((device.currentFuel == undefined)||(device.currentFuel == NaN)||(device.currentFuel == null)){
+ show_val = '0';
+ return show_val;
+ }else{
+ show_val = device.currentFuel
+ return show_val;
+ }
+ }
+ if(this.fuelflag == 'p'){
+ if((device.fuel_percent == undefined)||(device.fuel_percent == NaN)||(device.fuel_percent == null)){
+ show_val = '0';
+ return show_val;
+ }else{
+ show_val = device.fuel_percent;
+ return show_val;
+ }
+ }
+
+ }
+
+
+ gettemp(t){
+ if(t){
+ return (parseFloat(t)/10).toFixed(2);
+ }else{
+ return 0 ;
+ }
+ }
+
+ public ngOnDestroy() {
+ localStorage.setItem('refreshInterval', JSON.stringify(this.setTimeOut.value));
+ if(this.final){
+ for (var e = 0; e < this.final.length; e++) {
+ this.socket_Ing.removeAllListeners(this.final[e])
+ }
+ }
+ clearInterval(this.interval);
+ }
+
+ removeGroup() {
+ this.groupId = undefined;
+ this.groupName = undefined;
+ this.getGraphFunction();
+ this.sidebarData(10);
+ }
+
+
+
+ // =============================new Dashboard =======================================================
+
+ DeviceSummaryArr = [
+ {status : "TOTAL VEHICLES" , total : this.total_vech?this.total_vech:0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "RUNNING", total : this.Running?this.Running:0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "STOPPED" , total : this.off_vech?this.off_vech:0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "IDLE" , total : this.idle_vech?this.idle_vech:0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "OUT OF REACH" , total : this.OutOfReach?this.OutOfReach : 0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "EXPIRED" , total : this.expire_status?this.expire_status : 0 , icon : "../../assets/image/totalVehicle.png"},
+ {status : "NO DATA" , total : this.no_data?this.no_data : 0 , icon : "../../assets/image/totalVehicle.png"},
+ ]
+
+
+ devicebystatus(devstatus){
+ if(devstatus == 'TOTAL VEHICLES'){
+ this.sidebarData(0);
+ }
+
+ if(devstatus == 'RUNNING'){
+ this.getDeviceBYfilter(1);
+ }
+
+ if(devstatus == 'STOPPED'){
+ this.getDeviceBYfilterStop(3)
+ }
+
+ if(devstatus == 'IDLE'){
+ this.getDeviceBYfilterIdle(2);
+ }
+
+ if(devstatus == 'OUT OF REACH'){
+ this.getDeviceBYfilterOUR(5);
+ }
+
+ if(devstatus == 'NO GPS'){
+ this.getDeviceBYfilterNOGPS(6);
+ }
+ if(devstatus == 'EXPIRED'){
+ this.getDeviceBYfilterEXPIRED(7);
+ }
+ if (devstatus == 'NO DATA') {
+ this.getDeviceBYfilterNoData(8)
+ }
+ }
+
+ vehicleUtilizationGraph() {
+ var that = this ;
+ var tOut = setTimeout(function(){
+ var canvas = document.getElementById("deviceBarChart");
+
+ var ctx = canvas.getContext("2d");
+ // clearTimeout(tOut);
+ // },2000)
+
+
+
+ var role = ''
+ var userid = that.useridd ;
+ if(that.superAdmin === true){
+ role = 'supAdmin' ;
+ }else if(that.custtype === true){
+ role = 'Dealer'
+ }else{
+ role = 'User'
+ }
+
+ var barChartData = {
+ labels: [
+ "Today",
+ "Week",
+ "Month"
+ ],
+ datasets: [
+ {
+ label: "Running",
+ backgroundColor: "#86AC41",
+ borderColor: "white",
+ borderWidth: 1,
+ data: [0,0,0]
+ },
+ {
+ label: "Out of Reach",
+ backgroundColor: "#4897D8",
+ borderColor: "white",
+ borderWidth: 1,
+ data: [0,0,0]
+ },
+ {
+ label: "Idle",
+ backgroundColor: "#F5BE41",
+ borderColor: "white",
+ borderWidth: 1,
+ data: [0,0,0]
+ },
+ {
+ label: "Stopped",
+ backgroundColor: "#CB0000",
+ borderColor: "white",
+ borderWidth: 1,
+ data: [0,0,0]
+ }
+ ]
+ };
+
+ var chartOptions = {
+ responsive: true,
+ maintainAspectRatio: false,
+ title: {
+ display: true,
+ fontSize:14,
+ text: 'Vehicle Utilization'
+ },
+ legend: {
+ position: "top"
+ },
+
+ scales: {
+ yAxes: [{
+ ticks: {
+ beginAtZero: true,
+ max: 100,
+ min: 0
+ }
+ }]
+ }
+ }
+
+ that.deviceBarChart = new Chart(ctx,{
+ "type":"bar",
+ "data":barChartData,
+ "options":chartOptions
+ })
+
+ that.contactService.vehicleUtilization(role,userid).subscribe(res=>{
+ console.log('resresresresresresres=>',res);
+ var bargraph = res;
+ console.log('bargraph',bargraph.length);
+
+ if((bargraph.length != 0)&&(bargraph.length != undefined)){
+ var varGraphObject = bargraph;
+
+ for(let bg in varGraphObject){
+
+ var runningArr = [
+ (varGraphObject[0]['Daily']['Running'] != undefined)?varGraphObject[0]['Daily']['Running']:0,
+ (varGraphObject[1]['Weekly']['Running']!=undefined)?varGraphObject[1]['Weekly']['Running']:0,
+ (varGraphObject[2]['Monthly']['Running'] != undefined)?varGraphObject[2]['Monthly']['Running']:0
+ ] ;
+ var IdleArr = [
+ (varGraphObject[0]['Daily']['Idle'] != undefined)?varGraphObject[0]['Daily']['Idle'] :0,
+ (varGraphObject[1]['Weekly']['Idle'] != undefined)?varGraphObject[1]['Weekly']['Idle']:0,
+ (varGraphObject[2]['Monthly']['Idle'] != undefined)?varGraphObject[2]['Monthly']['Idle'] :0
+ ] ;
+ var OFRArr = [
+ (varGraphObject[0]['Daily']['OFR'] != undefined)?varGraphObject[0]['Daily']['OFR']:0,
+ (varGraphObject[1]['Weekly']['OFR'] != undefined)?varGraphObject[1]['Weekly']['OFR']:0,
+ (varGraphObject[2]['Monthly']['OFR'] != undefined)?varGraphObject[2]['Monthly']['OFR']:0
+ ] ;
+ var StopArr = [
+ (varGraphObject[0]['Daily']['Stop'] != undefined)?varGraphObject[0]['Daily']['Stop']:0,
+ (varGraphObject[1]['Weekly']['Stop'] != undefined)?varGraphObject[1]['Weekly']['Stop'] :0,
+ (varGraphObject[2]['Monthly']['Stop'] != undefined)?varGraphObject[2]['Monthly']['Stop']:0
+ ] ;
+ }
+ }
+
+ barChartData = {
+ labels: [
+ "Today",
+ "Week",
+ "Month"
+ ],
+ datasets: [
+ {
+ label: "Running",
+ backgroundColor: "#86AC41",
+ borderColor: "white",
+ borderWidth: 1,
+ data: runningArr
+ },
+ {
+ label: "Out of Reach",
+ backgroundColor: "#4897D8",
+ borderColor: "white",
+ borderWidth: 1,
+ data: OFRArr
+ },
+ {
+ label: "Idle",
+ backgroundColor: "#F5BE41",
+ borderColor: "white",
+ borderWidth: 1,
+ data: IdleArr
+ },
+ {
+ label: "Stopped",
+ backgroundColor: "#CB0000",
+ borderColor: "white",
+ borderWidth: 1,
+ data: StopArr
+ }
+ ]
+ };
+
+
+ that.deviceBarChart = new Chart(ctx,{
+ "type":"bar",
+ "data":barChartData,
+ "options":chartOptions
+ })
+ },err=>{
+ console.log(err);
+ })
+
+ clearTimeout(tOut);
+ },3000)
+
+ }
+
+
+ expenseChart(){
+ var that =this;
+ var tOut2 = setTimeout(function(){
+ var userId = that.useridd ;
+ var canvas_2 = document.getElementById("deviceExpense");
+ var ctx_2 = canvas_2.getContext("2d");
+ var daugnoutChart_1 = {
+ datasets: [{
+ data: [0,0,0,0,0],
+ backgroundColor:['#86AC41', '#CB0000', '#F5BE41','#4897D8','#5B7065'],
+ }],
+
+ labels: [
+ 'Service',
+ 'Oil Changed',
+ 'Maintenance',
+ 'Tyres',
+ 'Others'
+ ]
+ };
+
+ var optionDonought = {
+ responsive: true,
+ maintainAspectRatio: false,
+ title: {
+ display: true,
+ fontSize:14,
+ text: 'Expense'
+ }
+ };
+
+
+ that.devicePiChart_1 = new Chart(ctx_2, {
+ type: 'doughnut',
+ data: daugnoutChart_1,
+ options: optionDonought
+ });
+ that.contactService.getExpenseGrapgData(userId).subscribe(res=>{
+ console.log('resresresresresresres',res);
+
+ var expenseData = res ;
+ var expData = [0,0,0,0,0];
+ var expLevel = ['Service',
+ 'Oil Changed',
+ 'Maintenance',
+ 'Tyres',
+ 'Others']
+ if(expenseData.length != 0){
+ expData=[];
+ expLevel =[];
+ for( var i=0;i < expenseData.length;i++){
+ expData.push(expenseData[i].amount);
+ expLevel.push(expenseData[i]._id)
+
+ }
+
+ }
+ console.log('expDataexpDataexpDataexpDataexpData',expData);
+ daugnoutChart_1 = {
+ datasets: [{
+ data:expData,
+ backgroundColor:['#86AC41', '#CB0000', '#F5BE41','#4897D8','#5B7065'],
+ }],
+ labels: expLevel
+ };
+
+ that.devicePiChart_1 = new Chart(ctx_2, {
+ type: 'doughnut',
+ data: daugnoutChart_1,
+ options: optionDonought
+ });
+ },err=>{
+ console.log(err);
+ })
+ clearTimeout(tOut2);
+ },3000)
+
+ }
+ NoGPS :any;
+ utilisationChart(){
+ var that = this;
+ $( document ).ready(function() {
+ var canvas_1 = document.getElementById("utilisationChart");
+ var ctx_1 = canvas_1.getContext("2d");
+ var daugnoutChart = {
+ datasets: [{
+ data: [
+ that.Running?that.Running:0,
+ that.off_vech?that.off_vech:0,
+ that.idle_vech?that.idle_vech:0,
+ that.OutOfReach?that.OutOfReach : 0,
+ that.NoGPS?that.NoGPS : 0
+ ],
+ backgroundColor:['#86AC41', '#CB0000', '#F5BE41','#4897D8','#5B7065'],
+ }],
+
+
+ labels: [
+ 'RUNNING',
+ 'STOPPED',
+ 'IDLE',
+ 'OUT OF REACH',
+ 'NO GPS'
+ ]
+ };
+
+ var optionDonought_1 = {
+ responsive: true,
+ maintainAspectRatio: false,
+ title: {
+ display: true,
+ fontSize:14,
+ text: 'Vehicle Current Status'
+ }
+ };
+
+ that.devicePiChart = new Chart(ctx_1, {
+ type: 'doughnut',
+ data: daugnoutChart,
+ options: optionDonought_1
+ });
+ });
+
+ }
+
+
+ reminderVal : any;
+ reminderType = [{
+ value : "7daysL",
+ viewValue : "Last 7 days"
+ },{
+ value : "15daysL",
+ viewValue : "Last 15 days"
+ },{
+ value : "30daysL",
+ viewValue : "Last 30 days"
+ },{
+ value : "7daysN",
+ viewValue : "Next 7 days"
+ },{
+ value : "15daysN",
+ viewValue : "Next 15 days"
+ },{
+ value : "30daysN",
+ viewValue : "Next 30 days"
+ }];
+ reminderrr:any;
+ vehicleReminder(){
+ var Uid = this.useridd;
+ this.reminderrr = [];
+ this.contactService.getVehicleReminder(Uid).subscribe(res=>{
+ console.log('this.reminderVal',this.reminderVal);
+ this.reminderrr = res[0];
+ var notifString = '';
+ this.notifArr = [];
+ if(this.reminderVal == '7daysL'){
+ this.reminderrr = res[0]['last_seven'];
+ if(this.reminderrr.length != 0){
+ let devName = '';
+ let reminderType = '';
+ let reminderDate = '';
+ for(var i=0;i{
+ console.log(err);
+ })
+ }
+
+ getreminderevent(ev){
+ console.log(ev);
+
+ this.reminderVal = ev.value;
+ this.vehicleReminder();
+
+
+ }
+
+ showSharedDevice(deviceObj){
+ let dialogRef = this.dialog.open(SharedDevicesComponent, {
+ width: '600px',
+ data: deviceObj
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "success") {
+ console.log(result);
+ }
+
+ else if (result == "cancel") {
+ console.log(result);
+ }
+ });
+
+
+ }
+
+ addedDeviceVal:any;
+ expiredDeviceVal:any;
+ totalExpiredCount=[{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ totalRenewedCount=[{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ totalCount = [{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ billingDetailArr = [{'key' : 'Paid','value' : 0},{'key' : 'Pending','value' : 0}];
+ VehicleAdded = ['Today','Last Week','Last Month'];
+ getDeviceCount($event,id){
+ console.log($event);
+ console.log(id);
+ }
+
+
+ getTotalDeviceCount(){
+ var role = '';
+ if(this.superAdmin === true){
+ role = 'supAdmin' ;
+
+ }
+ if(this.custtype === true){
+ role = 'Dealer' ;
+
+ }
+
+
+
+ // var role = 'supAdmin';
+ var user_id = this.useridd;
+
+ this.contactService.getDeviceCount(role,user_id).subscribe(res=>{
+ this.totalCount = [{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ this.totalCount = [{'key' : 'Today','value' : res[0].today?res[0].today:0},{'key' : 'Week','value' : res[1].week?res[1].week:0},{'key' : 'Month','value' : res[2]?res[2].month:0}];
+ console.log(this.totalCount);
+
+
+ },err=>{
+ console.log(err);
+ })
+ }
+
+
+ getTotalExpiredDeviceCount(){
+ // http://localhost:3000/gps/DeviceExpiredCount?role=supAdmin&id=59cbbdbe508f164aa2fef3d8
+
+ var role1 = '';
+ if(this.superAdmin === true){
+ role1 = 'supAdmin' ;
+
+ }
+ if(this.custtype === true){
+ role1 = 'Dealer' ;
+
+ }
+
+
+ // var role1 = 'supAdmin';
+ var user_id1 = this.useridd;
+
+ this.contactService.getExpiredDeviceCount(role1,user_id1).subscribe(res=>{
+ this.totalExpiredCount = [{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ this.totalExpiredCount = [{'key' : 'Today','value' : res[0].today?res[0].today:0},{'key' : 'Week','value' : res[1].week?res[1].week:0},{'key' : 'Month','value' : res[2]?res[2].month:0}];
+ console.log(this.totalExpiredCount);
+
+
+ },err=>{
+
+ })
+ }
+
+
+ getTotalRenewedDeviceCount(){
+ // http://localhost:3000/gps/DeviceExpiredCount?role=supAdmin&id=59cbbdbe508f164aa2fef3d8
+
+ var role1 = '';
+ if(this.superAdmin === true){
+ role1 = 'supAdmin' ;
+
+ }
+ if(this.custtype === true){
+ role1 = 'Dealer' ;
+
+ }
+
+
+ // var role1 = 'supAdmin';
+ var user_id1 = this.useridd;
+
+ this.contactService.getRenewDeviceCount(role1,user_id1).subscribe(res=>{
+ this.totalRenewedCount = [{'key' : 'Today','value' : 0},{'key' : 'Week','value' : 0},{'key' : 'Month','value' : 0}];
+ this.totalRenewedCount = [{'key' : 'Today','value' : res[0].today?res[0].today:0},{'key' : 'Week','value' : res[1].week?res[1].week:0},{'key' : 'Month','value' : res[2]?res[2].month:0}];
+ console.log(this.totalRenewedCount);
+
+
+ },err=>{
+
+ })
+ }
+
+
+ // demoVideos(){
+ // let dialogRef = this.dialog.open(DemoVideosComponent, {
+ // // width: '903px',
+ // // data: { Type: type, dataset: datasets }
+ // panelClass: 'custom-dialog-container'
+ // });
+
+ // dialogRef.afterClosed().subscribe(result => {
+ // if (result == "OKK") {
+
+ // }
+ // else if (result == "No_Dev") {
+
+
+ // }
+ // });
+
+
+ // }
+
+
+ getApiKey(){
+ // debugger;
+ var api_key = 'AIzaSyA_ycttLXPMfCSSNAfPOsaENPQ85i17lPU';
+ var apiIdentifier = localStorage.getItem('apiIdentifier');
+ if(apiIdentifier == null){
+ console.log("Inside AppIdentifier");
+ this.contactService.getgoogleApi(this.useridd).subscribe(res=>{
+ if(res.message != "api key not found"){
+ api_key = res.api_key;
+ // var script = document.createElement('script');
+ // script.setAttribute("type", "text/javascript");
+ // script.setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key="+ api_key);
+ // document.getElementsByTagName("head")[0].appendChild(script);
+ document.getElementById('mapApi').setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key=" + api_key);
+ localStorage.setItem('apiIdentifier',api_key);
+ }else{
+
+ // var script = document.createElement('script');
+ // script.setAttribute("type", "text/javascript");
+ // script.setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key=AIzaSyA_ycttLXPMfCSSNAfPOsaENPQ85i17lPU");
+ // document.getElementsByTagName("head")[0].appendChild(script);
+ document.getElementById('mapApi').setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key="+api_key);
+ localStorage.setItem('apiIdentifier',api_key);
+ }
+ },err=>{
+ // var script = document.createElement('script');
+ // script.setAttribute("type", "text/javascript");
+ // script.setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key=AIzaSyA_ycttLXPMfCSSNAfPOsaENPQ85i17lPU");
+ // document.getElementsByTagName("head")[0].appendChild(script);
+ document.getElementById('mapApi').setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key="+api_key);
+ localStorage.setItem('apiIdentifier',api_key);
+ })
+
+ }else{
+ console.log(apiIdentifier);
+ var aCount = localStorage.getItem('apiCOunt');
+ if(aCount != '1'){
+ // var script = document.createElement('script');
+ // script.setAttribute("type", "text/javascript");
+ document.getElementById('mapApi').setAttribute("src", "https://maps.google.com/maps/api/js?libraries=geometry,places,drawing&key=" + apiIdentifier);
+ // document.getElementsByTagName("head")[0].appendChild(script);
+ localStorage.setItem('apiCOunt','1');
+ }
+ }
+ }
+
+ keyIdentifier:any;
+ getAddedVehList(key){
+
+ this.filterId = 'av';
+ if(key === 'Today'){
+ key='today';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Week'){
+ key='week';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Month'){
+ key='month';
+ this.keyIdentifier = key;
+ }
+
+ var role = '';
+ if(this.superAdmin === true){ role = 'supAdmin' ;}
+ if(this.custtype === true){role = 'Dealer' ;}
+ var user_id = this.useridd;
+ this.contactService.getDeviceCount1(role,user_id,key,this.skip,this.limit).subscribe(res=>{
+ console.log('added deviceList',res);
+ this.filtes = res;
+ this.abc(this.filtes);
+ })
+ }
+ getExpiredVehList(key){
+ this.filterId = 'ev';
+ console.log(this.skip);
+ if(key === 'Today'){
+ key='today';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Week'){
+ key='week';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Month'){
+ key='month';
+ this.keyIdentifier = key;
+ }
+ var role = '';
+ if(this.superAdmin === true){ role = 'supAdmin' ;}
+ if(this.custtype === true){role = 'Dealer' ;}
+ var user_id = this.useridd;
+ this.contactService.getExpiredDeviceCount1(role,user_id,key,this.skip,this.limit).subscribe(res=>{
+ console.log('ExpiredDeviceList',res);
+ this.filtes = res;
+ this.abc(this.filtes);
+ })
+
+ }
+
+ renewedVehList(key){
+ this.filterId = 'rv';
+ if(key === 'Today'){
+ key='today';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Week'){
+ key='week';
+ this.keyIdentifier = key;
+ }
+ if(key === 'Month'){
+ key='month';
+ this.keyIdentifier = key;
+ }
+
+ var role = '';
+ if(this.superAdmin === true){ role = 'supAdmin' ;}
+ if(this.custtype === true){role = 'Dealer' ;}
+ var user_id = this.useridd;
+ this.contactService.getRenewDeviceCount1(role,user_id,key,this.skip,this.limit).subscribe(res=>{
+ console.log('renewedDeviceList',res);
+ this.filtes = res;
+ this.abc(this.filtes);
+ })
+ }
+
+ latLongDetail(){
+ var that =this;
+ if (navigator.geolocation) {
+ // if(location.protocol != 'https:'){
+ // this.contactService.getlatLong().subscribe(res=>{
+ // console.log(res);
+ // })
+ // }else{
+ navigator.geolocation.getCurrentPosition(function(position) {
+ console.log('Position=>',position);
+ let geocoder = new google.maps.Geocoder();
+ var d_lat= position.coords.latitude;
+ var d_lng=position.coords.longitude;
+
+ let t_latlng = new google.maps.LatLng(d_lat, d_lng);
+
+ let request = {
+ latLng: t_latlng
+ };
+
+ geocoder.geocode(request, function (data, status) {
+ var userState;
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ var address_show = data[0];
+ console.log('var=>' ,address_show);
+ for (var ac = 0; ac < data[0].address_components.length; ac++) {
+ var component = data[0].address_components[ac];
+ switch(component.types[0]) {
+ case 'administrative_area_level_1':
+ userState = component.long_name;
+ console.log(userState);
+ break;
+ }
+ };
+ that.getFuelprice(userState);
+ that.currState = userState;
+
+ } else {
+ userState = 'Maharastra';
+ that.currState = userState;
+ that.getFuelprice(userState);
+
+
+ }
+ }
+ else {
+ userState = 'Maharastra';
+ that.currState = userState;
+ that.getFuelprice(userState);
+
+ }
+ })
+ });
+ // }
+ }
+
+
+
+
+ }
+
+ getFuelprice(ustate){
+ console.log(ustate);
+ this.contactService.getFuelDetail(ustate).subscribe(fuelprice=>{
+ console.log('fuelpricefuelpricefuelprice=>',fuelprice);
+ this.fuelCount=[{
+ fuel : 'Diesel',
+ price: fuelprice[0]?fuelprice[0].diesel:'--',
+ unit : 'litre'
+ },{
+ fuel : 'Petrol',
+ price: fuelprice[0]?fuelprice[0].petrol:'--' ,
+ unit : 'litre'
+ }]
+
+ })
+
+
+ }
+
+ langSymbol:boolean=true;
+ valueSymbol ='';
+ fuelShow:boolean=true;
+ getLanguage(){
+
+ var that = this;
+ var Var = { uid: this.useridd };
+ this.contactService.getLanguages(Var).subscribe((res:any)=>{
+ console.log('resresresresresresresresresresresresresresresres ',res);
+ if(res.timezone != undefined){
+ if(res.timezone === 'Asia/Kolkata'){
+ this.fuelShow = true;
+ }else{
+ this.fuelShow = false;
+ }
+ }
+
+
+ var ls = res.currency_code ;
+ if(ls !=undefined){
+ if(ls === 'INR'){
+ this.langSymbol=true;
+ }else{
+ this.langSymbol=false;
+ this.valueSymbol=res.currency_code;
+ }
+
+ }
+
+ },err=>{
+ console.log(err);
+ })
+
+ }
+
+ totalOdo(dev){
+ console.log(dev);
+ var from = new Date().setHours(0,0,0);
+ var fd = new Date(from).toISOString();
+ var to = new Date();
+ var td= new Date(to).toISOString();
+ var imei = dev._id;
+ var user = dev.user;
+ if(typeof user === 'object'){
+ var user_id = user._id;
+ }else{
+ var user_id = user;
+ }
+ var suburl = "/summary/distance?from=" + fd +'&to=' + td + '&user=' + user_id + '&device=' + imei;
+ this.contactService.get(suburl).subscribe((resp:any) => {
+ console.log('const ka data =>',resp)
+ if(resp){
+ if(resp.length!=0){
+ dev.roadShow=false;
+ var dist = (resp[0].distance).toFixed(2);
+
+ // if(this.distanceVariation[0]=="+"){
+ // var milege=(a/100)*(Number(this.distanceVariation.substring(1)))
+ // console.log("MILEGE->",milege,'-',a);
+ // a=a+milege
+
+ // }else{
+ // var milege=(a/100)*(Number(this.distanceVariation.substring(1)))
+ // console.log("MILEGE->",milege,'-',a);
+ // a=a-milege
+ // }
+
+ // if(resp[0].device.distanceVariation){
+ // if(resp[0].device.distanceVariation[0]=="+"){
+ // dist=Number(dist)+(Number(dist)/100)*(Number(resp[0].device.distanceVariation.substring(1)))
+ // }else{
+ // dist=dist-(Number(dist)/100)*(Number(resp[0].device.distanceVariation.substring(1)))
+ // }
+
+ // }
+ dev.currentODO = dist
+ }else{
+ dev.roadShow=false;
+ dev.currentODO = '0.0';
+ }
+ }
+ },
+ err=>{
+ dev.roadShow=false;
+ dev.currentODO = '0.0';
+ })
+
+ }
+ reload(){
+ window.localStorage['GetDevData'] = 'True'
+ // console.log("p1");
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.activatedRoute.queryParams.subscribe((params: Params) => {
+ // console.log('p3');
+ this.aa = params['_status'];
+
+ if (this.aa != "OK") {
+ window.localStorage['checker'] = 'Data'
+ }
+ else {
+ window.localStorage['checker'] = params['_status'];
+ }
+
+ });
+
+ this.latLongDetail()
+
+ }
+
+
+
+ Indianstate = [ "Andhra Pradesh",
+ "Arunachal Pradesh",
+ "Assam",
+ "Bihar",
+ "Chhattisgarh",
+ "Goa",
+ "Gujarat",
+ "Haryana",
+ "Himachal Pradesh",
+ "Jammu and Kashmir",
+ "Jharkhand",
+ "Karnataka",
+ "Kerala",
+ "Madhya Pradesh",
+ "Maharashtra",
+ "Manipur",
+ "Meghalaya",
+ "Mizoram",
+ "Nagaland",
+ "Odisha",
+ "Punjab",
+ "Rajasthan",
+ "Sikkim",
+ "Tamil Nadu",
+ "Telangana",
+ "Tripura",
+ "Uttarakhand",
+ "Uttar Pradesh",
+ "West Bengal",
+ "Andaman and Nicobar Islands",
+ "Chandigarh",
+ "Dadra and Nagar Haveli",
+ "Daman and Diu",
+ "Delhi",
+ "Lakshadweep",
+ "Puducherry"]
+
+}
diff --git a/src/app/const/demo-videos/demo-videos.component.html b/src/app/const/demo-videos/demo-videos.component.html
new file mode 100644
index 0000000..c931a6a
--- /dev/null
+++ b/src/app/const/demo-videos/demo-videos.component.html
@@ -0,0 +1,23 @@
+
+
diff --git a/src/app/const/demo-videos/demo-videos.component.scss b/src/app/const/demo-videos/demo-videos.component.scss
new file mode 100644
index 0000000..d774b5e
--- /dev/null
+++ b/src/app/const/demo-videos/demo-videos.component.scss
@@ -0,0 +1,25 @@
+::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+ }
+
+ /* Track */
+ ::-webkit-scrollbar-track {
+ background: rgb(153, 153, 153);
+ }
+
+ /* Handle */
+ ::-webkit-scrollbar-thumb {
+ // background: rgb(74, 118, 184);
+ background: #868e96;
+ }
+
+ /* Handle on hover */
+ ::-webkit-scrollbar-thumb:hover {
+ background: #555;
+ }
+
+
+.mat-dialog-container{
+ background: #f15424d9;
+}
\ No newline at end of file
diff --git a/src/app/const/demo-videos/demo-videos.component.spec.ts b/src/app/const/demo-videos/demo-videos.component.spec.ts
new file mode 100644
index 0000000..56d6a7a
--- /dev/null
+++ b/src/app/const/demo-videos/demo-videos.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DemoVideosComponent } from './demo-videos.component';
+
+describe('DemoVideosComponent', () => {
+ let component: DemoVideosComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DemoVideosComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DemoVideosComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/demo-videos/demo-videos.component.ts b/src/app/const/demo-videos/demo-videos.component.ts
new file mode 100644
index 0000000..d18f1e2
--- /dev/null
+++ b/src/app/const/demo-videos/demo-videos.component.ts
@@ -0,0 +1,36 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { ContactService } from '../../contact.service';
+import { Router } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+
+@Component({
+ selector: 'app-demo-videos',
+ templateUrl: './demo-videos.component.html',
+ styleUrls: ['./demo-videos.component.scss']
+})
+export class DemoVideosComponent implements OnInit {
+ demovideos = [
+ {title : "How to Delete a Vehicle Permanently",videoLink: "https://drive.google.com/file/d/16DVKAOwTzwFVVtWHqu8X96V9WIJob84q/preview"},
+ {title : "How to shift Vehicle into same Dealer",videoLink: "https://drive.google.com/file/d/154KP2n5oW0o_80AAm3Ph8lT2tnrrQkT8/preview"},
+ {title : "How to create a geofence and assign Vehicle into it",videoLink: "https://drive.google.com/file/d/1C5BMKdp_p6hwvbYQ8ysDgql-BIFxzblb/preview"},
+ {title : "How to add new customer/user and add Vehicle into it",videoLink: "https://drive.google.com/file/d/16XggTWEVsihFyxGzvM4DPVHd-d6j83Nz/preview"},
+ {title : "How to check live history of a Vehicle",videoLink: "https://drive.google.com/file/d/1RmhnHRewaLV9zby-vHnPcnj-JsAiwhP6/preview"},
+ {title : "How to Driver's Detail to a Vehicle",videoLink: "https://drive.google.com/file/d/1ltHsFnFNfgZpdz58h-ryyMV-HZGggmOa/preview"},
+ {title : "How to check system log of a Vehicle",videoLink: "https://drive.google.com/file/d/1azN3zHdcG0gyIKZgvlbvmyHy4v-R91Eb/preview"},
+
+ ]
+
+ constructor(private contactService: ContactService,private router: Router,private _flashMessagesService: FlashMessagesService,public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any) { }
+
+ ngOnInit() {
+ // localStorage.setItem('demovideo','false');
+
+ }
+
+ close(){
+ this.dialogRef.close();
+
+ }
+}
diff --git a/src/app/const/getdevdetail/getdevdetail.component.html b/src/app/const/getdevdetail/getdevdetail.component.html
new file mode 100644
index 0000000..68ec486
--- /dev/null
+++ b/src/app/const/getdevdetail/getdevdetail.component.html
@@ -0,0 +1,3 @@
+{{vechtype}} -
+
+
diff --git a/src/app/const/getdevdetail/getdevdetail.component.scss b/src/app/const/getdevdetail/getdevdetail.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/const/getdevdetail/getdevdetail.component.spec.ts b/src/app/const/getdevdetail/getdevdetail.component.spec.ts
new file mode 100644
index 0000000..1f31535
--- /dev/null
+++ b/src/app/const/getdevdetail/getdevdetail.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GetdevdetailComponent } from './getdevdetail.component';
+
+describe('GetdevdetailComponent', () => {
+ let component: GetdevdetailComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ GetdevdetailComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(GetdevdetailComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/getdevdetail/getdevdetail.component.ts b/src/app/const/getdevdetail/getdevdetail.component.ts
new file mode 100644
index 0000000..ed21051
--- /dev/null
+++ b/src/app/const/getdevdetail/getdevdetail.component.ts
@@ -0,0 +1,32 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+
+@Component({
+ selector: 'app-getdevdetail',
+ templateUrl: './getdevdetail.component.html',
+ styleUrls: ['./getdevdetail.component.scss']
+})
+export class GetdevdetailComponent implements OnInit {
+
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any) {
+ console.log(data);
+ if(data.Type == "idel"){
+ this.vechtype = "Ideals Vechiles"
+ }
+ else if(data.Type == "stop"){
+ this.vechtype = "Stopped Vechiles"
+ }
+ else if(data.Type == "maintain"){
+ this.vechtype = "Maintainence Vechiles"
+ }
+ else if(data.Type == "outoff"){
+ this.vechtype = "Out off Reach Vechiles"
+ }
+ }
+ vechtype:any;
+
+ ngOnInit() {
+ }
+
+}
diff --git a/src/app/const/manual-address/manual-address.component.html b/src/app/const/manual-address/manual-address.component.html
new file mode 100644
index 0000000..1e05a1f
--- /dev/null
+++ b/src/app/const/manual-address/manual-address.component.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
Current Address
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Suggested Address
+
+ Please type Address for this location
+
+
+
+
+
{{errmsg}}
+
Save
+
Cancel
+
+
+
diff --git a/src/app/const/manual-address/manual-address.component.scss b/src/app/const/manual-address/manual-address.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/const/manual-address/manual-address.component.spec.ts b/src/app/const/manual-address/manual-address.component.spec.ts
new file mode 100644
index 0000000..b89fcf9
--- /dev/null
+++ b/src/app/const/manual-address/manual-address.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ManualAddressComponent } from './manual-address.component';
+
+describe('ManualAddressComponent', () => {
+ let component: ManualAddressComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ManualAddressComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ManualAddressComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/manual-address/manual-address.component.ts b/src/app/const/manual-address/manual-address.component.ts
new file mode 100644
index 0000000..696e860
--- /dev/null
+++ b/src/app/const/manual-address/manual-address.component.ts
@@ -0,0 +1,104 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+declare var google:any;
+
+@Component({
+ selector: 'app-manual-address',
+ templateUrl: './manual-address.component.html',
+ styleUrls: ['./manual-address.component.scss']
+})
+export class ManualAddressComponent implements OnInit {
+ errFlag : boolean =false;
+ manualAddress:any='';
+ useridd: any;
+ addressSuggested: any;
+ addLat: any;
+ addlng: any;
+ long: any;
+ lat: any;
+ mapLink: any;
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService) {
+ console.log(this.data);
+ }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.manualAddress = this.data.locationAddress ;
+ console.log('this.manualAddress',this.manualAddress);
+ this.lat = this.data.last_location.lat;
+ this.long = this.data.last_location.long;
+ this.mapLink = "https://maps.google.com/?q=" + this.lat + ","+ this.long;
+
+ var that = this;
+ var input = document.getElementById('txtSource');
+ var searchBox = new google.maps.places.SearchBox(input);
+
+ var geocoder = new google.maps.Geocoder();
+ var latlng = new google.maps.LatLng(this.lat, this.long);
+
+ var request = {
+ latLng: latlng
+ };
+ // console.log('latlongVal', request)
+ geocoder.geocode(request, function (data, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ that.addressSuggested = data[0].formatted_address;
+ // console.log(that.liveAdd);
+ } else {
+ // console.log("No address available")
+ that.addressSuggested = "";
+ }
+ }
+ else {
+ that.addressSuggested = '';
+ }
+
+ })
+
+ searchBox.addListener('places_changed', function() {
+ var places = searchBox.getPlaces();
+ if (places.length == 0) {
+ return;
+ }
+ console.log(places);
+ places.forEach(function(place:any) {
+ // console.log(place.geometry.location);
+ that.addressSuggested = place.formatted_address;
+ that.addLat = place.geometry.location.lat();
+ that.addlng = place.geometry.location.lng();
+ console.log(that.addLat,that.addlng);
+ if (!place.geometry) {
+ return;
+ }
+ });
+ });
+ }
+
+ addManualAddress(){
+ console.log(this.data);
+ console.log('update Address clicked');
+ var payload ={
+ lat : this.data.last_location.lat,
+ long: this.data.last_location.long,
+ address: this.addressSuggested,
+ current_address : this.manualAddress,
+ status : 'Pending',
+ updatedBy : this.useridd
+ }
+ console.log('payload',payload);
+
+ this.contactService.updateAddress(payload).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('success');
+ },err=>{
+ console.log(err);
+ })
+ }
+
+ close(){
+ this.dialogRef.close('cancel');
+ }
+}
diff --git a/src/app/const/safe.pipe.spec.ts b/src/app/const/safe.pipe.spec.ts
new file mode 100644
index 0000000..49ee0ad
--- /dev/null
+++ b/src/app/const/safe.pipe.spec.ts
@@ -0,0 +1,8 @@
+import { SafePipe } from './safe.pipe';
+
+describe('SafePipe', () => {
+ it('create an instance', () => {
+ const pipe = new SafePipe();
+ expect(pipe).toBeTruthy();
+ });
+});
diff --git a/src/app/const/safe.pipe.ts b/src/app/const/safe.pipe.ts
new file mode 100644
index 0000000..06c232d
--- /dev/null
+++ b/src/app/const/safe.pipe.ts
@@ -0,0 +1,14 @@
+import { Pipe, PipeTransform } from '@angular/core';
+import { DomSanitizer } from "@angular/platform-browser";
+
+@Pipe({
+ name: 'safe'
+})
+export class SafePipe implements PipeTransform {
+ constructor(private sanitizer: DomSanitizer) { }
+
+ transform(url) {
+ return this.sanitizer.bypassSecurityTrustResourceUrl(url);
+ }
+
+}
diff --git a/src/app/const/shared-devices/shared-devices.component.html b/src/app/const/shared-devices/shared-devices.component.html
new file mode 100644
index 0000000..cf8d3aa
--- /dev/null
+++ b/src/app/const/shared-devices/shared-devices.component.html
@@ -0,0 +1,26 @@
+
+
close
+
+
+
+
+ Shared with
+ Phone
+ Shared By
+ Shared At
+ Remove
+
+
+
+
+ {{shareObj.shared_with?shareObj.shared_with :""}}
+ {{shareObj.shared_with_phone?shareObj.shared_with_phone:""}}
+ {{shareObj.shared_by?shareObj.shared_by:""}}
+ {{shareObj.shared_at?(shareObj.shared_at | date:'medium'):""}}
+ remove_circle_outline
+
+
+
+
+
+
diff --git a/src/app/const/shared-devices/shared-devices.component.scss b/src/app/const/shared-devices/shared-devices.component.scss
new file mode 100644
index 0000000..a117002
--- /dev/null
+++ b/src/app/const/shared-devices/shared-devices.component.scss
@@ -0,0 +1,4 @@
+.container{
+ max-height: 500px !important;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/src/app/const/shared-devices/shared-devices.component.spec.ts b/src/app/const/shared-devices/shared-devices.component.spec.ts
new file mode 100644
index 0000000..97e7642
--- /dev/null
+++ b/src/app/const/shared-devices/shared-devices.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SharedDevicesComponent } from './shared-devices.component';
+
+describe('SharedDevicesComponent', () => {
+ let component: SharedDevicesComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ SharedDevicesComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(SharedDevicesComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/const/shared-devices/shared-devices.component.ts b/src/app/const/shared-devices/shared-devices.component.ts
new file mode 100644
index 0000000..c26f356
--- /dev/null
+++ b/src/app/const/shared-devices/shared-devices.component.ts
@@ -0,0 +1,64 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
+import { ContactService } from '../../contact.service';
+
+@Component({
+ selector: 'app-shared-devices',
+ templateUrl: './shared-devices.component.html',
+ styleUrls: ['./shared-devices.component.scss']
+})
+export class SharedDevicesComponent implements OnInit {
+ sharedWith = []
+ device_id: any;
+
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService) {
+ this.device_id = this.data._id ;
+ this.getSharedDevice(this.device_id);
+ }
+
+ ngOnInit() {
+
+ }
+
+ DeleteDocumentsField(sharedObj){
+ console.log('sharedObj',sharedObj);
+ var device_id = sharedObj._id;
+
+ var removeShareObject = {
+ did : this.device_id,
+ shared_id : sharedObj._id
+ }
+ console.log(removeShareObject);
+ this.contactService.removeSharedDevice(removeShareObject).subscribe(res=>{
+
+ this.getSharedDevice(this.device_id);
+ },err=>{
+ console.log(err);
+ })
+ }
+
+ close(){
+ this.dialogRef.close();
+ }
+
+ getSharedDevice(did){
+ this.contactService.getSharedDevices(did).subscribe(res=>{
+
+ this.sharedWith = res;
+ console.log('this.sharedWith',this.sharedWith);
+ },err=>{
+ var errJson= JSON.parse(err['_body']);
+ console.log(errJson);
+ if(errJson.message === "This Device is not Shared With Anyone"){
+ this.dialogRef.close();
+
+ }
+
+ })
+
+ }
+
+}
+
+
diff --git a/src/app/contact.service.spec.ts b/src/app/contact.service.spec.ts
new file mode 100644
index 0000000..584e8a2
--- /dev/null
+++ b/src/app/contact.service.spec.ts
@@ -0,0 +1,15 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { ContactService } from './contact.service';
+
+describe('ContactService', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [ContactService]
+ });
+ });
+
+ it('should be created', inject([ContactService], (service: ContactService) => {
+ expect(service).toBeTruthy();
+ }));
+});
diff --git a/src/app/contact.service.ts b/src/app/contact.service.ts
new file mode 100644
index 0000000..ca7daf2
--- /dev/null
+++ b/src/app/contact.service.ts
@@ -0,0 +1,2243 @@
+
+import { environment } from '../environments/environment';
+import { Injectable } from '@angular/core';
+import{Http, Headers,Response, ResponseContentType} from '@angular/http';
+import 'rxjs/add/operator/map';
+import {Contact} from './contact';
+import {Map} from './map';
+import {Temp} from './temp';
+import {Device} from './device';
+import {Graph} from './graph';
+import {Token} from './token';
+import {Matrix} from './matrix';
+import {Otp_log} from './otp_log'
+import { Subject } from 'rxjs/Subject';
+import { Observable } from 'rxjs/Observable';
+
+import * as io from 'socket.io-client';
+import { Schedule } from './shedule';
+import { Router } from '@angular/router';
+import { BehaviorSubject } from 'rxjs';
+import { IdleReportComponent } from './device-report/idle-report/idle-report.component';
+import { map, take } from 'rxjs/operators';
+
+
+@Injectable()
+export class ContactService {
+totalTicketCount:BehaviorSubject = new BehaviorSubject(10);
+
+ dev_url = environment.hostUrl;
+ dev_url2= environment.hostUrl2
+ //dev_url = 'http://localhost:3000';
+userToken = localStorage.getItem('token');
+headersVal = new Headers();
+// tempDevobject:any ={};
+
+public menuReturnFlag:any='';
+ tempData: any;
+ languages: string[];
+ Output_languages: string[];
+ private messageSource = new BehaviorSubject('');
+ currentMessage = this.messageSource.asObservable();
+ constructor(private http: Http, private router: Router) {
+
+ this.languages = ['en','es'];
+
+
+ }
+// retrieving
+/*
+https://roads.googleapis.com/v1/snapToRoads?path=&interpolate=true&key=AIzaSyBLNw1Bop4CPvxZV9MmxgYc9pog2Pcx8nA
+https://roads.googleapis.com/v1/snapToRoads?path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796&interpolate=true&key=AIzaSyBLNw1Bop4CPvxZV9MmxgYc9pog2Pcx8nA
+*/
+/* Location(f){
+ return this.http.get('https://roads.googleapis.com/v1/snapToRoads?path='+f+'&interpolate=true&key=AIzaSyBLNw1Bop4CPvxZV9MmxgYc9pog2Pcx8nA')
+ .map(res => res.json());
+}
+http://localhost:3000/gps/getGpsSpeedReport?imei=087074133830
+*/
+
+
+
+
+
+
+
+menuReturnGet(){
+ return localStorage.menuReturnFlag;
+}
+menuReturnSet(id){
+ localStorage.menuReturnFlag = id;
+ this.menuReturnFlag = id;
+ return localStorage.menuReturnFlag;
+}
+dealerInfo(url){
+ console.log("url at point of api trigger=>",url);
+
+ return this.http.get(this.dev_url + '/users/getDealerInfo?&url='+url)
+ .map(res => res.json());
+}
+
+demo(a,b,c,d,e){
+ return this.http.get(this.dev_url + '/users/demo?&fname='+a+'&lname='+b+'&email='+c+'&mobile='+d+'&dealeID='+e)
+ .map(res => res.json());
+}
+contactus(data){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/users/contactous', data, {headers:this.headersVal})
+ .map(res => res.json()) ;
+}
+pwdreset(a,b){
+ return this.http.get(this.dev_url + '/users/foremailpwdchg?&cred='+a+'&newpwd='+b)
+ .map(res => res.json());
+}
+shareloc(did,conatct){
+ return this.http.get(this.dev_url + '/gps/ShareLocation?&imei='+did+'&contact='+conatct)
+ .map(res => res.json());
+}
+
+shareLiveLocation(data){
+ return this.http.post('https://www.oneqlik.in' + '/share', data)
+ .map(res => res.json()) ;
+}
+
+sendLiveLocationLink(data){
+ return this.http.post('https://www.oneqlik.in' + '/devices/shareLocationLink', data)
+ .map(res => res.json()) ;
+}
+
+demorequest(dpld){
+ return this.http.post(this.dev_url + '/users/DemoRequest', dpld)
+ .map(res => res.json()) ;
+}
+
+updateReminder(data){
+ return this.http.post(this.dev_url + '/reminder/updateReminder', data)
+ .map(res => res.json()) ;
+}
+
+
+recalculateODO(imei){
+
+ return this.http.get(this.dev_url + '/gps/reCalculateODO?imei=' + imei)
+ .map(res => res.json()) ;
+}
+deleteReminder(data){
+ return this.http.post(this.dev_url + '/reminder/deleteReminder', data)
+ .map(res => res.json()) ;
+}
+
+sendMessages(pld){
+ return this.http.post(this.dev_url + '/users/notificationMessage', pld)
+ .map(res => res.json()) ;
+}
+
+sendReceipt(mres){
+ return this.http.post(this.dev_url+ '/product/orderSave_mail', mres)
+ .map(res => res.json()) ;
+}
+
+getOederSummary(){
+ return this.http.get(this.dev_url + '/product/orderDetail')
+ .map(res => res.json());
+}
+
+deletegpsdata(id){
+ return this.http.get(this.dev_url + '/gps/gpsdelete?id='+id)
+ .map(res => res.json());
+}
+trip_logs(uId,from_date,to_date,devId){
+ console.log('devId',devId);
+ var Url = '/user_trip/trip_detail?&uId='+uId+'&from_date='+from_date+'&to_date='+to_date
+ if(devId.length==0){
+ Url
+ }else{
+ Url ='/user_trip/trip_detail?&uId='+uId+'&from_date='+from_date+'&to_date='+to_date+'&device='+devId
+ }
+
+ return this.http.get(this.dev_url + Url)
+ .map(res => res.json());
+}
+
+
+
+
+speedlimit2(doid,status){
+ return this.http.get(this.dev_url + '/devices/DeviceAllert?&SpeedAlert='+status+'&doid='+doid)
+ .map(res => res.json());
+}
+speedlimit(doid,speed,status){
+
+ return this.http.get(this.dev_url + '/devices/DeviceAllert?SpeedLimit='+speed+'&SpeedAlert='+status+'&doid='+doid)
+ .map(res => res.json());
+}
+
+getSpeedreport(imei,time){
+ //http://localhost:3000/users/forgotpwd?cred="email/phone"console.log(imei);
+ return this.http.get(this.dev_url + '/gps/getGpsSpeedReport?imei='+imei+'&time='+time)
+ .map(res => res.json());
+}
+resetemail(email){
+ return this.http.get(this.dev_url + '/users/forgotpwd?cred='+email)
+ .map(res => res.json());
+}
+resetpwd(email,code,pwd){
+ return this.http.get(this.dev_url + '/users/forgotpwd?phone='+email+'&otp='+code+'&newpwd='+pwd+'&cred='+email)
+ .map(res => res.json());
+}
+ingtime(email,from,to){
+ return this.http.get(this.dev_url + '/gps/IgnReport?email='+email+'&from='+from+'&to='+to)
+ .map(res => res.json());
+}
+ignitionGraph(did,from,to){
+ return this.http.get(this.dev_url + '/gps/IgnGraph?did='+did+'&from='+from+'&to='+to)
+ .map(res => res.json());
+}
+
+acReport(fdate,tdate,userid,imei){
+ return this.http.get(this.dev_url + '/notifs/acReport?from_date='+fdate+'&to_date='+tdate+'&_u='+userid+'&vname='+imei)
+ .map(res => res.json());
+}
+
+acReportMain(fdate,tdate,userid,imei){
+ return this.http.get(this.dev_url + '/notifs/ACSwitchReport?from_date='+fdate+'&to_date='+tdate+'&user='+userid+'&device='+imei)
+ .map(res => res.json());
+}
+
+getCustumer(uid,s,l,i,au){
+
+ if(i && i!='undefined'){
+ s=1;
+ }
+ var url = this.dev_url +'/users/getCustomer?uid='+uid+'&pageNo='+s+'&size='+l;
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(au === true){
+ url+= "&all="+au;
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+getCustumer1(uid,s,l,i,au,status){
+
+ if(i && i!='undefined'){
+ s=1;
+ }
+ var url = this.dev_url +'/users/getCustomer?uid='+uid+'&pageNo='+s+'&size='+l;
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(au === true){
+ url+= "&all="+au;
+ }
+ if(status!=undefined){
+ url+= "&status="+status;
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+getTechnician(uid,s,l,i,au){
+
+ if(i && i!='undefined'){
+ s=1;
+ }
+ var url = this.dev_url +'/users/getTechnician?uid='+uid+'&pageNo='+s+'&size='+l;
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(au === true){
+ url+= "&all="+au;
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+getDeviceReport(user,to,from,did,s,l){
+ var url = this.dev_url + '/gps/getGpsReport';
+ if(user){
+ url += '?id=' + user ;
+ }
+ if(did){
+ url += '&devId=' + did;
+ s=0;
+ }
+ url += '&to=' + to + '&from=' +from + '&s=' + s + '&l='+ l;
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+
+getDeviceReport2(email,to,from){
+ return this.http.get(this.dev_url + '/gps/getGpsReport?id='+email+'&to='+to+'&from='+from)
+ .map(res => res.json());
+
+}
+
+getDevModel(){
+
+ return this.http.get(this.dev_url + '/deviceModel/getDeviceModel')
+ .map(res => res.json());
+
+}
+
+
+getDeviceStatus(id,status){
+ return this.http.get(this.dev_url + '/devices/updateStatus?_id='+id+'&status='+status)
+ .map(res => res.json());
+
+}
+
+resetODO(pload){
+ return this.http.post(this.dev_url + '/devices/reset_odo', pload)
+ .map(res => res.json()) ;
+
+}
+
+delete_gps_data(pload){
+ return this.http.post(this.dev_url + '/devices/delete_device_history', pload)
+ .map(res => res.json()) ;
+}
+
+getContactsbyUser(supadm){
+ return this.http.get(this.dev_url + '/users/getAll?supadm='+ supadm)
+ .map(res => res.json());
+
+}
+
+getIdealData(id,date){
+ return this.http.get(this.dev_url + '/gps/getGpsIdlingReport?imei='+id+'&to='+date)
+ .map(res => res.json());
+}
+// getDashboardGraph(a, t){
+// return this.http.get(this.dev_url + '/gps/getDashGraph?imei='+a+'&t='+t)
+// .map(res => res.json());
+
+// }
+getDashboard(id,from,to,_id,groupId,supadm,dealer){
+ console.log("superAdmin=>",supadm);
+ var url = this.dev_url + '/gps/getDashboard?email='+id+'&from='+from+'&to='+to+'&id='+_id ;
+ if(groupId)
+ url+= '&group=' + groupId;
+ if(supadm)
+ url+= '&supAdmin=' + supadm;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+ return this.http.get(url)
+ .map(res => res.json());
+ }
+ editdevice(data){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/devices/deviceupdate', data, {headers:this.headersVal})
+ .map(res => res.json()) ;
+ }
+
+ restoreDevice(devid){
+ return this.http.get(this.dev_url + '/devices/restoreDevice?devid='+ devid)
+ .map(res =>res.json());
+ }
+
+ getPoiReplay(id,uid){
+ return this.http.get(this.dev_url + '/trackRouteMap/getRoutePathMapWithPoi?id='+id+"&user="+uid)
+ .map(res =>res.json());
+ }
+
+ getIgnition(pld){
+
+ return this.http.get(this.dev_url + '/notifs/ignitionReport?from_date='+pld.fromDate+"&_u="+pld.user+"&to_date="+pld.toDate + "&device="+pld.device)
+ .map(res =>res.json());
+ }
+
+ getSharedDevices(did){
+ return this.http.get(this.dev_url + '/devices/ShareDeviceOwner?doid='+did)
+ .map(res =>res.json());
+ }
+
+ // http://localhost:3000/trackRouteMap/getRoutePathMapWithPoi?id=5b470200b0ae406bfe21b07d&user=5a27deca4468572f678e2d91
+
+ updateuid(data){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/users/Account_Edit', data, {headers:this.headersVal})
+ .map(res => res.json()) ;
+ }
+getContacts(){
+ return this.http.get(this.dev_url + '/users/getAllUsers')
+.map(res => res.json());
+
+}
+
+
+getvehType(uid){
+ return this.http.get(this.dev_url + '/vehicleType/getVehicleTypes?user='+uid)
+ .map(res => res.json());
+}
+
+
+
+getPOIdata(i,u){
+ return this.http.get(this.dev_url + '/trackRoute/routepath/getRoutePathWithPoi?id='+i+"&user="+u)
+ .map(res => res.json());
+}
+
+getFuelDetail(ustate){
+
+ return this.http.get(this.dev_url + '/googleAddress/getFuelPrice?state='+ustate)
+ .map(res => res.json());
+}
+
+// http://localhost:3000/trackRoute/routepath/getRoutePathWithPoi?id=5b449ae5755a5527be41f7cc&user=59cbbdbe508f164aa2fef3d8
+getContactsbyDealer(uid){
+ return this.http.get(this.dev_url + '/users/getAllUsers?dealer='+uid)
+ .map(res => res.json());
+}
+getDistance(ddid,fromtime,totime,satelite){
+ console.log(satelite);
+
+ if(satelite==undefined){
+ return this.http.get(this.dev_url + '/gps/getDistanceSpeed?imei='+ddid+'&from='+fromtime+'&to='+totime)
+ .map(res => res.json());
+ }else{
+ return this.http.get(this.dev_url + '/gps/getDistanceSpeed?imei='+ddid+'&from='+fromtime+'&to='+totime+'&satelite='+satelite)
+ .map(res => res.json());
+ }
+}
+/* getCurrentLocation2(id){
+ return this.http.get('http://35.154.237.104:15151/gps?id='+id)
+ .map(res => res.json());
+
+ } */
+ statusUpdateGeoFence(id,status,entering,exiting){
+ return this.http.get(this.dev_url + '/geofencing/geofencestatus?gid='+id+'&status='+status+'&entering='+entering+'&exiting='+exiting)
+ .map(res => res.json());
+ }
+
+ accountSuspend(pld){
+ return this.http.post(this.dev_url+ "/users/accountSuspension" , pld)
+ .map(res => res.json());
+ }
+
+ getCurrentLocation2(id){
+ return this.http.get(this.dev_url + '/gps?id='+id)
+ .map(res => res.json());
+}
+// satelite +'&satelite='+satelite
+getCurrentLocation(id,from,to){
+ return this.http.get(this.dev_url + '/gps?id='+id+'&from='+from+'&to='+to)
+ .map(res => res.json());
+
+ }
+ // for satelitefilter------------
+ getCurrentLocation1(id,from,to,satelite){
+ if(satelite==undefined){
+ return this.http.get(this.dev_url + '/gps?id='+id+'&from='+from+'&to='+to)
+.map(res => res.json());
+ }
+ else{
+ return this.http.get(this.dev_url + '/gps?id='+id+'&from='+from+'&to='+to+'&satelite='+satelite)
+ .map(res => res.json());
+ }
+
+ }
+ getallgeofence(id){
+ return this.http.get(this.dev_url + '/geofencing/getallgeofence?uid='+id)
+ .map(res => res.json());
+ }
+
+
+ getLoad_managementData(id){
+ return this.http.get(this.dev_url + '/lm?u='+id)
+ .map(res => res.json());
+
+ }
+
+ fuelReportData(dID,fDate,tDate){
+ return this.http.get(this.dev_url + '/summary/fuel?i='+dID+"&f="+fDate+"&t="+tDate)
+ .map(res => res.json());
+ }
+
+// summary/fuel/i,f,t
+
+
+ getGeoFence(id){
+ return this.http.get(this.dev_url + '/geofencing/getgeofence?uid='+id)
+ .map(res => res.json());
+ }
+ getperGeoFence(gid){
+ return this.http.get(this.dev_url + '/geofencing/getdevicegeofence?gid='+gid)
+ .map(res => res.json());
+ }
+deleteGeoFence(gid){
+ return this.http.get(this.dev_url + '/geofencing/deletegeofence?id='+gid)
+ .map(res => res);
+}
+getgraph(){
+ return this.http.get(this.dev_url + '/api/graph')
+ .map(res => res);
+
+ }
+ getgraphh(url:string){
+ return this.http.get(this.dev_url+'/api/graph')
+ .map(data3 =>{
+ data3.json();
+ var grapha = data3.json().graph;
+ // console.log("Graph:");
+ // console.log("Graph:",grapha);
+ return data3.json();
+ });
+}
+getContacts2(){
+ return this.http.get(this.dev_url + '/users/SendOtp')
+ .map(res => res.json());
+
+ }
+
+/* getDevice(emailid){
+ console.log(emailid);
+ return this.http.get(this.dev_url + "/devices/getDeviceByUser?email="+emailid)
+ .map(res => res.json());
+} */
+shrdeviceOwner(did){
+ return this.http.get(this.dev_url + "/devices/ShareDeviceOwner?doid="+did)
+ .map(res => res.json());
+}
+deldevshr(did,uid){
+ return this.http.get(this.dev_url+ "/devices/RemoveShareDevice?did="+did+"&uid="+uid)
+ .map(res => res.json());
+}
+deldev(d){
+ // device:data.Device_ID,
+ // userId:that.useridd
+ // console.log("Delete Device"+d)
+ if(d.permenant){
+ return this.http.get(this.dev_url+ "/devices/deleteDevice?did="+d.device+"&userId="+d.userId+"&permenant="+d.permenant)
+ .map(res => res.json());
+ }else{
+ return this.http.get(this.dev_url+ "/devices/deleteDevice?did="+d.device+"&userId="+d.userId)
+ .map(res => res.json());
+
+ }
+}
+
+deluser(d){
+ // console.log("Delete Device"+d)
+ var uObj = {
+ userId : d,
+ deleteuser : true
+ }
+ return this.http.post(this.dev_url+ "/users/deleteUser" , uObj)
+ .map(res => res.json());
+ }
+delshu(s){
+ return this.http.get(this.dev_url + "/schd/deleteSchedule?did="+s)
+ .map(res => res.json());
+}
+
+getsche(did){
+ return this.http.get(this.dev_url + "/schd/getSchdbyDevice?did="+did)
+ .map(res => res.json());
+}
+getcustToken(id){
+ return this.http.get(this.dev_url + "/users/getCustumerDetail?uid="+id)
+ .map(res => res.json());
+}
+
+getUserObj(id){
+ return this.http.get(this.dev_url + "/users/getuserDetail?uid="+id)
+ .map(res => res.json());
+}
+
+
+getmatrix(did){
+ return this.http.get("http://localhost:3005/api/getmatrix?did="+did)
+ .map(res => res.json());
+}
+cancel_signup(phone){
+ return this.http.get(this.dev_url +"/users/cancel_signup?phone="+phone)
+ .map(res => res.json());
+}
+getdet(){
+ return this.http.get(this.dev_url + "/users/getAllUsers")
+ .map(res => res.json());
+}
+resendotp(phone){
+ return this.http.get(this.dev_url + "/users/otpResend?phone="+phone)
+ .map(res => res.json());
+}
+getsh(on_id){
+ return this.http.get(this.dev_url + "/schd/getallSchdbyDevice?did="+on_id)
+ .map(res => res.json());
+}
+//add
+
+
+custStatus(custData){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+
+ return this.http.post(this.dev_url +'/users/user_status',custData,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+
+editUsermaster(uObj){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/users/editUserMaster',uObj,{headers:this.headersVal})
+ .map(res => res);
+}
+
+
+getTravel_path_report(payload){
+ return this.http.post(this.dev_url +'/gps/travelPathReport',payload)
+ .map(res => res.json());
+}
+
+newgetTravel_path_report(payload){
+ return this.http.post(this.dev_url +'/gps/newtravelPathReport',payload)
+ .map(res => res.json());
+}
+
+editDevMaster(dObj){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/devices/editDevMaster',dObj,{headers:this.headersVal})
+ .map(res => res);
+
+}
+
+
+addPoints(iobj){
+ return this.http.post(this.dev_url +'/points/addpointAllocation',iobj)
+ .map(res => res);
+}
+
+removeSharedDevice(removeData){
+ return this.http.post(this.dev_url+'/devices/RemoveShare',removeData)
+ .map(res => res);
+}
+
+getAvialblePoints(distId,distPoint){
+
+ // /users/checkPointAvailablity?u_id=(user id)&demanded_points=20
+ return this.http.get(this.dev_url + "/users/checkPointAvailablity?u_id="+distId +'&demanded_points=' + distPoint)
+ .map(res => res.json());
+}
+
+
+getPointDetails(uId,fdate,tdate){
+ return this.http.get(this.dev_url + "/points/getPointAllocation?uid="+uId + "&fdate=" + fdate + "&tdate="+ tdate)
+ .map(res => res.json());
+
+
+}
+
+
+saveRoute(routeDetail){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/trackRoute',routeDetail,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+
+
+updateRoute(routeDetail,id){
+ console.log(id);
+ return this.http.put(this.dev_url +'/trackRoute/updateRoute',routeDetail)
+ .map(res => res);
+}
+
+
+addPOI(poipayload){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/trackRouteMap/updateRoute_map',poipayload,{headers:this.headersVal})
+ .map(res => res.json());
+}
+deletePOI(data){
+ return this.http.get(this.dev_url +'/poi/deletePoi?_id='+data)
+}
+
+
+updatePOIdetail(poipayload){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/trackRouteMap/updatePOI',poipayload,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+
+editPOIdetails(poipayload){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/poi/updatePOI',poipayload,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+getRouteDetail(uId){
+ return this.http.get(this.dev_url + "/trackRoute/user/"+uId)
+ .map(res => res.json());
+
+}
+
+getdevById(did){
+ return this.http.get(this.dev_url + "/devices/getDevicebyId?deviceId="+did)
+ .map(res => res);
+
+}
+
+
+createTrip(payload){
+ return this.http.post(this.dev_url +'/user_trip/planTrip',payload)
+ .map(res => res.json());
+}
+
+armDisarm(armDIsarmPayload){
+ return this.http.post(this.dev_url +'/devices/serverCommand',armDIsarmPayload)
+ .map(res => res.json());
+
+}
+
+addBillingDetail(payload){
+ return this.http.post(this.dev_url+'/billing/addBillingDetail',payload)
+ .map(res => res.json());
+}
+
+
+updateBillingDetail(payload){
+ return this.http.post(this.dev_url +'/billing/updateBillingDetail',payload)
+ .map(res => res.json());
+}
+
+endTrip(payload){
+ return this.http.post(this.dev_url +'/user_trip/updatePlantrip',payload)
+ .map(res => res.json());
+}
+
+
+saveExpense(e_payload){
+ return this.http.post(this.dev_url +'/expense/addExpense',e_payload)
+ .map(res => res.json());
+}
+
+getDetailedExpense(e_payload){
+
+ return this.http.get(this.dev_url +'/expense/tripdetailbyType?user='+e_payload.user + "&type=" + e_payload.type + "&fdate=" + e_payload.fdate + "&tdate=" + e_payload.tdate + "&vehicle=" + e_payload.vehicle)
+ .map(res => res.json());
+}
+
+getDistributer(userId,role){
+ return this.http.get(this.dev_url +'/broadcastNotification/getContactList?user='+userId +'&role=' + role)
+ .map(res => res.json());
+}
+
+
+
+updatedailyLog(pld){
+ return this.http.post(this.dev_url +'/devices/editDailyReport',pld)
+ .map(res => res.json());
+
+}
+
+
+
+
+getLastTripStatus(tripInfo,status,devId){
+ return this.http.get(this.dev_url + "/user_trip/getLastTrip?device="+devId+ "&status="+status+"&tripInfo="+tripInfo)
+ .map(res => res.json());
+}
+
+deleteExpense(expenseId){
+
+ return this.http.get(this.dev_url + "/expense/deleteExpense?_id="+expenseId)
+ .map(res => res);
+
+}
+
+
+getExpense(tripId){
+ return this.http.get(this.dev_url + "/expense/getExpense?trip="+tripId)
+ .map(res => res.json());
+}
+
+
+
+getRouteDetail_path(uId){
+ return this.http.get(this.dev_url + "/trackRoute/user_path/"+uId)
+ .map(res => res.json());
+
+}
+POIDATA(id,userId){
+ return this.http.get(this.dev_url + "/trackRouteMap/user/getRouteMap?id="+id+"&userid="+userId)
+ .map(res => res.json());
+
+}
+
+// http://localhost:3000/trackRouteMap/driverPerformance?from_date=2018-03-10T09:29:43.547Z&to_date=2018-06-12T09:29:43.547Z&driverid
+
+
+
+driverReport_data(from,to,id){
+ return this.http.get(this.dev_url + "/trackRouteMap/driverPerformance?from_date="+from+"&to_date="+to+"&driverid="+id)
+ .map(res => res.json());
+}
+
+
+tripHistory(rId){
+return this.http.get(this.dev_url + "/notifs/tripStory?tripid="+rId)
+ .map(res => res.json());
+}
+
+
+getDrivers(uId){
+ return this.http.get(this.dev_url + "/driver/getDrivers?userid="+uId)
+ .map(res => res.json());
+
+}
+
+
+getExpVehDetails(uId,emailId,status,skip,limit,input,supadmin,dealer){
+ // return this.http.get(this.dev_url + "/devices/getDeviceByUser?email="+emailId+"&id="+uId+"&status="+status)
+ // .map(res => res.json());
+ console.log(skip);
+ if(input && input!='undefined'){
+ skip=0;
+ }
+ var url = this.dev_url + "/devices/getDeviceByUser?email=" + emailId +'&id='+ uId ;
+ if(input && input!="undefined"){
+ url+= "&search="+input;
+ }
+ if(status == true){
+ url += '&status=' + status ;
+ }
+ if(skip)
+ console.log(skip);
+ url+= '&skip='+skip;
+ if(limit)
+ url += "&limit="+limit
+ if(supadmin)
+ url+= '&supAdmin=' + supadmin;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+
+
+getNotificationType(){
+ return this.http.get(this.dev_url + "/notifs/getTypes")
+ .map(res => res.json());
+}
+
+
+getReferenceId(rid){
+ return this.http.get(this.dev_url + "/reference/verifyRef?ref_id="+rid)
+ .map(res => res.json());
+}
+
+
+ getDeviceByFilter_dash(a, email, user, s, l, input, supadm, dealer, status) {
+
+ if (input && input != 'undefined') {
+ s = 0;
+ }
+
+ var url = this.dev_url + "/devices/getDeviceByUser?id=" + user + "&email=" + email + "&skip=" + s + "&limit=" + l;
+
+ if ((a != null) || (a != undefined)) {
+ url += "&statuss=" + a
+ }
+ if (status == true) {
+ url += "&status=" + status
+ }
+
+ if (input && input != "undefined") {
+ url += "&search=" + input;
+ }
+ if (supadm)
+ url += '&supAdmin=' + supadm;
+ if (dealer)
+ url += '&dealer=' + dealer;
+
+ // if(group){
+ // url+='&group='+group;
+ // }
+
+ return this.http.get(url)
+ .map(res => res.json());
+ }
+
+getDeviceByFilter_dashNew(a,email,user,s,l,input,supadm,dealer,status){
+
+ if(input && input!='undefined'){
+ s=0;
+ }
+
+ var url = this.dev_url + "/devices/getDeviceForDashboard?id="+user+"&email="+email+"&skip="+s+"&limit="+l;
+
+ if((a!=null)||(a!=undefined)){
+ url += "&statuss="+a
+ }
+ if(status ==true){
+ url += "&status=" + status
+ }
+
+ if(input && input!="undefined"){
+ url+= "&search="+input;
+ }
+ if(supadm)
+ url+= '&supAdmin=' + supadm;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+
+ // if(group){
+ // url+='&group='+group;
+ // }
+
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+
+
+
+
+getfilteredgeofance(gID,uId){
+ return this.http.get(this.dev_url + "/geofencing/getallgeofence?uid="+uId+"&vehiclegrp="+gID)
+ .map(res => res.json());
+}
+
+
+
+// http://13.126.36.205:3000/devices/getDeviceByUser?email=gaurav.gupta@adnate.in&id=59cbbdbe508f164aa2fef3d8&status=true
+getRouteDriver(uId){
+ return this.http.get(this.dev_url + "/driver/getDrivers?userid="+uId)
+ .map(res => res.json());
+}
+
+
+addCommandQueue(pld){
+ return this.http.post(this.dev_url + "/devices/addCommandQueue",pld)
+ .map(res => res.json());
+}
+
+deviceCmdQueue(imei){
+ return this.http.get(this.dev_url + "/devices/getCommandQueue?imei="+imei)
+ .map(res => res.json());
+}
+
+ProductSave(pld){
+ return this.http.post(this.dev_url + "/product/addProduct",pld)
+ .map(res => res.json());
+
+}
+
+getProducts(){
+ return this.http.get(this.dev_url + "/product/getProduct")
+ .map(res => res.json());
+
+}
+
+getExpensesbyCategory(pld){
+ // user : this.useridd,
+ // fromDate:this.Fromdate,
+ // toDate : this.todate,
+ // vehicle : this.deviceArr[0]
+
+ return this.http.get(this.dev_url + "/expense/expensebycateogry?user="+pld.user + '&fdate='+pld.fromDate + '&tdate=' + pld.toDate + '&vehicle=' + pld.vehicle)
+ .map(res => res.json());
+}
+
+addExpenses(pld){
+
+ return this.http.post(this.dev_url + "/expense/addExpense",pld)
+ .map(res => res.json());
+}
+
+
+getDeviceModelbyID(modelId){
+
+ return this.http.get(this.dev_url + "/deviceModel/getDevModelByName?id="+modelId)
+ .map(res => res.json());
+
+}
+
+saveAdd(addressObj){
+ return this.http.post(this.dev_url + "/googleAddress/addGoogleAddress",addressObj)
+ .map(res => res.json());
+
+}
+
+getlatLong(){
+
+ return this.http.get('http://ip-api.com/json')
+ .map(res => res.json());
+}
+
+getEngineCutStatus(id){
+ return this.http.get(this.dev_url + "/trackRouteMap/getRideStatusApp?_id="+id)
+ .map(res => res.json());
+}
+
+getEngineCutStatus_1(id){
+ return this.http.get(this.dev_url + "/trackRouteMap/checkStatus?_id="+id)
+ .map(res => res.json());
+}
+
+checkForPassword(id){
+ return this.http.post(this.dev_url + "/users/get_user_setting",id)
+ .map(res => res.json());
+
+}
+
+trakcRouteMap(uId){
+ return this.http.get(this.dev_url + "/trackRouteMap/user/getRouteMap?userid="+uId)
+ .map(res => res.json());
+}
+
+updateRouteStatus(payload,id){
+ return this.http.put(this.dev_url +'/trackRoute/id',payload)
+ .map(res => res.json());
+
+}
+
+// http://13.126.36.205:3000/trackRouteMap/user/getRouteMap?userid=59cbbdbe508f164aa2fef3d8
+
+ addRouteMap(mapPayload) {
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + "/trackRouteMap", mapPayload,{headers:this.headersVal})
+ .map(res => res.json());
+ }
+
+
+
+delRouteDetail(rId){
+ return this.http.delete(this.dev_url + "/trackRoute/"+rId)
+ .map(res => res);
+}
+
+getVehDetail(VehiclePayload){
+ return this.http.get(this.dev_url + "/devices/getdeviceByGroupId?vgroup="+VehiclePayload)
+ .map(res => res.json());
+}
+
+deletePermanently(deviceId){
+ return this.http.get(this.dev_url + '/devices/deletePermanently?Device_ID=' + deviceId).map(res=>res.json());
+}
+
+
+getLoadUnload(gioPayload){
+ return this.http.get(this.dev_url + "/geofencing/getGeoFenceByGroupId?vgroup="+gioPayload)
+ .map(res => res.json());
+}
+
+getGeoFenceData(uId){
+ return this.http.get(this.dev_url + "/geofencing/getGeoTypeCount?uid="+uId)
+ .map(res => res.json());
+}
+
+// http://13.126.36.205:3000/geofencing/getGeoTypeCount?uid=5a27deca4468572f678e2d91
+addmatrix(mat){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/api/matrixw', mat, {headers:headers})
+ .map(res => res.json()) ;
+
+}
+addContact(newContact){
+this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/users/signUp', newContact, {headers:this.headersVal})
+ .map(res => res.json()) ;
+
+}
+
+
+
+log(newlog){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/users/LoginWithOtp', newlog, {headers:this.headersVal})
+ .map(res => res.json()) ;
+}
+
+editshe(newshe){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/schd/editSchedule',newshe, {headers:this.headersVal})
+ .map(res => res.json());
+}
+
+addshe(newshe){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/schd/createSchedule',newshe, {headers:this.headersVal})
+ .map(res => res.json());
+}
+addContact2(newContact2){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/users/SendOtp',newContact2, {headers:headers})
+ .map(res => res.json());
+}
+addDevice(newDevice){
+ this.headersVal = new Headers();
+ // this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/devices/addDevice',newDevice)
+ .map(res => res.json()
+
+ );
+}
+addKycDevice(newDevice){
+ this.headersVal = new Headers();
+ // this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/devices/addKYCDevice',newDevice)
+ .map(res => res.json()
+
+ );
+}
+
+addMultipleDevice(deviceUploadObject){
+
+ return this.http.post(this.dev_url + '/devices/uploadDevice',deviceUploadObject)
+ .map(res => res.json())
+}
+
+
+
+editDealer(editDealerPayload){
+ return this.http.post(this.dev_url + '/users/editUserDetails',editDealerPayload)
+ .map(res => res.json());
+}
+
+savereminder(payload){
+ return this.http.post(this.dev_url + '/reminder/addReminder',payload)
+ .map(res => res.json());
+
+}
+
+
+getVehicleReminder(id){
+
+ return this.http.get(this.dev_url + '/reminder/dashboardReminder?id=' + id)
+ .map(res => res.json());
+}
+
+deleteCostumer(deletePayload){
+ return this.http.post(this.dev_url + '/users/deleteUser',deletePayload)
+ .map(res => res.json());
+}
+
+permanentDeluser(id){
+ return this.http.get(this.dev_url + '/users/DeleteUser?id=' + id)
+ .map(res => res.json());
+}
+
+
+getExpenseGrapgData(id){
+ // http://localhost:3000/expense/dashboardExpense?id=5d8736b6c377321aa93a3ed3
+ return this.http.get(this.dev_url + '/expense/dashboardExpense?id=' + id)
+ .map(res => res.json());
+}
+
+restoreUser(id){
+ return this.http.get(this.dev_url + '/users/restoreUsers?id=' + id)
+ .map(res => res.json());
+
+}
+
+
+updateImage(imgarr){
+ console.log(imgarr);
+ return this.http.post(this.dev_url + '/users/updateImagePath',imgarr)
+ .map(res => res.json());
+}
+
+dealer_Info1(user_id,s,l,i,role){
+ if(i && i!='undefined'){
+ s=1;
+ }
+ var url = this.dev_url +'/users/getDealers?supAdmin='+user_id +'&pageNo='+ s +"&size="+l ;
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(role === 'subadmin'){
+ url+= "&customer_role="+role+',kycApproval,cc';
+ }
+ return this.http.get(url)
+ .map(res=>res.json());
+}
+
+// getAllDealerVehicles
+dealer_Info(){
+ return this.http.get(this.dev_url +'/users/getAllDealerVehicles')
+ .map(res=>res.json());
+}
+
+dealer_Info_dealer_list(superadm){
+ return this.http.get(this.dev_url +'/users/getAllDealerVehicles?supAdmin=' + superadm)
+ .map(res=>res.json());
+}
+
+getTableData(superadm){
+ return this.http.get(this.dev_url +'/users/getDealerAndcust?supAdmin=' + superadm)
+ .map(res=>res.json());
+}
+
+dealer_Info_dealer_list_copy(pload){
+ if(pload === true){
+ var url = '/users/getAllDealerVehicles';
+ }else{
+ var url = '/users/getAllDealerVehicles?supAdmin=' + pload ;
+ }
+
+ return this.http.get(this.dev_url + url)
+ .map(res=>res.json());
+
+}
+addGeo(geodata){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/geofencing/addgeofence',geodata, {headers:this.headersVal})
+ .map(res => res.json()
+
+ );
+}
+
+updateGeo(geodata){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url + '/geofencing/updateGeoFence',geodata, {headers:this.headersVal})
+ .map(res => res.json()
+
+ );
+}
+
+addToken(newToken){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/devices/checkToken',newToken, {headers:headers})
+ .map(res => res.json());
+}
+//loginwithotp
+loginotp(userlog){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url +'/devices/deleteDevice?did=123/users/LoginWithOtp',userlog, {headers:headers})
+ .map(res => res.json());
+}
+
+getDataObservable(url:string) {
+ return this.http.get(this.dev_url + '/mos/getMosChannel')
+ .map(data => {
+ data.json();
+
+ var temp = data.json().temperature[0];
+ var dis = data.json().distance[0];
+ var hum = data.json().humidity[0];
+ var longi = data.json().gps[0];
+ // console.log("GPS: ",longi);
+ // console.log("Temprature: ",temp);
+ // console.log("Humidity: ",hum);
+ // console.log("Distance: ",dis);
+
+ return data.json();
+ });
+}
+/* getDevice_id(id){
+ return this.http.get(this.dev_url + "/devices/getDeviceByUser?id="+id)
+ .map(data => {
+ data.json();
+
+ var devices = data.json().devices;
+
+ return data.json();
+});
+}
+https://www.adnateiot.com/gps?id='+id+'&from='+from+'&to='+to
+http://localhost:3000/devices/deviceShare?uid=5a27deca4468572f678e2d91&email=ultimateanshulsaxena@gmail.com&did=5a449636fa04d91b64565e60*/
+ShareDevice(email,id,did){
+ // console.log(did)
+ return this.http.get(this.dev_url + "/devices/deviceShare?email="+email+'&uid='+id+'&did='+did
+)
+ .map(data => {
+ data.json();
+
+ var devices = data.json().devices;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+getDevice(emailid,id) {
+ // https://www.oneqlik.in/devices/getDeviceByUserDropdown?id=5c6ebc892f8b64770399f762&email=haribhau.lagad@swarajtraanslink.com
+ return this.http.get(this.dev_url + "/devices/getDeviceByUserDropdown?email="+emailid+'&id='+id)
+ .map(data => {
+ data.json();
+ var devices = data.json().devices;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+imageupload(img){
+ // return this.http.post(this.dev_url + "/users/uploadProfilePicture",img)
+ return this.http.post("https://www.oneqlik.in/users/uploadProfilePicture",img)
+ .map(res=>res);
+}
+
+deviceImageupload(img){
+ // return this.http.post(this.dev_url + "/devices/uploadDeviceImage",img)
+ return this.http.post("https://www.oneqlik.in/users/uploadProfilePicture",img)
+ .map(res=>res);
+}
+
+imageuploadTracker(img){
+ return this.http.post('http://13.126.36.205'+ "/users/uploadTrackerImage",img)
+ .map(res=>res);
+}
+
+updateAddress(pld){
+ return this.http.post(this.dev_url+ "/googleAddress/manualAddressUpdate",pld)
+ .map(res=>res);
+}
+
+changeAddress(pld){
+ return this.http.post(this.dev_url+ "/googleAddress/updateManualAddress",pld)
+ .map(res=>res);
+
+}
+
+getUpdatedAddress(){
+ return this.http.get(this.dev_url + '/googleAddress/getManualAddress')
+ .map(res=>res);
+}
+
+
+triggerCommand(pld){
+ return this.http.post(this.dev_url+ "/devices/manualserverCommand",pld)
+ .map(res=>res);
+}
+
+
+
+triggerCommand1(pld){
+ return this.http.post(this.dev_url+ "/devices/serverCommand",pld)
+ .map(res=>res.json());
+}
+
+deleteSystemLogs(imei){
+ return this.http.get(this.dev_url + '/gps/deleteSystemLogs?imei='+imei)
+ .map(res=>res);
+}
+DownloadDocument(imglink){
+ return this.http.get(this.dev_url + '/users/downloadDoc?docImage='+imglink, { responseType: ResponseContentType.Blob })
+ .map(res=>res);
+}
+//copy of above "getDevice" web service with extra parameters to filter data, specially for "DashboardComponent"
+getDeviceByFilter(emailid,id,groupid, status, statuss,s,l,i,supadm,dealer,dateobject,licenceType ) {
+ console.log(supadm,dealer,id);
+ console.log('dateobject',dateobject);
+
+ if(dateobject != undefined){
+ var fdate = dateobject?dateobject.from_date:"";
+ var tdate = dateobject?dateobject.to_date:"";
+ }
+
+ if(i && i!='undefined'){
+ s=0;
+ }
+
+ var url = this.dev_url + "/devices/getDeviceByUser?email=" + emailid +'&id='+ id + '&status=' + status + '&groupid=' + groupid + '&statuss=' + statuss+'&skip='+s+"&limit="+l+"&licenceType="+licenceType
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(supadm)
+ url+= '&supAdmin=' + supadm;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+
+ if(fdate != undefined){
+ url += '&fdate=' + fdate;
+ }
+ if(tdate != undefined){
+ url += '&tdate=' + tdate;
+ }
+console.log(url)
+ return this.http.get(url)
+ .map(data => {
+ data.json();
+ var devices = data.json().devices;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+getDeviceByFilter1(emailid,id,groupid, status, statuss,s,l,i,supadm,dealer,dateobject,licenceType,kycStatus,state ) {
+ console.log(supadm,dealer,id);
+ console.log('dateobject',dateobject);
+
+ if(dateobject != undefined){
+ var fdate = dateobject?dateobject.from_date:"";
+ var tdate = dateobject?dateobject.to_date:"";
+ }
+
+ if(i && i!='undefined'){
+ s=0;
+ }
+
+ var url = this.dev_url + "/devices/getDeviceByUser?email=" + emailid +'&id='+ id + '&status=' + status + '&groupid=' + groupid + '&statuss=' + statuss+'&skip='+s+"&limit="+l+"&licenceType="+licenceType
+ if(i && i!="undefined"){
+ url+= "&search="+i;
+ }
+ if(supadm)
+ url+= '&supAdmin=' + supadm;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+
+ if(fdate != undefined){
+ url += '&fdate=' + fdate;
+ }
+ if(tdate != undefined){
+ url += '&tdate=' + tdate;
+ }
+ if(state != undefined){
+ url += '&state=' + state;
+ }
+ if(kycStatus != undefined){
+ url += '&kycStatus=' + kycStatus;
+ }
+console.log(url)
+ return this.http.get(url)
+ .map(data => {
+ data.json();
+ var devices = data.json().devices;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+ignitionPoint(uid,from_date,to_date,device,min_time){
+ // http://localhost:3000/stoppage/trip_idle?uId=59cbbdbe508f164aa2fef3d8&from_date=2019-08-30T18:30:00.000Z&to_date=2019-10-01T07:43:52.000Z&device=5d92054693dea3510753a9a8&min_time=1
+ return this.http.get(this.dev_url+"/stoppage/trip_idle?uId="+uid+"&from_date="+from_date+"&to_date="+to_date+"&device="+ device + "&min_time=" + min_time)
+ .map(res => res.json());
+
+}
+
+
+
+filteredRoute(uId,stat){
+ return this.http.get(this.dev_url+"/trackRoute/user/"+uId+"?status="+stat)
+ .map(res => res.json());
+}
+
+// http://localhost:3000/trackRoute/user/5a27deca4468572f678e2d91?status=Active
+
+stoppage_points(ddid,fromtime,totime,useridd){
+ return this.http.get(this.dev_url+"/stoppage/stoppage_detail?uId="+useridd +'&from_date='+fromtime+'&to_date='+totime+'&device='+ddid)
+ .map(res => res.json());
+}
+
+
+stoppage_report(f_date,t_date,uId,vName){
+ var url = this.dev_url+"/stoppage/stoppageReport?from_date="+f_date +'&to_date='+t_date+'&_u='+uId;
+ if(vName){
+ url += '&vname='+vName;
+ }
+
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+daywiseRep(fdate,tdate,uid){
+ return this.http.get(this.dev_url+"/summary/dayWiseSummary?user="+uid +'&to='+tdate+'&from='+fdate)
+ .map(res => res.json());
+}
+
+ignitionReport(f_date,t_date,vName,uId){
+ var url = this.dev_url+"/notifs/ignitionReport?from_date="+f_date +'&to_date='+t_date+'&_u='+uId;
+ if(vName.length != 0){
+ url +='&vname='+vName;
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+
+getAddress(lat,lng){
+ return this.http.get("https://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+','+lng+'&key='+'AIzaSyCNT3eO1wPQHUhY_cmQ9N_9BkLzJ_GB9j8')
+ .map(res => res.json());
+}
+
+
+shareCostumerInfo(uid){
+ return this.http.get(this.dev_url+"/users/shareUserDetails?user="+uid)
+ .map(res => res.json());
+}
+
+filteredNotifications(from,to,notif,option,Id,skp,lmt){
+ // console.log(option);
+ let suburl="";
+ suburl+="/notifs/getNotifByFilters?";
+ if(from)suburl+='from_date='+from.toISOString();;
+ if(to)
+ suburl+="&to_date="+to.toISOString();
+ if(Id){
+ suburl+="&user="+Id;
+ }
+
+ if(notif)
+ suburl+="&type="+notif;
+ if(option)
+// suburl += "&vehicle="+option.did;
+ suburl += "&vehicle="+option;
+ suburl += "&sortOrder="+"-1";
+ suburl += "&skip="+skp;
+ suburl += "&limit="+lmt;
+
+ return this.http.get(this.dev_url+suburl)
+ .map(res => res.json());
+
+}
+
+commentSave(p){
+ return this.http.post(this.dev_url+"/notifs/commentMessage",p)
+ .map(res => res.json());
+
+}
+
+// http://localhost:3000/notifs/getNotifByFilters?from_date=2018-05-10T09:16:54.328Z&to_date=2018-05-15T09:16:54.328Z&user=5a27deca4468572f678e2d91&type=overspeed&vehicleName=Testing-2&sortOrder=-1
+
+geofenceData(f_date,t_date,uId,geoId){
+ return this.http.get(this.dev_url+"/notifs/GeoFencingReport?from_date="+f_date +'&to_date='+t_date+'&_u='+uId+'&geoid='+geoId)
+ .map(res => res.json());
+
+}
+
+overSpeed(f_date,t_date,uId,dev){
+
+ var url = this.dev_url+"/notifs/overSpeedReport?from_date="+f_date +'&to_date='+t_date+'&_u='+uId;
+ if(dev.length != 0)
+ url += '&device='+dev
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+
+
+deviceSOSreport(queryPayload){
+ console.log(queryPayload);
+ var user = queryPayload.user;
+ var from = queryPayload.from;
+ var to = queryPayload.to;
+ var url = this.dev_url + '/notifs/SoSNotification?user=' + user + '&fromDate='+ from + '&toDate=' + to
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+getVehicleExcelSheet(from,to,uId){
+
+ return this.http.get(this.dev_url+'devices/devReport?user='+uId+"&fromDate=" +from + "&toDate="+ to, { responseType: ResponseContentType.Blob })
+ .map(res => res);
+}
+
+
+route_violation(f_date, t_date, uId){
+ return this.http.get(this.dev_url+"/notifs/RouteVoilationReprot?from_date="+f_date +'&to_date='+t_date+'&_u='+uId)
+ .map(res => res.json());
+}
+
+
+
+getDeviceCount(role,user_id){
+ return this.http.get(this.dev_url+"/gps/DeviceAddCount?role="+role +'&id='+user_id)
+ .map(res => res.json());
+}
+
+getDeviceCount1(role,user_id,key,skip,limit){
+ return this.http.get(this.dev_url+"/gps/DeviceAddCount?role="+role +'&id='+user_id + '&purpose=' + 'list' + '&for=' + key+'&skip='+skip + '&limit='+limit)
+ .map(res => res.json());
+}
+
+getExpiredDeviceCount(role,user_id){
+
+ return this.http.get(this.dev_url+"/gps/DeviceExpiredCount?role="+role +'&id='+user_id)
+ .map(res => res.json());
+
+}
+
+getExpiredDeviceCount1(role,user_id,key,skip,limit){
+
+ return this.http.get(this.dev_url+"/gps/DeviceExpiredCount?role="+role +'&id='+user_id + '&purpose='+ 'list' + '&for='+ key+'&skip='+skip + '&limit='+limit)
+ .map(res => res.json());
+
+}
+
+getRenewDeviceCount(role,user_id){
+ return this.http.get(this.dev_url+"/gps/DeviceRenewCount?role="+role +'&id='+user_id)
+ .map(res => res.json());
+}
+
+getRenewDeviceCount1(role,user_id,key,skip,limit){
+ return this.http.get(this.dev_url+"/gps/DeviceRenewCount?role="+role +'&id='+user_id + '&purpose='+'list'+'&for='+key+'&skip='+skip + '&limit='+limit)
+ .map(res => res.json());
+}
+
+summary_rep(f_date, t_date, uId,did){
+ var url= this.dev_url+"/summary?to="+t_date +'&from='+f_date+'&user='+uId;
+ if(did){
+ url += '&device='+did
+
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+summary_rep_new(f_date, t_date, uId,did){
+ var url= this.dev_url+"/summary/summaryReport?to="+t_date +'&from='+f_date+'&user='+uId;
+ if(did){
+ url += '&device='+did
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+
+distanceReport(f_date, t_date, uId,DID){
+ var url = this.dev_url+"/summary/distance?from="+f_date +'&to='+t_date+'&user='+uId;
+ if(DID!=''){
+ url += '&device='+DID
+ }
+
+ return this.http.get(url)
+ .map(res => res.json());
+
+}
+
+addPOICol(poipayload){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/poi/addpoi',poipayload, {headers:this.headersVal})
+ .map(res => res.json());
+}
+
+
+setlanguage(payload){
+ return this.http.post(this.dev_url +'/users/set_user_setting',payload)
+ .map(res => res.json());
+}
+
+getLanguages(payload){
+ return this.http.post(this.dev_url +'/users/get_user_setting',payload)
+ .map(res => res.json());
+}
+
+
+getAddressByApi(latlng){
+
+ return this.http.post(this.dev_url +'/googleAddress/getGoogleAddress',latlng)
+ .map(res => res.json());
+
+}
+
+ resetPass(pld) {
+ return this.http.post(this.dev_url + '/users/hardresetPassword', pld)
+ .map(res => res.json());
+ }
+
+
+ setDealerPermission(pld){
+ return this.http.post(this.dev_url + '/users/setDealerPermission', pld)
+ .map(res => res.json());
+
+ }
+
+setReportPrefrence(payload){
+ return this.http.post(this.dev_url+'/users/reportPrefrence',payload)
+ .map(res => res.json());
+}
+
+setDashboardContent(payload){
+ return this.http.post(this.dev_url+'/users/dashboardContent',payload)
+ .map(res => res.json());
+}
+
+
+addOnePoi(poipayload){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url +'/poi/addpoi',poipayload,{headers:this.headersVal});
+}
+
+
+routeViolation(uId){
+ return this.http.get(this.dev_url+"/trackRoute/user/"+uId)
+ .map(res => res.json());
+
+}
+
+
+devicefuelreport(payload){
+ var suburl = this.dev_url+'/gps/updatedFuelReport'
+ return this.http.post(suburl,payload)
+ .map(res => res.json());
+}
+
+addGroup(detail){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url+"/groups/addGroup",detail,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+
+fueleventCall(fuelobj){
+ return this.http.post(this.dev_url+"/gps/getFuelNotifs",fuelobj)
+ .map(res => res.json());
+}
+
+
+editGroup(dev){
+ this.headersVal = new Headers();
+ this.headersVal.append('Authorization',this.userToken);
+ return this.http.post(this.dev_url+"/groups/updateGroup",dev,{headers:this.headersVal})
+ .map(res => res.json());
+
+}
+
+saveDevInventory(inventoryPayload){
+ return this.http.post(this.dev_url + '/inventory/addInventory',inventoryPayload)
+ .map(res=>res.json());
+
+}
+
+
+editDevInventory(inventoryPayload){
+ return this.http.post(this.dev_url + '/inventory/editInventory',inventoryPayload)
+ .map(res=>res.json());
+}
+
+getDealersDetails(supAdmin){
+ return this.http.get(this.dev_url+'/users/getDealers?supAdmin='+ supAdmin + "&size=1000&pageNo=1")
+ .map(res=>res.json());
+}
+
+
+//deprecated: New with count also
+getGroup(geoname){
+ return this.http.get(this.dev_url+"/groups/getGroups_list?uid="+geoname)
+ .map(res => res.json());
+}
+//New with count also
+getGroupWithStatus(geoname){
+ return this.http.get(this.dev_url+"/devices/getDeviceCountByTripStatus?userid="+geoname)
+ .map(res => res.json());
+}
+
+getgoogleApi(u_id){
+ return this.http.get(this.dev_url+"/users/getApiKey?u_id="+u_id)
+ .map(res => res.json());
+}
+
+setgoogleApi(pld){
+ return this.http.get(this.dev_url+"/users/setApiKey?u_id="+pld.u_id + "&api_key="+pld.api_key)
+ .map(res => res.json());
+}
+
+
+alldevices(){
+ return this.http.get(this.dev_url+"/devices/getDevice")
+ .map(res => res.json());
+}
+
+alldevices1(uid,email,supadmin,dealer,searchh){
+ var url = this.dev_url + "/devices/getDeviceByUser?id="+uid + "&email=" + email;
+ if(supadmin)
+ url += "&supAdmin=" + supadmin;
+ if(dealer)
+ url += "&dealer=" + dealer ;
+ if(searchh){
+ url += "&search=" + searchh;
+
+ }
+ return this.http.get(url)
+ .map(res => res.json());
+}
+
+deleteGroup(uId){
+ return this.http.get(this.dev_url+"/groups/deleteGroup?_id="+uId)
+ .map(res => res.status);
+
+}
+
+changeBillingStauts(pld){
+ return this.http.post(this.dev_url+'/billing/updateBillingStatus',pld).map(res=>res.json())
+
+}
+
+getNearByVehicles(pld){
+
+ return this.http.post(this.dev_url+'/devices/nearVehicles',pld).map(res=>res.json())
+}
+
+getDistributerList(uid){
+ return this.http.get(this.dev_url+"/users/getsupAdmin?supAdmin="+uid)
+ .map(res => res.json());
+}
+
+addPOIfromLive(pObj){
+ return this.http.post(this.dev_url+"/groups/addGroup",pObj)
+ .map(res => res.json());
+
+}
+getShe(did) {
+ return this.http.get(this.dev_url + "/schd/getSchdbyDevice?did="+did)
+ .map(data => {
+ data.json();
+
+ var did = data.json();
+
+ return data.json();
+ });
+}
+// Get Data
+getdata(url:string){
+ return this.http.get('')
+ .map(data2 =>{
+ data2.json();
+
+ })
+}
+
+// Sockets
+
+private url = 'http://localhost:2000';
+//13.126.36.205:5000
+//private url = 'http://13.126.36.205:5000 ';
+private socket;
+/* 1883 */
+title = 'app';
+sendMessage(message){
+ //this.socket.emit('add-message', message);
+}
+
+getMessages() {
+ /* let observable = new Observable(observer => {
+ this.socket = io(this.url);
+ this.socket.on('message', (data) => {
+ observer.next(data);
+ });
+ return () => {
+ this.socket.disconnect();
+ };
+ })
+ return observable; */
+ let observable = new Observable(observer => {
+/* this.socket = io(this.url);
+ this.socket.on('message', (data) => {
+
+ console.log(data);
+ observer.next(data);
+
+ });
+ return () => {
+ this.socket.disconnect();
+ }; */
+ //this.socket = this.injectData.getSocket_5000();
+ //io.connect('http://13.126.36.205:5000');
+ //this.socket.on('connect', function(){
+ // console.log("IO Connected");
+ // this.socket.on('mqtt', function (msg) {
+
+ // console.log(msg.topic + msg.payload);
+ //observer.next(msg);
+
+ // });
+ /* this.socket.on('mqtt',function(msg){
+ console.log(msg.topic + msg.payload);
+ }); */
+ // });
+ })
+
+ return observable;
+}
+
+gensock(){
+ // this.socket = io.connect('http://localhost:5000');
+ // this.socket.on('connect', function(){
+ // console.log("IO Connected");
+ // this.socket.on('mqtt',function(msg){
+ // console.log(msg.topic + msg.payload);
+ // });
+ //});
+}
+
+
+getDriver(UID_For_Drivers) {
+ return this.http.get(this.dev_url + "/driver/getDrivers?userid="+UID_For_Drivers)
+ .map(data => {
+ data.json();
+
+ var devices = data;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+getImagePath(uid){
+ return this.http.get(this.dev_url+'/users/shareProfileImage?uid=' +uid)
+ .map(res=>res.json());
+}
+
+getVehicleType(id) {
+ return this.http.get(this.dev_url + "/vehicleType/getVehicleTypes?user="+id)
+ .map(data => {
+ data.json();
+
+ var devices = data;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+
+
+getDeviceModel(s,l,i) {
+ var dynamicurl = this.dev_url + "/deviceModel/getDeviceModel?skip="+s + '&limit='+l;
+ if(i != undefined){
+ var input = i;
+ dynamicurl += "&input="+ i ;
+ }
+
+ return this.http.get(dynamicurl)
+ .map(data => {
+ data.json();
+
+ var devices = data;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+}
+
+addDeviceModel(newDeviceModel){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/deviceModel/addDeviceModel',newDeviceModel, {headers:headers})
+ .map(res => res.json()
+
+ );
+}
+
+
+//url trigger of add device here
+
+
+//https://www.oneqlik.in/driver/addDriverDetails
+
+addDriver(newDriver){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/driver/addDriverDetails',newDriver, {headers:headers})
+ .map(res => res.json()
+
+ );
+}
+
+addVehicleType(newVehicleModel){
+ var headers = new Headers();
+ headers.append('Content-Type','application/json');
+ return this.http.post(this.dev_url + '/vehicleType/addvehicleType',newVehicleModel, {headers:headers})
+ .map(res => res.json()
+
+ );
+}
+
+
+updateVehType(vehtypeObj){
+ console.log(vehtypeObj);
+ return this.http.post(this.dev_url + '/vehicleType/updatevehicleType',vehtypeObj)
+ .map(res => res.json());
+
+}
+
+
+deleteVehicleType(data){
+ return this.http.get(this.dev_url +"/vehicleType/deleteVehicleType?_id="+data)
+ .map(res => {
+ // console.log(res);
+ return res});
+}
+
+
+
+deleteDeviceModel(data){
+
+ return this.http.get(this.dev_url +"/deviceModel/deleteDeviceModel?_id="+data)
+ .map(res => {
+ // console.log(res);
+ return res});
+
+
+ }
+
+ editDevModel(devModel){
+ return this.http.post(this.dev_url + '/deviceModel/updateDeviceModel',devModel)
+ .map(res => res.json())
+ }
+
+ deleteDriver(data){
+
+ return this.http.get(this.dev_url +"/driver/deleteDriver?_id="+data)
+ .map(res => {
+ // console.log(res);
+ return res});
+ }
+
+ // http://localhost:3000/trackRouteMap/updateRoute_map
+
+ updateRouteMap(updateMap){
+
+ return this.http.post(this.dev_url + "/trackRouteMap/updateRoute_map", updateMap)
+ .map(res =>res.json());
+
+ }
+
+
+ vehicleUtilization(role,userid){
+ return this.http.get(this.dev_url+"/gps/vehicleUtilizationPercentage?role="+role+"&id="+userid)
+ .map(res => res.json());
+
+ }
+
+
+ xlStoppageReport(Fdate,tdate,uId,vName){
+ return this.http.get(this.dev_url+"/stoppage/stoppageXlReport?from_date="+Fdate+"&to_date="+tdate+"&_u="+uId+"&vname="+vName)
+ .map(res=> res.json());
+ }
+
+ getCurrencies(){
+ return this.http.get('https://openexchangerates.org/api/currencies.json')
+ .map(res=> res.json());
+ }
+
+
+
+ xlRVReport(f,t,u){
+ return this.http.get(this.dev_url+"/notifs/RouteVoilationXlReport?from_date="+f+"&to_date="+t+"&_u="+u)
+ .map(res=>res.json());
+ }
+
+ ignXLreport(f,t,vn,user){
+ return this.http.get(this.dev_url+"/notifs/IgnitionXlReport?from_date="+f+"&to_date="+t+"&vname="+vn+"&_u="+user)
+ .map(res => res.json());
+ }
+
+ public post(url:string,data:any,isJson=true){
+ $("#loading").css({"visibility": "visible"});
+
+ if(isJson){
+ // this.dev_url+url,data
+ return this.http.post(this.dev_url+url,data).map((res : Response) => {
+ $("#loading").css({"visibility": "hidden","background":"red"});
+ return res.json();
+ })
+ }else{
+ // this.dev_url+url,data
+ return this.http.post(this.dev_url+url,data).map((res : Response) => {
+ $("#loading").css({"visibility": "hidden"});
+ return res;
+ })
+ }
+ }
+
+ OSXLreport(fd,td,vn,u){
+ return this.http.get(this.dev_url+"/notifs/overspeedXlReport?from_date="+fd+"&to_date="+td+"&_u="+u+"&vname="+vn)
+ .map(res => res.json());
+ }
+
+ gettripByDevice(find){
+ return this.http.get(this.dev_url + "/user_trip/getLastTrip?tripInfo=all_trip&user=" + find.user +"&device=" + find.device+ "&fromDate=" + find.fromDate + "&toDate=" + find.toDate + "&skip=" + 1 + "&limit=" + 10)
+ .map(res=>res.json());
+
+ }
+
+ getPOI(data){
+ return this.http.get(this.dev_url + "/poi/getPois?user=" + data)
+ .map(res => {
+ // console.log(res);
+ return res.json()});
+ }
+
+ sharedData:any;
+ setService(data){
+ this.sharedData = data;
+ }
+ getService(){
+ return this.sharedData;
+ }
+
+
+ getAddressPrefrence(){
+ var reportAddressPref = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).report_address_preference;
+ return reportAddressPref ;
+ }
+
+ getGroupById(groupId){
+ return this.http.get(this.dev_url + "/groups/getGroupById?_id="+groupId)
+ .map(res => res.json());
+ }
+
+ public get(url:string,isJson=true,loader=true){
+ if(loader==true)
+ $("#loading").css({"visibility": "visible"});
+ if(isJson)
+ return this.http.get(this.dev_url+url).map((res : Response) => {
+ if(loader==true)
+ $("#loading").css({"visibility": "hidden"});
+ return res.json();
+ })
+ else
+ return this.http.get(this.dev_url+url).map((res : Response) => {
+ $("#loading").css({"visibility": "hidden"});
+ return res;
+ })
+ }
+
+ changeMessage(message: string) {
+ this.messageSource.next(message)
+ }
+
+ getDetails(url){
+ return this.http.get(this.dev_url2+url)
+ .map(res => res.json());
+ }
+
+ addressTranslationInHindi(data){
+ return this.http.post(this.dev_url + '/users/translate', data)
+ .map(res => res.json()) ;
+ }
+
+ searchByImei(data){
+ return this.http.post(this.dev_url+'/devices/searchByIMEI',data) .map(res => res.json()) ;
+ }
+
+ "---------------------------New Method for calculate area------------------------------"
+
+ calculateArea(data){
+ return this.http.get(this.dev_url+'/hulls?imei='+data.imei+'&f='+data.f+'&t='+data.t).map(res => res.json()) ;
+ }
+
+ getVehicleList(data){
+ if(data.supAdm){
+ return this.http.get(this.dev_url+'/devices/getDeviceList?deviceType='+data.deviceType+'&fromDate='+data.f+'&toDate='+data.t+'&licenceType='+data.licenceType+'&supAdm='+data.supAdm).map(res => res.json()) ;
+ }else{
+
+ return this.http.get(this.dev_url+'/devices/getDeviceList?deviceType='+data.deviceType+'&fromDate='+data.f+'&toDate='+data.t+'&licenceType='+data.licenceType).map(res => res.json()) ;
+ }
+ // licenceType:that.licenceStatus,
+ // supAdm:that.supAdm
+ }
+
+ addMultipleTolls(data){
+ return this.http.post(this.dev_url+'/toll/multipleToll',data)
+ .map(res => res.json()) ;
+ }
+ addToll(data){
+ return this.http.post(this.dev_url+'/toll/add',data)
+ // .map(res => res.json()) ;
+ }
+
+ getTolls(){
+ return this.http.get(this.dev_url+'/toll/get')
+ .map(res => res.json()) ;
+ }
+
+ deleteToll(data){
+ return this.http.post(this.dev_url+'/toll/delete',data)
+ }
+ updateToll(data){
+ return this.http.post(this.dev_url+'/toll/update',data)
+ // .map(res => res.json()) ;
+ }
+
+ getSuperAdminList(){
+ return this.http.get(this.dev_url+'/users/getSuperAdminList').map(res => res.json()) ;
+ }
+ getApprovalAddressList(id){
+ return this.http.get(this.dev_url+'/googleAddress/addressList?id='+id).map(res => res.json()) ;
+ }
+ getRenewalHistory(id){
+ return this.http.get(this.dev_url+'/devices/renewalHistory?id='+id).map(res => res.json()) ;
+ }
+ addMultipleInventory(data){
+ return this.http.post(this.dev_url+'/Device_inventory/addMultiple',data)
+ .map(res => res.json()) ;
+ }
+ transferInventory(data){
+ return this.http.post(this.dev_url+'/Device_inventory/transfer',data)
+ .map(res => res.json()) ;
+ }
+ getInventoryByStatus(){
+ return this.http.get(this.dev_url+'/Device_inventory/getInventoryByStatus').map(res => res.json()) ;
+ }
+ getInventoryCount(id){
+ return this.http.get(this.dev_url+'/Device_inventory/getInventoryCount?user='+id).map(res => res.json()) ;
+ }
+ changeKycStatus(data){
+ return this.http.post(this.dev_url+'/users/changeKYCStatus',data)
+ .map(res => res.json()) ;
+ }
+
+// addMultipleDevice(deviceUploadObject){
+
+// return this.http.post(this.dev_url + '/devices/uploadDevice',deviceUploadObject)
+// .map(res => res.json())
+// }
+
+imageUrlToBase64(url: string) {
+
+ const httpOptions = {
+ headers: new Headers({
+ 'Content-Type': 'application/json'
+ }),
+ observe: 'response' as 'body'
+ };
+ return this.http.get(url, httpOptions).pipe(
+ take(1),
+ map((arrayBuffer:any) =>
+ btoa(
+ Array.from(new Uint8Array(arrayBuffer))
+ .map((b) => String.fromCharCode(b))
+ .join('')
+ )
+ ),
+ )
+
+ // return this.http.get(urL, {
+ // observe: 'body',
+ // responseType: 'arraybuffer',
+ // })
+ // .pipe(
+ // take(1),
+ // map((arrayBuffer) =>
+ // btoa(
+ // Array.from(new Uint8Array(arrayBuffer))
+ // .map((b) => String.fromCharCode(b))
+ // .join('')
+ // )
+ // ),
+ // )
+}
+
+
+}
+//http://localhost:3000/notifs/overspeedXlReport?from_date=2018-01-24T11:37:08.673Z&to_date=2018-01-24T11:37:08.673Z&_u=5a27deca4468572f678e2d91
+//http://localhost:3000/notifs/IgnitionXlReport?from_date=2018-04-02T07:37:10.109Z&to_date=2018-05-17T07:37:10.109Z&vname=MH 08 E 0625&_u=5ae09545f01a5576cf6c0e1b
+ // http://localhost:3000/stoppage/stoppageXlReport?from_date=2018-04-06T13:26:02.444Z&to_date=2018-04-06T13:26:02.444Z&_u=5a27deca4468572f678e2d91&vname=5a46086f3ab69a449498bc21
+
diff --git a/src/app/contact.ts b/src/app/contact.ts
new file mode 100644
index 0000000..bf8c861
--- /dev/null
+++ b/src/app/contact.ts
@@ -0,0 +1,11 @@
+export class Contact{
+ _id?: string;
+ first_name: string;
+ last_name: string;
+ email: string;
+ password: string;
+ org_name: string;
+ phone: string;
+ otp:string;
+
+}
diff --git a/src/app/contactus.ts b/src/app/contactus.ts
new file mode 100644
index 0000000..ff84258
--- /dev/null
+++ b/src/app/contactus.ts
@@ -0,0 +1,5 @@
+export class Contactus{
+ title: string;
+ msg: string;
+ email: string;
+}
diff --git a/src/app/costumer-support/costumer-support.component.html b/src/app/costumer-support/costumer-support.component.html
new file mode 100644
index 0000000..fe17187
--- /dev/null
+++ b/src/app/costumer-support/costumer-support.component.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
add
+
+
+ {{'From Date' | translate}}
+
+ {{'To Date' | translate}}
+
+
+
+
{{'Get Detail' | translate}}
+
{{'Export To Excel' | translate}}
+
+
+
+
+
+
+
+
+
+
+ Inquiry Date
+ Customer Name
+ Phone
+ Email
+ Message
+ Assigned To
+ Role
+ Status
+
+
+
+
+
+
diff --git a/src/app/costumer-support/costumer-support.component.scss b/src/app/costumer-support/costumer-support.component.scss
new file mode 100644
index 0000000..ceed4f8
--- /dev/null
+++ b/src/app/costumer-support/costumer-support.component.scss
@@ -0,0 +1,36 @@
+
+ .container-fluid .headerStyle{
+ text-align: center;
+ padding-bottom: 10px;
+ padding-top: 10px;
+ font-size: 20px;
+ font-weight: 500;
+ background: white;
+ color: black;
+ border-radius: 4px;
+ }
+
+
+ /deep/ .mat-menu-panel.test{
+
+ background-color: #b7b7b7;
+ width: 160px;
+ text-align: left;
+ color: #fff;
+
+ a{
+ display: block;
+ padding: 9px 10px;
+ margin: 0;
+ border-bottom: 1px solid #999;
+ }
+}
+
+/deep/ .mat-menu-panel.test_1{
+
+ background-color: #b7b7b7;
+ width: 160px;
+ text-align: left;
+ color: #fff;
+ margin-top:48px;
+}
\ No newline at end of file
diff --git a/src/app/costumer-support/costumer-support.component.spec.ts b/src/app/costumer-support/costumer-support.component.spec.ts
new file mode 100644
index 0000000..eeb5eb0
--- /dev/null
+++ b/src/app/costumer-support/costumer-support.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CostumerSupportComponent } from './costumer-support.component';
+
+describe('CostumerSupportComponent', () => {
+ let component: CostumerSupportComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CostumerSupportComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CostumerSupportComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/costumer-support/costumer-support.component.ts b/src/app/costumer-support/costumer-support.component.ts
new file mode 100644
index 0000000..112c5c5
--- /dev/null
+++ b/src/app/costumer-support/costumer-support.component.ts
@@ -0,0 +1,330 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+import { ContactService } from '../contact.service';
+import { Router } from '@angular/router';
+import { MdDialog } from '@angular/material';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import * as moment from 'moment';
+declare var $: any, DataTable: any;
+
+@Component({
+ selector: 'app-costumer-support',
+ templateUrl: './costumer-support.component.html',
+ styleUrls: ['./costumer-support.component.scss']
+})
+export class CostumerSupportComponent implements OnInit {
+ from_date: Date;
+ to_date: Date;
+ bsConfig: Partial;
+ tabelObj: any;
+ useridd: any;
+ supadm: any;
+ isOperator: boolean = false;
+ supAdminId: any;
+ newVar:any;
+ newVar1:any;
+ colorTheme = 'theme-dark-blue';
+
+ inquiryStatus = ['OPEN','IN PROGRESS', "CLOSED"];
+ inquiryRole = ['ADMIN','DEALER', "ORGANISATION"];
+ dtOptions:any={};
+ constructor(public contactService: ContactService, private router: Router,public dialog: MdDialog,private _flashMessagesService: FlashMessagesService) {
+ this.from_date = new Date();
+ this.from_date.setHours(0,0,0,0);
+
+ this.to_date = new Date();
+
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY, h:mm:ss a' }, { containerClass: this.colorTheme });
+ }
+
+ ngOnInit() {
+ this.testTable();
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+
+ this.supadm = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.isOperator = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOperator;
+ this.supAdminId = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ }
+
+
+ inquiryList() {
+ console.log(this.from_date);
+ console.log(this.to_date);
+ this.tabelObj.draw();
+
+}
+
+testTable() {
+ const that = this;
+ $(document).ready(function () {
+ that.tabelObj = $('#deviceTable').DataTable({
+ "serverSide": true,
+ "processing": true,
+ "searching": false,
+ "order": [[3, "desc"]],
+ "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ "fields" :[{label :"Vehicle Number",name : "Device_Name"}],
+ scrollX: true,
+ ajax: (dataTablesParameters: any, callback) => {
+ dataTablesParameters.op = {};
+ dataTablesParameters.select = [];
+ dataTablesParameters.find = {};
+
+ // if(that.supadm == true){
+ // dataTablesParameters.find['superAdmin'] = that.useridd;
+ // }
+
+ // if(that.isOperator == true){
+ // dataTablesParameters.find['user'] = that.useridd;
+ // }
+
+ dataTablesParameters.find['assigned_to'] = that.useridd;
+ console.log("dataTablesParameters=>",dataTablesParameters);
+ if (that.from_date) {
+ dataTablesParameters.find['posted_on'] = dataTablesParameters.find['posted_on'] ? dataTablesParameters.find['posted_on'] : {};
+ dataTablesParameters.find['posted_on']['$gte'] = {
+ _eval: 'date',
+ value: new Date(that.from_date).toISOString()
+ }
+ };
+ // }
+ if (that.to_date) {
+ dataTablesParameters.find['posted_on'] = dataTablesParameters.find['posted_on'] ? dataTablesParameters.find['posted_on'] : {};
+ dataTablesParameters.find['posted_on']['$lte'] = {
+ _eval: 'date',
+ value: new Date(that.to_date).toISOString()
+ };
+ }
+
+ dataTablesParameters.columns = [
+ {data : "_id"},
+ {data : "superAdmin"},
+ {data : "dealer"},
+ {data : "message"},
+ {data : "assigned_to"},
+ {data : "assigned_to.first_name"},
+ {data : "assigned_to.last_name"},
+ {data : "support_status"},
+ {data : "posted_on"},
+ {data :"posted_by"},
+ {data :"posted_by.first_name"},
+ {data : "posted_by.last_name"},
+ {data :"posted_by.phone"},
+ {data : "posted_by.email"},
+ {data : "role"},
+ {data : "user"}
+ ]
+ // dataTablesParameters.find.user = that.useridd;
+
+ var suburl = "";
+ suburl += "/customer_support/getCustomerQuery";
+ that.contactService.post(suburl, dataTablesParameters).subscribe(resp => {
+ callback(resp);
+ }, err => {
+
+ // console.log(err.status);
+ });
+ },
+ "rowCallback": function(row: Node, data: any | Object, index: number){
+ $('#roleChange', row).bind('change', function (ele) {
+ var selectedRole = $($(row).children()[6]).children().val();
+ console.log("selectedRole=>",selectedRole);
+ console.log('ticketRoleStat=>',data);
+ var role_update = {
+ id: data._id,
+ role : selectedRole,
+ user : data.user,
+ }
+
+ var suburl = "";
+ suburl += "/customer_support/updateCustomerQuery";
+ that.contactService.post(suburl,role_update).subscribe(res=>{
+ console.log(res);
+ },err=>{
+ console.log(err);
+ })
+ })
+
+ $('#ticketStatChange', row).bind('change', function (ele) {
+ var selectedStatus = $($(row).children()[7]).children().val();
+ console.log("selectedStatus=>",selectedStatus);
+
+ var role_update = {
+ id: data._id,
+ ticketStatus : selectedStatus
+ }
+
+
+
+
+
+ var suburl = "";
+ suburl += "/customer_support/updateCustomerQuery";
+ that.contactService.post(suburl,role_update).subscribe(res=>{
+ console.log(res);
+ },err=>{
+ console.log(err);
+ })
+
+ })
+ // $('#edit', row).bind('click', () => {
+ // var editData = data;
+ // editData.actionId= "edit";
+ // localStorage.setItem("invantoryObject",JSON.stringify(editData));
+ // that.router.navigateByUrl('deviceEntry');
+
+ // });
+ },
+
+ "columns": [
+ {
+ "data": "posted_on",
+ // "searchable" : true,
+ "render": function (data, type, row) {
+ var system_date = new Date(data);
+ return data ? (moment(system_date).format('dddd,ll,LTS')) : "";
+ }
+ },
+ {
+
+ "data": "posted_by",
+ // "searchable" : true,
+ render: function (data, type, row) {
+ // console.log("whatdataishere=>",data);
+ var fName = data.first_name?data.first_name:"";
+ var lName = data.last_name?data.last_name:"";
+ return fName + " " + lName;
+ }
+ },
+ {
+
+ "data": "posted_by",
+ // "searchable" : true,
+ render: function (data, type, row) {
+ // console.log("whatdataishere=>",data);
+
+ return data.phone?data.phone : "";
+ }
+ },
+ {
+
+ "data": "posted_by",
+ // "searchable" : true,
+ render: function (data, type, row) {
+ // console.log("whatdataishere=>",data);
+
+ return data.email?data.email : "";
+ }
+ },
+ {
+
+ "data": "message",
+ // "searchable" : true,
+ render: function (data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "assigned_to",
+ // "searching" : true,
+ render: function (data, type, row) {
+ // console.log("AssignedData=>",data);
+ var frstName = data.first_name? data.first_name : "";
+ var lstName = data.last_name ? data.last_name : "";
+ return frstName + " "+ lstName;
+ }
+ },
+ {
+ "data": "role",
+ // "searching" : true,
+ render: function (data, type, row) {
+
+ var $select1 = $(" ", {
+ "id": row[0]+"start",
+ "value": data
+ });
+ $.each(that.inquiryRole, function(l,m){
+
+ var $option1 = $(" ", {
+ "text": m,
+ "value": m
+ });
+ if(data === m){
+ $option1.attr("selected", "selected")
+ }
+ $select1.append($option1);
+
+ });
+
+ return $select1.prop("outerHTML");
+ }
+ },
+ {
+
+ "data": "support_status",
+ // "searchable" : true,
+ render: function (data, type, row) {
+ var $select = $(" ", {
+ "id": row[0]+"start",
+ "value": data
+ });
+ $.each(that.inquiryStatus, function(k,v){
+ var $option = $(" ", {
+ "text": v,
+ "value": v
+ });
+ if(data === v){
+ $option.attr("selected", "selected");
+ $option.attr("disabled", "disabled")
+ }
+ $select.append($option);
+ });
+ console.log($select);
+ return $select.prop("outerHTML");
+ }
+ },
+ // {
+ // "data":null,
+
+ // "render":function(data,type,row){
+ // return 'Edit '
+
+ // }
+ // } ,
+ ],
+ });
+ });
+
+}
+
+tab:any;
+
+exportExcel() {
+
+ var tab_text="";
+ var textRange; var j=0;
+ this.tab = document.getElementById('deviceTable'); // id of table
+
+ for(j = 0 ; j < this.tab.rows.length; j++)
+ {
+ tab_text=tab_text+this.tab.rows[j].innerHTML+" ";
+ //tab_text=tab_text+"";
+ }
+
+ tab_text=tab_text+"
";
+ tab_text= tab_text.replace(/]*>|<\/A>/g, "");//remove if u want links in your table
+ tab_text= tab_text.replace(/ ]*>/gi,""); // remove if u want images in your table
+ tab_text= tab_text.replace(/ ]*>|<\/input>/gi, ""); // reomves input params
+ // tab_text= tab_text.replace(/ Edit /gi, ""); // reomves input params
+
+
+ var ua = window.navigator.userAgent;
+ var msie = ua.indexOf("MSIE ");
+
+ var sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
+
+ return (sa);
+}
+
+
+}
diff --git a/src/app/dash/dash.component.css b/src/app/dash/dash.component.css
new file mode 100644
index 0000000..2e2031f
--- /dev/null
+++ b/src/app/dash/dash.component.css
@@ -0,0 +1,65 @@
+body {
+ text-align: center;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.sebm-google-map-container {
+ height: 218px;
+}
+mwl-gauge {
+ width: 233px;
+ height: 300px;
+ display: block;
+ padding: 10px;
+}
+mwl-gauge > .gauge > .dial {
+ stroke: #eee;
+ stroke-width: 20;
+ fill: rgba(0,0,0,0);
+}
+mwl-gauge > .gauge > .value {
+ stroke: rgb(47, 227, 255);
+ stroke-width: 20;
+ fill: rgba(0,0,0,0);
+
+}
+mwl-gauge > .gauge > .value-text {
+ fill: rgb(47, 227, 255);
+ font-family: sans-serif;
+ font-weight: bold;
+ font-size: 10em;
+
+}
+.mwlResizable {
+ box-sizing: border-box;
+ background-color: red;
+}
+#my-div{
+ margin: 0 auto;
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+}
+#re1{
+ resize: both;
+ overflow: auto;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+#m{
+ width:326px;
+ height:180px;
+/* background-color: red; */
+}
+#n{
+ width:852px;
+ height:269px;
+ /* background-color:yellow; */
+ resize: both;
+ overflow: auto;
+ overflow-x: hidden;
+ overflow-y: hidden;
+}
+#o{
+ resize: both;
+ overflow: auto;
+
+}
\ No newline at end of file
diff --git a/src/app/dash/dash.component.html b/src/app/dash/dash.component.html
new file mode 100644
index 0000000..d116517
--- /dev/null
+++ b/src/app/dash/dash.component.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
Current Location(GPS) -
+
+
+
+
+
+
+
+
Temprature(Gauge Chart) -
+
+
+
+
+
+
+
+
+
Temprature(Line Chart) -
+
+
+
+
+
+
+
+
+
Humidity(Gauge Chart) -
+
+
+
+
+
+
+
Humidity(Line Chart) -
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dash/dash.component.spec.ts b/src/app/dash/dash.component.spec.ts
new file mode 100644
index 0000000..08bd492
--- /dev/null
+++ b/src/app/dash/dash.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DashComponent } from './dash.component';
+
+describe('DashComponent', () => {
+ let component: DashComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DashComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DashComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dash/dash.component.ts b/src/app/dash/dash.component.ts
new file mode 100644
index 0000000..4a300fb
--- /dev/null
+++ b/src/app/dash/dash.component.ts
@@ -0,0 +1,243 @@
+import { Component, OnInit, ViewChild, Input,Output, EventEmitter } from '@angular/core';
+import {Observable} from 'rxjs/Rx';
+import { ChartsModule } from 'ng2-charts/ng2-charts';
+import { BaseChartDirective } from 'ng2-charts/ng2-charts';
+import {Router, ActivatedRoute, Params} from '@angular/router';
+import {ContactService} from '../contact.service';
+import { FlashMessagesService } from 'angular2-flash-messages';
+
+//import {ResizeEvent} from 'angular-resizable-element';
+import {ResizeEvent} from 'angular2-resizable';
+
+@Component({
+ selector: 'wizard-step',
+ templateUrl: './dash.component.html',
+ styleUrls: ['./dash.component.css'],
+ providers: [ContactService],
+})
+
+export class DashComponent implements OnInit {
+ @ViewChild(BaseChartDirective) public chart: BaseChartDirective;
+ radio1:any;
+ che1:any;
+ che2:any;
+ che3:any;
+ che4:any;
+ che5:any;
+ lng:any;
+ temp:any;
+ lat:any;
+ temp1:any;
+ show: boolean;
+ show1: boolean;
+ show2: boolean;
+ show3: boolean;
+ show4: boolean;
+ typdev :any;
+ new:any;
+ neww:any;
+ temp2:any;
+ temp3:any;
+ temp4:any
+ humid:any;
+ // private dataUrl = 'http://13.126.36.205:3000/mos/getMosChannel';
+ foo = [
+ {value: 'Latitude', viewValue: 'Latitude'},
+ {value: 'Time', viewValue: 'Time'},
+
+ ];
+ foods = [
+ {value: 'GPS', viewValue: 'GPS'},
+ {value: 'Temprature', viewValue: 'Temprature'},
+ {value: 'Humidity', viewValue: 'Humidity'},
+ ];
+ foodss = [
+ {value: 'Map', viewValuee: 'Map'},
+ {value: 'Line', viewValuee: 'Line'},
+ {value: 'Gauge', viewValuee: 'Gauge'},
+ ];
+ foodsss = [
+ {value: 'Celcius', viewValueee: 'Celcius'},
+ {value: 'Fahrenheit', viewValueee: 'Fahrenheit'},
+ {value: 'Latitude', viewValueee: 'Latitude'},
+ ];
+ f = [
+ {value: 'Time', viewVal: 'Time'},
+ {value: 'Longitude', viewVal: 'Longitude'},,
+ ];
+
+
+
+ constructor(private contactService:ContactService, private activatedRoute: ActivatedRoute,private router: Router,private _flashMessagesService: FlashMessagesService) {
+
+ }
+ _lineChartData:any;
+ public info: string;
+ private prevDatasets;
+ private datasets = [
+ {
+ label: "Humidity",
+ data: [0, 0, 0, 0, 0, 0]
+ }
+ ];
+
+ private labels = ["","","","","",""];
+
+
+ private options = {
+ scales: {
+ yAxes: [{
+ ticks: {
+ beginAtZero: false,
+ max: 500,
+ min: 0
+ }
+ }]
+ }
+ };
+
+ change() {
+
+ this.datasets = [{
+ label: "Humidity",
+ data: []
+ }];
+
+ this.labels = [];
+ }
+
+ gengraph(){
+ //console.log();
+
+ if(this.new === "GPS" && this.che3==null || this.che4==null || this.che3==false || this.che4==false )
+ {
+ if(this.che1==true && this.che2==true && this.new === "GPS" && this.neww=== "Map")
+ {
+ // console.log("GPS working...");
+ this.show = true;
+ this.lng =73.8567;
+ this.lat = 18.5204;
+
+ }
+ /* else{
+ console.log("Wrong Credantial for GPS")
+ this._flashMessagesService.show('Wrong Credantial for GPS', { cssClass: 'alert-danger', timeout: 2000 });
+
+ } */
+ }
+ if(this.new === "Temprature")
+ {
+ if(this.che3==true || this.che4==true)
+ {
+ if(this.neww === "Gauge")
+ {
+ if(this.che3==true){
+ // console.log("Temp Cel working...")
+ //this._flashMessagesService.show('Temprature in Celcius', { cssClass: 'alert-warning', timeout: 2000 });
+
+ this.show1 = true;
+ this.temp=40;
+
+ }
+ else{
+ // this._flashMessagesService.show('Temprature in Farenheit', { cssClass: 'alert-warning', timeout: 2000 });
+ this.show1 = true;
+ this.temp1= 40;
+ this.temp = this.temp1 * 1.8 +32;
+ }
+ }
+ else if(this.neww === "Line" && this.che5 == true)
+ {
+ if(this.che3==true){
+ // console.log("Temp Cel2 working...")
+ this.show2 = true;
+ //this.temp=40;
+ this.clickData_CorrectAnimation()
+
+ }
+ else{
+ this.show2 = true;
+ this.temp1= 40;
+ this.clickData_CorrectAnimationn()
+
+ }
+ }
+ }
+ else{
+ // console.log("Wrong Credantial for Temp")
+ }
+ }
+ else if(this.new === "Humidity" && this.che3 ==true && this.che4 ==true && this.neww === "Line" ){
+ this.show3 = true;
+ this.clickData_CorrectAnimationnn()
+ }
+ else if(this.new === "Humidity" && this.che3 ==true && this.neww === "Gauge" ){
+ this.show4 = true;
+ this.humid=50;
+ }
+ }
+
+ ngOnInit() {
+ this.lng =73.8567;
+ this.lat = 18.5204;
+ }
+ testResponse:any
+ clickData_CorrectAnimation(){
+
+
+ this.temp1=40;
+
+
+ this.temp2 = parseFloat(this.temp1);
+ let newData = this.datasets[0].data.slice();
+ newData.shift();
+ newData.push(this.temp2);
+
+ this.datasets = [{
+ label: "Temprature",
+ data: newData
+ }];
+
+
+
+ }
+ clickData_CorrectAnimationn(){
+
+
+ this.temp1=40;
+
+ this.temp3 = this.temp1 * 1.8 +32;
+ let newData = this.datasets[0].data.slice();
+ newData.shift();
+ newData.push(this.temp3);
+
+ this.datasets = [{
+ label: "Temprature",
+ data: newData
+ }];
+
+
+
+ }
+ clickData_CorrectAnimationnn(){
+
+ this.temp4=50;
+
+
+ let newData = this.datasets[0].data.slice();
+ newData.shift();
+ newData.push(this.temp4);
+
+ this.datasets = [{
+ label: "Humidity",
+ data: newData
+ }];
+
+
+
+
+ }
+
+ }
+
+
diff --git a/src/app/dash/dash.router.ts b/src/app/dash/dash.router.ts
new file mode 100644
index 0000000..3cd07ce
--- /dev/null
+++ b/src/app/dash/dash.router.ts
@@ -0,0 +1,18 @@
+import { ModuleWithProviders } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+
+import { CommunityComponent } from '../community/community.component';
+import { SupportComponent } from '../support/support.component';
+import { HomeComponent } from '../home/home.component';
+import {GmapComponent} from '../gmap/gmap.component';
+import { LoginComponent } from '../login/login.component';
+export const router2: Routes = [
+ { path: '', redirectTo: 'login', pathMatch: 'full' },
+ { path: 'login', component: LoginComponent },
+ // { path: 'home', component: HomeComponent },
+ // { path: 'community', component: CommunityComponent },
+ // { path: 'support', component: SupportComponent },
+ // { path: 'gmap', component: GmapComponent }
+];
+
+export const routes2: ModuleWithProviders = RouterModule.forRoot(router2);
\ No newline at end of file
diff --git a/src/app/dashboard/add-new-device/add-new-device.component.html b/src/app/dashboard/add-new-device/add-new-device.component.html
new file mode 100644
index 0000000..6c70916
--- /dev/null
+++ b/src/app/dashboard/add-new-device/add-new-device.component.html
@@ -0,0 +1,666 @@
+
+
+Loading…
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.doctype }} :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 1:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 2:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 3:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dashboard/add-new-device/add-new-device.component.scss b/src/app/dashboard/add-new-device/add-new-device.component.scss
new file mode 100644
index 0000000..3d3b7f9
--- /dev/null
+++ b/src/app/dashboard/add-new-device/add-new-device.component.scss
@@ -0,0 +1,58 @@
+.topDiv {
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+ padding-left: 4px;
+ padding-right: 3px;
+}
+
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+#toast #img {
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc {
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 2s,
+ fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 4s,
+ fadeout 0.5s 4.5s;
+}
diff --git a/src/app/dashboard/add-new-device/add-new-device.component.spec.ts b/src/app/dashboard/add-new-device/add-new-device.component.spec.ts
new file mode 100644
index 0000000..ebbaacd
--- /dev/null
+++ b/src/app/dashboard/add-new-device/add-new-device.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddNewDeviceComponent } from './add-new-device.component';
+
+describe('AddNewDeviceComponent', () => {
+ let component: AddNewDeviceComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddNewDeviceComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddNewDeviceComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/add-new-device/add-new-device.component.ts b/src/app/dashboard/add-new-device/add-new-device.component.ts
new file mode 100644
index 0000000..8030d84
--- /dev/null
+++ b/src/app/dashboard/add-new-device/add-new-device.component.ts
@@ -0,0 +1,985 @@
+import { Component, OnInit, TemplateRef } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { BsDatepickerConfig, BsModalRef, BsModalService } from 'ngx-bootstrap';
+import { ContactService } from '../../contact.service';
+import {Location} from '@angular/common';
+declare var $:any;
+declare var swal: any;
+@Component({
+ selector: 'app-add-new-device',
+ templateUrl: './add-new-device.component.html',
+ styleUrls: ['./add-new-device.component.scss']
+})
+export class AddNewDeviceComponent implements OnInit {
+ DeviceModelValue: any;
+ modalRef: BsModalRef;
+ submitted = false;
+ date=new Date()
+ expDate:any = new Date(this.date.getFullYear() + 1, this.date.getMonth(), this.date.getDate()).toLocaleString();
+ Indianstate = [ "Andhra Pradesh",
+ "Arunachal Pradesh",
+ "Assam",
+ "Bihar",
+ "Chhattisgarh",
+ "Goa",
+ "Gujarat",
+ "Haryana",
+ "Himachal Pradesh",
+ "Jammu and Kashmir",
+ "Jharkhand",
+ "Karnataka",
+ "Kerala",
+ "Madhya Pradesh",
+ "Maharashtra",
+ "Manipur",
+ "Meghalaya",
+ "Mizoram",
+ "Nagaland",
+ "Odisha",
+ "Punjab",
+ "Rajasthan",
+ "Sikkim",
+ "Tamil Nadu",
+ "Telangana",
+ "Tripura",
+ "Uttarakhand",
+ "Uttar Pradesh",
+ "West Bengal",
+ "Andaman and Nicobar Islands",
+ "Chandigarh",
+ "Dadra and Nagar Haveli",
+ "Daman and Diu",
+ "Delhi",
+ "Lakshadweep",
+ "Puducherry"]
+ custtype: any;
+ DealerId: any;
+ constructor(private modalService: BsModalService,private location:Location,private fb:FormBuilder,private contactService:ContactService,private router:Router,private _flashMessagesService: FlashMessagesService,) { }
+ deviceForm:FormGroup;
+ userId
+ deviceModel
+ vehicleCat=[
+ "Luxury Cab",
+"Three wheeled vehicles for transport of passengers/goods",
+"Goods carrier trucks or tankers or mail carriers",
+"Power tiller and Tractors using public roads",
+"Mobile clinic or X-Ray van or library vans",
+"Mobile Workshops",
+"Mobile canteens",
+"Private Service Vehicle",
+"maxi cab",
+"motor cab",
+"stage cariage",
+"contract carriage",
+"Tourist",
+"Educational Institution buses",
+"Ambulances",
+"Animal Ambulances",
+"Camper vans or trailers",
+"Cash vans",
+"Fire tenders, snorked ladders,auxiliary trailers and fire fighting vehicles",
+"Articulated vehicles",
+"Hearses",
+"Motor car",
+"Crane mounted vehicle",
+"Agricultural Tractor and Power Tiller",
+"Tow Trucks, Breakdown Van and Recovery Vehicles",
+"Construction Equipment Vehicles",]
+
+ // vehicleCat=['Truck','Bus','Car','School Van'];
+ Load:boolean=false;
+ bsConfig: Partial;
+ dataDevModel: any[];
+ vehicle_Type: any[];
+ imageuploadObject = [{doctype:'Adhar card1 *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'Adhar card2 *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'Warrenty Card *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'vehicle sales invoice *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'vehicle RC',image:'',phone:'',docdate:new Date(),fill:true},
+{doctype:'vehicle Photo',image:'',phone:'',docdate:new Date(),fill:true},
+];
+ dealerId
+ sup_admin
+ hrdwr
+ hrdwr2
+ custId
+ vahanID
+ documentList = [
+ {
+ "docId": "Adhar card1",
+ "docName": "Adhar Card Front"
+ },
+ {
+ "docId": "Adhar card2",
+ "docName": "Adhar Card Back"
+ },
+ {
+ "docId": "vehicle sales invoice",
+ "docName": "vehicle sales invoice"
+ },
+ {
+ "docId": "voter Id",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "vehicle RC",
+ "docName": "vehicle RC"
+ },
+ {
+ "docId": "vehicle Photo",
+ "docName": "vehicle Photo"
+ },
+ {
+ "docId": "PAN card",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "Driving License",
+ "docName": "Driving License"
+ },
+ {
+ "docId": "RC Book",
+ "docName": "RC Book"
+ },
+ {
+ "docId": "Device Image",
+ "docName": "Device Image"
+ },
+ {
+ "docId": "Co.registered Card",
+ "docName": "Co.registered Card"
+ },
+ {
+ "docId": "Nepal Citizenship",
+ "docName": "Nepal Citizenship"
+ },
+ {
+ "docId": "Blue Book",
+ "docName": "Blue Book"
+ },
+ {
+ "docId": "Warrenty Card",
+ "docName": "Warrenty Card"
+ },
+ {
+ "docId": "Other",
+ "docName": "Other"
+ }
+
+ ];
+ ngOnInit() {
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY' }, { containerClass: 'theme-dark-blue' });
+ this.userId = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.dealerId=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).Dealer_ID;
+ if(JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin){
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._id;
+ }else{
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ }
+ console.log("SUPPPERADMIN-----,",this.sup_admin);
+
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.custId = localStorage.getItem('custId');
+ if((this.custtype == false)&&(window.localStorage['Custumer'] == 'ON')){
+
+ this.DealerId = JSON.parse(window.atob(window.localStorage.Dealer_token.split(".")[1]))._id;
+
+ }
+ this.deviceForm=this.fb.group({
+ ownerName:['',[Validators.required,Validators.pattern("[a-zA-Z][a-zA-Z ]+")]],
+ contactNo:['',[Validators.required,Validators.pattern('[0-9 ]{10}')]],
+ device_id:[''],
+ address:['',Validators.required],
+ state:[''],
+ rtoOffice:[''],
+ vehicleManufacture:[''],
+ vehicleModel:[''],
+ vehicleCategory:[''],
+ vehicleType:[''],
+ vehicleNo:['',[Validators.required,Validators.maxLength(10)]],
+ chasisNo:['',Validators.required],
+ engineNo:['',Validators.required],
+ panic:[''],
+ bsnlPlan:[''],
+ hostingPlan:[''],
+ SMSPlan:[''],
+ city:[''],
+ deviceModel:[''],
+ trackingExp:new Date(this.expDate),
+ eSimExpiry:[''],
+ model:[''],
+ email:[""],
+ dealerFollowup:['',[Validators.required,Validators.pattern('[0-9 ]{10}')]],
+ sim1:['',Validators.required],
+ sim2:[''],
+ iccid:[''],
+ pin:['',[Validators.required,Validators.pattern('[0-9 ]{6}')]]
+
+
+ })
+ this.loadropdown()
+ this.getDeviceModel();
+ this.getvehDetail()
+ this.getUserSetting(this.userId);
+ this.getModelData()
+ this. getAllState()
+ var that=this
+ $(document).on('change','#inventory',function() {
+ var value = $('#inventory').val();
+ for(var i=0;i{
+ for(var i=0;i{
+ console.log(res);
+
+ if(res.message=="Saved"){
+
+ this.addDevice(this.user)
+
+ // this.addDevice(res._id)
+ // this.router.navigateByUrl('/dashboard');
+ }
+ })
+
+
+ }else{
+
+ var expDate = new Date();
+ expDate.setFullYear(expDate.getFullYear()+1);
+
+ var name=this.deviceForm.value.ownerName.split(' ')
+
+ var data={
+ // Dealer:this.reactiveForm.value.manager,
+ custumer: true,
+ expdate:new Date(expDate).toISOString(),
+ first_name:name[0]?name[0]:'',
+ last_name:name[1]?name[1]:'',
+ isDealer: false,
+ phone:this.deviceForm.value.contactNo,
+ user_id:"",
+ org_name: null,
+ password:this.generatePassword(6),
+ supAdmin:this.sup_admin,
+ Dealer:this.userId,
+ timezone: "Asia/Kolkata",
+ std_code: {countryCode: "in", dialcode: "91"},
+
+ }
+
+ if(this.deviceForm.value.pin){
+ data['pin']=this.deviceForm.value.pin
+ }
+
+ if(this.deviceForm.value.email){
+ data['email']=this.deviceForm.value.email
+ }
+ if(this.deviceForm.value.address){
+ data['address']=this.deviceForm.value.address
+ }
+
+ console.log(data);
+
+ this.contactService.post('/users/signUp',data).subscribe((res:any)=>{
+ console.log(res);
+
+ if(res.message=="Registered Sucessfully" || res.message=="Registered and Message Sent Successfuly" || res.message=="Registered"){
+
+
+ this.addDevice(res._id)
+ // this.router.navigateByUrl('/dashboard');
+ }
+ })
+ }
+
+ }
+
+
+ addDevice(data){
+ var model= $('#dbselect').multipleSelect('getSelects','value');
+ var type= $('#vehicleType').multipleSelect('getSelects','value');
+ var deviceid
+ if(this.inventoryManagement){
+
+ var id=$('#inventory').multipleSelect('getSelects','value');
+ deviceid=id[0]
+ }else{
+ deviceid=this.deviceForm.value.device_id
+ }
+ var newDevice = {
+ devicename: this.deviceForm.value.vehicleNo,
+ deviceid: deviceid,
+ // des: this.des,
+ model: model[0],
+
+ typdev: "Tracker",
+ // emailid: this.emailid,
+ Mileage : "10",
+ phn: this.deviceForm.value.contactNo,
+ sim_number: this.deviceForm.value.contactNo,
+ created_by: this.userId,
+ supAdmin: this.sup_admin,
+ // driver_name: this.driver,
+ // contact_number: this.dcontact,
+ device_model: model[0],
+ expdate: new Date(this.expDate),
+ user:data._id,
+ bussinessType:1
+ // License : this.licenseVal,
+ // deviceDistanceVariation:this.selcetedSign+(this.deviceDistanceVariation?this.deviceDistanceVariation:'0')
+
+ // Dealer:this.dealerObj?this.dealerObj:this.sup_admin
+ }
+ // if (this.custtype) {
+ // newDevice['Dealer'] = this.userId;
+ // } else if((this.custtype == false)&&(window.localStorage['Custumer'] == 'ON') ) {
+ newDevice['Dealer'] = this.userId
+ // }
+
+
+// hrdwr: this.deviceForm.value.sim1,
+// hrdwr1: this.deviceForm.value.sim1,
+ if(this.deviceForm.value.sim1){
+ newDevice['hrdwr'] = this.deviceForm.value.sim1
+ }
+ if(this.deviceForm.value.sim1){
+ newDevice['sim_number'] = this.deviceForm.value.sim1
+ }
+ if(this.deviceForm.value.sim2){
+ newDevice['sim_number2'] = this.deviceForm.value.sim2
+ }
+
+ if(this.deviceForm.value.eSimExpiry){
+ newDevice['esim_validity'] = this.deviceForm.value.eSimExpiry
+ }
+
+
+ if(this.deviceForm.value.model){
+ newDevice['model'] = this.deviceForm.value.model
+ }
+
+
+ if(this.deviceForm.value.dealerFollowup){
+ newDevice['CID_No'] = this.deviceForm.value.dealerFollowup;
+ }
+ if(this.hrdwr){
+ newDevice['hrdwr']=this.hrdwr
+ }
+ if(this.deviceForm.value.engineNo){
+ newDevice['engineNo'] = this.deviceForm.value.engineNo;
+ }
+
+ if(this.deviceForm.value.city){
+ newDevice['transportOfficeCity'] = this.deviceForm.value.city;
+ }
+ if(this.deviceForm.value.state){
+ newDevice['transportOfficeState'] = this.deviceForm.value.state;
+ }
+
+
+ if(this.deviceForm.value.chasisNo){
+ newDevice['ChassisNo'] = this.deviceForm.value.chasisNo
+ }
+ if(this.deviceForm.value.vehicleManufacture){
+ newDevice['manufacturingCompany'] = this.deviceForm.value.vehicleManufacture;
+ }
+
+
+
+
+ if(type){
+ newDevice['typeOfVehicle'] = type[0];
+ }
+ if(type){
+ newDevice['vehicleType'] = type[0];
+ }
+
+ // if(this.transportOfficeCity){
+ // newDevice['transportOfficeCity'] = this.transportOfficeCity;
+ // }
+ if(this.deviceForm.value.state){
+ newDevice['transportOfficeState'] = this.deviceForm.value.state;
+ }
+ if(this.deviceForm.value.iccid){
+ newDevice['IccidNo'] = this.deviceForm.value.iccid;
+ }
+ if(this.vahanID){
+ newDevice['vahanID'] = this.vahanID;
+ }
+
+ if(this.deviceForm.value.panic){
+ newDevice['numberOfSOS'] = this.deviceForm.value.panic;
+ }
+
+ if(this.deviceImg != undefined){
+ newDevice['deviceImage'] = this.deviceImg;
+ }
+
+ if(this.deviceForm.value.vehicleCategory){
+ newDevice['vehicleCategory'] = this.deviceForm.value.vehicleCategory;
+ }
+ if(this.deviceForm.value.rtoOffice){
+ newDevice['rto'] = this.deviceForm.value.rtoOffice;
+ }
+ console.log("imageuploadDocument",this.imageuploadObject);
+ if((this.imageuploadObject.length !=0)){
+ newDevice['imageDoc'] = this.imageuploadObject ;
+ }
+ console.log("=======>",newDevice)
+ this.Load = false;
+ this.contactService.addKycDevice(newDevice)
+ .subscribe((device) => {
+ console.log(device);
+
+ window.localStorage['DataUpdate'] = 'True';
+ this.data_descip = "Device Added Successfully";
+ launch_toast();
+ this.router.navigateByUrl("dashboard");
+ }
+ // this.Load = false
+
+ , (err: any) => {
+ console.log(err.status);
+ console.log(err);
+ var that = this;
+ if (err.status == 400) {
+ console.log(JSON.parse(err._body).deviceObj);
+ var dupObj = JSON.parse(err._body).deviceObj ;
+ // this.Load = false;
+ that.data_descip = "Duplicate Device ID (IMEI)";
+ that.launch_toast();
+ var devicesupAdmin = dupObj.supAdmin;
+ var deviceDealer = dupObj.Dealer;
+ var devOwner = dupObj.user;
+ // debugger;
+
+ }
+ else {
+ var message
+ if(err.status==401){
+ message="Access Denied !!!"
+ this.data_descip = "Access Denied !!!";
+ launch_toast();
+
+ }else{
+ message="Network Error !!!"
+ this.data_descip = "Network Error !!!";
+ launch_toast();
+ }
+ console.log(err);
+
+ this._flashMessagesService.show(message, { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ }
+ }
+ )
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+ }
+
+ generatePassword(passwordLength) {
+ var numberChars = "0123456789";
+ var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ var lowerChars = "abcdefghijklmnopqrstuvwxyz";
+ var allChars = numberChars + upperChars + lowerChars;
+ var randPasswordArray = Array(passwordLength);
+ randPasswordArray[0] = numberChars;
+ randPasswordArray[1] = upperChars;
+ randPasswordArray[2] = lowerChars;
+ randPasswordArray = randPasswordArray.fill(allChars, 3);
+ return this.shuffleArray(randPasswordArray.map(function(x) { return x[Math.floor(Math.random() * x.length)] })).join('');
+}
+
+shuffleArray(array) {
+ for (var i = array.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var temp = array[i];
+ array[i] = array[j];
+ array[j] = temp;
+ }
+ return array;
+}
+message
+user
+userFound:boolean=false;
+onSearchChange(value){
+ this.userFound=false
+ this.message=undefined
+ console.log(value);
+ var phone=this.deviceForm.value.contactNo
+ if(phone.length==10){
+ console.log("KLDJNDKjk");
+ this.contactService.get('/users/searchUserByPhone?user='+this.userId+'&phone='+phone).subscribe((res:any)=>{
+ console.log(res);
+ if(res.message=="User already Present"){
+ this.deviceForm.patchValue({
+ ownerName:res.data[0].first_name?res.data[0].first_name:""+" "+res.data[0].last_name?res.data[0].first_name:'',
+ email:res.data[0].email?res.data[0].email:""
+ })
+ this.user=res.data[0]
+ this.userFound=true;
+ this.deviceForm.controls.ownerName.disable();
+ this.deviceForm.controls.email.disable();
+ }else{
+ this.userFound=false
+ this.message=res.message
+ }
+ },err=>{
+ console.log(err);
+ this.message=err.error.message
+ })
+ }
+
+}
+ device_Model: any;
+ getDeviceModel() {
+ this.contactService.get("/deviceModel/getDeviceModel?input=Nippon")
+ // this.contactService.getDevModel()
+ .subscribe(res => {
+ this.device_Model = res;
+ var devname = [];
+ console.log("Device_Model",this.device_Model);
+ for(var i = 0 ; i {
+ $('#dbselect').multipleSelect({
+ width: 470,
+ placeholder:"Select model",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ $('#vehicleType').multipleSelect({
+ width: 470,
+ placeholder: "Select Type",
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ $('#inventory').multipleSelect({
+ width: 470,
+ placeholder: 'Select IMEI',
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+
+ }, 100);
+
+
+ }
+
+ vehData:any;
+getvehDetail(){
+ this.contactService.getvehType(this.userId)
+ .subscribe(res=>{
+ // console.log(res);
+ this.vehData=res;
+ var vdata = res;
+ for(var a = 0;a",this.imageuploadObject);
+// }
+showUpload:boolean=true;
+DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ this.showUpload = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+}
+
+selectedFile: File;
+index
+onFileChanged(event,i) {
+ this.index=i
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+
+ this.imageuploadObject[this.index].fill=true;
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.Load = true;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ this.Load = false;
+ this.ifuploadArr = true;
+ // this.uploadStatus = 'Uploaded';
+ this.data_descip = "Image Uploaded";
+ this.launch_toast();
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[this.index].image = resImage;
+ console.log(this.imageuploadObject);
+ // console.log(res);
+ this.selectedFile=undefined
+ },err=>{
+ this.selectedFile=undefined
+ this.Load= false;
+ this.data_descip = "Internal server error , try again";
+ this.launch_toast();
+ this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ })
+}
+ifuploadArr: boolean ;
+uploadStatus: any = 'Upload';
+onUpload(imgIndex) {
+ console.log(imgIndex);
+
+ // console.log("selected file name =>",this.selectedFile.name);
+ if(!this.selectedFile){
+ swal(
+ 'Upload Error',
+ 'Please choose file before upload !!!',
+ 'error'
+ )
+ }else{
+ this.imageuploadObject[this.index].fill=true;
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.Load = true;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ this.Load = false;
+ this.ifuploadArr = true;
+ // this.uploadStatus = 'Uploaded';
+ this.data_descip = "Image Uploaded";
+ this.launch_toast();
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[this.index].image = resImage;
+ console.log(this.imageuploadObject);
+ // console.log(res);
+ this.selectedFile=undefined
+ },err=>{
+ this.selectedFile=undefined
+ this.Load= false;
+ this.data_descip = "Internal server error , try again";
+ this.launch_toast();
+ this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ })
+ }
+ }
+documentType(docType){
+ console.log("doctypeObject=>",docType);
+
+}
+
+inventoryManagement:Boolean=false;
+ inventory=[]
+ getUserSetting(userId){
+
+ this.contactService.post('/users/get_user_setting',{uid: userId}).subscribe((res:any)=>{
+ this.inventoryManagement=res.inventoryManagement;
+ if(this.inventoryManagement){
+ console.log(this.userId,this.dealerId=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer);
+ var isDealer=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer
+ var isSuperAdmin=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isSuperAdmin
+ // var user
+ // if(isSuperAdmin){
+ // var user
+ // }else if(isDealer){
+
+ // }
+ var user=isSuperAdmin?this.userId:this.sup_admin?this.sup_admin:this.userId
+ console.log(user);
+
+ this.contactService.get('/Device_inventory/getInventoryDropdown?user='+this.userId).subscribe((res:any)=>{
+ this.inventory=res;
+ this.loadropdown()
+ })
+ }
+ })
+ }
+
+ manufacturingData
+ getModelData(){
+ this.contactService.get('/model_master/GetNames').subscribe((res:any)=>{
+ this.manufacturingData=res
+ })
+ }
+ modelData
+ selectModel(event){
+ console.log(event.target.value);
+
+ this.contactService.get('/model_master/getModel?name='+event.target.value).subscribe((res:any)=>{
+ this.modelData=res
+ })
+
+}
+cityList
+onStateChange(event){
+ this.contactService.get('/RTO_master/getCity?state='+event.target.value).subscribe((res:any)=>{
+ this.cityList=res
+ })
+}
+RTO
+onCityChange(event){
+ this.contactService.get('/RTO_master/getRTO?city='+event.target.value).subscribe((res:any)=>{
+ this.RTO=res
+ })
+}
+back(){
+ this.location.back()
+}
+imageURL:any;
+index2
+ selectedDeviceFile:File;
+ data_descip : any;
+onDeviceImageChanged(event,index) {
+ this.index2=index
+ this.selectedDeviceFile = event.target.files[0];
+ if(this.selectedDeviceFile){
+ this.Load = true;
+ const fdDevice = new FormData();
+ fdDevice.append('photo',this.selectedDeviceFile,this.selectedDeviceFile.name)
+ console.log("Binaryimage = > ",fdDevice );
+ this.contactService.deviceImageupload(fdDevice)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ // if(this.deviceImg[this.index2]){
+ this.deviceImg[this.index2]=res['_body']
+ // }else{
+ // this.deviceImg.push(res['_body'])
+ // }
+ }
+ this.selectedDeviceFile=undefined;
+ console.log('this.deviceImg',this.deviceImg);
+ this.data_descip = "Image Uploaded";
+ launch_toast();
+ this.Load = false;
+ },err=>{
+ this.data_descip = "Internal Server Error";
+ launch_toast();
+ this.selectedDeviceFile=undefined;
+ console.log(err);
+ this.Load = false;
+ })
+
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+}
+ deviceImg=['','',''];
+onDeviceImageUploadUpload(index){
+ if(!this.selectedDeviceFile){
+ swal(
+ 'Upload Error',
+ 'Please choose file before upload !!!',
+ 'error'
+ )
+ }else{
+ this.Load = true;
+ const fdDevice = new FormData();
+ fdDevice.append('photo',this.selectedDeviceFile,this.selectedDeviceFile.name)
+ console.log("Binaryimage = > ",fdDevice );
+ this.contactService.deviceImageupload(fdDevice)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ // if(this.deviceImg[this.index2]){
+ this.deviceImg[this.index2]=res['_body']
+ // }else{
+ // this.deviceImg.push(res['_body'])
+ // }
+ }
+ this.selectedDeviceFile=undefined;
+ console.log('this.deviceImg',this.deviceImg);
+ this.data_descip = "Image Uploaded";
+ launch_toast();
+ this.Load = false;
+ },err=>{
+ this.data_descip = "Internal Server Error";
+ launch_toast();
+ this.selectedDeviceFile=undefined;
+ console.log(err);
+ this.Load = false;
+ })
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+}
+launch_toast() {
+ console.log("ihjgdfds");
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+ image;
+docName
+openModal(template: TemplateRef,doc){
+ console.log(doc);
+
+ this.modalRef = this.modalService.show(template,{'backdrop':'static',class:'modal-lg modal-dialog-centered'});
+ this.docName=doc.doctype
+this.image="https://www.oneqlik.in"+doc.image.substring(6)
+}
+}
diff --git a/src/app/dashboard/dashboard.component.html b/src/app/dashboard/dashboard.component.html
new file mode 100644
index 0000000..ac6b5ed
--- /dev/null
+++ b/src/app/dashboard/dashboard.component.html
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{page}}
+
+
+
{{'Vehicles' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{devStatus.name}}
+
+
+
+
+
+
+
+ << {{'Previous' | translate}}
+ {{'Next' | translate}} >>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/dashboard/dashboard.component.scss b/src/app/dashboard/dashboard.component.scss
new file mode 100644
index 0000000..62d65df
--- /dev/null
+++ b/src/app/dashboard/dashboard.component.scss
@@ -0,0 +1,3187 @@
+// ul, li {
+// list-style: none;
+// float: left;
+// line-height: 15vh;
+// }
+
+// /* Absolute Center Spinner */
+// .loading {
+// position: fixed;
+// z-index: 999;
+// height: 2em;
+// width: 2em;
+// overflow: show;
+// margin: auto;
+// top: 0;
+// left: 0;
+// bottom: 0;
+// right: 0;
+// }
+
+// .headStyle{
+// text-align: center;
+// font-size: 22px;
+// font-weight: 500;
+
+// color: #6b6a6a;
+// padding-top: 7px;
+// margin: 0px;
+// }
+
+// /* Transparent Overlay */
+// .loading:before {
+// content: '';
+// display: block;
+// position: fixed;
+// top: 0;
+// left: 0;
+// width: 100%;
+// height: 100%;
+// background-color: rgba(0,0,0,0.3);
+// }
+
+// /* :not(:required) hides these rules from IE9 and below */
+// .loading:not(:required) {
+// /* hide "loading..." text */
+// font: 0/0 a;
+// color: transparent;
+// text-shadow: none;
+// background-color: transparent;
+// border: 0;
+// }
+
+// .loading:not(:required):after {
+// content: '';
+// display: block;
+// font-size: 10px;
+// width: 1em;
+// height: 1em;
+// margin-top: -0.5em;
+// -webkit-animation: spinner 1500ms infinite linear;
+// -moz-animation: spinner 1500ms infinite linear;
+// -ms-animation: spinner 1500ms infinite linear;
+// -o-animation: spinner 1500ms infinite linear;
+// animation: spinner 1500ms infinite linear;
+// border-radius: 0.5em;
+// -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// }
+
+// /* Animation */
+
+// @-webkit-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-moz-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-o-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// ::-webkit-scrollbar {
+// /* display: none; */
+// }
+// .upper{
+// margin-top: -70px;
+// width: 100%;
+// height: 15%;
+// /* margin-left: -2px;*/
+// position: fixed;
+// background-color: white;
+// top: 0;
+// z-index: 1
+// }
+// .up{
+// color: gray;
+// /* Add a font */
+// font-family: "Courier New", Courier, monospace;
+// /* Set the font-size to 25 pixels */
+// font-size: 25px;
+
+// }
+// .middle {
+// position: absolute;
+// top: 50%;
+// left: 50%;
+// transform: translate(-50%, -50%);
+// text-align: center;
+// }
+
+// .dropdown {
+// position: relative;
+// display: inline-block;
+// }
+
+// .dropdown-content {
+// display: none;
+// position: absolute;
+// background-color: #f9f9f9;
+// min-width: 160px;
+// box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+// z-index: 1;
+// margin-left: -220px;
+// margin-top: -20px;
+
+// }
+
+// .dropdown:hover .dropdown-content {
+// display: block;
+// }
+
+// .desc {
+// padding: 15px;
+// text-align: center;
+// }
+// #insert{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// #insert2{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// .example-container {
+// width: 500px;
+// height: 300px;
+// border: 1px solid rgba(0, 0, 0, 0.5);
+// }
+
+// .example-sidenav-content {
+// display: flex;
+// height: 100%;
+// align-items: center;
+// justify-content: center;
+// }
+
+// .example-sidenav {
+// padding: 20px;
+// }
+// .vertical-menu {
+// width: 250px;
+// padding-left: 10px;
+// }
+
+// .vertical-menu a {
+// background-color: #eee;
+// color: black;
+// display: block;
+// padding: 12px;
+// text-decoration: none;
+
+// }
+
+// .vertical-menu a:hover {
+// background-color: #ccc;
+// }
+
+// .vertical-menu a.active {
+
+// background: rgba(0, 0, 0, 0.8);
+// color: white;
+// }
+// #c2 {
+
+// }
+// #c1 {
+// float:left;
+
+// }
+// .close-thik:after {
+// content: '✖'; /* UTF-8 symbol */
+// position:absolute; right:-108px; bottom:12px; width:65px; margin-right:86px;
+// }
+// [data-tooltip] {
+// position: relative;
+// z-index: 2;
+// cursor: pointer;
+// }
+
+// /* Hide the tooltip content by default */
+// [data-tooltip]:before,
+// [data-tooltip]:after {
+// visibility: hidden;
+// -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+// filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0);
+// opacity: 0;
+// pointer-events: none;
+// }
+
+// /* Position tooltip above the element */
+// [data-tooltip]:before {
+// position: absolute;
+// bottom: 110%;
+// left: 50%;
+// margin-bottom: -5px;
+// margin-left: -40px;
+// padding: 7px;
+// width: 100px;
+// -webkit-border-radius: 3px;
+// -moz-border-radius: 3px;
+// border-radius: 3px;
+// background-color: #000;
+// background-color: hsla(0, 0%, 20%, 0.9);
+// color: #fff;
+// content: attr(data-tooltip);
+// text-align: center;
+// font-size: 14px;
+// line-height: 1.2;
+// }
+
+// /* Triangle hack to make tooltip look like a speech bubble */
+// [data-tooltip]:after {
+// position: absolute;
+// bottom: 150%;
+// left: 50%;
+// margin-left: -5px;
+// width: 0;
+// border-top: 5px solid #000;
+// border-top: 5px solid hsla(0, 0%, 20%, 0.9);
+// border-right: 5px solid transparent;
+// border-left: 5px solid transparent;
+// content: " ";
+// font-size: 0;
+// line-height: 0;
+// }
+
+// /* Show tooltip content on hover */
+// [data-tooltip]:hover:before,
+// [data-tooltip]:hover:after {
+// visibility: visible;
+// -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+// filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);
+// opacity: 1;
+// }
+// button3 {
+// background-color: Transparent;
+// background-repeat:no-repeat;
+// border: none;
+// cursor:pointer;
+// overflow: hidden;
+// outline:none;
+// }
+// .icon-bar {
+// width: 17%;
+// background-color: #18262F;
+// margin-top: -9px;
+// height: 100%;
+// position: fixed;
+// display: inline-block;
+// margin-left: -16px;
+// }
+// @media screen and (max-width: 1000px){
+// .off{
+// display: none;
+// }
+// }
+// .icon-bar2 {
+
+// width: 297px;
+// background-color: white;
+// margin-top: -7px;
+// height:86vh;
+// position: fixed;
+
+// }
+// .icon-bar a {
+// display: block;
+// text-align: center;
+// padding: 16px;
+// transition: all 0.3s ease;
+// color: white;
+// font-size: 14px;
+// text-align: left;
+// }
+
+// .icon-bar a:hover {
+// background-color: #000;
+// }
+
+// .active {
+// background-color: #4CAF50 !important;
+// }
+// @media screen and (max-width: 900px) {
+// .icon-bar{
+// display: none;
+
+// }
+// .sch{
+// display: none;
+// }
+// .first{
+// width:1%!important;
+// }
+// .second{
+// margin-left: 8px!important;
+// }
+// .small{
+// display: block!important;
+// }
+// .image{
+// display: none;
+// }
+// .schlar{
+// display: block!important;
+// }
+// }
+// .small{
+// display: none;
+// }
+// .pointer{
+// cursor:pointer !important;
+// font-size: 11px
+// }
+// /* Side Navi */
+// #mySidenav a {
+// margin-top: -9px;
+// position: absolute;
+// left: -80px;
+// transition: 0.3s;
+// width: 100px;
+// text-decoration: none;
+// font-size: 28px;
+// color: white;
+// border-radius: 0 5px 5px 0;
+// }
+
+// #mySidenav a:hover {
+// left: 0;
+// }
+
+// #about {
+// top: 20px;
+// background-color: #ffffff;
+// opacity: .4;
+// }
+
+// #blog {
+// top: 80px;
+// background-color: #18262F;
+// }
+
+// #projects {
+// top: 140px;
+// background-color: #f44336;
+// }
+// #d:hover {
+// color: rgb(14, 102, 18);
+
+// }
+// #ac{
+// color: rgb(38, 38, 90)
+// }
+// #contact {
+// top: 200px;
+// background-color: #555
+// }
+// #active{
+// text-decoration-line: underline;
+// text-decoration-color: rgb(66, 26, 245);
+// }
+// .overlay {
+// height: 100%;
+// width: 0;
+// position: fixed;
+// z-index: 1;
+// top: 0;
+// left: 0;
+// background-color: rgb(0,0,0);
+// background-color: rgba(0,0,0, 0.9);
+// overflow-x: hidden;
+// transition: 0.5s;
+// }
+
+// .overlay-content {
+// position: relative;
+// top: 25%;
+// width: 100%;
+// text-align: center;
+// margin-top: 30px;
+// }
+
+// .overlay a {
+// padding: 8px;
+// text-decoration: none;
+// font-size: 36px;
+// color: #818181;
+// display: block;
+// transition: 0.3s;
+// }
+
+// .overlay a:hover, .overlay a:focus {
+// color: #f1f1f1;
+// }
+
+// .overlay .closebtn {
+// position: absolute;
+// top: 20px;
+// right: 45px;
+// font-size: 60px;
+// }
+
+// @media screen and (max-height: 450px) {
+// .overlay a {font-size: 20px}
+// .overlay .closebtn {
+// font-size: 40px;
+// top: 15px;
+// right: 35px;
+// }
+// }
+// agm-map {
+// height: 300px;
+// }
+
+// th { font-size: 12px; }
+// td { font-size: 11px; }
+
+// /* Toast Msg */
+
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img {
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc {
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 2s,
+ fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 4s,
+ fadeout 0.5s 4.5s;
+}
+// /* #myInput {
+// border-radius: 15px;
+
+// padding: 7px;
+// width: 116px;
+// height: 17px;
+// font-size: 9px;
+// outline: none;
+// float: right;
+// margin-top: 2%;
+// } */
+
+// @-webkit-keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+
+// @keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+
+// @keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @-webkit-keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+
+// @keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+// .mat-slide-toggle-thumb-container {
+// z-index: auto !important;
+// }
+
+// .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{
+// z-index:auto!important;
+
+// }
+// .mat-menu-panel.mat-menu-before.mat-menu-below{
+// overflow: hidden !important;
+// }
+// .mat-menu-panel.my-full-width-menu {
+// max-width: none;
+// width: 100vw;
+// margin-left: -8px;
+// margin-top: 24px;
+// }
+// .menu-overflow-hidden {
+// overflow: hidden !important;
+// }
+
+// /* Notification */
+// #nav{list-style:none;margin: 0px;padding: 0px;}
+// #nav li {
+// float: right;
+// margin-right: 20px;
+// font-family: Arial;
+// font-size: 14px;
+// font-weight:bold;
+// }
+// #nav li a{color:#333333;text-decoration:none}
+// #nav li a:hover{color:#1788c0;text-decoration:none}
+
+// #notification_li
+// {
+// position:relative
+// }
+// #notificationContainer
+// {
+// background-color: #fff;
+// border: 1px solid rgba(100, 100, 100, .4);
+// -webkit-box-shadow: 0 3px 8px rgba(0, 0, 0, .25);
+// overflow: visible;
+// position: absolute;
+// top: 30px;
+// margin-left: -170px;
+// width: 400px;
+// z-index: -1;
+// display: none;
+// }
+
+// .previous {
+// background-color: #f1f1f1;
+// color: black;
+
+// }
+
+// .previous a{
+// text-decoration: none;
+// display: inline-block;
+// padding: 8px 16px;
+// }
+// .previous a:hover{
+
+// }
+
+// .next a{
+// text-decoration: none;
+// display: inline-block;
+// padding: 8px 16px;
+
+// }
+// .next a:hover{
+// background-color: #ddd;
+// color: black;
+// }
+
+// #deviceTable body { font-size: 50px; }
+
+// .switch {
+// position: relative;
+// display: inline-block;
+// width: 60px;
+// height: 34px;
+// }
+
+// .switch input {
+// opacity: 0;
+// width: 0;
+// height: 0;
+// }
+
+// .slider {
+// position: absolute;
+// cursor: pointer;
+// top: 0;
+// left: 0;
+// right: 0;
+// bottom: 0;
+// background-color: #ccc;
+// -webkit-transition: .4s;
+// transition: .4s;
+// }
+
+// .slider:before {
+// position: absolute;
+// content: "";
+// height: 26px;
+// width: 26px;
+// left: 4px;
+// bottom: 4px;
+// background-color: white;
+// -webkit-transition: .4s;
+// transition: .4s;
+// }
+
+// /* Rounded sliders */
+// .slider.round {
+// border-radius: 34px;
+// }
+
+// .slider.round:before {
+// border-radius: 50%;
+// }
+
+// input:checked + .slider {
+// background-color: #2196F3;
+// }
+
+// input:focus + .slider {
+// box-shadow: 0 0 1px #2196F3;
+// }
+
+// input:checked + .slider:before {
+// -webkit-transform: translateX(26px);
+// -ms-transform: translateX(26px);
+// transform: translateX(26px);
+// }
+
+// .next {
+// background-color: #4CAF50;
+// color: white;
+// }
+
+// #notificationContainer:before {
+// content: '';
+// display: block;
+// position: absolute;
+// width: 0;
+// height: 0;
+// color: transparent;
+// border: 10px solid black;
+// border-color: transparent transparent white;
+// margin-top: -20px;
+// margin-left: 188px;
+// }
+// #notificationTitle
+// {
+// font-weight: bold;
+// padding: 8px;
+// font-size: 13px;
+// background-color: #ffffff;
+// position: fixed;
+// z-index: 1000;
+// width: 384px;
+// border-bottom: 1px solid #dddddd;
+
+// }
+// #notificationsBody
+// {
+// padding: 33px 0px 0px 0px !important;
+// min-height:300px;
+// }
+// #notificationFooter
+// {
+// /*
+// font-weight: bold;
+// padding: 8px;
+// font-size: 13px;
+// background-color: #ffffff;
+// position: fixed;
+// z-index: 1000;
+// width: 384px;
+// border-bottom: 1px solid #dddddd; */
+
+// background-color: #e9eaed;
+// text-align: center;
+// font-weight: bold;
+// z-index: 1000;
+// padding: 8px;
+// font-size: 13px;
+// border-top: 1px solid #dddddd;
+// }
+
+// #notification_count
+// {
+// padding: 3px 7px 3px 7px;
+// background: #cc0000;
+// color: #ffffff;
+// font-weight: bold;
+// margin-left: 77px;
+// border-radius: 9px;
+// -moz-border-radius: 9px;
+// -webkit-border-radius: 9px;
+// position: absolute;
+// margin-top: -11px;
+// font-size: 11px;
+// }
+
+// .selectedRunning{
+// background-color: darkgreen;
+// border: 1px solid green;
+// color: white;
+// font-weight: 400;
+// }
+
+// .selectedStopped{
+// background-color: darkred;
+// border: 1px solid red;
+// color: white;
+// font-weight: 400;
+// }
+
+// .selectedExpired{
+// background-color: #c30202;
+// border: 1px solid #c30202;
+// color: white;
+// font-weight: 400;
+// }
+
+// .selectedNoGPS{
+// background-color: #484848;
+// border: 1px solid MD_DIALOG_DATA;
+// color: white;
+// font-weight: 400;
+// }
+
+// .selectedOur{
+// background-color: #afe1ff;
+// border: 1px solid #afe1ff;
+// color: black;
+// font-weight: 400;
+// }
+
+// .selectMaintanence{
+// background-color: rgba(152,92,16,1);
+// border: 1px solid rgba(152,92,16,1);
+// color: white;
+// font-weight: 400;
+// }
+
+// .selectIdling{
+// background-color: #ffd366;
+// border: 1px solid #ffd366;
+// color: black;
+// font-weight: 400;
+// }
+
+// .deselected{
+// background-color: lightgray;
+// border: 1px solid gray;
+// color: black;
+// font-weight: 400;
+
+// }
+
+// .scrollbar
+// {
+// /* margin-left: 30px; */
+// /* float: left; */
+// /* height: 300px;
+// width: 65px; */
+// /* width: 100%;height: 90vh; padding-top: 1%; */
+// /* background: #F5F5F5; */
+// /* overflow-x: hidden; */
+// /* overflow-y: none; */
+// /* margin-bottom: 25px; */
+// }
+
+// .force-overflow
+// {
+// min-height: 450px;
+// }
+
+// #style-1::-webkit-scrollbar-track
+// {
+// -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+// border-radius: 10px;
+// background-color: #F5F5F5;
+// }
+
+// #style-1::-webkit-scrollbar
+// {
+// width: 12px;
+// background-color: #F5F5F5;
+// }
+
+// #style-1::-webkit-scrollbar-thumb
+// {
+// border-radius: 10px;
+// -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
+// background-color: -webkit-linear-gradient(45deg,
+// rgba(255, 255, 255, 0.2) 25%,
+// transparent 25%,
+// transparent 50%,
+// rgba(255, 255, 255, .2) 50%,
+// rgba(255, 255, 255, .2) 75%,
+// transparent 75%,
+// transparent)
+
+// /* background-color: linear-gradient(to bottom, MD_DIALOG_DATA 0%, #0066ff 100%); */
+// }
+
+// /* Smartphones (landscape) ----------- */
+// @media only screen and (min-width : 321px) {
+// /* Styles */
+// }
+
+// /* Smartphones (portrait) ----------- */
+// @media only screen and (max-width : 320px) {
+// /* Styles */
+// }
+
+// /* iPads (portrait and landscape) ----------- */
+// @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) {
+// /* Styles */
+// }
+
+// /* iPads (landscape) ----------- */
+// @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) {
+// /* Styles */
+// }
+
+// /* iPads (portrait) ----------- */
+// @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) {
+// /* Styles */
+// }
+// /**********
+// iPad 3
+// **********/
+// @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2) {
+// /* Styles */
+// }
+
+// @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio : 2) {
+// /* Styles */
+// }
+// /* Desktops and laptops ----------- */
+// @media only screen and (min-width : 1224px) {
+// /* Styles */
+// }
+
+// /* Large screens ----------- */
+// @media only screen and (min-width : 1824px) {
+// /* Styles */
+// }
+
+// /* iPhone 4 ----------- */
+// @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2) {
+// /* Styles */
+// }
+
+// @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio : 2) {
+// /* Styles */
+// }
+
+// ../fonts/roboto/Roboto-Regular.ttf
+// @font-face {
+// font-family: Roboto-Regular;
+// src: url('../../fonts/roboto/Roboto-Regular.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto-Medium;
+// src: url('../../fonts/roboto/Roboto-Medium.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto-Bold;
+// src: url('../../fonts/roboto/Roboto-Bold.ttf');
+// }
+
+/*//////////////////////////////////////////////////////////////////
+[ RESTYLE TAG ]*/
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+
+body,
+html {
+ height: 100%;
+ font-family: sans-serif;
+}
+
+/* ------------------------------------ */
+a {
+ margin: 0px;
+ transition: all 0.4s;
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+}
+
+a:focus {
+ outline: none !important;
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+/* ------------------------------------ */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0px;
+}
+
+p {
+ margin: 0px;
+}
+
+ul,
+li {
+ margin: 0px;
+ list-style-type: none;
+}
+
+/* ------------------------------------ */
+input {
+ display: block;
+ outline: none;
+ border: none !important;
+}
+
+textarea {
+ display: block;
+ outline: none;
+}
+
+textarea:focus,
+input:focus {
+ border-color: transparent !important;
+}
+
+/* ------------------------------------ */
+button {
+ outline: none !important;
+ border: none;
+ background: transparent;
+}
+
+button:hover {
+ cursor: pointer;
+}
+
+iframe {
+ border: none !important;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Scroll bar ]*/
+.js-pscroll {
+ position: relative;
+ overflow: hidden;
+}
+
+.table100 .ps__rail-x {
+ z-index: 1010;
+ height: 6px;
+ background-color: transparent;
+ opacity: 1 !important;
+ bottom: 10px;
+}
+
+.table100 .ps__rail-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #e6e6e6;
+ height: 100%;
+ width: calc(100% - 30px);
+ left: 15px;
+ top: 0px;
+}
+
+.table100 .ps__rail-x .ps__thumb-x {
+ height: 100%;
+ bottom: 0;
+ background-color: transparent;
+ opacity: 1 !important;
+}
+
+.table100 .ps__rail-x .ps__thumb-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #b3b3b3;
+ height: 100%;
+ width: calc(100% - 30px);
+ top: 0;
+ left: 15px;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+
+.limiter {
+ width: 100%;
+ margin: 0 auto;
+ // background: #fa71cd;
+ background: #efecec;
+ // background: -webkit-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -o-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -moz-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: linear-gradient(bottom, #c471f5, #fa71cd);
+}
+
+.container-table100 {
+ max-height: 100vh;
+ // max-width: 1366px;
+ margin: 0 auto;
+ min-height: 100vh;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ // padding: 33px 100px;
+ padding: 55px 20px 0px 20px;
+}
+
+.wrap-table100 {
+ // padding-top: 3%;
+ width: 100%;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+.table100 {
+ background-color: #fff;
+}
+
+table {
+ width: 100%;
+}
+
+th,
+td {
+ font-weight: unset;
+ padding-right: 10px;
+}
+
+.column1 {
+ width: 100%;
+ padding-left: 40px;
+}
+
+.column2 {
+ width: 225px;
+ padding-left: 55px;
+}
+
+.column3 {
+ // width: 205px;
+ width: 265px;
+}
+
+.column4 {
+ // width: 300px;
+ width: 175px;
+}
+
+.column5 {
+ width: 235px;
+}
+
+.column6 {
+ width: 170px;
+}
+
+.column7 {
+ // width: 330px;
+ width: 200px;
+}
+
+.column8 {
+ // width: 305px;
+ width: 210px;
+}
+
+.column9 {
+ width: 200px;
+}
+
+.column10 {
+ width: 200px;
+}
+
+.column11 {
+ // width: 200px;
+ // width:155px;
+ width: 285px;
+}
+
+.column12 {
+ width: 225px;
+}
+
+.column13 {
+ width: 225px;
+}
+
+.column14 {
+ // width: 200px;
+ width: 175px;
+}
+.column29 {
+ // width: 200px;
+ width: 175px;
+}
+.column15 {
+ // width: 200px;
+ width: 185px;
+}
+.column16 {
+ // width: 200px;
+ width: 150px;
+}
+.column17 {
+ // width: 200px;
+ width: 150px;
+}
+.column18 {
+ // width: 200px;
+ width: 175px;
+}
+.column19 {
+ // width: 200px;
+ width: 150px;
+}
+
+.column20 {
+ // width: 200px;
+ width: 150px;
+}
+.column21 {
+ // width: 200px;
+ width: 150px;
+}
+.column22 {
+ // width: 200px;
+ width: 150px;
+}
+.column23 {
+ // width: 200px;
+ width: 150px;
+}
+
+.table100 th {
+ padding-top: 21px;
+ padding-bottom: 21px;
+}
+
+.table100 td {
+ padding-top: 16px;
+ padding-bottom: 16px;
+}
+
+/*==================================================================
+[ Fix col ]*/
+.table100 {
+ width: 100%;
+ position: relative;
+}
+
+.table100-firstcol {
+ background-color: #fff;
+ position: absolute;
+ z-index: 1000;
+ width: 310px;
+ top: 0;
+ left: 0;
+}
+
+.table100-firstcol table {
+ background-color: #fff;
+}
+
+.wrap-table100-nextcols {
+ width: 100%;
+ overflow: auto;
+ // padding-left: 310px;
+ padding-bottom: 28px;
+}
+
+.table100-nextcols table {
+ table-layout: fixed;
+}
+
+.shadow-table100-firstcol {
+ box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -webkit-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -o-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -ms-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+}
+
+.table100-firstcol table {
+ background-color: transparent;
+}
+
+/*==================================================================
+[ Ver1 ]*/
+
+.table100.ver1 th {
+ font-family: Roboto-Bold;
+ font-size: 14px;
+ color: #333333;
+ line-height: 0;
+ text-transform: uppercase;
+}
+
+.table100.ver1 td {
+ font-family: Roboto-Medium;
+ font-size: 15px;
+ // line-height: 1.4;
+}
+
+.table100.ver1 .table100-firstcol td {
+ color: #666666;
+}
+
+.table100.ver1 .table100-nextcols td {
+ color: #999999;
+}
+
+.table100.ver1 tr {
+ border-bottom: 1px solid #f2f2f2;
+}
+
+// .btn-default {
+// @include btn-variant(#546e7a, #90a4ae, #78909c, #cfd8dc, #eceff1, #b0bec5, #455a64);
+
+// }
+
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ float: right;
+ text-align: center;
+ text-transform: uppercase;
+ vertical-align: middle;
+ cursor: pointer;
+ background-image: none;
+ whitespace: nowrap;
+ padding: 6px 12px;
+ font-size: 1.4rem;
+ border-radius: 0px;
+ border: 1px solid transparent;
+ text-decoration: none;
+ user-select: none;
+ background: #d8d8d8;
+ font-size: 12px;
+
+ &,
+ &:active,
+ &.active {
+ &:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &.focus {
+ text-decoration: none;
+ color: #fff;
+ }
+
+ &:active,
+ &.active {
+ outline: 0;
+ background-image: none;
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ cursor: not-allowed;
+ pointer-events: none;
+ box-shadow: none;
+ }
+
+ &.btn-xs {
+ padding: 3px 6px;
+ font-size: 1.2rem;
+ }
+
+ &.btn-sm {
+ padding: 4px 8px;
+ font-size: 1.3rem;
+ }
+
+ &.btn-lg {
+ padding: 8px 16px;
+ font-size: 1.6rem;
+ }
+}
+
+th,
+td {
+ white-space: nowrap;
+}
+#deviceTable.dataTables_wrapper {
+ width: 800px;
+ margin: 0 auto;
+}
+
+// search baar css
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+mark {
+ background-color: #ff0;
+ color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+audio,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+img {
+ border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Forms
+ ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: sans-serif;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+legend {
+ box-sizing: border-box;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ white-space: normal;
+ /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+details,
+menu {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+ display: list-item;
+}
+
+/* Scripting
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+canvas {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+template {
+ display: none;
+}
+
+/* Hidden
+ ========================================================================== */
+/**
+ * Add the correct display in IE 10-.
+ */
+[hidden] {
+ display: none;
+}
+
+html {
+ height: 100%;
+}
+
+fieldset {
+ margin: 0;
+ padding: 0;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+ border: 0;
+}
+
+legend {
+ margin: 0;
+ padding: 0;
+ display: block;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+}
+
+/*===============================
+= Choices =
+===============================*/
+.choices {
+ position: relative;
+ margin-bottom: 24px;
+ font-size: 16px;
+}
+
+.choices:focus {
+ outline: none;
+}
+
+.choices:last-child {
+ margin-bottom: 0;
+}
+
+.choices.is-disabled .choices__inner,
+.choices.is-disabled .choices__input {
+ background-color: #eaeaea;
+ cursor: not-allowed;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.choices.is-disabled .choices__item {
+ cursor: not-allowed;
+}
+
+.choices[data-type*="select-one"] {
+ cursor: pointer;
+}
+
+.choices[data-type*="select-one"] .choices__inner {
+ padding-bottom: 7.5px;
+}
+
+.choices[data-type*="select-one"] .choices__input {
+ display: block;
+ width: 100%;
+ padding: 10px;
+ border-bottom: 1px solid #dddddd;
+ background-color: #ffffff;
+ margin: 0;
+}
+
+.choices[data-type*="select-one"] .choices__button {
+ // background-image: url("../../icons/cross-inverse.svg");
+ padding: 0;
+ background-size: 8px;
+ height: 100%;
+ position: absolute;
+ top: 50%;
+ right: 0;
+ margin-top: -10px;
+ margin-right: 25px;
+ height: 20px;
+ width: 20px;
+ border-radius: 10em;
+ opacity: 0.5;
+}
+
+.choices[data-type*="select-one"] .choices__button:hover,
+.choices[data-type*="select-one"] .choices__button:focus {
+ opacity: 1;
+}
+
+.choices[data-type*="select-one"] .choices__button:focus {
+ box-shadow: 0px 0px 0px 2px #00bcd4;
+}
+
+.choices[data-type*="select-one"]:after {
+ content: "";
+ height: 0;
+ width: 0;
+ border-style: solid;
+ border-color: #333333 transparent transparent transparent;
+ border-width: 5px;
+ position: absolute;
+ right: 11.5px;
+ top: 50%;
+ margin-top: -2.5px;
+ pointer-events: none;
+}
+
+.choices[data-type*="select-one"].is-open:after {
+ border-color: transparent transparent #333333 transparent;
+ margin-top: -7.5px;
+}
+
+.choices[data-type*="select-one"][dir="rtl"]:after {
+ left: 11.5px;
+ right: auto;
+}
+
+.choices[data-type*="select-one"][dir="rtl"] .choices__button {
+ right: auto;
+ left: 0;
+ margin-left: 25px;
+ margin-right: 0;
+}
+
+.choices[data-type*="select-multiple"] .choices__inner,
+.choices[data-type*="text"] .choices__inner {
+ cursor: text;
+}
+
+.choices[data-type*="select-multiple"] .choices__button,
+.choices[data-type*="text"] .choices__button {
+ position: relative;
+ display: inline-block;
+ margin-top: 0;
+ margin-right: -4px;
+ margin-bottom: 0;
+ margin-left: 8px;
+ padding-left: 16px;
+ border-left: 1px solid #008fa1;
+ // background-image: url("../../icons/cross.svg");
+ background-size: 8px;
+ width: 8px;
+ line-height: 1;
+ opacity: 0.75;
+}
+
+.choices[data-type*="select-multiple"] .choices__button:hover,
+.choices[data-type*="select-multiple"] .choices__button:focus,
+.choices[data-type*="text"] .choices__button:hover,
+.choices[data-type*="text"] .choices__button:focus {
+ opacity: 1;
+}
+
+.choices__inner {
+ display: inline-block;
+ vertical-align: top;
+ width: 100%;
+ background-color: #f9f9f9;
+ padding: 7.5px 7.5px 3.75px;
+ border: 1px solid #dddddd;
+ border-radius: 2.5px;
+ font-size: 14px;
+ min-height: 44px;
+ overflow: hidden;
+}
+
+.is-focused .choices__inner,
+.is-open .choices__inner {
+ border-color: #b7b7b7;
+}
+
+.is-open .choices__inner {
+ border-radius: 2.5px 2.5px 0 0;
+}
+
+.is-flipped.is-open .choices__inner {
+ border-radius: 0 0 2.5px 2.5px;
+}
+
+.choices__list {
+ margin: 0;
+ padding-left: 0;
+ list-style: none;
+}
+
+.choices__list--single {
+ display: inline-block;
+ padding: 4px 16px 4px 4px;
+ width: 100%;
+}
+
+[dir="rtl"] .choices__list--single {
+ padding-right: 4px;
+ padding-left: 16px;
+}
+
+.choices__list--single .choices__item {
+ width: 100%;
+}
+
+.choices__list--multiple {
+ display: inline;
+}
+
+.choices__list--multiple .choices__item {
+ display: inline-block;
+ vertical-align: middle;
+ border-radius: 20px;
+ padding: 4px 10px;
+ font-size: 12px;
+ font-weight: 500;
+ margin-right: 3.75px;
+ margin-bottom: 3.75px;
+ background-color: #00bcd4;
+ border: 1px solid #00a5bb;
+ color: #ffffff;
+ word-break: break-all;
+}
+
+.choices__list--multiple .choices__item[data-deletable] {
+ padding-right: 5px;
+}
+
+[dir="rtl"] .choices__list--multiple .choices__item {
+ margin-right: 0;
+ margin-left: 3.75px;
+}
+
+.choices__list--multiple .choices__item.is-highlighted {
+ background-color: #00a5bb;
+ border: 1px solid #008fa1;
+}
+
+.is-disabled .choices__list--multiple .choices__item {
+ background-color: #aaaaaa;
+ border: 1px solid #919191;
+}
+
+.choices__list--dropdown {
+ display: none;
+ z-index: 1;
+ position: absolute;
+ width: 100%;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ top: 100%;
+ margin-top: -1px;
+ border-bottom-left-radius: 2.5px;
+ border-bottom-right-radius: 2.5px;
+ overflow: hidden;
+ word-break: break-all;
+}
+
+.choices__list--dropdown.is-active {
+ display: block;
+}
+
+.is-open .choices__list--dropdown {
+ border-color: #b7b7b7;
+}
+
+.is-flipped .choices__list--dropdown {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: -1px;
+ border-radius: 0.25rem 0.25rem 0 0;
+}
+
+.choices__list--dropdown .choices__list {
+ position: relative;
+ max-height: 300px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ will-change: scroll-position;
+}
+
+.choices__list--dropdown .choices__item {
+ position: relative;
+ padding: 10px;
+ font-size: 14px;
+}
+
+[dir="rtl"] .choices__list--dropdown .choices__item {
+ text-align: right;
+}
+
+@media (min-width: 640px) {
+ .choices__list--dropdown .choices__item--selectable {
+ padding-right: 100px;
+ }
+ .choices__list--dropdown .choices__item--selectable:after {
+ content: attr(data-select-text);
+ font-size: 12px;
+ opacity: 0;
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ transform: translateY(-50%);
+ }
+ [dir="rtl"] .choices__list--dropdown .choices__item--selectable {
+ text-align: right;
+ padding-left: 100px;
+ padding-right: 10px;
+ }
+ [dir="rtl"] .choices__list--dropdown .choices__item--selectable:after {
+ right: auto;
+ left: 10px;
+ }
+}
+
+.choices__list--dropdown .choices__item--selectable.is-highlighted {
+ background-color: #f2f2f2;
+}
+
+.choices__list--dropdown .choices__item--selectable.is-highlighted:after {
+ opacity: 0.5;
+}
+
+.choices__item {
+ cursor: default;
+}
+
+.choices__item--selectable {
+ cursor: pointer;
+}
+
+.choices__item--disabled {
+ cursor: not-allowed;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ opacity: 0.5;
+}
+
+.choices__heading {
+ font-weight: 600;
+ font-size: 12px;
+ padding: 10px;
+ border-bottom: 1px solid #f7f7f7;
+ color: gray;
+}
+
+.choices__button {
+ text-indent: -9999px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border: 0;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+ cursor: pointer;
+}
+
+.choices__button:focus {
+ outline: none;
+}
+
+.choices__input {
+ display: inline-block;
+ vertical-align: baseline;
+ background-color: #f9f9f9;
+ font-size: 14px;
+ margin-bottom: 5px;
+ border: 0;
+ border-radius: 0;
+ max-width: 100%;
+ padding: 4px 0 4px 2px;
+}
+
+.choices__input:focus {
+ outline: 0;
+}
+
+[dir="rtl"] .choices__input {
+ padding-right: 2px;
+ padding-left: 0;
+}
+
+.choices__placeholder {
+ opacity: 0.5;
+}
+
+/*===== End of Choices ======*/
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background: #fff;
+ box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6,
+ 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08);
+}
+
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+
+.flatpickr-calendar.animate.open {
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+
+.flatpickr-calendar.multiMonth
+ .flatpickr-days
+ .dayContainer:nth-child(n + 1)
+ .flatpickr-day.inRange:nth-child(7n + 7) {
+ box-shadow: none !important;
+}
+
+.flatpickr-calendar.multiMonth
+ .flatpickr-days
+ .dayContainer:nth-child(n + 2)
+ .flatpickr-day.inRange:nth-child(7n + 1) {
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #e6e6e6;
+}
+
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: "";
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #e6e6e6;
+}
+
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #fff;
+}
+
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #e6e6e6;
+}
+
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #fff;
+}
+
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+
+.flatpickr-months {
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.flatpickr-months .flatpickr-month {
+ background: transparent;
+ color: rgba(0, 0, 0, 0.9);
+ fill: rgba(0, 0, 0, 0.9);
+ height: 28px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -ms-flex: 1;
+ flex: 1;
+}
+
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ line-height: 16px;
+ height: 28px;
+ padding: 10px;
+ z-index: 3;
+ color: rgba(0, 0, 0, 0.9);
+ fill: rgba(0, 0, 0, 0.9);
+}
+
+.flatpickr-months .flatpickr-prev-month.disabled,
+.flatpickr-months .flatpickr-next-month.disabled {
+ display: none;
+}
+
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+ /*
+ /*rtl:begin:ignore*/
+ left: 0;
+ /*
+ /*rtl:end:ignore*/
+}
+
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+ /*
+ /*rtl:begin:ignore*/
+ right: 0;
+ /*
+ /*rtl:end:ignore*/
+}
+
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #959ea9;
+}
+
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ transition: fill 0.1s;
+ fill: inherit;
+}
+
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+
+.numInputWrapper input {
+ width: 100%;
+}
+
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(57, 57, 57, 0.15);
+ box-sizing: border-box;
+}
+
+.numInputWrapper span:hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.numInputWrapper span:active {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(57, 57, 57, 0.6);
+ top: 26%;
+}
+
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(57, 57, 57, 0.6);
+ top: 40%;
+}
+
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+
+.numInputWrapper span svg path {
+ fill: rgba(0, 0, 0, 0.5);
+}
+
+.numInputWrapper:hover {
+ background: rgba(0, 0, 0, 0.05);
+}
+
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 6.16px 0 0 0;
+ line-height: 1;
+ height: 28px;
+ display: inline-block;
+ text-align: center;
+ transform: translate3d(0, 0, 0);
+}
+
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0, 0, 0, 0.05);
+}
+
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: rgba(0, 0, 0, 0.9);
+}
+
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: rgba(0, 0, 0, 0.9);
+}
+
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+}
+
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(0, 0, 0, 0.5);
+ background: transparent;
+ pointer-events: none;
+}
+
+.flatpickr-weekdays {
+ background: transparent;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex: 1;
+ flex: 1;
+}
+
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: transparent;
+ color: rgba(0, 0, 0, 0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+}
+
+.flatpickr-days:focus {
+ outline: 0;
+}
+
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ justify-content: space-around;
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+}
+
+.dayContainer + .dayContainer {
+ box-shadow: -1px 0 0 #e6e6e6;
+}
+
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ box-sizing: border-box;
+ color: #393939;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e6e6e6;
+ border-color: #e6e6e6;
+}
+
+.flatpickr-day.today {
+ border-color: #959ea9;
+}
+
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #959ea9;
+ background: #959ea9;
+ color: #fff;
+}
+
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #569ff7;
+ box-shadow: none;
+ color: #fff;
+ border-color: #569ff7;
+}
+
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n + 1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n + 1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n + 1)) {
+ box-shadow: -10px 0 0 #569ff7;
+}
+
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+
+.flatpickr-day.inRange {
+ border-radius: 0;
+ box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+
+.flatpickr-day.disabled,
+.flatpickr-day.disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(57, 57, 57, 0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+
+.flatpickr-day.disabled,
+.flatpickr-day.disabled:hover {
+ cursor: not-allowed;
+ color: rgba(57, 57, 57, 0.1);
+}
+
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
+}
+
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+
+.flatpickr-weekwrapper {
+ display: inline-block;
+ float: left;
+}
+
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ box-shadow: 1px 0 0 #e6e6e6;
+}
+
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(57, 57, 57, 0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+
+.flatpickr-innerContainer {
+ display: block;
+ display: -ms-flexbox;
+ display: flex;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.flatpickr-time .numInputWrapper {
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #393939;
+}
+
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #393939;
+}
+
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+
+.flatpickr-time input {
+ background: transparent;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #393939;
+ font-size: 14px;
+ position: relative;
+ box-sizing: border-box;
+}
+
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ display: inline-block;
+ float: left;
+ line-height: inherit;
+ color: #393939;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-flex-item-align: center;
+ -ms-grid-row-align: center;
+ align-self: center;
+}
+
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #f3f3f3;
+}
+
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+* {
+ box-sizing: border-box;
+}
+
+.s002 {
+ // min-height: 100vh;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ font-family: "Poppins", sans-serif;
+ // background: url("../../assets/images/Searchs_002.png");
+ background-size: cover;
+ background-position: center center;
+ // padding: 15px;
+}
+
+.s002 form {
+ width: 100%;
+ max-width: 1190px;
+}
+
+.s002 form legend {
+ font-size: 60px;
+ line-height: 1;
+ color: #fff;
+ margin-bottom: 60px;
+ font-weight: 400;
+ text-align: center;
+}
+
+.s002 form .inner-form {
+ background: rgba(0, 0, 0, 0.5);
+ padding: 4px;
+ display: -ms-flexbox;
+ display: flex;
+ width: 100%;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.s002 form .inner-form .input-field {
+ position: relative;
+ border-right: 1px solid #ddd;
+}
+
+.s002 form .inner-form .input-field .icon-wrap {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 100%;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+ -ms-flex-align: center;
+ align-items: center;
+ z-index: 1;
+}
+
+.s002 form .inner-form .input-field .icon-wrap svg {
+ fill: #555;
+ width: 14px;
+ height: 14px;
+}
+
+.s002 form .inner-form .input-field input {
+ height: 40px;
+ background: #fff;
+ border-radius: 0;
+ border: 0;
+ display: block;
+ width: 100%;
+ padding: 10px 20px 10px 45px;
+ font-size: 16px;
+ color: #555;
+ font-weight: 400;
+ font-family: "Poppins", sans-serif;
+}
+
+.s002 form .inner-form .input-field input.placeholder {
+ color: #9a9a9a;
+ font-size: 16px;
+ font-weight: 400;
+ text-transform: uppercase;
+}
+
+.s002 form .inner-form .input-field input:-moz-placeholder {
+ color: #9a9a9a;
+ font-size: 16px;
+ font-weight: 400;
+ text-transform: uppercase;
+}
+
+.s002 form .inner-form .input-field input::-webkit-input-placeholder {
+ color: #9a9a9a;
+ font-size: 16px;
+ font-weight: 400;
+ text-transform: uppercase;
+}
+
+.s002 form .inner-form .input-field input:hover,
+.s002 form .inner-form .input-field input:focus {
+ box-shadow: none;
+ outline: 0;
+}
+
+.s002 form .inner-form .input-field.first-wrap {
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.s002 form .inner-form .input-field.second-wrap {
+ min-width: 190px;
+ max-width: 190px;
+}
+
+.s002 form .inner-form .input-field.third-wrap {
+ min-width: 190px;
+ max-width: 190px;
+}
+
+// .s002 form .inner-form .input-field.fouth-wrap {
+// min-width: 190px;
+// max-width: 190px;
+// border-right: 0;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__inner {
+// background: #fff;
+// border-radius: 0;
+// border: 0;
+// height: 70px;
+// color: #666;
+// display: -ms-flexbox;
+// display: flex;
+// -ms-flex-align: center;
+// align-items: center;
+// padding: 10px 32px 10px 45px;
+// border-radius: 0;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__inner .choices__list.choices__list--single {
+// display: -ms-flexbox;
+// display: flex;
+// padding: 0;
+// -ms-flex-align: center;
+// align-items: center;
+// height: 100%;
+// font-size: 16px;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__inner .choices__item.choices__item--selectable.choices__placeholder {
+// display: -ms-flexbox;
+// display: flex;
+// -ms-flex-align: center;
+// align-items: center;
+// height: 100%;
+// opacity: 1;
+// color: #9a9a9a;
+// text-transform: uppercase;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__inner .choices__list--single .choices__item {
+// display: -ms-flexbox;
+// display: flex;
+// -ms-flex-align: center;
+// align-items: center;
+// height: 100%;
+// color: #666;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices[data-type*="select-one"]:after {
+// right: 30px;
+// border-color: #e5e5e5 transparent transparent transparent;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__list.choices__list--dropdown {
+// border: 0;
+// background: #fff;
+// padding: 10px 15px;
+// border-radius: 0;
+// box-shadow: 0px 8px 20px 0px rgba(0, 0, 0, 0.15);
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__list.choices__list--dropdown .choices__item--selectable {
+// padding-right: 0;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__list--dropdown .choices__item--selectable.is-highlighted {
+// background: #fff;
+// color: #b78a62;
+// }
+
+// .s002 form .inner-form .input-field.fouth-wrap .choices__list--dropdown .choices__item {
+// color: #555;
+// min-height: 24px;
+// font-size: 16px;
+// }
+
+.s002 form .inner-form .input-field.fifth-wrap {
+ min-width: 190px;
+ max-width: 190px;
+ padding-left: 10px;
+ border-right: 0;
+}
+
+.s002 form .inner-form .input-field.fifth-wrap .btn-search {
+ height: 70px;
+ width: 100%;
+ background: #b78a62;
+ white-space: nowrap;
+ border-radius: 0.5px;
+ font-size: 20px;
+ color: #fff;
+ transition: all 0.2s ease-out, color 0.2s ease-out;
+ border: 0;
+ cursor: pointer;
+ font-weight: 400;
+ font-family: "Poppins", sans-serif;
+}
+
+.s002 form .inner-form .input-field.fifth-wrap .btn-search:hover {
+ background: #af7d51;
+}
+
+@media screen and (max-width: 992px) {
+ .s002 form legend {
+ font-size: 50px;
+ text-align: center;
+ margin-bottom: 50px;
+ }
+ .s002 form .inner-form {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ }
+ .s002 form .inner-form .input-field {
+ margin-bottom: 15px;
+ }
+ .s002 form .inner-form .input-field.first-wrap {
+ width: 100%;
+ }
+ .s002 form .inner-form .input-field.second-wrap {
+ width: calc(50% - 7.5px);
+ max-width: none;
+ }
+ .s002 form .inner-form .input-field.third-wrap {
+ width: calc(50% - 7.5px);
+ max-width: none;
+ }
+ .s002 form .inner-form .input-field.fouth-wrap {
+ width: calc(50% - 7.5px);
+ max-width: none;
+ margin-bottom: 0;
+ }
+ .s002 form .inner-form .input-field.fifth-wrap {
+ width: calc(50% - 7.5px);
+ max-width: none;
+ padding-left: 0;
+ margin-bottom: 0;
+ }
+}
+
+@media screen and (max-width: 767px) {
+ .s002 form legend {
+ font-size: 40px;
+ margin-bottom: 40px;
+ }
+ .s002 form .inner-form .input-field.second-wrap,
+ .s002 form .inner-form .input-field.third-wrap,
+ .s002 form .inner-form .input-field.fouth-wrap,
+ .s002 form .inner-form .input-field.fifth-wrap {
+ width: 100%;
+ margin-bottom: 15px;
+ }
+ .s002 form .inner-form .input-field.fifth-wrap {
+ margin-bottom: 0;
+ }
+}
+
+mat-input-infix {
+ margin-top: -13px !important;
+ margin-left: 7px !important;
+}
diff --git a/src/app/dashboard/dashboard.component.spec.ts b/src/app/dashboard/dashboard.component.spec.ts
new file mode 100644
index 0000000..fea6bfb
--- /dev/null
+++ b/src/app/dashboard/dashboard.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DashboardComponent } from './dashboard.component';
+
+describe('DashboardComponent', () => {
+ let component: DashboardComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DashboardComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DashboardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/dashboard.component.ts b/src/app/dashboard/dashboard.component.ts
new file mode 100644
index 0000000..612cb0a
--- /dev/null
+++ b/src/app/dashboard/dashboard.component.ts
@@ -0,0 +1,2177 @@
+import { Component, OnInit , Inject, OnDestroy} from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {DialogContentExampleDialogComponent} from '../dialog-content-example-dialog/dialog-content-example-dialog.component';
+
+
+import {Device} from '../device';
+import { Subject } from 'rxjs/Subject';
+import 'rxjs/add/operator/debounceTime';
+import { Observable } from 'rxjs/Observable';
+import * as io from 'socket.io-client';
+/* import { DeviceReportComponent } from '../device-report/device-report.component';
+ */
+import { DeviceEditComponent } from '../dashboard/device-edit/device-edit.component';
+import {MdSnackBar} from '@angular/material';
+import { DeviceShareComponent } from '../dashboard/device-share/device-share.component';
+import { ShareUserComponent } from '../dashboard/share-user/share-user.component';
+import { Params,Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import {ContactService} from '../contact.service';
+import { checkNoChangesNode } from '@angular/core/src/view/view';
+import { SpeednotifyComponent } from '../dashboard/speednotify/speednotify.component';
+import { SidebarComponent } from '../sidebar/sidebar.component';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import {DatainjectionService} from '../datainjection.service'
+import { isUndefined } from 'util';
+import { GeneralSettingsComponent } from './general-settings/general-settings.component';
+import { environment } from '../../environments/environment';
+import * as XLSX from 'xlsx';
+import * as fileSaver from 'file-saver';
+const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
+const EXCEL_EXTENSION = '.xlsx';
+declare var $: any;
+import * as moment from 'moment';
+
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+import { RenewalHistoryComponent } from './renewal-history/renewal-history.component';
+import { EChalanComponent } from './e-chalan/e-chalan.component';
+import { DeviceDocComponent } from '../kyc-approval/device-doc/device-doc.component';
+import { CertOptionComponent } from '../device/cert-option/cert-option.component';
+import { EditDeviceMasterComponent } from '../device/edit-device-master/edit-device-master.component';
+import { NormalCertComponent } from '../device/normal-cert/normal-cert.component';
+import { ViewCertificateComponent } from './view-certificate/view-certificate.component';
+import { DownloadCertificateComponent } from './download-certificate/download-certificate.component';
+declare var google: any;
+declare var swal: any;
+declare var DataTable: any;
+
+@Component({
+ selector: 'app-dashboard',
+ templateUrl: './dashboard.component.html',
+ styleUrls: ['./dashboard.component.scss'],
+ // providers: [ContactService,SidebarComponent]
+})
+
+
+export class DashboardComponent implements OnInit {
+ skip:number=0;
+ limit:number=25;
+ adbtn: string;
+ chkAddBtn: string;
+ Status_name = [];
+ liecenceStatus="new"
+ distributerValue
+ liecenceTypeArray=[
+ {name:"New",value:"new"},
+ {name:"Renewal",value:"renewal"}
+ ]
+ statusArray = [
+ {name:"RUNNING",status:false,value:"RUNNING"},
+ {name:"IDLING",status:false,value:"IDLING"},
+ {name:"STOPPED",status:false,value:"STOPPED"},
+ {name :"Expired",status : false,value:"Expired"},
+ {name:"OUT OF REACH",status:false,value:"OUT OF REACH"},
+ {name : "NO GPS FIX",status : false,value:"NO GPS FIX"},
+ {name : "NO GPS FIX",status : false,value:"NO GPS FIX"},
+ {name:"NO DATA",status:false,value:"NO DATA"}
+ ];
+ //private url = 'http://localhost:3000/api/graph';
+ private socket;
+ Load:boolean=false
+ messages = [];
+ connection;
+ graphs:any;
+ message;
+ numberOfOnlineUsers: number;
+devices: Device[];
+device: Device;
+Device_ID: string;
+from_date: Date;
+to_date: Date;
+bsConfig: Partial;
+Serial_Num: string;
+Manf: string;
+Model: string;
+del:boolean = false;
+colorTheme = 'theme-dark-blue';
+Des: string;
+Hardware_Ver: string;
+Loca: string;
+login:any;
+visibility:any;
+/* tabs: Tab[] = []; */
+calculateResult=[];
+value:any;
+a:any;
+homeVis:any;
+visibility0:any;
+j:any;
+id:any;
+dev:any;
+checked:any
+MdSlideToggleChange :any;
+e: Event;
+d:any;
+expiredVeh:any;
+fs :any;
+ls :any;
+or :any;
+/* e =[];
+ */token :any;
+emailid :any;
+devicess :any;
+devicesss :any;
+userID:any;
+final:any;
+lat:any;
+lng:any;
+latLongArr:any
+convertedToString :String;
+useridd:any;
+notifi = [];
+g:any;
+tableFlag:boolean=true;
+status : any;
+groupId : any;
+statuss : any;
+modelChanged: Subject = new Subject();
+ supAdm: any;
+ DealerID: any;
+ url: string;
+ showNav: boolean = false;
+ count: number =0;
+ customDatafilter: boolean =false;
+ customlimit: any = null;
+ dateId: any;
+ dealer_Permission: any;
+ panelInfo: any;
+ disDataFIlter=[]
+ distributers: any;
+ constructor(
+ public dialog: MdDialog,
+ private injectData: DatainjectionService,
+ public snackBar: MdSnackBar,
+ private router: Router,
+ private contactService: ContactService,
+ private activatedRoute: ActivatedRoute) {
+ this.modelChanged
+ .debounceTime(2000) // wait 300ms after the last event before emitting last eventpublic sidebar: SidebarComponent,
+ .distinctUntilChanged() // only emit if value is different from previous value
+ .subscribe(myInput => {
+ this.myInput = myInput;
+ this.tabelObj;
+ this.getdev();
+
+ });
+
+ }
+bussinessType;
+showButton:Boolean=false
+ ngOnInit() {
+ // this.updateFieldswithvalue()
+
+ this.showDemoVideo();
+ this.socket_Ing = this.injectData.getSocket_gps();
+
+ // this.from_date = new Date();
+ // this.from_date.setDate(1);
+ // this.to_date = new Date();
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY, h:mm:ss a' }, { containerClass: this.colorTheme });
+ //io.connect('https://www.oneqlik.in/gps', { secure: true, rejectUnauthorized: false, transports: ["polling"], upgrade: false });
+
+ this.socket_Ing.on('connect', function (this) {
+ // console.log('Ignition IO Connected');
+ })
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.adbtn = localStorage.getItem("dlrchk");
+ this.bussinessType=JSON.parse(window.atob(window.localStorage.token.split(".")[1])).bussinessType
+ console.log(this.bussinessType);
+
+ this.getSuperAdminList()
+ this.logo = window.localStorage['logo'];
+ this.text = window.localStorage['text'];
+ window.localStorage['DataUpdate'] = 'True'
+ if (window.localStorage.FinalAddDevice == 'True') {
+ this.tost1("new_Device");
+ }
+ // this.sidebar.sidebarData();
+ this.notify();
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.dealer_Permission = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).device_add_permission;
+ // console.log('this.dealer_Permission',this.dealer_Permission);
+ // console.log("getuserObjectid",this.useridd);
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.dealerTocust = localStorage.getItem('Custumer');
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.panelInfo = localStorage.getItem('supAdminAcessToCust');
+ // this.dealer_Permission = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).device_add_permission;
+ if(window.localStorage.Dealer_token){
+ // console.log("DEALER TOKEN IS PRESENT");
+ if(JSON.parse(window.atob(window.localStorage.Dealer_token.split(".")[1])).isDealer){
+ // console.log("IS DEALER");
+
+ this.dealer_Permission = JSON.parse(window.atob(window.localStorage.Dealer_token.split('.')[1])).device_add_permission;
+ // console.log(this.dealer_Permission);
+
+ }else{
+ // console.log("! IS DEALER");
+ this.dealer_Permission = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).device_add_permission;
+ console.log(this.dealer_Permission);
+ }
+
+ }else{
+ // console.log("! OTHER");
+ // console.log(this.dealer_Permission);
+ }
+ var dealerToken= window.localStorage.Dealer_token?JSON.parse(window.atob(window.localStorage.Dealer_token.split(".")[1])):''
+ // console.log("IUKIDJKDJKJ",dealerToken,JSON.parse(window.atob(window.localStorage.token.split(".")[1])))
+
+ // console.log(
+ // {"Dealer" :this.custtype,"Admin": this.superAdmin,"panelInfo" :window.localStorage['Custumer']}
+ // )
+
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+ let foods = [];
+ console.log("TESTSTSTSTSTT==>",this.custtype,this.dealer_Permission,this.superAdmin,this.bussinessType);
+
+ if (this.mb.charAt(0) == "n") {
+ this.mb = ' '
+ }
+ if (window.localStorage['Custumer'] == 'ON') {
+ this.logoutbut = false
+ this.dealer = true
+ }
+ else {
+ this.logoutbut = true
+ }
+
+ if(this.superAdmin){
+ this.supAdm = this.useridd;
+ }
+ if(this.custtype){
+ this.DealerID = this.useridd
+
+ }
+ // console.log(this.superAdmin,this.custtype);
+ if(this.custtype && this.dealer_Permission){
+ this.showButton=true;
+ }else if(this.superAdmin){
+ this.showButton=true;
+ }
+ // ((custtype && ((dealer_Permission == true)||(dealer_Permission === undefined)))||superAdmin) && (bussinessType!=0 || bussinessType==undefined)
+
+ // this.activatedRoute.params.subscribe((params: Params) => {
+ // let id = params['id'];
+
+ // this.groupId = id;
+
+ // });
+ this.emailid = this.emailid ? this.emailid : "";
+ this.useridd = this.useridd ? this.useridd : "";
+ this.status = this.status ? this.status : "";
+ this.groupId = this.groupId ? this.groupId : "";
+ this.statuss = this.statuss ? this.statuss : "";
+ var dateObj = {};
+ this.contactService.getDeviceByFilter(this.emailid, this.useridd, this.groupId, this.status, this.statuss, this.skip, this.limit,this.myInput,this.supAdm,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+ data => {
+ this.devicess = data
+ // console.log("IN NGONINIT",this.devicess);
+ if(this.devicess.devices.length==0){
+ this.firstcall=true;
+ this.lastcall=false;
+ }
+
+ this.final = this.devicess.devices;
+ for (let i = 0; i < this.devicess.devices.length; i++) {
+ if (this.devicess.devices[i].type_of_device == "Tracker") {
+ let a = {
+ value: this.devicess.devices[i].Device_Name,
+ viewValue: this.devicess.devices[i].Device_Name
+ }
+ foods.push(a);
+ }
+ }
+ this.abc(this.final);
+
+ });
+
+
+
+}
+
+
+table1ch(){
+ myFunction();
+ function myFunction() {
+ var input,filter, table, tr, td, i,td1;
+ input = document.getElementById("myInput");
+
+ filter = input.value.toUpperCase();
+ // console.log(filter);
+ table = document.getElementById("myTable");
+ tr = table.getElementsByTagName("tr");
+ for (i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[2];
+ td1= tr[i].getElementsByTagName("td")[0];
+
+ if (td) {
+ if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+
+ }
+ else if(td1.innerHTML.toUpperCase().indexOf(filter) > -1){
+ tr[i].style.display = "";
+
+ }
+ else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+ }
+ }
+
+
+
+ searchFilter(text: string) {
+ this.modelChanged.next(text);
+
+
+ }
+
+
+
+
+cond:Boolean = false;
+point : any = 0;
+ aa(){
+ // console.log(this.point);
+ if(this.point == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else if(this.point % 2 == 0){
+ this.cond = true;
+ this.point ++;
+ }
+ else{
+ this.cond = false
+ this.point ++;
+ }
+
+
+}
+
+BB:Boolean = false;
+dataa:Boolean = false;
+
+
+onChange2(q,dname,did,speed){
+ var status2;
+ //console.log(t.rowIndex);
+
+ if(!q.checked){
+ status2 = false;
+ //this.BB = false;
+
+ this.contactService.speedlimit2(did,"false").subscribe(
+
+ data => {
+ this.dataa = data ;
+ var dateObj = {};
+ this.contactService.getDeviceByFilter(this.emailid,this.useridd,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,this.supAdm,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+ (data)=> {
+ // console.log("11111111111111111122")
+ this.devicess = data
+ this.final = this.devicess.devices
+ // console.log(this.final);
+ window.localStorage['DataUpdate'] = 'True';
+ // this.sidebar.sidebarData();
+
+ }
+ )
+
+
+ }, (err: any) => {;
+ // console.log(err);
+ if(err.status != 200)
+ {
+ this.tost1("NotSucc");
+ }})
+
+ }
+ else{
+ status2 = true
+ // this.BB = true;
+ this.openDialog5(dname,status2,did,speed)
+
+ }
+
+
+}
+
+ onChange(e,d) {
+ var status;
+ if(!e.checked){
+ status = false;
+ }
+ else{
+ status = true
+ }
+
+ this.contactService.getDeviceStatus(d,status).subscribe(
+
+ data => {
+ this.devicess = data
+
+ });
+
+ }
+ devi(){
+ this.router.navigateByUrl("dashboard?_i="+window.localStorage.token);
+
+ }
+ geo(){
+ this.router.navigateByUrl("geofencing");
+
+ }
+
+ driverPerformance(){
+ this.cond = false
+ this.router.navigateByUrl("device-report/Driver-performance");
+ }
+ openNav() {
+
+ this.router.navigateByUrl("location");
+
+ }
+ closeNav() {
+ document.getElementById("myNav").style.width = "0%";
+}
+
+ devv:any;
+ deleteshare(did){
+ this.Load = true
+ // console.log(did);
+ this.contactService.deldevshr(did,this.useridd)
+ .subscribe(
+
+ data => {
+
+ this.devv = data
+ var dateObj = {};
+ this.contactService.getDeviceByFilter(this.emailid,this.useridd,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,this.supAdm,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+
+ data => {
+ this.devicess = data
+// console.log("1111111111111111333311")
+
+ this.final = this.devicess.devices;
+ this.Load =false
+ this.tost1("deleteshareDevice");
+ window.localStorage['DataUpdate'] = 'True'
+ // this.sidebar.sidebarData();
+ }, (err: any) => {;
+
+ if(err.status != 200)
+ {
+ this.Load =false
+ }});
+
+ });
+
+ }
+
+
+// delete(did){
+// swal({
+// title: 'Are you sure?',
+// text: "You won't be able to revert this!",
+// type: 'warning',
+// showCancelButton: true,
+// confirmButtonColor: '#3085d6',
+// cancelButtonColor: '#d33',
+// confirmButtonText: 'Yes, delete it!'
+// }).then((result: { value: boolean; }) => {
+// if (result) {
+// this.Load =true;
+// this.contactService.deldev(did)
+// .subscribe(
+// data => {
+
+// swal(
+// 'Deleted',
+// 'Device Deleted',
+// 'success'
+// )
+// this.dev = data
+// this.contactService.getDeviceByFilter(this.emailid,this.useridd,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,this.supAdm,this.DealerID).subscribe(
+
+// data => {
+// this.devicess = data
+// this.final = (this.devicess.devices);
+// this.Load =false
+// this.tost1("delete");
+// window.localStorage['DataUpdate'] = 'True';
+// this.sidebar.sidebarData();
+// }, (err: any) => {
+// // console.log(err);
+
+// if(err.status !=200)
+// {
+// this.Load =false
+// }
+// this.Load =true;
+// });
+// },err=>{
+// swal(
+// 'Error',
+// 'Internal Server Error, Please try after sometime !!!',
+// 'success'
+// )
+// })
+// }
+// })
+
+
+
+
+// }
+ adddev(){
+ // this.router.navigateByUrl("add-device");
+ // this.panelInfo
+ var distId = this.useridd;
+
+ if(this.panelInfo==='true'){
+ distId = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ }
+
+ var distPoint = '1';
+ this.contactService.getAvialblePoints(distId,distPoint).subscribe(res=>{
+ if(res.available_points<=0){
+ // console.log("Inside toast");
+ this.data_descip = 'Insufficient Points';
+ launch_toast()
+
+ }else{
+ this.router.navigateByUrl("add-device");
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function () { x.className = x.className.replace("show", ""); }, 4500);
+ }
+
+})
+
+
+
+}
+vewdev(id,name,type,expDate){
+
+ let currDate = new Date().getTime();
+ let chkDate = new Date(expDate).getTime();
+
+ // console.log("Inside adddiv");
+ // console.log(id + name);
+ var dataStatus = {
+ vehicleId:id,
+ vehicleName:name,
+ vehicleType:type
+}
+
+if(currDate>chkDate){
+ // console.log("Service expired !!!")
+ this.tost1("experr");
+
+}
+
+ else if(type=="Tracker"){
+
+ this.router.navigateByUrl("location?_dname="+name+"_id="+id);
+ window.localStorage['devDetail']= JSON.stringify(dataStatus);
+
+
+ }
+ else{
+ this.router.navigateByUrl("account?_did="+id+"."+name);
+ }
+}
+
+ selectedIndex:number=0;
+ clickMe(value){
+ this.selectedIndex=this.value;
+ if(!this.visibility0)
+ this.visibility0=!this.visibility0;
+ }
+
+ onLinkClick($event: any) {
+ // console.log($event);
+
+ }
+
+ cancle(a){
+ // console.log(a);
+ this.visibility0=!this.visibility0;
+ }
+
+
+sha :any;
+// openDialog4(a,b,c){
+
+// let dialogRef = this.dialog.open(ShareUserComponent, {
+// width: '528px',
+// data: { name: a, dname:b, did:c}
+// });
+
+// dialogRef.afterClosed().subscribe(result => {
+
+// // console.log(result);
+// if(result == "OKK"){
+// this.tost1("removeuser");
+// window.localStorage['DataUpdate'] = 'True';
+// this.sidebar.sidebarData();
+// }
+// else if(result == "No_Dev"){
+// this.tost1("No_Dev");
+
+// }
+// });
+
+// }
+// openDialog3(a,b){
+// let dialogRef = this.dialog.open(DeviceShareComponent, {
+// width: '528px',
+// data: { name: a , did:b}
+// });
+
+// dialogRef.afterClosed().subscribe(result => {
+// // console.log(result);
+// if(result == "OK"){
+// this.tost1("share");
+// window.localStorage['DataUpdate'] = 'True';
+// this.sidebar.sidebarData();
+// }
+// });
+// }
+
+openDialog5(dname,status,did,speed){
+ let dialogRef = this.dialog.open(SpeednotifyComponent, {
+ width: '528px',
+ data: { dname: dname , did:did, status:status, speed:speed}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+
+ let foods = [];
+ var dateObj = {}
+ this.contactService.getDeviceByFilter(this.emailid,this.useridd,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,this.supAdm,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+
+ data => {
+
+ this.devicess = data
+ // console.log("111111111111144444111")
+
+ /* this.final = this.devicess.devices[0]; */
+ this.final = (this.devicess.devices);
+
+ // console.log(this.final);
+
+ for(let i=0;i {
+ // console.log("result",result);
+ this.ngOnInit();
+
+ if(result=="done"){
+ // console.log("resultdone",result)
+ this.tost1("update");
+ window.localStorage['DataUpdate'] = 'True';
+ // this.sidebar.sidebarData();
+ }
+ });
+ }
+
+ // editDeviceInformation(deviceforedit: Object) {
+ // var that = this;
+ // deviceforedit['actionFlag'] = 'edit';
+ // console.log('DeviceObject=>', deviceforedit);
+ // localStorage.setItem('deviceforedit',JSON.stringify(deviceforedit))
+ // this.router.navigateByUrl("add-device");
+
+
+ // }
+
+
+ shareOwner:any;
+ ss:any;
+ y:any;
+ test3(a,b){
+ if(b){
+ let u = b.split(",");
+ for(let p=0 ; p{
+// console.log("tempdeviceobject=fhlkdsjksaldjasd>",res);
+// });
+// }
+ group(){
+ this.cond = false
+ this.router.navigateByUrl("group_view");
+ }
+
+
+
+ test1(a,b){
+ if(b){
+ let u = b.split(",");
+ for(let p=0 ; p ", this.Status_name);
+ if(this.Status_name != null){
+ // console.log();
+ this.statuss = this.Status_name;
+ }
+
+ var dateObj = {};
+
+ if((this.dateId == 'todate')||(this.to_date != undefined)){
+ dateObj['to_date'] = this.to_date.toISOString();
+
+ }
+ if((this.dateId == 'fdate')||(this.from_date != undefined)){
+ dateObj['from_date'] = this.from_date.toISOString();
+ }
+
+ this.dateId='';
+ this.contactService.getDeviceByFilter(this.emailid,this.useridd,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,this.supAdm,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+
+ data => {
+
+ this.devicess = data
+ this.final = this.devicess.devices
+ // console.log("IN GET DEV",this.final);
+
+
+ for(let i=0;i",div)
+ var that = this;
+ this.baba=[];
+ this.deviceData=div;
+ var outerThis = this;
+ var start_add:any;
+ // console.log("Initial Value",this.deviceData);
+
+ for(var j=0;j",this.Durations)
+
+
+ // new conversion logic
+ var curr_time:any = new Date();
+ this.arrival_time = new Date(this.deviceData[j].status_updated_at);
+ var fd:any = new Date(this.arrival_time);
+ // console.log('curr_time',curr_time,this.arrival_time);
+ var diffInMilliSeconds= Math.abs(curr_time - fd) / 1000;
+
+ // calculate days
+ const days = Math.floor(diffInMilliSeconds / 86400);
+ diffInMilliSeconds -= days * 86400;
+ // console.log('calculated days', days);
+
+ // calculate hours
+ const hours = Math.floor(diffInMilliSeconds / 3600) % 24;
+ diffInMilliSeconds -= hours * 3600;
+ // console.log('calculated hours', hours);
+
+ // calculate minutes
+ const minutes = Math.floor(diffInMilliSeconds / 60) % 60;
+ diffInMilliSeconds -= minutes * 60;
+ // console.log('minutes', minutes);
+
+ let difference = '';
+ if (days > 0) {
+ difference += (days === 1) ? `${days} day, ` : `${days} days, `;
+ }
+
+ difference += (hours === 0 || hours === 1) ? `${hours} hour, ` : `${hours} hours, `;
+
+ difference += (minutes === 0 || hours === 1) ? `${minutes} minutes` : `${minutes} minutes`;
+
+ // new conversion logic
+ this.Durations = difference ;
+ if(dev_status==undefined){
+
+ this.status_toShow = "NA";
+
+ }else{
+ this.status_toShow = dev_status + " " + "Since" +" "+ this.Durations;
+ }
+
+ this.deviceData[j].status = this.status_toShow ;
+ }
+
+ }
+ // datatable will be called from here
+
+ if(this.tableFlag === true){
+ this.testTable();
+
+ }else{
+
+ this.tabelObj.clear();
+ this.tabelObj.rows.add(this.deviceData);
+ this.tabelObj.draw();
+
+ }
+ this.tableFlag = false;
+
+ }
+
+
+
+ // getExpvehData(expiredVeh,$event){
+ // // console.log(expiredVeh,$event)
+ // var status = expiredVeh;
+ // var Expstatus = 0;
+ // this.Load =true;
+ // this.contactService.getExpVehDetails(this.useridd,this.emailid,status,Expstatus,this.limit,this.myInput,this.supAdm,this.DealerID)
+ // .subscribe(res=>{
+ // this.Load = false;
+ // // console.log(res);
+ // this.final = res.devices;
+ // this.abc(this.final)
+
+ // },err=>{
+ // this.Load =false;
+ // swal(
+ // 'Error',
+ // 'Internal Server error, Please try aftersometime !!!',
+ // 'error'
+ // )
+
+ // })
+ // }
+
+
+ firstcall:boolean=false;
+ lastcall:boolean=true;
+ next() {
+ this.deviceData =[];
+ this.lastcall=false;
+ this.skip += 1;
+ // this.sidebarData();
+ this.ngOnInit();
+ }
+ pre() {
+ this.deviceData=[]
+ // console.log(this.skip)
+ if(this.skip>0){
+ this.skip -= 1;
+ this.lastcall=false;
+ // this.sidebarData();
+ this.ngOnInit();
+ }else{
+ this.lastcall=true;
+ this.firstcall=false;
+ }
+
+ }
+
+ licenceStatus(ev){
+ // console.log(this.liecenceStatus,ev);
+ this.getdev();
+
+ }
+
+ selectedStatus(ev,ind){
+ // this.statusArray[ind].status = !this.statusArray[ind].status;
+ this.Status_name = ev.value;
+ // console.log('indindindindindindindindindindindindind',this.Status_name);
+
+ this.getdev();
+
+ // if(this.statusArray[ind].status){
+ // this.Status_name.push(this.statusArray[ind].value);
+ // this.getdev();
+
+ // }
+ // else{
+ // this.Status_name.splice(this.Status_name.indexOf(this.statusArray[ind].value),1);
+ // this.getdev();
+ // }
+
+ // console.log('this.Status_name',this.Status_name);
+ }
+
+ // deviceSetting(deviceObj){
+ // console.log("clicked",deviceObj);
+ // let dialogRef = this.dialog.open(GeneralSettingsComponent, {
+
+ // data: { device :deviceObj}
+ // });
+
+ // dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ // if(result == 'cancelled'){
+ // this.ngOnInit();
+ // }
+ // })
+ // }
+
+ showMenu = environment.showLandingpageMenu;
+ showDemoVideo(){
+ let split1 = document.URL.split('//')[1];
+ // console.log(split1,document);
+ let split2 = split1.split('/')[0];
+ let splitForStyle = split1.split('/')[1];
+ this.url = split2;
+ // console.log("split2",this.url);
+ for(var i = 0; i {
+
+ let dialogRef = that.dialog.open(GeneralSettingsComponent, {
+ data: { device :data}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if(result == 'cancelled'){
+ that.ngOnInit();
+ }
+ })
+
+
+ });
+ $('#speedAlert', row).bind('click', () => {
+
+
+ });
+ $('#shareDevice', row).bind('click', () => {
+ // openDialog3(a,b){
+ // console.log(data);
+ var dname = data.Device_Name;
+ var devid= data._id;
+ let dialogRef = that.dialog.open(DeviceShareComponent, {
+
+ width: '528px',
+ data: { name: dname , did:devid}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if(result == "OK"){
+ that.tost1("share");
+ window.localStorage['DataUpdate'] = 'True';
+ // that.sidebar.sidebarData();
+ }
+ });
+ // }
+
+
+ });
+ $('#shareUser', row).bind('click', () => {
+ var vehid = data._id;
+ var dname = data.Device_Name;
+ var vehID = data.Device_ID;
+ let dialogRef = that.dialog.open(ShareUserComponent, {
+ width: '528px',
+ data: { name: vehid, dname:dname, did:vehID}
+ });
+ dialogRef.afterClosed().subscribe(result => {
+
+ // console.log(result);
+ if(result == "OKK"){
+ that.tost1("removeuser");
+ window.localStorage['DataUpdate'] = 'True';
+ // that.sidebar.sidebarData();
+ }
+ else if(result == "No_Dev"){
+ that.tost1("No_Dev");
+
+ }
+ });
+
+
+ });
+
+ $('#edit', row).bind('click', () => {
+ var internalThat = that;
+ // console.log('rowrowrowrow=>',row);
+ // console.log('datadatadatadata',data);
+
+ if(that.bussinessType=='1'){
+ localStorage.setItem('deviceData',JSON.stringify(data))
+ that.router.navigate(['/editDevice']);
+ }else{
+ let dialogRef = that.dialog.open(DeviceEditComponent, {
+ width: '950px',
+ // height: '1160px',
+ data: { _id: data._id, des: data.Device_Des, sim:data.sim_number, dname:data.Device_Name, speed:data.SpeedLimit,iconType:data.iconType,
+ drname:data.driver_name,dcontact:data.contact_number,expdate:data.expiration_date,model:data.maxSpeed,mainmodel:data.device_model,
+ assigned_to:data.user,vehicleType:data.vehicleType,devIMEI:data.Device_ID,S_provider:data.sim_provider,tot_ODO:data.total_odo,
+ itiId:data.integrationId,simNUM2:data.sim_number2,simProvider2:data.sim_provider2,devObj:data,
+ distanceVariation:data.distanceVariation?data.distanceVariation:null,sellsPerson:data.sellsPerson?data.sellsPerson:null,
+ installer:data.installer?data.installer:null}
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log("result",result);
+ that.ngOnInit();
+
+ if(result=="done"){
+ // console.log("resultdone",result)
+ that.tost1("update");
+ window.localStorage['DataUpdate'] = 'True';
+ // that.sidebar.sidebarData();
+ }
+ });
+
+ }
+
+ });
+ $('#renewalHistory',row).bind('click',()=>{
+ // console.log(data);
+ let dialogRef = that.dialog.open(RenewalHistoryComponent, {
+ width: '950px',
+ // height: '1160px',
+ data: { _id: data._id, des: data.Device_Des, sim:data.sim_number, dname:data.Device_Name, speed:data.SpeedLimit,iconType:data.iconType,drname:data.driver_name,dcontact:data.contact_number,expdate:data.expiration_date,model:data.maxSpeed,mainmodel:data.device_model,assigned_to:data.user,vehicleType:data.vehicleType,devIMEI:data.Device_ID,S_provider:data.sim_provider,tot_ODO:data.total_odo,itiId:data.integrationId,simNUM2:data.sim_number2,simProvider2:data.sim_provider2,devObj:data,distanceVariation:data.distanceVariation?data.distanceVariation:null}
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ })
+
+ });
+
+ $('#echalan',row).bind('click',()=>{
+ // console.log(data);
+ let dialogRef = that.dialog.open(EChalanComponent, {
+ // width: '950px',
+ // height: '1160px',
+ data: { _id: data._id, dname:data.Device_Name}
+
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ })
+
+ });
+ $('#certificate',row).bind('click',()=>{
+ // console.log(data);
+ var docs=data
+ // var that =this;
+ docs.ID = 'viewDoc',
+ docs.hide=true;
+ // console.log(docs);
+ let dialogRef = that.dialog.open(DeviceDocComponent, {
+ width: '900px',
+ // height:'900px',
+ data: { dealer_payload: docs }
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ })
+
+ });
+ $('#certificate1',row).bind('click',()=>{
+ that.exportCertificate(data)
+
+ });
+
+ $('#delete', row).bind('click', () => {
+ swal({
+ title: 'Are you sure?',
+ text: "You won't be able to revert this!",
+ type: 'warning',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Yes, delete it!'
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+ that.Load =true;
+ var req={
+ device:data.Device_ID,
+ userId:that.useridd
+ }
+ that.contactService.deldev(req)
+ .subscribe(
+ data => {
+
+ swal(
+ 'Deleted',
+ 'Device Deleted',
+ 'success'
+ )
+ that.dev = data
+ var dateObj = {}
+ that.contactService.getDeviceByFilter(that.emailid,that.useridd,that.groupId,that.status,that.statuss,that.skip,that.limit,that.myInput,that.supAdm,that.DealerID,dateObj,that.liecenceStatus).subscribe(
+
+ data => {
+ that.devicess = data
+ // console.log("1111111111111111111")
+ that.final = (that.devicess.devices);
+ that.Load =false
+ that.tost1("delete");
+ window.localStorage['DataUpdate'] = 'True';
+ // that.sidebar.sidebarData();
+ }, (err: any) => {
+ // console.log(err);
+
+ if(err.status !=200)
+ {
+ that.Load =false
+ }
+ that.Load =true;
+ });
+ },err=>{
+ if(err.status==401){
+ swal(
+ "Access Denied !!"
+ )
+ }else{
+
+ swal(
+ 'Error',
+ 'Internal Server Error, Please try after sometime !!!',
+ 'success'
+ )
+ }
+ })
+ }
+ })
+ });
+
+ },
+ "columns": [
+ {
+ "data": "_id",
+ "visible" :false,
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "Device_Name",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "vehicleGroup",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ var grp ='';
+ if(data){
+ grp = data.name ;
+ }
+
+ return grp;
+ }
+ },
+ {
+ "data": "Device_ID",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "integrationId",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ var intid = '';
+ if(data){
+ intid = data;
+ }
+ return intid;
+ }
+ },
+ {
+ "data": "sim_number",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "sim_provider",
+ "defaultContent": "",
+ render: function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "sim_number2",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data:'';
+ }
+ },
+ {
+ "data": "sim_provider2",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data:'';
+ }
+ },
+ {
+ "data": "device_model",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data?data.device_type:"NA"
+ }
+ },
+
+ {
+ "data": "vehicleType",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ // console.log('vehicleType',data);
+ return data ? (data.brand + " " + data.model):'NA'
+
+ }
+ },
+ {
+ "data": "status",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "user",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+
+ var fn = data?data.first_name:'-' ;
+ var ln = data?data.last_name:'-'
+ return fn + ' ' + ln ;
+ }
+ },
+ {
+ "data": "created_by",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+
+ var fn1 = data?data.first_name:'-' ;
+ var ln1 = data?data.last_name:'-'
+ return fn1 + ' ' + ln1 ;
+ }
+ },
+ {
+ "data": "Dealer",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+
+ var fn1 = data?data.first_name:'-' ;
+ var ln1 = data?data.last_name:'-'
+ return fn1 + ' ' + ln1 ;
+ }
+ },
+ {
+ "data": "created_on",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+ var createdDate = new Date(data);
+ return data ? (moment(createdDate).format('LL')) : "";
+ }
+ },
+ {
+ "data": "expiration_date",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+ var expDate = new Date(data);
+ return data ? (moment(expDate).format('LL')) : "";
+ }
+ },
+ {
+ "data": "renew_at",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+ var expDate = new Date(data);
+ return data ? (moment(expDate).format('LL')) : "";
+ }
+ },
+ {
+ "data": "renew_by",
+ "defaultContent": "",
+ "visible" :true,
+ "render": function(data, type, row) {
+ if(data){
+ var name =(data.first_name?data.first_name:'')+' '+(data.last_name?data.last_name:'');
+ return name ? name : "";
+ }else ''
+ }
+ },
+ {
+ "data": "driver_name",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : "";
+ }
+ },
+ {
+ "data": "contact_number",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : ""
+ }
+ },
+
+ {
+ "data": "sellsPerson",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data : ""
+ }
+ },
+ {
+ "data": "installer",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ return data ? data.first_name+' '+data.last_name : ""
+ }
+ },
+ {
+ "data": "last_ping_on",
+ "defaultContent": "",
+ "render": function(data, type, row) {
+ var expDate = new Date(data);
+ return data ? (moment(expDate).format('lll')) : "";
+ }
+ },
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+ }
+ } ,
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+ }
+ },
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+
+ return ' '
+ }
+ },
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+}
+},
+
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+ }
+ } ,
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ if(row.kycStatus) {
+ if(row.kycStatus=="Approved") {
+ return ' '
+
+ }else{
+ return ' '
+ }
+ }else{
+ return ' '
+ }
+
+}
+ },
+
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+}
+ },
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ return ' '
+ }
+ },
+{
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ if(row.kycStatus) {
+ if(row.kycStatus=="Approved") {
+ return ' '
+
+ }else{
+ return ' '
+ }
+ }else{
+
+ }
+}
+ },
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ if(row.remark) {
+ return row.remark
+ }
+ }
+},
+ {
+ "data":null,
+ "defaultContent": "",
+ "render":function(data,type,row){
+ var str
+ if(row.kycStatus==undefined || row.kycStatus=='Pending'){
+ str="Pending "
+ }else if(row.kycStatus=="Approved"){
+ str="Approved "
+ }else{
+ str="Rejected "
+ }
+ // {{cust_array.kycStatus}}
+ // {{cust_array.kycStatus}}
+ // {{cust_array.kycStatus}}
+
+
+ return str
+ // ' '
+ }
+ },
+
+ ],
+
+
+ "columnDefs": [
+ { className: "dt-body-left", "targets": [ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34] },
+ // { width: '20%', targets: 0 } ,
+
+ ]
+
+ });
+ // $('#deviceTable').on( 'length.dt', function ( e, settings, len ) {
+ // console.log( 'New page length: '+len );
+ // that.customDatafilter = true;
+ // this.skip = 0;
+ // that.limit = len;
+ // that.getdev();
+
+
+ // });
+ // that.testGround()
+
+ that.colSwitch()
+
+ });
+
+
+}
+
+exportCertificate(data){
+
+ data.actionId = "exportPdf";
+
+ data.OwnerName = JSON.parse(JSON.stringify(data)).user.first_name + " " + JSON.parse(JSON.stringify(data)).user.last_name;
+ // data.Dealer_name = JSON.parse(JSON.stringify(data))
+ var fstname = (JSON.parse(JSON.stringify(data)).Dealer != undefined) ? JSON.parse(JSON.stringify(data)).Dealer.first_name : "";
+ var lsname = (JSON.parse(JSON.stringify(data)).Dealer != undefined) ? JSON.parse(JSON.stringify(data)).Dealer.last_name : "";
+ var dlraddress = (JSON.parse(JSON.stringify(data)).Dealer != undefined) ? JSON.parse(JSON.stringify(data)).Dealer.address : "";
+ data.Dealer_name = fstname + " " + lsname;
+ data.DealerAddress = dlraddress;data.deviceImage=data.deviceImage
+ let dialogRef
+ if(this.bussinessType=="1"){
+ dialogRef = this.dialog.open(DownloadCertificateComponent, {
+ data: { "deviceInfo": data },
+ width:'950px'
+ });
+ }else{
+ dialogRef = this.dialog.open(ViewCertificateComponent, {
+ data: { "deviceInfo": data }
+ });
+
+ }
+
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+
+ // if (result == "advance") {
+ // let dialogRef_1 = this.dialog.open(EditDeviceMasterComponent, {
+ // data: { "deviceInfo": data },
+ // width: '650px',
+ // height: '700px',
+ // });
+ // }
+
+ // if (result == "basic") {
+ // let dialogRef_2 = this.dialog.open(NormalCertComponent, {
+ // data: { "deviceInfo": data }
+ // });
+ // }
+ })
+}
+
+// testGround(){
+// var aaaaaaaa= new $.fn.datatable.FixedColumns(this.tabelObj, {
+// leftColumns: 4
+// });
+
+// console.log('aaaaaaaa',aaaaaaaa);
+
+
+
+// }
+
+
+
+
+ colSwitch(){
+
+ // this.tabelObj.column( 22 ).visible( false );
+ this.tabelObj.column( 29).visible( false );
+ this.tabelObj.column( 31 ).visible( false );
+ this.tabelObj.column( 32 ).visible( false );
+ this.tabelObj.column( 33 ).visible( false );
+ this.tabelObj.column( 28 ).visible( false );
+ this.tabelObj.column( 26).visible( false );
+ this.tabelObj.column( 27).visible( false );
+ this.tabelObj.column( 34 ).visible( false );
+ if((this.superAdmin ==true)||(this.custtype ==true)||(this.dealerTocust=='ON')){
+ // this.tabelObj.column( 22 ).visible( true );
+ this.tabelObj.column( 28).visible( true );
+ this.tabelObj.column( 29).visible( true );
+
+ this.tabelObj.column( 26).visible( true );
+ this.tabelObj.column( 27).visible( true );
+ this.tabelObj.column(15).visible( true );
+ this.tabelObj.column( 13).visible( true );
+
+ if(this.bussinessType=='1'){
+ this.tabelObj.column( 31 ).visible( true );
+ this.tabelObj.column( 32 ).visible( true );
+ this.tabelObj.column( 33 ).visible( true );
+ this.tabelObj.column( 34 ).visible( true );
+ }
+ }
+
+ if((this.superAdmin ==false)&&(this.custtype ==false)){
+ this.tabelObj.column( 9 ).visible( false );
+
+ }
+ }
+
+ tab:any;
+
+ exportExcel1() {
+
+ var data = this.devicess.devices
+
+ for (var i = 0; i < data.length; i++) {
+ data[i].device_models = data[i].device_model ? data[i].device_model.device_type ? data[i].device_model.device_type:"N/A":"N/A"
+ data[i].kycApprovalDate = data[i].kycApprovalDate ? moment(data[i].kycApprovalDate).format('LL') : "N/A"
+ if (data[i].Dealer){
+ var pin = data[i].user.pin ? data[i].user.pin : ""
+ var address = data[i].user.address ? data[i].user.address : ""
+ var name = data[i].Dealer.first_name ? data[i].Dealer.first_name : ""+" " + data[i].Dealer.last_name ? data[i].Dealer.last_name : ""
+ data[i].dealerName = name;
+
+
+
+ }
+ if (data[i].user) {
+ var name1 = data[i].user.first_name ? data[i].user.first_name : "" + " " + data[i].user.last_name ? data[i].user.last_name : ""
+ data[i].customerName = name1;
+
+ data[i].customerId = data[i].imageDoc[0] ? data[i].imageDoc[0].phone ? data[i].imageDoc[0].phone : "" :""
+ }
+ var pin = data[i].user.pin ? data[i].user.pin : ""
+ var address = data[i].user.address ? data[i].user.address : ""
+ data[i].address = address;
+ data[i].pin = pin;
+ if(i==data.length-1){
+ this.downloadFile(this.devicess.devices);
+ }
+ // this.exportAsExcelFile(this.devicess.devices, 'sample');
+ // const workBook = XLSX.utils.book_new(); // create a new blank book
+ // const workSheet = XLSX.utils.json_to_sheet(this.devicess.devices);
+
+ // XLSX.utils.book_append_sheet(workBook, workSheet, 'data'); // add the worksheet to the book
+ // XLSX.writeFile(workBook, 'temp.xlsx'); // initiate a file download in browser
+
+ }
+ }
+
+ exportAsExcelFile(json: any[], excelFileName: string): void {
+ const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
+ const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
+ const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
+ this.saveAsExcelFile(excelBuffer, excelFileName);
+ }
+ saveAsExcelFile(buffer: any, fileName: string): void {
+ const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });
+ fileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);
+ }
+
+ // this.downloadFile(this.devicess.devices);
+
+
+ downloadFile(data, filename = 'Vehicle List') {
+ console.log(data);
+
+ let arrHeader = ["Device_ID", "kycApprovalDate", "vahanID", "device_models", "IccidNo", "sim_number", "sim_number2", "SIM and SIM to TSP", "dealerName",
+ "CID_No","customerId","customerName", "phone", "manufacturingCompany", "Model", "vehicleCategory", "ChassisNo", "engineNo", "Device_Name", "transportOfficeCity", "transportOfficeState", "pin", "rto", "spare", "spare", "address"];
+ let csvData = this.ConvertToCSV(data, arrHeader);
+ let blob = new Blob(['\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });
+ // const file = new File([blob], 'report.xlsx',
+ // { type: 'application/vnd.ms-excel' });
+
+ // fileSaver.saveAs(file);
+ let dwldLink = document.createElement("a");
+ let url = URL.createObjectURL(blob);
+ let isSafariBrowser = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;
+ if (isSafariBrowser) { //if Safari open in new window to save file with random filename.
+ dwldLink.setAttribute("target", "_blank");
+ }
+ dwldLink.setAttribute("href", url);
+ dwldLink.setAttribute("download", "Vehicle List.csv");
+ dwldLink.style.visibility = "hidden";
+ document.body.appendChild(dwldLink);
+ dwldLink.click();
+ document.body.removeChild(dwldLink);
+ }
+ ConvertToCSV(objArray, headerList) {
+ let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
+ let str = 'Vehicle List \r\n \r\n'
+ let row = 'S.No,';
+ let newHeaders = ["Device IMEI", "Date of KYC approval", "Vahan ID", "Device Model", "ICCID NO", "SIM1", "SIM2", "SIM and SIM to TSP", "Dealer name",
+ "Follow-up number","Customer ID","Customer Name", "Mobile No", "vehicle manufacturer", "Vehicle Model", "Vehicle Category", "Chassis No", "Engine No", "Vehicle No", "CITY", "State", "PIN","RTO","spare","spare","ADDRESS"];
+
+ for (let index in newHeaders) {
+ row += newHeaders[index] + ',';
+ }
+ row = row.slice(0, -1);
+ str += row + '\r\n';
+ for (let i = 0; i < array.length; i++) {
+ let line = (i + 1) + '';
+ if (i < array.length) { }
+ for (let index in headerList) {
+ let head = headerList[index];
+ line += ',' + this.strRep(array[i][head]);
+ }
+ str += line + '\r\n';
+
+ }
+ return str;
+ }
+
+ strRep(data) {
+
+ if (typeof data == "string") {
+ let newData = data.replace(/,/g, " ");
+ return newData;
+ }
+ else if (typeof data == "undefined") {
+ return "-";
+ }
+ else if (typeof data == "number") {
+ return data.toString();
+ }
+ else {
+ return data;
+ }
+ }
+
+ exportExcel() {
+
+
+ var tab_text="";
+ var textRange; var j=0;
+ this.tab = document.getElementById('deviceTable1'); // id of table
+
+ // console.log(this.tab.rows.length)
+ var rowlength = 4;
+ if((this.superAdmin ==true)||(this.custtype ==true)||(this.dealerTocust=='ON')){
+ var rowlength = 6;
+ }
+
+
+ for(j = 0 ; j < this.tab.rows.length; j++)
+ {
+
+ tab_text=tab_text+this.tab.rows[j].innerHTML+" ";
+ //tab_text=tab_text+"";
+ }
+ $('table tr').find('td:eq(20),th:eq(20)').remove();
+ $('table tr').find('td:eq(21),th:eq(21)').remove();
+ tab_text=tab_text+"
";
+ tab_text= tab_text.replace(/]*>|<\/A>/g, "");//remove if u want links in your table
+ tab_text= tab_text.replace(/ ]*>/gi,""); // remove if u want images in your table
+ tab_text= tab_text.replace(/ ]*>|<\/input>/gi, ""); // reomves input params
+ // tab_text= tab_text.replace(/ Edit /gi, ""); // reomves input params
+
+ // console.log(tab_text);
+
+ var ua = window.navigator.userAgent;
+ var msie = ua.indexOf("MSIE ");
+
+ var sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
+
+ return (sa);
+ }
+
+ dateChange(id){
+ // console.log(id);
+ // console.log("Inside function");
+ this.dateId = id;
+ this.getdev();
+
+ }
+ pageLength:any;
+ pageLengthArr=[10,25,50,100,200,500,"All"];
+ callDataTable(){
+ this.customDatafilter = true;
+ this.skip = 0;
+ // that.limit = len;
+ this.getdev();
+ }
+
+ getSuperAdminList(){
+ // console.log("KJDKJDKJKDJKJKDJD");
+
+ this.contactService.getSuperAdminList().subscribe(res=>{
+ // console.log(res);
+ this.distributers=res;
+ var loadinguser1 = {
+ user_type: "All",
+ _id: "All User"
+ }
+ for(var i=0;i",usr);
+ if(usr1.length == 0){
+ this.distributerSelect =[];
+ }
+
+ if (usr1) {
+ // console.log("user=>",usr1);
+ const filterdealerValue:any = usr1;
+ this.distributerSelect=[];
+ this.distributerSelect = this.disDataFIlter.filter(function(ppp){
+ // console.log(ppp);
+
+ var t = ppp.user_type.indexOf(filterdealerValue);
+ // this.option = this.options[i];
+ // console.log("India1");
+ return t > -1;
+ });
+ // console.log(this.distributerSelect);
+ // if(this.distributerSelect.length==this.disDataFIlter.length){
+ // this.getdev()
+ // }
+ if(this.distributerSelect.length === 1){
+ this.getSuperAdminVehicles(this.distributerSelect);
+
+ }else{
+ this.getdev()
+ }
+ return this.distributerSelect;
+ }
+
+ }
+
+
+ getSuperAdminVehicles(data){
+
+ let foods = [];
+
+ // console.log("statusName = > ", this.Status_name);
+ if(this.Status_name != null){
+ // console.log();
+ this.statuss = this.Status_name;
+ }
+
+ var dateObj = {};
+
+ if((this.dateId == 'todate')||(this.to_date != undefined)){
+ dateObj['to_date'] = this.to_date.toISOString();
+
+ }
+ if((this.dateId == 'fdate')||(this.from_date != undefined)){
+ dateObj['from_date'] = this.from_date.toISOString();
+ }
+
+ this.dateId='';
+ this.contactService.getDeviceByFilter(this.emailid,data[0]._id,this.groupId,this.status,this.statuss,this.skip,this.limit,this.myInput,data[0]._id,this.DealerID,dateObj,this.liecenceStatus).subscribe(
+
+ data => {
+
+ this.devicess = data
+ this.final = this.devicess.devices
+ // console.log("IN GET DEV",this.final);
+
+
+ for(let i=0;i
+
+
+
+
+
+
+
+
+
+ Additional Settings
+
+
+
+
+
+
+
+
+ SAVE
+ CANCEL
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/dashboard/device-edit/device-edit.component.scss b/src/app/dashboard/device-edit/device-edit.component.scss
new file mode 100644
index 0000000..b9aca53
--- /dev/null
+++ b/src/app/dashboard/device-edit/device-edit.component.scss
@@ -0,0 +1,23 @@
+::-webkit-scrollbar {
+ // display: none;
+}
+
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
diff --git a/src/app/dashboard/device-edit/device-edit.component.spec.ts b/src/app/dashboard/device-edit/device-edit.component.spec.ts
new file mode 100644
index 0000000..50e84eb
--- /dev/null
+++ b/src/app/dashboard/device-edit/device-edit.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeviceEditComponent } from './device-edit.component';
+
+describe('DeviceEditComponent', () => {
+ let component: DeviceEditComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeviceEditComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeviceEditComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/device-edit/device-edit.component.ts b/src/app/dashboard/device-edit/device-edit.component.ts
new file mode 100644
index 0000000..6e0f451
--- /dev/null
+++ b/src/app/dashboard/device-edit/device-edit.component.ts
@@ -0,0 +1,1037 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {Device} from '../../device';
+import {ContactService} from '../../contact.service';
+import { SidebarComponent } from '../../sidebar/sidebar.component';
+import { FlashMessagesService } from 'angular2-flash-messages';
+declare var _ :any;
+declare var swal: any;
+@Component({
+ selector: 'app-device-edit',
+ templateUrl: './device-edit.component.html',
+ styleUrls: ['./device-edit.component.scss'],
+ providers: [ContactService,SidebarComponent]
+
+})
+export class DeviceEditComponent implements OnInit {
+dealers_info: any[];
+RTO;
+RTOObj;
+RTOSelect=[]
+myInput;
+installer
+installerSelect
+sellsPerson
+ chassisno:any;
+ companyName:any;
+ EngineNo:any;
+ companyAddress:any;
+ typeofVeh:any;
+ transportOfficeCity:any;
+ transportOfficeState:any;
+ manufacturingCompany:any;
+ invoice_date:any
+ invoice_number:any;
+ UIDnumber:any;
+ iccidNo:any;
+ Imsi:any;
+ dev: any;
+ deviceModel:any;
+ deviceId: any;
+ group_info: any;
+ dname:any;
+ SIM_provider:any;
+ desc:any;
+ IntegrationId:any;
+ sim:any;
+ devices: Device[];
+ device: Device;
+ voltage_tank_empty:any;
+ id:any;
+ totalODO:any;
+ iconType:any;
+ fuel_tank_capicity:any;
+ neww:any;
+ speed:any;
+ dcontact:any;
+ drname:any;
+ vehRegDate:any;
+ vehManufacturingYear :any;
+ lastFitnessDate : any;
+ fitmentDate :any;
+ vehicleType:any;
+ userModel:any;
+ tankfull_capicity:any;
+ groupInfo:any;
+ device_Id:any;
+ date=new Date();
+ expDate = new Date(this.date.getFullYear()+1,this.date.getMonth(), this.date.getDate()).toLocaleString();
+ foodds = [
+ {value: 'car', viewValue: 'Car'},
+ {value: 'bike', viewValue: 'Bike'},
+ {value: 'truck', viewValue: 'Truck'},
+ ];
+ model: any;
+ integrationIdPresent:boolean=false
+ mainmodel: any;
+ custId: string;
+ deviceInformation: any={};
+ dev_IMEI: any;
+ SIM_provider2: any;
+ sim2: any;
+ CIDNO: any;
+ numberOfSOS: any;
+ tpin:any;
+ epin:any;
+ models:any;
+ colour:any;
+ transmission:any;
+ dealerStatus: any;
+ superAdmin: any;
+ superadminAccess: string;
+ Cloned_exp_date: string;
+ organisation: any;
+ dealerData={fullName:'',_id:''}
+ dealerSelect: any[];
+ skip: number = 1;
+ limit: number = 100;
+showFieldsDealer:boolean=false;
+ showFieldsUser:boolean=false;
+ License:any;
+ DealerId: any;
+ mainData
+ showRenewButton:boolean=false
+ deviceDistanceVariation=0
+ selcetedSign="+"
+ installerData: any;
+ installerObj: any;
+ custtype: any;
+ constructor(public dialogRef: MdDialogRef,private _flashMessagesService: FlashMessagesService,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,private sidebar: SidebarComponent) {
+ // console.log('data=>',data);
+ this.mainData=data
+
+ if(data.distanceVariation){
+ this.selcetedSign=data.distanceVariation[0]
+ // data.distanceVariation.slice(0,0);
+ this.deviceDistanceVariation=data.distanceVariation.substring(1);
+ console.log("___________",this.mainData,this.selcetedSign,this.deviceDistanceVariation);
+
+ }
+
+
+ this.dname = data.dname;
+ this.DealerId=data.devObj.Dealer?data.devObj.Dealer._id?data.devObj.Dealer._id:data.devObj.Dealer:data.devObj.Dealer;
+ if(data.devObj.License =="Yearly"){
+ this.showRenewButton=true;
+ }
+ if(data.assigned_to){
+ this.selectedUser = data.assigned_to._id;
+ }
+
+ this.desc = data.des;
+ this.expDate = data.expdate;
+ this.Cloned_exp_date = data.expdate ;
+ this.License = data.devObj.License;
+ this.sim = data.sim;
+ this.sim2 = data.simNUM2;
+ this.id = data._id;
+ this.drname = data.drname;
+ this.dcontact = data.dcontact ;
+ this.speed = data.maxSpeed;
+ this.deviceModel = data.mainmodel;
+ this.userModel = data.assigned_to;
+ this.vehicleType = data.vehicleType;
+ this.dev_IMEI = data.devIMEI;
+ this.SIM_provider = data.S_provider;
+ this.SIM_provider2 = data.simProvider2;
+ this.IntegrationId = data.itiId;
+ if(this.IntegrationId){
+ this.integrationIdPresent=true
+ }
+ this.totalODO = parseFloat(data.tot_ODO).toFixed(1);
+
+
+ this.EngineNo=data.devObj.engineNo;
+
+ this.typeofVeh=data.devObj.typeOfVehicle;
+ this.companyName=data.devObj.companyName;
+ this.companyAddress=data.devObj.companyAddress;
+ this.transportOfficeCity=data.devObj.transportOfficeCity;
+ this.transportOfficeState= data.devObj.transportOfficeState;
+ this.manufacturingCompany= data.devObj.manufacturingCompany;
+ this.numberOfSOS = data.devObj.numberOfSOS ;
+ this.invoice_date= "";
+ this.chassisno=data.devObj.ChassisNo;
+ this.invoice_number=data.devObj.invoiceNumber;
+ this.UIDnumber=data.devObj.uniqueID;
+ this.iccidNo=data.devObj.ICCICD;
+ this.Imsi = data.devObj.IMSI ;
+ this.CIDNO = data.devObj.CID_No;
+ console.log("TPIN--",data.devObj.tpin);
+
+ if(data.devObj.tpin){
+ this.tpin=data.devObj.tpin
+ }
+ if(data.devObj.epin){
+ this.epin=data.devObj.epin
+ }
+ if(data.devObj.model){
+ this.models=data.devObj.model
+ }
+ if(data.devObj.transmission){
+ this.transmission=data.devObj.transmission
+ }
+
+ if(data.devObj.colour){
+ this.colour=data.devObj.colour
+ }
+ if(data.devObj.invoiceDate){
+ this.invoice_date = new Date(data.devObj.invoiceDate);
+ }
+ if(data.devObj.fitmentDate){
+ this.fitmentDate = new Date(data.devObj.fitmentDate);
+ }
+ if(data.devObj.lastFitnessDate){
+ this.lastFitnessDate = new Date(data.devObj.lastFitnessDate);
+ }
+ if(data.devObj.vehicleRegDate){
+ this.vehRegDate = new Date(data.devObj.vehicleRegDate)
+ }
+ if(data.devObj.vehicleManufacturingDate){
+ this.vehManufacturingYear = new Date(data.devObj.vehicleManufacturingDate);
+ }
+
+ if(data.sellsPerson){
+ this.sellsPerson =data.sellsPerson
+ }
+
+ // if(data.installer){
+ // this.installer =data.installer._id
+ // }
+
+ if(data.installer!=undefined){
+ this.installer= data.installer.first_name+" "+data.installer.last_name;
+ this.installerObj=data.installer._id
+ // {
+ // fullName:data.installer.first_name+" "+data.installer.last_name ,
+ // _id:data.installer._id
+ // }
+ // data.assigned_to;
+ }
+
+
+
+ // console.log("deviceId=>",this.id);
+ if(data.assigned_to==undefined){
+ this.userModel ={
+ user_type:"",
+ _id:""
+ }
+ }else{
+ this.userModel= {
+ user_type:data.assigned_to.first_name+" "+data.assigned_to.last_name ,
+ _id:data.assigned_to._id
+ }
+ // data.assigned_to;
+ }
+
+ if(data.vehicleType==undefined){
+ this.vehicleType ={
+ veh_type:"",
+ _id:""
+ }
+}else{
+ this.vehicleType= {
+ veh_type:data.vehicleType.brand+" "+data.vehicleType.model ,
+ _id:data.vehicleType._id
+ }
+ // data.vehicleType;
+}
+
+ if(data.mainmodel==undefined){
+ this.deviceModel={
+ device_type:"",
+ _id:""
+ }
+ }else{
+
+ this.deviceModel = {
+ device_type:data.mainmodel.device_type,
+ _id:data.mainmodel._id
+ }
+ data.mainmodel;
+ }
+
+
+
+ // console.log(this.speed);
+ for(let r=0;rchkDate){
+ console.log('expiration date should not be greater then current date');
+ swal(
+ 'Expiration Date Error',
+ 'Expiration date should not be greater then current date',
+ 'error'
+ )
+ // let error = "dateError"
+ // this.tost1(error);
+ this.errorField =true;
+
+ }else{
+
+ // console.log(this.device_Model);
+ // console.log(this.userModel);
+ // console.log(this.vehicleType);
+
+ let cust;
+ var outerThis=this;
+ var model = _.find(this.newArr, function(o) {
+ if(o._id ==outerThis.deviceModel._id){
+ return o;
+ }
+ });
+
+ // let user2 = _.find(this.newUserArr, function(p) {
+ // if(p._id ==outerThis.userModel._id){
+ // return p;
+ // }
+ // });
+
+
+ let vType = _.find(this.vehName, function(q) {
+ if(q._id ==outerThis.vehicleType._id){
+ return q;
+ }
+ });
+
+
+ if(this.dataSelect2.length!=0){
+ console.log("==",this.dataSelect2[0]._id,model);
+
+ this.deviceInformation.device_model=this.dataSelect2[0]._id
+ }else{
+ this.deviceInformation.device_model = model._id
+ }
+
+ if(this.dataSelect1.length!=0){
+ vType=this.dataSelect1[0]._id
+ }else{
+ this.deviceInformation.vehicleType = vType._id
+ }
+
+ // console.log("userObj=>",this.dataSelect);
+
+ if (this.dataSelect.length!=0) {
+
+ cust = this.dataSelect[0]._id;
+
+ }else{
+
+ cust = this.custId;
+ }
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ // if(user2==undefined){
+ // cust = this.custId;
+ // }else{
+ // cust= user2._id;
+ // }
+
+ // console.log("costumerDetail=>",cust);
+ if (this.custtype == true) {
+ var owner = this.useridd;
+ } else {
+ var owner = this.useridd;
+ }
+ this.deviceInformation = {
+ _id: this.id,
+ devicename: this.dname,
+ des: this.desc,
+ sim: this.sim,
+ deviceid: this.dev_IMEI,
+ // iconType:this.neww.value,
+ speed: this.speed,
+ user: cust,
+ drname: this.drname,
+ dphone: this.dcontact,
+ vehicleGroup: this.device_Id,
+ updatedBy: owner,
+ device_model: this.device_type?this.device_type:this.deviceModel._id,
+ vehicleType:this.vehicle_Type?this.vehicle_Type:this.vehicleType._id,
+ Dealer:this.DealerId,
+ deviceDistanceVariation:this.selcetedSign+(this.deviceDistanceVariation?this.deviceDistanceVariation:'0')
+ // tpin:this.tpin,
+ // epin:this.epin
+ }
+
+ // expdate: new Date(this.expDate)
+ // var ed = new Date(this.expDate);
+ // var ced = new Date(this.Cloned_exp_date);
+ // var difference = ed.getTime() - ced.getTime() ;
+ // var hour = (difference / (60 * 60 * 1000));
+ // var diff_hr = Math.round(hour);
+ // console.log('diff_hr',diff_hr);
+ // if (diff_hr > 24) {
+ let rnw_by;
+ this.deviceInformation['expdate'] = new Date(this.expDate) ;
+ let sAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ let orgName = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation ;
+ let s_Admin = localStorage.getItem('superadmin');
+ // superAdminToken
+ console.log('sAdmin',sAdmin);
+ console.log('orgName',orgName);
+
+ if((sAdmin === true)||(orgName === true)||(s_Admin === 'ON')){
+ this.deviceInformation['renew_by'] = this.useridd;
+
+ }else{
+ console.log("In Else block");
+
+ let sAdminId = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._id ;
+ this.deviceInformation['renew_by'] = sAdminId;
+
+ }
+ // }
+ if(this.tpin){
+ this.deviceInformation['tpin'] = this.tpin;
+ }
+ if(this.epin){
+ this.deviceInformation['epin'] = this.epin;
+ }
+ if(this.colour){
+ this.deviceInformation['colour'] = this.colour;
+ }
+ if(this.transmission){
+ this.deviceInformation['transmission'] = this.transmission;
+ }
+ if(this.models){
+ this.deviceInformation['models'] = this.models;
+ }
+
+ if(this.integrationIdPresent){
+ this.deviceInformation['integrationId'] = this.IntegrationId;
+ }else{
+ if(this.IntegrationId)
+ this.deviceInformation['integrationId'] = this.IntegrationId;
+ }
+
+ if(this.sim2 == undefined){
+ this.deviceInformation;
+ }else{
+ this.deviceInformation['sim_number2'] = this.sim2;
+ }
+ if(this.SIM_provider2 == undefined){
+ this.deviceInformation;
+ }else{
+ this.deviceInformation['sim_provider2'] = this.SIM_provider2;
+ }
+
+ if(this.EngineNo){
+ this.deviceInformation['engineNo'] = this.EngineNo;
+ }
+
+ if(this.CIDNO){
+ this.deviceInformation['CID_No'] = this.CIDNO;
+ }
+ if(this.typeofVeh){
+ this.deviceInformation['typeOfVehicle'] = this.typeofVeh;
+ }
+
+ if(this.manufacturingCompany){
+ this.deviceInformation['manufacturingCompany'] = this.manufacturingCompany;
+ }
+ if(this.UIDnumber){
+ this.deviceInformation['uniqueID'] = this.UIDnumber;
+ }
+ if(this.iccidNo){
+ this.deviceInformation['ICCICD'] = this.iccidNo;
+ }
+ if(this.Imsi){
+ this.deviceInformation['IMSI'] = this.Imsi;
+ }
+
+ if(this.vehRegDate){
+ this.deviceInformation['vehicleRegDate'] = new Date(this.vehRegDate);
+ }
+
+ if(this.vehManufacturingYear){
+ this.deviceInformation['vehicleManufacturingDate'] = new Date(this.vehManufacturingYear);
+ }
+
+ if(this.lastFitnessDate){
+ this.deviceInformation['lastFitnessDate'] = new Date(this.lastFitnessDate);
+ }
+
+ if(this.fitmentDate){
+ this.deviceInformation['fitmentDate'] = new Date(this.fitmentDate);
+ }
+
+ if(this.invoice_date){
+ this.deviceInformation['invoice_date'] = this.invoice_date;
+ }
+ if(this.chassisno){
+ this.deviceInformation['ChassisNo'] =this.chassisno
+
+ }
+ if(this.invoice_number){
+ this.deviceInformation['invoiceNumber'] = this.invoice_number
+
+ }
+
+ if(this.companyName){
+ this.deviceInformation['companyName'] = this.companyName;
+ }
+ if(this.companyAddress){
+ this.deviceInformation['companyAddress'] = this.companyAddress;
+ }
+ if(this.transportOfficeCity){
+ this.deviceInformation['transportOfficeCity'] = this.transportOfficeCity;
+ }
+ if(this.transportOfficeState){
+ this.deviceInformation['transportOfficeState'] = this.transportOfficeState;
+ }
+
+ if(this.numberOfSOS){
+ this.deviceInformation['numberOfSOS'] = this.numberOfSOS;
+ }
+ // if(user2){
+ // this.deviceInformation.user = cust;
+ // }
+ // console.log(this.deviceInformation.user);
+ if(this.SIM_provider==undefined){
+ this.deviceInformation;
+ }else{
+ this.deviceInformation.sim_provider = this.SIM_provider;
+ }
+
+ if(this.totalODO){
+ this.deviceInformation.total_odo= this.totalODO
+ }
+
+ if(this.sellsPerson){
+ this.deviceInformation['sellsPerson']=this.sellsPerson;
+ }
+ if(this.installerObj){
+ this.deviceInformation['installer'] =this.installerObj
+ }
+ if(this.groupInfo){
+ this.deviceInformation['groupName'] =this.groupInfo.GroupName
+ }
+
+ console.log("INFO==",this.deviceInformation);
+ this.contactService.editdevice(this.deviceInformation)
+ .subscribe(device => {
+ window.localStorage['DataUpdate'] = 'True'
+ this.sidebar.sidebarData()
+ this.onNoClick("done");
+ this.devices.push(device);
+ }, (err: any) => {
+ if(err.status==401){
+ swal(
+ "Access Denied !!"
+ )
+ }else{
+ var errorMsgShow = "Internal Server Error, Please try after Sometime !!!"
+ var ErrorMsgHead = "Server Error";
+ var errormsg = JSON.parse(err._body).errmsg.split(':')[2] ;
+ if(errormsg){
+ errorMsgShow = errormsg ;
+ ErrorMsgHead = "Duplicate Entry" ;
+ console.log("handle Error =>",errormsg);
+ }
+ this._flashMessagesService.show(errorMsgShow, { cssClass: 'alert-warning', timeout: 2000 });
+ swal(
+ 'Duplicate IMEI',
+ "Device IMEI is already used",
+ 'error'
+ )
+
+ }
+
+
+ }
+ );
+ }
+
+ }
+ groups=[]
+ useridd:any;
+ getDealerId:any;
+
+ ngOnInit() {
+ console.log('data=>',this.mainData);
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.getDealerId = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).Dealer_ID ;
+ this.custId = localStorage.getItem('custId');
+ this.dealerStatus = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.organisation = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isOrganisation
+ this.superadminAccess = localStorage.getItem('superadmin');
+ // console.log("costumerID=>",this.custId);
+ this.groups=[];
+ this.contactService.getGroup(this.useridd).subscribe(
+ res => {
+ // console.log("grpDetails=>",res);
+
+ this.group_info = res["group_details"];
+ // console.log(this.group_info.length);
+
+ for(var i = 0;i{
+ // console.log("abinash")
+ console.log(res);
+ this.device_Model=res;
+ // console.log( "thisisdeviceModel",this.device_Model);
+ let dummyData=[]
+ for(var i=0;i{
+ console.log("Alluserobject",res);
+ this.costumers = res;
+ // console.log(this.costumers)
+ this.dummyuserData=[]
+ for(var i=0;i{
+ this.dataSelect=[]
+ this.costumers=[]
+ })
+ }
+
+ dataSelect=[];
+ dataSelect1=[];
+ dataSelect2=[];
+ option:any;
+ selectedUser:any;
+ vehicle_Type:any;
+ device_type:any
+ filterStates(val) {
+ console.log(val)
+ // console.log(this.dummyuserData)
+ if (val) {
+ const filterValue: any = val.user_type ;
+ this.dataSelect = this.dummyuserData.filter(function (d) {
+ // console.log("inside Search Method=>",d);
+ return d.user_type.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase()) > -1;
+ });
+ return this.dataSelect;
+ }
+
+ console.log("searched user=>",this.dataSelect);
+ }
+
+filterStatess(val) {
+ console.log("===>",val)
+ if (val) {
+ const filterValue: any = val.veh_type ;
+ this.dataSelect1 = this.vehName.filter(function (d) {
+ // console.log("inside Search Method=>",d);
+ return d.veh_type.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase())>-1;
+ });
+ if(this.dataSelect1.length!=0){
+ this.vehicle_Type=this.dataSelect1[0]._id
+ console.log("searched vehical=>",this.dataSelect1,"----------",this.vehicle_Type);
+ }
+ return this.dataSelect1;
+ }
+
+ }
+
+
+
+filterStates1(val) {
+ console.log("===>",val)
+ if (val) {
+ const filterValue: any = val.device_type ;
+ this.dataSelect2 = this.newArr.filter(function (d) {
+ // console.log("inside Search Method=>",d);
+ return d.device_type.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase())>-1;
+ });
+ if(this.dataSelect2.length!=0){
+ for(var i=0;i",this.dataSelect2,"----------",this.device_type);
+ }
+ return this.dataSelect2;
+ }
+ }
+ filtergrpStatess12(val) {
+ console.log(val)
+ if (val) {
+// this.userDetail=undefined
+ const filtergrpValue:any = val;
+
+ this.installerSelect=[];
+ this.installerSelect = this.installerData.filter(function(g){
+ var c = (g.first_name).toLocaleLowerCase().indexOf(filtergrpValue.toLocaleLowerCase());
+ // this.option = this.options[i];
+ console.log("TESTINg",c)
+ return c > -1;
+ });
+ if(this.installer){
+ for(let i=0;i",val)
+ // if (val) {
+ // const filterValue: any = val;
+ // this.dataSelect1 = this.installerData.filter(function (d) {
+ // // console.log("inside Search Method=>",d);
+ // return d.veh_type.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase())>-1;
+ // });
+ // if(this.dataSelect1.length!=0){
+ // this.vehicle_Type=this.dataSelect1[0]._id
+ // console.log("searched vehical=>",this.dataSelect1,"----------",this.vehicle_Type);
+ // }
+ // return this.dataSelect1;
+ // }
+
+ // }
+
+// filterStates1(val) {
+// console.log("===>",val)
+// if (val) {
+// const filterValue: any = val.device_type ;
+// this.dataSelect2 = this.newArr.filter(function (d) {
+// // console.log("inside Search Method=>",d);
+// return d.device_type.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase())>-1;
+// });
+// if(this.dataSelect2.length!=0){
+// this.device_type=this.dataSelect2[0]._id
+// console.log("searched model=>",this.dataSelect2,"----------",this.device_type);
+// }
+// return this.dataSelect2;
+// }
+// }
+ filtergrpStates3(val) {
+
+ console.log(val)
+ // console.log(this.options)
+ this.userModel.user_type=undefined
+ if (val) {
+
+ const filtergrpValue:any = val;
+
+ this.dealerSelect=[];
+ this.dealerSelect = this.dealers_info.filter(function(g){
+ var c = (g.first_name).toLocaleLowerCase().indexOf(filtergrpValue.toLocaleLowerCase());
+ // this.option = this.options[i];
+ return c > -1;
+ });
+ console.log(this.dealerData);
+
+ for(let i=0;i {
+ this.dealers_info = res;
+ this.DealerId=this.data.devObj.Dealer?this.data.devObj.Dealer._id:this.data.devObj.Dealer
+ if(res.length!=0){
+ for(let i=0;i {
+ this.dealers_info=[];
+
+ })
+
+ }
+
+
+ vehData:any;
+ dummyVehData=[]
+ vehName = [];
+ getvehDetail(){
+ this.contactService.getvehType(this.useridd)
+ .subscribe(res=>{
+ // console.log(res);
+ this.vehData=res;
+ this.dummyVehData = [];
+ // console.log("allveh",this.vehData);
+ for(var i=0;i{
+ this.installerData=res;
+ for(let i=0;i{
+ this.RTOData=res
+ })
+ }
+
+filtergrpStatess2(val) {
+ console.log(val)
+ if (val) {
+// this.userDetail=undefined
+ const filtergrpValue:any = val;
+
+ this.RTOSelect=[];
+ this.RTOSelect = this.RTOData.filter(function(g){
+
+ var c = (g.RTO_Code).toLocaleLowerCase().indexOf(filtergrpValue.toLocaleLowerCase());
+ // this.option = this.options[i];
+ console.log("TESTINg",c)
+ return c > -1;
+ });
+ if(this.RTO){
+ for(let i=0;iShare Device
+Device Name: {{dname}}
+Sharing with:
+
+
+
+
+
+
+
+ Cancel
+ Share
+
+
+
diff --git a/src/app/dashboard/device-share/device-share.component.scss b/src/app/dashboard/device-share/device-share.component.scss
new file mode 100644
index 0000000..239f91a
--- /dev/null
+++ b/src/app/dashboard/device-share/device-share.component.scss
@@ -0,0 +1,92 @@
+
+ /* Toast Msg */
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 50px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img{
+ width: 50px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+}
+
+
+@-webkit-keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+
+@keyframes expand {
+ from {min-width: 50px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+
+@keyframes stay {
+ from {min-width: 350px}
+ to {min-width: 350px}
+}
+@-webkit-keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@keyframes shrink {
+ from {min-width: 350px;}
+ to {min-width: 50px;}
+}
+
+@-webkit-keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
+
+@keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 60px; opacity: 0;}
+}
\ No newline at end of file
diff --git a/src/app/dashboard/device-share/device-share.component.spec.ts b/src/app/dashboard/device-share/device-share.component.spec.ts
new file mode 100644
index 0000000..3e61b7a
--- /dev/null
+++ b/src/app/dashboard/device-share/device-share.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeviceShareComponent } from './device-share.component';
+
+describe('DeviceShareComponent', () => {
+ let component: DeviceShareComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeviceShareComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeviceShareComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/device-share/device-share.component.ts b/src/app/dashboard/device-share/device-share.component.ts
new file mode 100644
index 0000000..344c829
--- /dev/null
+++ b/src/app/dashboard/device-share/device-share.component.ts
@@ -0,0 +1,85 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {Device} from '../../device';
+import {ContactService} from '../../contact.service';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { SidebarComponent } from '../../sidebar/sidebar.component';
+
+
+@Component({
+ selector: 'app-device-share',
+ templateUrl: './device-share.component.html',
+ styleUrls: ['./device-share.component.scss'],
+ providers: [ContactService,SidebarComponent]
+})
+export class DeviceShareComponent implements OnInit {
+dname:any;
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,private _flashMessagesService: FlashMessagesService,public sidebar :SidebarComponent) {
+
+ //console.log(data)
+ this.dname = data.name
+ this.did = data.did
+ console.log(this.did)
+ }
+ onNoClick(a): void {
+ // console.log(a);
+ this.dialogRef.close(a);
+ }
+ ShareRecord(){
+
+
+ if(this.email == null || this.email == undefined){
+ this._flashMessagesService.show('Blank Email ID or Mobile Number', { cssClass: 'alert-danger', timeout: 1500 });
+
+ }
+ else if(this.email){
+ this.contactService.ShareDevice(this.email,this.useridd,this.did).subscribe(
+
+ data => {
+ this.device_data = data
+ window.localStorage['DataUpdate'] = 'True'
+ this.sidebar.sidebarData()
+ this.onNoClick("OK");
+
+
+ }, (err: any) => {
+ // console.log(err.status);
+ // console.log(err);
+ if(err.status != 200)
+ {
+
+ //console.log(this.mess);
+ this._flashMessagesService.show( "Invalid Email ID or Mobile Number", { cssClass: 'alert-danger', timeout: 1000 });
+
+ }
+ }
+
+
+ );
+
+ }
+ }
+ fs :any;
+ ls :any;
+ emailid :any;
+ or :any;
+ useridd:any;
+ device_data:any;
+ email:any;
+ did:any;
+ devicess:any;
+ final:any;
+ contact:any;
+ foods = []
+ ngOnInit() {
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+
+
+ }
+
+}
diff --git a/src/app/dashboard/download-certificate/download-certificate.component.html b/src/app/dashboard/download-certificate/download-certificate.component.html
new file mode 100644
index 0000000..8224dc8
--- /dev/null
+++ b/src/app/dashboard/download-certificate/download-certificate.component.html
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RTO COPY
+
+
+
+
+
+
+
+
+
+
+ .
+
+
+
+
+ TAC Reg.No
+ CoP No.
+ CoP Validity upto
+ Fitment Date
+ Fitment Renewal Date
+
+
+ : CK8077
+ : CC0GP8551
+ : 30 September 2022
+ : {{ kycApprovalDate ? (kycApprovalDate | date: "dd/MM/yyyy") : ""
+ }}
+ : {{ esim_validity ? esim_validity : "" }}
+
+
+
+
+
+ AIS 140 COMPLIANCE VLT INSTALLATION CERTIFICATE
+
+
+
+
+
+ Fitment Certificate No.
+ Chassis No.
+ Engine No.
+ Vehicle OEM
+ Vehicle Model
+ Vehicle Reg/temp
+ Voltage
+ Panic Button Model
+ Panic Button fitted
+ Dealer Name/fitted by
+ Device Model No.
+ GNSS Module
+ Vahan ID
+ Device IMEI
+ GSM Module
+ ICCID
+ Primary SIM
+ Primary SIM Valid till
+ Secondary SIM
+ Secondary SIM Valid till
+
+
+ : {{ fitmentCertificateNo ? fitmentCertificateNo : "" }}
+ : {{ ChassisNo ? ChassisNo : "" }}
+ : {{ engineNo ? engineNo : "" }}
+ : {{ manufacturingCompany ? manufacturingCompany : "" }}
+ : {{ model ? model : "" }}
+ : {{ devName ? devName : "" }}
+ : 12V & 24V
+ : NSS-1821
+ : {{ numberOfSOS ? numberOfSOS : "" }}
+ : {{ dealerName ? dealerName : "" }}
+ : {{ devicetype ? devicetype : "" }}
+ : {{ gnnsModule ? gnnsModule : 0 }}
+ : {{ vahanID ? vahanID : "" }}
+ : {{ deviceID ? deviceID : "" }}
+ : {{ gsmModule ? gsmModule : "Telit GE910" }}
+ : {{ ICCICD ? ICCICD : "" }}
+ : {{ simNum ? simNum : "" }}
+ : {{ expiration_date ? (expiration_date | date: "dd/MM/yyyy") : ""
+ }}
+ : {{ simNum1 ? simNum1 : "" }}
+ : {{ expiration_date ? (expiration_date | date: "dd/MM/yyyy") : ""
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is certified that, AIS 140 compliant vehicle location tracking
+ device with panic button(SOS) has been installed properly as per
+ AIS-140 guidelines device has been configured to state approval server
+
+
+
+
+ Authorised
+
+
+ Undertaking
+
+
+
+
+ This is certified that the device and panic button (SOS) installation
+ has been carried out to my satisfaction and explained about the
+ functionality of Device, I undertake that I will not temper the device
+ and panic button (SOS)
+
+
+
+
+
+ Customer Name : {{ user.first_name ? user.first_name : "" }}
+ {{ user.last_name ? user.last_name : "" }}
+ Contact/Login ID : {{ user.phone ? user.phone : "" }}
+
+
+
+ Customer Address: {{ user.address ? user.address : "" }}
+ Customer Sign :
+
+
+
+
+
+ Cancel
+ Export PDF
+
diff --git a/src/app/dashboard/download-certificate/download-certificate.component.scss b/src/app/dashboard/download-certificate/download-certificate.component.scss
new file mode 100644
index 0000000..cf60048
--- /dev/null
+++ b/src/app/dashboard/download-certificate/download-certificate.component.scss
@@ -0,0 +1,4 @@
+.html2canvas-container {
+ width: 3000px !important;
+ height: 3000px !important;
+}
diff --git a/src/app/dashboard/download-certificate/download-certificate.component.spec.ts b/src/app/dashboard/download-certificate/download-certificate.component.spec.ts
new file mode 100644
index 0000000..c232b32
--- /dev/null
+++ b/src/app/dashboard/download-certificate/download-certificate.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DownloadCertificateComponent } from './download-certificate.component';
+
+describe('DownloadCertificateComponent', () => {
+ let component: DownloadCertificateComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DownloadCertificateComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DownloadCertificateComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/download-certificate/download-certificate.component.ts b/src/app/dashboard/download-certificate/download-certificate.component.ts
new file mode 100644
index 0000000..8af0400
--- /dev/null
+++ b/src/app/dashboard/download-certificate/download-certificate.component.ts
@@ -0,0 +1,547 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+declare var jsPDF : any;
+declare var html2canvas:any;
+import * as moment from 'moment';
+import { ContactService } from '../../contact.service';
+declare var $: any;
+declare var QRious:any;
+@Component({
+ selector: 'app-download-certificate',
+ templateUrl: './download-certificate.component.html',
+ styleUrls: ['./download-certificate.component.scss']
+})
+export class DownloadCertificateComponent implements OnInit {
+devName:any;
+ img1='/assets/images/liveTrackIcons/noImageAvailableIcon.jpg'
+ stamp='/assets/images/liveTrackIcons/Stamp.png'
+phNum:any;
+createdOn:any;
+expOn:any;
+supAdmin
+DealerObj = [];
+userObj = [];
+// iconType:any;
+simNum:any;
+todayODO:any;
+totalODO:any;
+useridd: any;
+emailId:any ="";
+costumers: any = [];
+deviceID: any;
+userName:any;
+devmodel:any;
+newUserArr=[];
+editTemplate:boolean=true;
+deletetemplate:boolean=false;
+ orignalEmail: any;
+ initialUser: any;
+ ExportPdf: boolean;
+ devID: any;
+ InvoiceDate: any;
+ devicetype: any;
+ fitmentDate: any;
+ engineNo: any;
+ typeOfVehicle: any;
+ manufacturingCompany: any;
+ lastFitnessDate: any;
+ vehicleRegDate: any;
+ vehicleManufacturingDate: any;
+
+ IMSI: any;
+ uniqueID: any;
+ lattitude: any;
+ longitude: any;
+ userAddress: any;
+ dealerAddress: any;
+ CID_No: any;
+ imgUrl: any;
+ imgURL: any;
+ companyName: any;
+ companyAddress: any;
+ transportOfficeCity: any;
+ transportOfficeState: { data: string; };
+ ChassisNo: any;
+ deviceManufacturer: any;
+ invoiceNum: any;
+ numberOfSOS: any;
+ expiration_date: any;
+ organisationFlag: any;
+ distributerName:any;
+ distSelect: any=[];
+ superAdmin: any;
+ isDealer: any;
+ dealerId: any;
+ lastPingOn:any
+ lastDeviceTime:any
+ deviceImage=[];
+ dealerName
+ installationDate;
+ ICCICD
+ simNum1
+ model
+ user: any;
+ org
+ link: string;
+ kycApprovalDate
+ esim_validity;
+ fitmentCertificateNo
+ vahanID: any;
+ myImage: HTMLImageElement;
+ myImage1: HTMLImageElement;
+ myImage2: HTMLImageElement;
+ stamp1: HTMLImageElement;
+ img: HTMLImageElement;
+ gnnsModule
+ gsmModule
+ constructor(public dialogRef: MdDialogRef,private contactService:ContactService,
+ @Inject(MD_DIALOG_DATA) public data: any ) {
+ console.log(data);
+
+ }
+
+ ngOnInit() {
+ this.org=JSON.parse(localStorage.getItem('ORG'))
+ if(!this.data.deviceInfo.esim_validity){
+ if(this.data.deviceInfo.License=="Yearly"){
+ this.esim_validity=this.data.deviceInfo.kycApprovalDate?moment(new Date(this.data.deviceInfo.kycApprovalDate), "DD-MM-YYYY").add(1, 'years').format("DD/MM/YYYY"):undefined;
+ }
+ }else{
+ this.esim_validity=this.data.deviceInfo.esim_validity?moment(new Date(this.data.deviceInfo.esim_validity)).format("DD/MM/YYYY"):undefined
+ }
+ this.fitmentCertificateNo=this.data.deviceInfo.fitmentCertificateNo;
+ this.ChassisNo=this.data.deviceInfo.ChassisNo;
+ this.lastDeviceTime=this.data.deviceInfo.last_device_time;
+ this.numberOfSOS=this.data.deviceInfo.numberOfSOS
+ this.kycApprovalDate=this.data.deviceInfo.kycApprovalDate
+ this.model=this.data.deviceInfo.Model
+ this.lastPingOn=this.data.deviceInfo.last_ping_on
+ this.devName = this.data.deviceInfo.Device_Name;
+ this.devID = this.data.deviceInfo.Device_ID?this.data.deviceInfo.Device_ID:"";
+ this.phNum =this.data.deviceInfo.contact_number;
+ this.createdOn = this.data.deviceInfo.created_on?(new Date(this.data.deviceInfo.created_on).toISOString()):"";
+ this.expOn = this.data.deviceInfo.expiration_date?(new Date(this.data.deviceInfo.expiration_date).toISOString()):"";
+ // this.iconType=this.data.deviceInfo.iconType;
+ this.simNum =this.data.deviceInfo.sim_number;
+ this.simNum1 =this.data.deviceInfo.sim_number2;
+ this.orignalEmail = this.data.deviceInfo.Email_ID
+ this.emailId = this.data.deviceInfo.Email_ID;
+ this.deviceImage=this.data.deviceInfo.deviceImage
+ if(this.org.imageDoc && this.org.imageDoc.length>0){
+ this.org.imageDoc='https://www.oneqlik.in' + this.org.imageDoc[0].substring(6)
+ }
+
+ this.supAdmin=this.data.deviceInfo.supAdmin;
+ if(this.supAdmin.imageDoc && this.supAdmin.imageDoc.length>0){
+ this.supAdmin.imageDoc='https://www.oneqlik.in' + this.supAdmin.imageDoc[0].substring(6)
+ }
+ console.log(this.deviceImage);
+ this.installationDate=this.data.deviceInfo.created_on
+ this.todayODO=this.data.deviceInfo.today_odo;
+ this.totalODO =this.data.deviceInfo.total_odo;
+ this.deviceID = this.data.deviceInfo.Device_ID;
+ this.initialUser = this.data.deviceInfo.user._id;
+ this.user=this.data.deviceInfo.user
+ this.userName = this.data.deviceInfo.OwnerName;
+ this.userAddress = this.data.deviceInfo?this.data.deviceInfo.user.address:"";
+ this.dealerName = this.data.deviceInfo.Dealer_name ;
+ this.dealerId = this.data.deviceInfo.Dealer?this.data.deviceInfo.Dealer._id : "";
+ console.log('this.dealerId',this.dealerId);
+ this.dealerAddress = this.data.deviceInfo.DealerAddress;
+ this.InvoiceDate = this.data.deviceInfo.invoiceDate?(new Date(this.data.deviceInfo.invoiceDate).toISOString()):"";
+ this.invoiceNum = this.data.deviceInfo.invoiceNumber
+ this.CID_No = this.data.deviceInfo.CID_No
+ this.devicetype = this.data.deviceInfo.device_model?this.data.deviceInfo.device_model.device_type:"";
+ if(this.devicetype=="Nippon-NVT-1820"){
+ this.gsmModule='Telit GE910'
+ }else if(this.devicetype=="Nippon-NVT-1820"){
+ this.gnnsModule="Telit, Jupiter SL869T3-| Nav|C/IRNSS";
+ this.gsmModule='Telit GE910'
+ }else{
+ this.gnnsModule="Quectel L89(GPS+IRNSS)";
+ this.gsmModule='Quectel M66'
+ }
+
+ for(var i=0;i {
+ that.myImage.onload = function(){
+ console.log("1");
+ };
+ // var isLoaded = this.myImage.complete && this.myImage.naturalHeight !== 0;
+ // if(isLoaded)
+ resolve('');
+ });
+}
+
+function f3(){
+ that.myImage2.onload = function(){
+ console.log("3");
+
+ };
+}
+
+function f2() {
+ return new Promise((resolve, reject) => {
+ that.myImage1.onload = function(){
+ console.log("2");
+ // doc.addImage(myImage1 , 'png', 80, 170, 30, 20);
+ // if(that.deviceImage.length==2){
+ // doc.save(name);
+ // }
+ };
+ // var isLoaded = this.myImage1.complete && this.myImage1.naturalHeight !== 0;
+ // if(isLoaded)
+ resolve('');
+ })
+
+}
+f1().then(res => f2().then(res1=>f3()));
+
+
+
+
+
+ }
+ getLocationLink(){
+ var data = {
+ id: this.data.deviceInfo._id,
+ imei: this.data.deviceInfo.Device_ID,
+ sh: this.data.deviceInfo.user._id,
+ ttl: 15*60
+ };
+
+ this.contactService.shareLiveLocation(data).subscribe(res=>{
+ console.log(res);
+ console.log('shareToken',res);
+ this.link = 'http://nipponsecura.in' + "/share/liveShare?t=" + res.t;
+ console.log(this.link);
+ // this.shareLocationToDevice(link);
+ this.qrCodeGenerator()
+ },err=>{
+ console.log(err);
+ })
+ }
+ qrCodeGenerator() {
+
+ var qr = new QRious();
+ qr.set({
+ // background: 'green',
+ backgroundAlpha: 0.8,
+ // foreground: 'blue',
+ foregroundAlpha: 0.8,
+ level: 'L',
+ padding: 25,
+ size: 500,
+ value: this.link
+ });
+
+
+ this.imgURL= qr.toDataURL();
+
+
+
+ }
+ exportAsPdf() {
+ var that=this
+ var name="Installation Certificate "+this.devName?this.devName:"Test"+".pdf"
+ console.log(this.imgURL);
+ var doc = new jsPDF();
+ var specialElementHandlers = {
+ '#editor': function (element: any, renderer: any) {
+ return true;
+ }
+ };
+ var stamp=new Image();
+ stamp.src=that.stamp;
+ stamp.crossOrigin="anonymous";
+ // stamp.onload = function(){
+ console.log("0");
+ doc.addImage(that.stamp1 , 'png', 15,210,30,30)
+ // };
+ var img = new Image();
+ img.src = this.org.imageDoc?this.org.imageDoc:'';
+ img.crossOrigin="anonymous";
+ // if(this.org.imageDoc){
+ // img.onload = function(){
+ console.log("-1");
+ doc.addImage(that.img , 'png', 15, 9,50,40)
+
+ // };
+ // doc.text("Customer Copy", 110, 12);
+ doc.setFontSize(3);
+ doc.autoTable({
+ theme: 'plain',
+ html: '#testPdf',
+
+ tableWidth: 'auto',
+
+ // styles : {
+ // cellWidth : 10,
+ // overflow: "linebreak"
+ // },
+ willDrawCell: data => {
+ if(data.row.index === 0){
+ data.row.height = 30;
+ doc.setFontStyle('bold');
+ data.row.cells[0].styles.halign = 'center';
+ data.row.cells[0].styles.fontSize = 25;
+ data.row.cells[0].styles.overflow= "linebreak"
+ data.row.cells[0].styles.lineHeight= "2.5";
+ // doc.setLineHeightFactor()
+
+ // }
+
+ // doc.addImage(this.supAdmin.imageDoc,'JPEG', 140, 9,40,40);
+
+ doc.addImage(this.imgURL,'JPEG',150, 9,50,40);
+
+ }
+ if(data.row.index ===1 ){
+ // data.row.cells[0].styles.halign = 'center';
+ doc.halign = 'center';
+ doc.setFontStyle('bold');
+ doc.cellPadding=60
+ }
+
+ if(data.row.index ===3 ){
+ // data.row.cells[0].styles.halign = 'center';
+ doc.halign = 'center';
+
+ }
+ if( data.row.index ===6){
+ // data.row.cells[0].styles.halign = 'center';
+ doc.halign = 'center';
+
+ }
+
+ if((data.row.index ===1) ||(data.row.index ===3) || (data.row.index ===5) || (data.row.index ===7) ||(data.row.index ===8) ||(data.row.index ===11) || (data.row.index ===13)){
+ doc.setFontStyle('bold');
+
+ }
+ if(data.row.index ===5){
+ data.row.height = 30;
+ // data.row.cells[0].styles.halign = 'center';
+ // doc.halign = 'center';
+ }
+
+ if(data.row.index ===6){
+ data.row.height = 45;
+ // data.row.cells[0].styles.halign = 'center';
+ // doc.halign = 'center';
+ }
+ doc.setLineWidth(1);
+ doc.rect(7, 7, 195, 285);
+
+ }
+
+ });
+
+
+ // var myImage = new Image();
+ // myImage.src = that.deviceImage[0]?that.deviceImage[0]:this.img1;
+ // myImage.crossOrigin="anonymous";
+
+ // var myImage1 = new Image();
+ // myImage1.src = that.deviceImage[1]?that.deviceImage[1]:this.img1;
+ // myImage1.crossOrigin="anonymous";
+
+ // var myImage2 = new Image();
+ // myImage2.src = that.deviceImage[2]?that.deviceImage[2]:this.img1;
+ // myImage2.crossOrigin="anonymous";
+
+ // var stamp=new Image();
+ // stamp.src=that.stamp;
+ // stamp.crossOrigin="anonymous";
+
+ // var img = new Image();
+ // img.src = this.org.imageDoc?this.org.imageDoc:'';
+ // img.crossOrigin="anonymous";
+ function f1() {
+ return new Promise((resolve, reject) => {
+ console.log("1");
+ doc.addImage(that.myImage , 'png', 40, 170, 30, 20);
+ resolve('');
+ })
+ }
+
+ function f2() {
+ return new Promise((resolve, reject) => {
+ console.log("2");
+ doc.addImage(that.myImage1 , 'png', 80, 170, 30, 20);
+ resolve('');
+ })
+ }
+
+ function f3(){
+// myImage2.onload = function(){
+ console.log("3");
+
+ doc.addImage(that.myImage2 , 'png', 120, 170, 30, 20);
+ doc.save(name);
+
+}
+// function f1() {
+// return new Promise((resolve, reject) => {
+// myImage.onload = function(){
+// console.log("1");
+// doc.addImage(myImage , 'png', 40, 170, 30, 20);
+
+
+// };
+// var isLoaded = myImage.complete && myImage.naturalHeight !== 0;
+// if(isLoaded)
+// resolve('');
+// });
+// }
+
+// function f3(){
+// myImage2.onload = function(){
+// console.log("3");
+
+// doc.addImage(myImage2 , 'png', 120, 170, 30, 20);
+// doc.save(name);
+
+
+// };
+// }
+
+// function f2() {
+// return new Promise((resolve, reject) => {
+// myImage1.onload = function(){
+// console.log("2");
+// doc.addImage(myImage1 , 'png', 80, 170, 30, 20);
+// // if(that.deviceImage.length==2){
+// // doc.save(name);
+// // }
+// };
+// var isLoaded = myImage1.complete && myImage1.naturalHeight !== 0;
+// if(isLoaded)
+// resolve('');
+// })
+
+// }
+f1().then(res => f2().then(res1=>f3()));
+
+ }
+
+ toDataURL(url, callback) {
+ console.log(url);
+
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function () {
+ var reader = new FileReader();
+ reader.onloadend = function () {
+ callback(reader.result);
+ }
+ reader.readAsDataURL(xhr.response);
+ };
+ xhr.open('GET', url);
+ xhr.responseType = 'blob';
+ xhr.send();
+ }
+}
\ No newline at end of file
diff --git a/src/app/dashboard/e-chalan/e-chalan.component.html b/src/app/dashboard/e-chalan/e-chalan.component.html
new file mode 100644
index 0000000..3bd02d9
--- /dev/null
+++ b/src/app/dashboard/e-chalan/e-chalan.component.html
@@ -0,0 +1,67 @@
+
+
+
+
+
Loading…
+
+
+
+ {{'Chalan No.' | translate}}
+ {{'Date' | translate}}
+ {{'Owner' | translate}}
+ {{'Vehicle Class' | translate}}
+ {{'Status' | translate}}
+ {{'Payment Date' | translate}}
+ {{'Document No' | translate}}
+ {{'Payment Source' | translate}}
+ {{'Amount' | translate}}
+ {{'Offence' | translate}}
+ {{'View' | translate}}
+
+
+
+
+
+ {{item.challan_no}}
+ {{item.date_time | date:'medium'}}
+ {{item.owner_name}}
+ {{item.vehicle_class}}
+ {{item.challan_status}}
+ {{item.payment_date | date:'medium'}}
+ {{item.doc_no}}
+ {{item.payment_source}}
+ {{item.amount}}
+
+ {{item.offences[0].offence_name}}
+ N/A
+
+
+
+
+
+
+
+
+
+
+
No Data Found
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dashboard/e-chalan/e-chalan.component.scss b/src/app/dashboard/e-chalan/e-chalan.component.scss
new file mode 100644
index 0000000..5cd7ed5
--- /dev/null
+++ b/src/app/dashboard/e-chalan/e-chalan.component.scss
@@ -0,0 +1,49 @@
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img {
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc {
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 2s,
+ fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 4s,
+ fadeout 0.5s 4.5s;
+}
diff --git a/src/app/dashboard/e-chalan/e-chalan.component.spec.ts b/src/app/dashboard/e-chalan/e-chalan.component.spec.ts
new file mode 100644
index 0000000..9b32ad5
--- /dev/null
+++ b/src/app/dashboard/e-chalan/e-chalan.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EChalanComponent } from './e-chalan.component';
+
+describe('EChalanComponent', () => {
+ let component: EChalanComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ EChalanComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EChalanComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/e-chalan/e-chalan.component.ts b/src/app/dashboard/e-chalan/e-chalan.component.ts
new file mode 100644
index 0000000..357af8c
--- /dev/null
+++ b/src/app/dashboard/e-chalan/e-chalan.component.ts
@@ -0,0 +1,75 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+declare var $: any;
+@Component({
+ selector: 'app-e-chalan',
+ templateUrl: './e-chalan.component.html',
+ styleUrls: ['./e-chalan.component.scss']
+})
+export class EChalanComponent implements OnInit {
+ tabelObj: any ;
+ Load: boolean;
+ main=[];
+
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService) {
+ // this.main=this.data
+ // this.testTable()
+
+ console.log(data);
+
+ }
+
+ ngOnInit() {
+ this.getechalanHistory()
+ }
+
+ getechalanHistory(){
+ this.Load=true
+ this.contactService.get('/eChalan/getEchalanByVehicleName?vName='+(this.data.dname).replace(/\s/g,'')).subscribe((res:any)=>{
+ if(res.length>0){
+ this.main=res;
+ this.Load=false
+ }else{
+ this.data_descip = res.message;
+ launch_toast();
+ this.Load=false
+
+ }
+ })
+
+ function launch_toast() {
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+}
+ }
+
+
+data_descip
+fetchNewChalan(){
+ this.contactService.get('/eChalan/getEchalan?vName='+(this.data.dname).replace(/\s/g,'')).subscribe((res:any)=>{
+ // console.log(res);
+ if(res.length>0){
+ this.main=res;
+ this.Load=false
+ }else{
+ this.data_descip = res.message;
+ launch_toast();
+ this.Load=false
+
+ }
+ })
+
+ function launch_toast() {
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+}
+}
+
+
+}
diff --git a/src/app/dashboard/general-settings/general-settings.component.html b/src/app/dashboard/general-settings/general-settings.component.html
new file mode 100644
index 0000000..2ba0d36
--- /dev/null
+++ b/src/app/dashboard/general-settings/general-settings.component.html
@@ -0,0 +1,155 @@
+
diff --git a/src/app/dashboard/general-settings/general-settings.component.scss b/src/app/dashboard/general-settings/general-settings.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/general-settings/general-settings.component.spec.ts b/src/app/dashboard/general-settings/general-settings.component.spec.ts
new file mode 100644
index 0000000..da1d4aa
--- /dev/null
+++ b/src/app/dashboard/general-settings/general-settings.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GeneralSettingsComponent } from './general-settings.component';
+
+describe('GeneralSettingsComponent', () => {
+ let component: GeneralSettingsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ GeneralSettingsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(GeneralSettingsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/general-settings/general-settings.component.ts b/src/app/dashboard/general-settings/general-settings.component.ts
new file mode 100644
index 0000000..1d4bcff
--- /dev/null
+++ b/src/app/dashboard/general-settings/general-settings.component.ts
@@ -0,0 +1,445 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
+import { ContactService } from '../../contact.service';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+
+declare var $:any;
+
+@Component({
+ selector: 'app-general-settings',
+ templateUrl: './general-settings.component.html',
+ styleUrls: ['./general-settings.component.scss']
+})
+export class GeneralSettingsComponent implements OnInit {
+ errorMsg:any;
+ virtualAcc
+ showError : boolean=false;
+ igndtection = ['ACC','MOVEMENT'];
+ dInput = ['ACC','AC','DOOR'];
+ aInput = ['Fuel', 'Tempreture','Battey Status'];
+ fuelmeasObj = ['GPS','MANUAL'];
+ tripType = [{view : 'One WAY',value : 1},{view : 'Two Way', value : 2}]
+ tripTypeVal:any
+
+ loader :boolean = true;
+ generalSetings: FormGroup;
+ devicesss: any;
+ custtype: any;
+ useridd: any;
+ mb: any;
+ emailid: any;
+ superAdmin: any;
+ finall: any;
+ options: any=[];
+ deviceArr: any =[];
+ currencyValue: any;
+ id: any;
+ driverManagement:boolean=false;
+ selected_ac_wire="Forward"
+ ac_wire_setting=['Forward','Reversed']
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,public formBuilder: FormBuilder,private _flashMessagesService: FlashMessagesService) {
+ console.log('this.data.device',this.data.device);
+ this.id = this.data.device._id ;
+ this.driverManagement=data.device.user.driverManagement?data.device.user.driverManagement:false
+ console.log('this.id=>',this.id)
+ var flmsrmnt;
+ if(this.data.device.fuelMeasurement){
+ if(this.data.device.fuelMeasurement == 'GPS'){
+ flmsrmnt = this.fuelmeasObj[0];
+ }
+ if(this.data.device.fuelMeasurement == 'MANUAL'){
+ flmsrmnt = this.fuelmeasObj[1];
+ }
+
+ }
+
+ this.tripTypeVal = this.data.device?this.data.device.tripType :1 ;
+ this.virtualAcc=this.data.device.virtualacc?this.data.device.virtualacc:false;
+ this.selected_ac_wire=this.data.device.ac_wire_setting?this.data.device.ac_wire_setting:'Forward'
+ this.generalSetings = formBuilder.group({
+ driver_name : [this.data.device.driver_name?this.data.device.driver_name : ''],
+ devicename : [this.data.device.Device_Name?this.data.device.Device_Name : ''],
+ driver_number : [this.data.device.contact_number?this.data.device.contact_number : null],
+ total_odo: [this.data.device.total_odo?this.data.device.total_odo : 0],
+ speed: [this.data.device.SpeedLimit?this.data.device.SpeedLimit : 60],
+ mileage: [this.data.device.Mileage?this.data.device.Mileage : 10],
+ ignDetection:[this.data.device.ignitionSource?this.data.device.ignitionSource : this.igndtection[0]],
+ digitalInput : [this.data.device.digitalInput?this.data.device.digitalInput:this.dInput[0]],
+ analogInput:[this.data.device.analogInput?this.data.device.analogInput:this.aInput[0]],
+ fuelMeasurment : [flmsrmnt],
+ overStoppedLimit:[this.data.device.overStoppedLimit?this.data.device.overStoppedLimit : 0],
+ overIdleLimit:[this.data.device.overIdleLimit?this.data.device.overIdleLimit : 0],
+ currencyVlaue : [this.currencyValue],
+
+ })
+
+ // $('select').hide();
+
+
+ }
+ option:any;
+ ngOnInit() {
+
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.getCurrencies();
+ if(this.driverManagement)
+ this.getDrivers()
+ }
+ drivers
+ getDrivers(){
+ this.contactService.get("/driver/getDrivers?userid="+this.useridd).subscribe(res=>{
+ this.drivers=res
+ })
+ }
+
+
+ dataSelect=[];
+ filterStates(val) {
+ console.log(val)
+ // console.log(this.dummyuserData)
+
+ if (val) {
+ const filterValue: any = val;
+ console.log(this.currency);
+ this.dataSelect = this.currency.filter(function (d) {
+ console.log("inside Search Method=>",d);
+ return d.country.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase()) > -1;
+ });
+ return this.dataSelect;
+ }
+ // console.log("searched user=>",this.dataSelect);
+ }
+
+ // loadropdown() {
+ // let that = this;
+ // var script = document.createElement("script");
+ // script.setAttribute("type", "text/javascript");
+ // script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ // document.getElementsByTagName("head")[0].appendChild(script);
+ // setTimeout(() => {
+ // $('select').multipleSelect({
+ // single: true,
+ // width: 200,
+ // placeholder: 'Select Currency.....',
+ // filter: true,
+
+
+ // })
+
+
+ // }, 100);
+
+ // }
+
+
+
+
+
+ ngOnDestroy(){
+
+ this.dialogRef.close('cancelled');
+ }
+ currencyArr = [];
+ saveDetail(){
+
+ if(this.dataSelect.length == 0){
+ console.log("currency",(this.optiondefault).split('-')[0]);
+ var currencyyy = this.optiondefault.split('-')[0];
+ }else{
+ console.log(this.dataSelect[0].currencyVal);
+ var currencyyy = this.dataSelect[0].currencyVal ;
+ }
+ console.log(this.generalSetings.value);
+ // this.currencyArr =$('#select').multipleSelect('getSelects','value');
+ // if(this.currencyArr.length != 0){
+ // var temp = this.currencyArr[0].split(':')[1];
+ // this.generalSetings.value.currencyVlaue = temp.split("'")[1];
+ // }
+
+ var devSettingObj = {
+ speed: this.generalSetings.value.speed,
+ Mileage: this.generalSetings.value.mileage,
+ ignDetection:this.generalSetings.value.ignDetection,
+ digitalInput : this.generalSetings.value.digitalInput,
+ analogInput:this.generalSetings.value.analogInput,
+ fuelMeasurement :this.generalSetings.value.fuelMeasurment,
+ currency : currencyyy,
+ device_model:this.data.device.device_model._id,
+ overStoppedLimit:this.generalSetings.value.overStoppedLimit,
+ overIdleLimit:this.generalSetings.value.overIdleLimit,
+ _id : this.id
+ }
+ console.log(this.option);
+ if(this.virtualAcc != undefined){
+ devSettingObj['virtualacc'] = this.virtualAcc ;
+
+ }
+ if(this.tripTypeVal != undefined){
+ devSettingObj['tripType'] = this.tripTypeVal ;
+
+ }
+ // if((this.generalSetings.value.currencyVlaue != null)||(this.generalSetings.value.currencyVlaue != undefined)){
+ // devSettingObj['currency'] = this.generalSetings.value.currencyVlaue;
+ // }
+ if(this.generalSetings.value.total_odo !=null){
+ devSettingObj['total_odo'] = this.generalSetings.value.total_odo;
+ }
+ if(this.selected_ac_wire){
+ devSettingObj['ac_wire_setting'] = this.selected_ac_wire;
+ }
+
+ if(this.generalSetings.value.driver_name !=null){
+ devSettingObj['drname'] = this.generalSetings.value.driver_name;
+ }
+
+ if(this.generalSetings.value.devicename !=null){
+ devSettingObj['devicename'] = this.generalSetings.value.devicename;
+ }
+
+ if(this.generalSetings.value.driver_number !=null){
+ devSettingObj['dphone'] = this.generalSetings.value.driver_number;
+ }
+
+ console.log('devSettingObj',devSettingObj);
+ this.contactService.editdevice(devSettingObj).subscribe(res=>{
+
+ this.dialogRef.close('done');
+
+ },err=>{
+ this.showError=true;
+ this.errorMsg= "Couldn't save Information, pLease try after sometime";
+ this._flashMessagesService.show(this.errorMsg, { cssClass: 'alert-danger', timeout: 3000});
+ })
+
+
+
+
+ }
+
+ closebox(){
+ console.log('close');
+ this.dialogRef.close('cancelled');
+ }
+ currency = [];
+ optiondefault:any;
+ getCurrencies(){
+ this.currency = [];
+ // this.contactService.getCurrencies().subscribe(res=>{
+ var currencyObj = this.currencyJson;
+ for(var i in currencyObj){
+ if(this.data.device.currency != undefined){
+ var devicecurr = this.data.device.currency ;
+ if(i == devicecurr){
+ this.optiondefault = i+ '-' + currencyObj[i];
+ }
+
+ }else{
+ if(i == 'INR'){
+ this.optiondefault = i+ '-' + currencyObj[i];
+ }
+ }
+
+ var tempObj = {
+ currencyVal : i,
+ country : i+ '-' + currencyObj[i]
+ }
+ this.currency.push(tempObj);
+ }
+
+ console.log(this.currency);
+
+ }
+
+ setContactNumber(){
+ console.log(this.generalSetings.value.driver_name);
+ for(var i=0;i
+
+
+
+Loading…
+
+
+
+
+
+
+
+
Remark : {{ deviceData.remark }}
+
+
+
+
+
+
+
+ {{ data.doctype }} :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 1:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 2:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Image 3:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dashboard/new-edit-device/new-edit-device.component.scss b/src/app/dashboard/new-edit-device/new-edit-device.component.scss
new file mode 100644
index 0000000..6b962e5
--- /dev/null
+++ b/src/app/dashboard/new-edit-device/new-edit-device.component.scss
@@ -0,0 +1,7 @@
+.topDiv {
+ padding-top: 59px;
+ background: whitesmoke;
+ height: 100vh;
+ padding-left: 4px;
+ padding-right: 3px;
+}
diff --git a/src/app/dashboard/new-edit-device/new-edit-device.component.spec.ts b/src/app/dashboard/new-edit-device/new-edit-device.component.spec.ts
new file mode 100644
index 0000000..ca8416f
--- /dev/null
+++ b/src/app/dashboard/new-edit-device/new-edit-device.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { NewEditDeviceComponent } from './new-edit-device.component';
+
+describe('NewEditDeviceComponent', () => {
+ let component: NewEditDeviceComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ NewEditDeviceComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(NewEditDeviceComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/new-edit-device/new-edit-device.component.ts b/src/app/dashboard/new-edit-device/new-edit-device.component.ts
new file mode 100644
index 0000000..6a90b77
--- /dev/null
+++ b/src/app/dashboard/new-edit-device/new-edit-device.component.ts
@@ -0,0 +1,937 @@
+import { Component, OnInit, TemplateRef } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { BsDatepickerConfig, BsModalRef, BsModalService } from 'ngx-bootstrap';
+import { ContactService } from '../../contact.service';
+import {Location} from '@angular/common';
+declare var $:any;
+declare var swal: any;
+@Component({
+ selector: 'app-new-edit-device',
+ templateUrl: './new-edit-device.component.html',
+ styleUrls: ['./new-edit-device.component.scss']
+})
+export class NewEditDeviceComponent implements OnInit {
+ DeviceModelValue: any;
+ deviceImg=["","",""];
+ modalRef: BsModalRef;
+ submitted = false;
+ date=new Date()
+ expDate:any = new Date(this.date.getFullYear() + 1, this.date.getMonth(), this.date.getDate()).toLocaleString();
+ Indianstate = [ "Andhra Pradesh",
+ "Arunachal Pradesh",
+ "Assam",
+ "Bihar",
+ "Chhattisgarh",
+ "Goa",
+ "Gujarat",
+ "Haryana",
+ "Himachal Pradesh",
+ "Jammu and Kashmir",
+ "Jharkhand",
+ "Karnataka",
+ "Kerala",
+ "Madhya Pradesh",
+ "Maharashtra",
+ "Manipur",
+ "Meghalaya",
+ "Mizoram",
+ "Nagaland",
+ "Odisha",
+ "Punjab",
+ "Rajasthan",
+ "Sikkim",
+ "Tamil Nadu",
+ "Telangana",
+ "Tripura",
+ "Uttarakhand",
+ "Uttar Pradesh",
+ "West Bengal",
+ "Andaman and Nicobar Islands",
+ "Chandigarh",
+ "Dadra and Nagar Haveli",
+ "Daman and Diu",
+ "Delhi",
+ "Lakshadweep",
+ "Puducherry"]
+ vehicleCat=[
+ "Luxury Cab",
+"Three wheeled vehicles for transport of passengers/goods",
+"Goods carrier trucks or tankers or mail carriers",
+"Power tiller and Tractors using public roads",
+"Mobile clinic or X-Ray van or library vans",
+"Mobile Workshops",
+"Mobile canteens",
+"Private Service Vehicle",
+"maxi cab",
+"motor cab",
+"stage cariage",
+"contract carriage",
+"Tourist",
+"Educational Institution buses",
+"Ambulances",
+"Animal Ambulances",
+"Camper vans or trailers",
+"Cash vans",
+"Fire tenders, snorked ladders,auxiliary trailers and fire fighting vehicles",
+"Articulated vehicles",
+"Hearses",
+"Motor car",
+"Crane mounted vehicle",
+"Agricultural Tractor and Power Tiller",
+"Tow Trucks, Breakdown Van and Recovery Vehicles",
+"Construction Equipment Vehicles",]
+ custtype: any;
+ DealerId: any;
+ constructor(private modalService: BsModalService,private location:Location,private fb:FormBuilder,private contactService:ContactService,private router:Router,private _flashMessagesService: FlashMessagesService,) { }
+ deviceForm:FormGroup;
+ userId
+ deviceData
+ deviceModel
+ Load:boolean=false;
+ bsConfig: Partial;
+ dataDevModel: any[];
+ vehicle_Type: any[];
+
+ imageuploadObject = [{doctype:'Adhar card1 *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'Adhar card2 *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'Warrenty Card *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'vehicle sales invoice *',image:'',phone:'',docdate:new Date(),fill:false},
+{doctype:'vehicle RC',image:'',phone:'',docdate:new Date(),fill:true},
+{doctype:'vehicle Photo',image:'',phone:'',docdate:new Date(),fill:true},
+];
+ dealerId
+ sup_admin
+ hrdwr
+ hrdwr2
+ custId
+ documentList = [
+ {
+ "docId": "Adhar card1",
+ "docName": "Adhar Card Front"
+ },
+ {
+ "docId": "Adhar card2",
+ "docName": "Adhar Card Back"
+ },
+ {
+ "docId": "vehicle sales invoice",
+ "docName": "vehicle sales invoice"
+ },
+ {
+ "docId": "voter Id",
+ "docName": "Voter Id"
+ },
+ {
+ "docId": "vehicle RC",
+ "docName": "vehicle RC"
+ },
+ {
+ "docId": "vehicle Photo",
+ "docName": "vehicle Photo"
+ },
+ {
+ "docId": "PAN card",
+ "docName": "Pan Card"
+ },
+ {
+ "docId": "Driving License",
+ "docName": "Driving License"
+ },
+ {
+ "docId": "RC Book",
+ "docName": "RC Book"
+ },
+ {
+ "docId": "Device Image",
+ "docName": "Device Image"
+ },
+ {
+ "docId": "Co.registered Card",
+ "docName": "Co.registered Card"
+ },
+ {
+ "docId": "Nepal Citizenship",
+ "docName": "Nepal Citizenship"
+ },
+ {
+ "docId": "Blue Book",
+ "docName": "Blue Book"
+ },
+ {
+ "docId": "Warrenty Card",
+ "docName": "Warrenty Card"
+ },
+ {
+ "docId": "Other",
+ "docName": "Other"
+ }
+
+ ];
+ ngOnInit() {
+
+ this.deviceData=JSON.parse(localStorage.getItem('deviceData'));
+ if(localStorage.getItem('deviceData')){
+
+ console.log(this.deviceData);
+ var data={target:{value:this.deviceData.transportOfficeState?this.deviceData.transportOfficeState:''}}
+ var data1={target:{value:this.deviceData.transportOfficeCity?this.deviceData.transportOfficeCity:''}}
+ var data3={target:{value:this.deviceData.manufacturingCompany?this.deviceData.manufacturingCompany:''}}
+ this.selectModel(data3)
+ this.onCityChange(data1)
+ this.onStateChange(data);
+ this.imageuploadObject=this.deviceData.imageDoc
+ this.deviceImg=this.deviceData.deviceImage?this.deviceData.deviceImage:["","",""]
+ this.bsConfig = Object.assign({ dateInputFormat: 'DD-MM-YYYY' }, { containerClass: 'theme-dark-blue' });
+ this.userId = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.dealerId=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).Dealer_ID;
+ this.sup_admin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ this.custId = localStorage.getItem('custId');
+ if((this.custtype == false)&&(window.localStorage['Custumer'] == 'ON')){
+
+ this.DealerId = JSON.parse(window.atob(window.localStorage.Dealer_token.split(".")[1]))._id;
+
+ }
+
+ var fname=this.deviceData.user?this.deviceData.user.first_name?this.deviceData.user.first_name:'':"";
+ var lname=this.deviceData.user?this.deviceData.user.last_name?this.deviceData.user.last_name:'':""
+ this.deviceForm=this.fb.group({
+ ownerName:[fname+' '+lname,[Validators.required,Validators.pattern("[a-zA-Z][a-zA-Z ]+")]],
+ contactNo:[this.deviceData.user?this.deviceData.user.phone?this.deviceData.user.phone:'':'',[Validators.required,Validators.pattern('[0-9 ]{10}')]],
+ device_id:[this.deviceData.Device_ID?this.deviceData.Device_ID:""],
+ address:[this.deviceData.user?this.deviceData.user.address?this.deviceData.user.address:'':'',Validators.required],
+ state:[this.deviceData.transportOfficeState?this.deviceData.transportOfficeState:''],
+ rtoOffice:[this.deviceData.rto?this.deviceData.rto:''],
+ vehicleManufacture:[this.deviceData.manufacturingCompany?this.deviceData.manufacturingCompany:''],
+ vehicleModel:[this.deviceData.Model?this.deviceData.Model:''],
+ vehicleCategory:[this.deviceData.vehicleCategory?this.deviceData.vehicleCategory:''],
+ vehicleType:[this.deviceData.vehicleType?this.deviceData.vehicleType._id:''],
+ vehicleNo:[this.deviceData.Device_Name?this.deviceData.Device_Name:'',[Validators.required,Validators.maxLength(10)]],
+ chasisNo:[this.deviceData.ChassisNo?this.deviceData.ChassisNo:'',Validators.required],
+ engineNo:[this.deviceData.engineNo?this.deviceData.engineNo:'',Validators.required],
+ panic:[this.deviceData.numberOfSOS?this.deviceData.numberOfSOS:''],
+ bsnlPlan:[''],
+ hostingPlan:[''],
+ SMSPlan:[''],
+ city:[this.deviceData.transportOfficeCity?this.deviceData.transportOfficeCity:''],
+ deviceModel:[this.deviceData.device_model?this.deviceData.device_model._id:''],
+ trackingExp:new Date(this.expDate),
+ eSimExpiry:[this.deviceData.esim_validity?new Date(this.deviceData.esim_validity):''],
+ model:[this.deviceData.Model?this.deviceData.Model:''],
+ email:[this.deviceData.user?this.deviceData.user.email?this.deviceData.user.email:'':''],
+ dealerFollowup:[this.deviceData.CID_No?this.deviceData.CID_No:'',Validators.required],
+ sim1:[this.deviceData.sim_number?this.deviceData.sim_number:'',Validators.required],
+ sim2:[this.deviceData.sim_number2?this.deviceData.sim_number2:''],
+ iccid:[this.deviceData.IccidNo?this.deviceData.IccidNo:''],
+ pin:[this.deviceData.user?this.deviceData.user.pin?this.deviceData.user.pin:'':'',[Validators.required,Validators.pattern('[0-9 ]{6}')]]
+
+
+ })
+ console.log("DEVICEFORM=>",this.deviceForm);
+ }else{
+ this.location.back()
+ }
+
+ this.loadropdown()
+ this.getDeviceModel();
+ this.getvehDetail()
+ this.getUserSetting(this.userId);
+ this.getModelData()
+ this. getAllState()
+ var that=this
+ $(document).on('change','#inventory',function() {
+ var value = $('#inventory').val();
+ for(var i=0;i{
+ for(var i=0;i{
+ console.log(res);
+
+ if(res.message=="Saved"){
+
+
+ this.addDevice(res._id)
+ // this.router.navigateByUrl('/dashboard');
+ }
+ })
+ }
+
+ }
+
+
+ addDevice(data){
+ var model= $('#dbselect').multipleSelect('getSelects','value');
+ var type= $('#vehicleType').multipleSelect('getSelects','value');
+ var deviceid
+ if(this.inventoryManagement){
+ deviceid=$('#inventory').multipleSelect('getSelects','value');
+ }else{
+ deviceid=this.deviceForm.value.device_id
+ }
+ var newDevice = {
+ _id:this.deviceData._id,
+ devicename: this.deviceForm.value.vehicleNo,
+ deviceid: this.deviceForm.value.device_id,
+ // des: this.des,
+ model: model[0],
+
+ typdev: "Tracker",
+ Mileage : "10",
+ phn: this.deviceForm.value.contactNo,
+ sim_number: this.deviceForm.value.contactNo,
+ created_by: this.userId,
+ supAdmin: this.sup_admin,
+ // driver_name: this.driver,
+ // contact_number: this.dcontact,
+ device_model: this.deviceForm.value.deviceModel,
+ expdate: new Date(this.expDate),
+ user:this.deviceData.user._id,
+ kycStatus:'Pending',
+ bussinessType:1
+ }
+ if (this.custtype) {
+ newDevice['Dealer'] = this.userId;
+ } else if((this.custtype == false)&&(window.localStorage['Custumer'] == 'ON') ) {
+ newDevice['Dealer'] = this.DealerId
+ }
+
+
+// hrdwr: this.deviceForm.value.sim1,
+// hrdwr1: this.deviceForm.value.sim1,
+ if(this.deviceForm.value.sim1){
+ newDevice['hrdwr'] = this.deviceForm.value.sim1
+ }
+ if(this.deviceForm.value.sim2){
+ newDevice['hrdwr1'] = this.deviceForm.value.sim2
+ }
+
+ if(this.deviceForm.value.sim1){
+ newDevice['manufacturingCompany'] = this.deviceForm.value.sim1
+ }
+
+ if(this.deviceForm.value.model){
+ newDevice['model'] = this.deviceForm.value.model
+ }
+
+
+ if(this.deviceForm.value.dealerFollowup){
+ newDevice['CID_No'] = this.deviceForm.value.dealerFollowup;
+ }
+ if(this.hrdwr){
+ newDevice['hrdwr']=this.hrdwr
+ }
+ if(this.deviceForm.value.engineNo){
+ newDevice['engineNo'] = this.deviceForm.value.engineNo;
+ }
+
+ if(this.deviceForm.value.city){
+ newDevice['transportOfficeCity'] = this.deviceForm.value.city;
+ }
+ if(this.deviceForm.value.state){
+ newDevice['transportOfficeState'] = this.deviceForm.value.state;
+ }
+
+
+ if(this.deviceForm.value.chasisNo){
+ newDevice['ChassisNo'] = this.deviceForm.value.chasisNo
+ }
+ if(this.deviceForm.value.vehicleManufacture){
+ newDevice['manufacturingCompany'] = this.deviceForm.value.vehicleManufacture;
+ }
+
+ if(this.deviceForm.value.eSimExpiry){
+ newDevice['esim_validity'] = this.deviceForm.value.eSimExpiry;
+ }
+ if(this.deviceForm.value.vehicleCategory){
+ newDevice['vehicleCategory'] = this.deviceForm.value.vehicleCategory;
+ }
+ if(this.deviceForm.value.rtoOffice){
+ newDevice['rto'] = this.deviceForm.value.rtoOffice;
+ }
+
+ if(type){
+ newDevice['typeOfVehicle'] = type[0];
+ }
+ if(this.deviceForm.value.vehicleType){
+ newDevice['vehicleType'] = this.deviceForm.value.vehicleType
+ }
+
+ if(this.deviceForm.value.state){
+ newDevice['transportOfficeState'] = this.deviceForm.value.state;
+ }
+
+ if(this.deviceForm.value.panic){
+ newDevice['numberOfSOS'] = this.deviceForm.value.panic;
+ }
+
+ if(this.deviceImg != undefined){
+ newDevice['deviceImage'] = this.deviceImg;
+ }
+ console.log("imageuploadDocument",this.imageuploadObject);
+ if((this.imageuploadObject.length !=0)){
+ newDevice['imageDoc'] = this.imageuploadObject ;
+ }
+ console.log("=======>",newDevice)
+ // this.Load = false;
+ this.contactService.editdevice(newDevice)
+ .subscribe((device) => {
+ window.localStorage['DataUpdate'] = 'True';
+
+ this.router.navigateByUrl("dashboard");
+ }
+ // this.Load = false
+ )
+ , (err: any) => {
+ // console.log(err.status);
+ // console.log(err);
+ var that = this;
+ if (err.status == 400) {
+ console.log(JSON.parse(err._body).deviceObj);
+ var dupObj = JSON.parse(err._body).deviceObj ;
+ // this.Load = false;
+ var devicesupAdmin = dupObj.supAdmin;
+ var deviceDealer = dupObj.Dealer;
+ var devOwner = dupObj.user;
+ debugger;
+
+ }
+ else {
+ var message
+ if(err.status==401){
+ message="Access Denied !!!"
+
+ }else{
+ message="Network Error !!!"
+ }
+ console.log(err);
+
+ this._flashMessagesService.show(message, { cssClass: 'alert-danger', timeout: 2000 });
+ // this.Load = false
+ }
+ }
+
+
+ }
+
+ generatePassword(passwordLength) {
+ var numberChars = "0123456789";
+ var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ var lowerChars = "abcdefghijklmnopqrstuvwxyz";
+ var allChars = numberChars + upperChars + lowerChars;
+ var randPasswordArray = Array(passwordLength);
+ randPasswordArray[0] = numberChars;
+ randPasswordArray[1] = upperChars;
+ randPasswordArray[2] = lowerChars;
+ randPasswordArray = randPasswordArray.fill(allChars, 3);
+ return this.shuffleArray(randPasswordArray.map(function(x) { return x[Math.floor(Math.random() * x.length)] })).join('');
+}
+
+shuffleArray(array) {
+ for (var i = array.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var temp = array[i];
+ array[i] = array[j];
+ array[j] = temp;
+ }
+ return array;
+}
+message
+user
+userFound:boolean=false;
+onSearchChange(value){
+ this.userFound=false
+ this.message=undefined
+ console.log(value);
+ var phone=this.deviceForm.value.contactNo
+ if(phone.length==10){
+ console.log("KLDJNDKjk");
+ this.contactService.get('/users/searchUserByPhone?user='+this.userId+'&phone='+phone).subscribe((res:any)=>{
+ console.log(res);
+ if(res.message=="User already Present"){
+ this.deviceForm.patchValue({
+ ownerName:res.data[0].first_name?res.data[0].first_name:""+" "+res.data[0].last_name?res.data[0].first_name:'',
+ email:res.data[0].email?res.data[0].email:""
+ })
+ this.user=res.data[0]
+ this.userFound=true;
+ this.deviceForm.controls.ownerName.disable();
+ this.deviceForm.controls.email.disable();
+ }else{
+ this.userFound=false
+ this.message=res.message
+ }
+ },err=>{
+ console.log(err);
+ this.message=err.error.message
+ })
+ }
+
+}
+ device_Model: any;
+ getDeviceModel() {
+ this.contactService.getDevModel()
+ .subscribe(res => {
+ this.device_Model = res;
+ var devname = [];
+ console.log("Device_Model",this.device_Model);
+ for(var i = 0 ; i {
+ $('#dbselect').multipleSelect({
+ width: 470,
+ placeholder:"Select model",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ $('#vehicleType').multipleSelect({
+ width: 470,
+ placeholder: "Select Type",
+ filter: true,
+ single: true,
+ selectAll: false
+ })
+ $('#inventory').multipleSelect({
+ width: 470,
+ placeholder: 'Select IMEI',
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+
+ }, 100);
+
+
+ }
+
+ vehData:any;
+getvehDetail(){
+ this.contactService.getvehType(this.userId)
+ .subscribe(res=>{
+ // console.log(res);
+ this.vehData=res;
+ var vdata = res;
+ for(var a = 0;a",this.imageuploadObject);
+// }
+showUpload:boolean=true;
+DeleteDocumentsField(index){
+ console.log(this.imageuploadObject.length);
+ if(this.imageuploadObject.length == 1){
+ this.docRow = false;
+ this.showUpload = false;
+ }
+ this.imageuploadObject.splice(index, 1);
+
+}
+
+selectedFile: File;
+onFileChanged(event,imgIndex) {
+ this.selectedFile = event.target.files[0];
+ console.log(this.selectedFile);
+
+ this.Load=true;
+ console.log(imgIndex);
+ this.imageuploadObject[imgIndex].fill=true;
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.Load = true;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ this.Load = false;
+ this.ifuploadArr = true;
+ // this.uploadStatus = 'Uploaded';
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+ this.selectedFile=undefined;
+ // console.log(res);
+ },err=>{
+ this.Load= false;
+ this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ this.selectedFile=undefined;
+ })
+}
+ifuploadArr: boolean ;
+uploadStatus: any = 'Upload';
+onUpload(imgIndex) {
+ this.Load=true;
+ console.log(imgIndex);
+ this.imageuploadObject[imgIndex].fill=true;
+ console.log(this.imageuploadObject);
+ const fd = new FormData();
+ // console.log("selected file name =>",this.selectedFile.name);
+ if(!this.selectedFile){
+ swal(
+ 'Upload Error',
+ 'Please select document type before upload !!!',
+ 'error'
+ )
+ this.Load=false;
+ }else{
+ fd.append('photo',this.selectedFile,this.selectedFile.name)
+ console.log("imgURL=>",fd) ;
+ this.Load = true;
+ this.contactService.imageupload(fd)
+ .subscribe(res=>{
+ this.Load = false;
+ this.ifuploadArr = true;
+ // this.uploadStatus = 'Uploaded';
+ console.log(res);
+ var resImage ='';
+ resImage = res['_body'];
+ console.log(res['_body']);
+ this.imageuploadObject[imgIndex].image = resImage;
+ console.log(this.imageuploadObject);
+ this.selectedFile=undefined;
+ // console.log(res);
+ },err=>{
+ this.Load= false;
+ this._flashMessagesService.show('Internal server error , try again', { cssClass: 'alert-success', timeout: 2000 });
+ this.selectedFile=undefined;
+ })
+ }
+ }
+documentType(docType){
+ console.log("doctypeObject=>",docType);
+
+}
+
+inventoryManagement:Boolean=false;
+ inventory=[]
+ getUserSetting(userId){
+
+ this.contactService.post('/users/get_user_setting',{uid: userId}).subscribe((res:any)=>{
+ this.inventoryManagement=res.inventoryManagement;
+ if(this.inventoryManagement){
+ console.log(this.userId,this.dealerId=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer);
+ var isDealer=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer
+ var isSuperAdmin=JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isSuperAdmin
+ // var user
+ // if(isSuperAdmin){
+ // var user
+ // }else if(isDealer){
+
+ // }
+ var user=isSuperAdmin?this.userId:this.sup_admin?this.sup_admin:this.userId
+ console.log(user);
+
+ this.contactService.get('/Device_inventory/getInventory?user='+this.userId).subscribe((res:any)=>{
+ this.inventory=res;
+ this.loadropdown()
+ })
+ }
+ })
+ }
+
+ manufacturingData
+ getModelData(){
+ this.contactService.get('/model_master/GetNames').subscribe((res:any)=>{
+ this.manufacturingData=res
+ })
+ }
+ modelData
+ selectModel(event){
+ console.log(event.target.value);
+
+ this.contactService.get('/model_master/getModel?name='+event.target.value).subscribe((res:any)=>{
+ this.modelData=res
+ })
+
+}
+cityList
+onStateChange(event){
+ this.contactService.get('/RTO_master/getCity?state='+event.target.value).subscribe((res:any)=>{
+ this.cityList=res
+ })
+}
+RTO
+onCityChange(event){
+ this.contactService.get('/RTO_master/getRTO?city='+event.target.value).subscribe((res:any)=>{
+ this.RTO=res
+ })
+}
+back(){
+ this.location.back()
+}
+image;
+docName
+openModal(template: TemplateRef,doc){
+ console.log(doc);
+
+ this.modalRef = this.modalService.show(template,{'backdrop':'static',class:'modal-lg modal-dialog-centered'});
+ this.docName=doc.doctype
+this.image="https://www.oneqlik.in"+doc.image.substring(6)
+}
+
+imageURL:any;
+ selectedDeviceFile:File;
+ data_descip : any;
+onDeviceImageChanged(event,index) {
+ this.selectedDeviceFile = event.target.files[0];
+
+ this.Load = true;
+ const fdDevice = new FormData();
+ fdDevice.append('photo',this.selectedDeviceFile,this.selectedDeviceFile.name)
+ console.log("Binaryimage = > ",fdDevice );
+ this.contactService.deviceImageupload(fdDevice)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ // if(this.deviceImg.length==3){
+ // if(this.deviceImg[index]){
+ this.deviceImg[index]=(res['_body'])
+ // }else{
+ // this.deviceImg.push(res['_body'])
+ // }
+ // }else{
+ // this.deviceImg.push(res['_body'])
+
+ // }
+ }
+ this.Load = false;
+ this.selectedDeviceFile=undefined
+ console.log('this.deviceImg',this.deviceImg);
+ this.data_descip = "Image Uploaded";
+ launch_toast();
+ },err=>{
+ this.data_descip = "Internal Server Error";
+ launch_toast();
+ this.selectedDeviceFile=undefined
+ console.log(err);
+ this.Load = false;
+ })
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+}
+
+onDeviceImageUploadUpload(index){
+ if(!this.selectedDeviceFile){
+ swal(
+ 'Upload Error',
+ 'Please choose file before upload !!!',
+ 'error'
+ )
+ }else{
+ this.Load = true;
+ const fdDevice = new FormData();
+ fdDevice.append('photo',this.selectedDeviceFile,this.selectedDeviceFile.name)
+ console.log("Binaryimage = > ",fdDevice );
+ this.contactService.deviceImageupload(fdDevice)
+ .subscribe(res=>{
+ console.log(res);
+ if(res){
+ if(this.deviceImg.length==3){
+ if(this.deviceImg[index]){
+ this.deviceImg[index]=(res['_body'])
+ }else{
+ this.deviceImg.push(res['_body'])
+ }
+ }else{
+ this.deviceImg.push(res['_body'])
+
+ }
+ }
+ this.selectedDeviceFile=undefined
+ console.log('this.deviceImg',this.deviceImg);
+ this.data_descip = "Image Uploaded";
+ launch_toast();
+ },err=>{
+ this.data_descip = "Internal Server Error";
+ launch_toast();
+ this.selectedDeviceFile=undefined
+ console.log(err);
+ })
+ }
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 1500);
+ }
+
+}
+}
\ No newline at end of file
diff --git a/src/app/dashboard/renew-vehicle/renew-vehicle.component.html b/src/app/dashboard/renew-vehicle/renew-vehicle.component.html
new file mode 100644
index 0000000..0979f97
--- /dev/null
+++ b/src/app/dashboard/renew-vehicle/renew-vehicle.component.html
@@ -0,0 +1,105 @@
+
+
\ No newline at end of file
diff --git a/src/app/dashboard/renew-vehicle/renew-vehicle.component.scss b/src/app/dashboard/renew-vehicle/renew-vehicle.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/renew-vehicle/renew-vehicle.component.spec.ts b/src/app/dashboard/renew-vehicle/renew-vehicle.component.spec.ts
new file mode 100644
index 0000000..af45e17
--- /dev/null
+++ b/src/app/dashboard/renew-vehicle/renew-vehicle.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { RenewVehicleComponent } from './renew-vehicle.component';
+
+describe('RenewVehicleComponent', () => {
+ let component: RenewVehicleComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ RenewVehicleComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RenewVehicleComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/renew-vehicle/renew-vehicle.component.ts b/src/app/dashboard/renew-vehicle/renew-vehicle.component.ts
new file mode 100644
index 0000000..e7e91ac
--- /dev/null
+++ b/src/app/dashboard/renew-vehicle/renew-vehicle.component.ts
@@ -0,0 +1,126 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import * as moment from 'moment';
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+import { ContactService } from '../../contact.service';
+declare var $: any, DataTable: any, swal: any;
+
+@Component({
+ selector: 'app-renew-vehicle',
+ templateUrl: './renew-vehicle.component.html',
+ styleUrls: ['./renew-vehicle.component.scss']
+})
+export class RenewVehicleComponent implements OnInit {
+ renewForm:FormGroup;
+ useridd;
+ disabled=true;
+ isFirst=true;
+ validTillDate=new Date()
+ bsConfig: Partial;
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private fb:FormBuilder,private contactService:ContactService) {
+ console.log(data);
+
+ }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.renewForm=this.fb.group({
+ name:[this.data.Device_Name],
+ expDate:[moment(this.data.expiration_date).format('lll')],
+ sim:[this.data.sim_number],
+ plan:[''],
+ validTill:[new Date()]
+ })
+
+ this.renewForm.controls.validTill.disable()
+ }
+
+ submit(){
+ console.log(this.renewForm.value);
+ if(this.renewForm.value.plan=="custom"){
+ this.validTillDate=this.renewForm.value.validTill
+ }
+
+ if(this.isDatesEqual(new Date(this.validTillDate),new Date())){
+ swal({
+ icon: 'warning',
+ title: 'Oops...',
+ text: 'Please choose plan or set valid till date',
+
+})
+ }else{
+ var request={
+ _id: this.data._id,
+ devicename: this.renewForm.value.name,
+ sim: this.renewForm.value.sim,
+ deviceid: this.data.Device_ID,
+ device_model: this.data.device_model._id,
+ vehicleType:this.data.vehicleType._id,
+ expdate:new Date(this.validTillDate),
+ renew_by:this.useridd
+ }
+
+ swal({
+ title: 'Renew vehicle ',
+ icon: 'info',
+ html: 'Please confirm to Renew Vehicle ?',
+ showCloseButton: true,
+ showCancelButton: true,
+ focusConfirm: false,
+ confirmButtonText: "Renew Vehicle",
+ confirmButtonAriaLabel: 'Thumbs up, great!',
+
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+ console.log(request);
+ this.contactService.editdevice(request)
+ .subscribe(device => {
+ this.dialogRef.close('succ');
+ })
+ }
+ })
+
+ }
+
+
+
+
+
+
+ }
+
+ isDatesEqual(date1, date2) {
+ console.log(date1,date2);
+
+ return date1.getFullYear() === date2.getFullYear() &&
+ date1.getMonth() === date2.getMonth() &&
+ date1.getDate() === date2.getDate();
+}
+
+ changePlan(event){
+ console.log(event);
+ if(event=='custom'){
+ this.disabled=false;
+ console.log("in");
+ this.validTillDate=new Date();
+ // this.renewForm.controls.validTill.enable();
+ this.renewForm.value.validTill=new Date();
+ this.renewForm.controls.validTill.enable();
+ }else{
+ this.validTillDate=new Date();
+ // this.renewForm.controls.validTill.enable();
+ this.renewForm.value.validTill=new Date();
+ this.renewForm.patchValue({
+ validTill:new Date(moment(this.renewForm.value.validTill, "DD-MM-YYYY").add('days', Number(event)).format('YYYY/MM/DD HH:mm:ss'))
+ })
+ this.validTillDate=new Date(moment(this.validTillDate, "DD-MM-YYYY").add('days', Number(event)).format('YYYY/MM/DD HH:mm:ss'))
+ // this.renewForm.value.validTill= new Date(moment(this.renewForm.value.validTill, "DD-MM-YYYY").add('days', Number(event)).format('YYYY/MM/DD HH:mm:ss'));
+ console.log(this.renewForm.value.validTill,this.validTillDate)
+ this.renewForm.controls.validTill.disable()
+ }
+
+ }
+
+}
diff --git a/src/app/dashboard/renewal-history/renewal-history.component.html b/src/app/dashboard/renewal-history/renewal-history.component.html
new file mode 100644
index 0000000..7a8d876
--- /dev/null
+++ b/src/app/dashboard/renewal-history/renewal-history.component.html
@@ -0,0 +1,51 @@
+
+
+
+ Renewal History
+ Close
+
+
+
+
+
+
Loading…
+
+
+
+
+ {{'Device Name' | translate}}
+ {{'Device IMEI' | translate}}
+ {{'Created On' | translate}}
+ {{'Expired On' | translate}}
+ {{'Renewed On' | translate}}
+ {{'Valid Till' | translate}}
+
+
+
+
+
+
+
+ {{item.device.Device_Name}}
+ {{item.device.Device_ID}}
+ {{item.created_on}}
+ {{item.expired_on}}
+ {{item.renewed_on}}
+ {{item.validDate}}
+
+
+
+ No Data Found
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dashboard/renewal-history/renewal-history.component.scss b/src/app/dashboard/renewal-history/renewal-history.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/renewal-history/renewal-history.component.spec.ts b/src/app/dashboard/renewal-history/renewal-history.component.spec.ts
new file mode 100644
index 0000000..f28972c
--- /dev/null
+++ b/src/app/dashboard/renewal-history/renewal-history.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { RenewalHistoryComponent } from './renewal-history.component';
+
+describe('RenewalHistoryComponent', () => {
+ let component: RenewalHistoryComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ RenewalHistoryComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RenewalHistoryComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/renewal-history/renewal-history.component.ts b/src/app/dashboard/renewal-history/renewal-history.component.ts
new file mode 100644
index 0000000..14ce6ff
--- /dev/null
+++ b/src/app/dashboard/renewal-history/renewal-history.component.ts
@@ -0,0 +1,114 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { ContactService } from '../../contact.service';
+declare var $: any;
+
+@Component({
+ selector: 'app-renewal-history',
+ templateUrl: './renewal-history.component.html',
+ styleUrls: ['./renewal-history.component.scss']
+})
+export class RenewalHistoryComponent implements OnInit {
+ tabelObj: any ;
+ Load: boolean;
+ main=[];
+
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService) {
+ // this.main=this.data
+ // this.testTable()
+ }
+
+ ngOnInit() {
+ this.getRenewalHistory()
+ }
+
+ getRenewalHistory(){
+ this.Load=true
+ this.contactService.getRenewalHistory(this.data._id).subscribe(res=>{
+ console.log(res);
+ this.main=res;
+ this.Load=false
+
+ })
+ }
+
+ testTable(){
+ const that = this;
+ console.log("inside function");
+ // that.Load = true;
+
+ $(document).ready(function() {
+ that.tabelObj = $('#deviceTable').DataTable({
+ "processing": false,
+ "searching": true,
+ pagingType: 'full_numbers',
+ pageLength: 25,
+ serverSide: false,
+ responsive: true,
+ "scrollY":'60vh',
+ "scrollCollapse": true,
+
+ // "deferLoading": 25 ,
+ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ // "rowCallback": function(row: Node, data: any | Object, index: number){
+ ajax: (mainData,callback) => {
+
+
+ that.contactService.getRenewalHistory(this.data._id).subscribe(res=>{
+ console.log(res);
+ that.Load = false;
+ if(res.length!=0){
+ callback({ data: res[0].data });
+
+ }else{
+ callback({ data: [] });
+ }
+
+ })
+
+
+ },
+ "columns": [
+ {
+ "data": "Device_Name",
+ "render": function(data, type, row) {
+ return data?data.device.Device_Name : '';
+ }
+ },
+ {
+ "data": "Device_ID",
+ "render": function(data, type, row) {
+ return data?data.device.Device_ID : '';
+ }
+ },
+ {
+ "data": "expired_on",
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+ {
+ "data": "renewed_on",
+ "render": function(data, type, row) {
+ return data?data : '';
+ }
+ },
+
+
+ ],
+ "columnDefs": [
+ { className: "dt-body-left", "targets": [ 0,1,2,3] },
+ { "width": "10px", "targets": 0 },
+ { "width": "40px", "targets": 1 },
+ { "width": "100px", "targets": 2 },
+ { "width": "70px", "targets": 3 },
+ ] , order: [[ 3, 'desc' ], [ 0, 'asc' ]]
+ });
+
+ });
+
+}
+
+
+}
diff --git a/src/app/dashboard/share-user/share-user.component.html b/src/app/dashboard/share-user/share-user.component.html
new file mode 100644
index 0000000..45ed14b
--- /dev/null
+++ b/src/app/dashboard/share-user/share-user.component.html
@@ -0,0 +1,32 @@
+Shared Usersclose
+
+ Device Name: {{dname}}
+
+
+
+
+ Name
+ Remove Sharing
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+
+
+
+ remove_circle_outline
+
+
+
+
+
+
+
diff --git a/src/app/dashboard/share-user/share-user.component.scss b/src/app/dashboard/share-user/share-user.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/share-user/share-user.component.spec.ts b/src/app/dashboard/share-user/share-user.component.spec.ts
new file mode 100644
index 0000000..b51da2b
--- /dev/null
+++ b/src/app/dashboard/share-user/share-user.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ShareUserComponent } from './share-user.component';
+
+describe('ShareUserComponent', () => {
+ let component: ShareUserComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ShareUserComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ShareUserComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/share-user/share-user.component.ts b/src/app/dashboard/share-user/share-user.component.ts
new file mode 100644
index 0000000..0952685
--- /dev/null
+++ b/src/app/dashboard/share-user/share-user.component.ts
@@ -0,0 +1,80 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {Device} from '../../device';
+import {ContactService} from '../../contact.service';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { SidebarComponent } from '../../sidebar/sidebar.component';
+
+@Component({
+ selector: 'app-share-user',
+ templateUrl: './share-user.component.html',
+ styleUrls: ['./share-user.component.scss'],
+ providers: [ContactService,SidebarComponent]
+})
+export class ShareUserComponent implements OnInit {
+//shrdeviceOwner
+d :any;
+dname:any;
+did :any;
+devv:any;
+deleteshare(uid){
+
+ this.contactService.deldevshr( this.d,uid)
+ .subscribe(
+
+ data => {
+
+ this.devv = data
+ window.localStorage['DataUpdate'] = 'True'
+ this.sidebar.sidebarData()
+ this.onNoClick("OKK")
+ });
+
+}
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,private _flashMessagesService: FlashMessagesService,private sidebar: SidebarComponent) {
+ this.d =data.name;
+ this.dname = data.dname;
+ this.did = data.did;
+ }
+ onNoClick(a): void {
+ console.log(a);
+ this.dialogRef.close(a);
+ }
+ devicess:any;
+ final:any;
+ foods = []
+ ngOnInit() {
+
+
+ this.contactService.shrdeviceOwner(this.d).subscribe(
+
+ data => {
+ this.devicess = data
+
+ for(let p=0;p {;
+ console.log(err);
+ if(err.status != 200)
+ {
+ /* this._flashMessagesService.show( "This Device is Not Shared to anyOne", { cssClass: 'alert-danger', timeout: 1000 }
+ );
+ */
+ this.onNoClick("No_Dev")
+
+ }});
+
+ }
+
+}
diff --git a/src/app/dashboard/speednotify/speednotify.component.html b/src/app/dashboard/speednotify/speednotify.component.html
new file mode 100644
index 0000000..7b01c07
--- /dev/null
+++ b/src/app/dashboard/speednotify/speednotify.component.html
@@ -0,0 +1,12 @@
+Speed Alert
+
+Device Name: {{dname}}
+
+Please Enter Speed to Get Alert :
+
+
+
+
+ Cancel
+ Get Alert
+
diff --git a/src/app/dashboard/speednotify/speednotify.component.scss b/src/app/dashboard/speednotify/speednotify.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/speednotify/speednotify.component.spec.ts b/src/app/dashboard/speednotify/speednotify.component.spec.ts
new file mode 100644
index 0000000..1d65a58
--- /dev/null
+++ b/src/app/dashboard/speednotify/speednotify.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SpeednotifyComponent } from './speednotify.component';
+
+describe('SpeednotifyComponent', () => {
+ let component: SpeednotifyComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ SpeednotifyComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(SpeednotifyComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/speednotify/speednotify.component.ts b/src/app/dashboard/speednotify/speednotify.component.ts
new file mode 100644
index 0000000..d684358
--- /dev/null
+++ b/src/app/dashboard/speednotify/speednotify.component.ts
@@ -0,0 +1,54 @@
+import { Component, OnInit,Inject } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {Device} from '../../device';
+import {ContactService} from '../../contact.service';
+import { SidebarComponent } from '../../sidebar/sidebar.component';
+
+@Component({
+ selector: 'app-speednotify',
+ templateUrl: './speednotify.component.html',
+ styleUrls: ['./speednotify.component.scss'],
+ providers: [ContactService,SidebarComponent]
+})
+export class SpeednotifyComponent implements OnInit {
+
+ dname:any;
+ did:any;
+ status:any;
+ speed:any;
+
+ speedAlert(){
+
+ this.contactService.speedlimit(this.did,this.speed,"true").subscribe(
+
+ data => {
+ this.dataa = data
+ window.localStorage['DataUpdate'] = 'True'
+ this.sidebar.sidebarData()
+ this.dialogRef.close("device_alert");
+
+ })
+
+
+ }
+ // speeed:any;
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any,private contactService: ContactService,private sidebar: SidebarComponent) {
+
+ // console.log(data)
+ this.dname = data.dname;
+ this.did = data.did;
+ this.status = data.status;
+ this.speed = data.speed;
+ //console.log(data.speed)
+ }
+
+ onNoClick(a): void {
+ this.dialogRef.close(a);
+ }
+ dataa:any
+ ngOnInit() {
+
+ }
+
+}
diff --git a/src/app/dashboard/view-certificate/view-certificate.component.html b/src/app/dashboard/view-certificate/view-certificate.component.html
new file mode 100644
index 0000000..641bf32
--- /dev/null
+++ b/src/app/dashboard/view-certificate/view-certificate.component.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{supAdmin.first_name?supAdmin.first_name:""}} {{supAdmin.last_name?supAdmin.last_name:""}}
+ {{supAdmin.address?supAdmin.address:""}}
+ CERTIFICATE OF INSTALLATION
+
+
+ {{devicetype}} GPS DEVICE
+ (AIS-140 COMPLIANT)
+ INSTALLATION/FITMENT CERTIFICATE
+ {{companyName}}
+ {{companyAddress}}
+
+
+
+
+
+
+
+
+
+
+
+ Vehicle Details :-
+
+
+
+
+ Name of Owner : {{userName}}
+ Registration Number. : {{devName}}
+ Chassis no. : {{ChassisNo}}
+ Engine no. : {{engineNo}}
+
+
+
+ Vehicle Make : {{manufacturingCompany}}
+ Vehicle Model : {{typeOfVehicle}}
+
+
+
+
+
+ GPS DEVICE DETAILS : -
+
+
+
+
+ Device Model : {{devicetype}}
+ IMEI Number : {{devID}}
+ UID Number : {{uniqueID}}
+
+
+
+ Invoice Number :
+ Vehicle Model : {{typeOfVehicle}}
+ ICCID Number: {{ICCICD}}
+
+
+
+
+
+ INSTALLATION DETAILS : -
+
+
+
+
+
+ Dealer Name : {{dealerName}}
+ Dealer Address : {{dealerAddress}}
+ RTO Certificate No :
+ Installation Date : {{installationDate | date:'dd-MM-yyyy'}}
+
+
+
+ Mobile No : {{user.phone?user.phone:""}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This installation certificate is valid till date {{data.deviceInfo.expiration_date?(data.deviceInfo.expiration_date | date:'dd-MM-yyyy') :""}}
+
+
+
+ Dealer Stamp
+
+
+ Authorised Signature
+
+
+
+
+ PRODUCT SATISFACTION REPORT : -
+
+
+
+
+ This is to Acknowledge and confirm that we have fitted our vehicle with above vehicle location tracking unit.
+ We have checked the performance of the vehicle after fitment and we confirm VLTD is functioning as per norms
+ listed out in AIS-140 standards and other guidelines of MoRTH and other government departments. We are also
+ satisfied with the performance of the device in all respect. We undertake not to raise any dispute or any legal
+ claims against Airotrack in the event that the above mentioned function are found broken/torn/tampered hereafter.
+ I also understand that telecom network connectivity doesn't come under the scope of Airotrack and will not raise
+ any claim or disputes with respect to issues arising with low or no network coverage.
+
+
+
+
+
+ Cancel
+ Export PDF
+
\ No newline at end of file
diff --git a/src/app/dashboard/view-certificate/view-certificate.component.scss b/src/app/dashboard/view-certificate/view-certificate.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dashboard/view-certificate/view-certificate.component.spec.ts b/src/app/dashboard/view-certificate/view-certificate.component.spec.ts
new file mode 100644
index 0000000..64c8836
--- /dev/null
+++ b/src/app/dashboard/view-certificate/view-certificate.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ViewCertificateComponent } from './view-certificate.component';
+
+describe('ViewCertificateComponent', () => {
+ let component: ViewCertificateComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ViewCertificateComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ViewCertificateComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dashboard/view-certificate/view-certificate.component.ts b/src/app/dashboard/view-certificate/view-certificate.component.ts
new file mode 100644
index 0000000..646a12c
--- /dev/null
+++ b/src/app/dashboard/view-certificate/view-certificate.component.ts
@@ -0,0 +1,398 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import * as moment from 'moment';
+declare var swal: any;
+declare var jsPDF:any;
+// declare var qrcode:any;
+// declare var QRCode :any;
+declare var QRious:any;
+declare var $:any;
+@Component({
+ selector: 'app-view-certificate',
+ templateUrl: './view-certificate.component.html',
+ styleUrls: ['./view-certificate.component.scss']
+})
+export class ViewCertificateComponent implements OnInit {
+ devName:any;
+ img1='/assets/images/liveTrackIcons/noImageAvailableIcon1.jpg'
+
+phNum:any;
+createdOn:any;
+expOn:any;
+supAdmin
+DealerObj = [];
+userObj = [];
+// iconType:any;
+simNum:any;
+todayODO:any;
+totalODO:any;
+useridd: any;
+emailId:any ="";
+costumers: any = [];
+deviceID: any;
+userName:any;
+devmodel:any;
+newUserArr=[];
+editTemplate:boolean=true;
+deletetemplate:boolean=false;
+ orignalEmail: any;
+ initialUser: any;
+ ExportPdf: boolean;
+ devID: any;
+ InvoiceDate: any;
+ devicetype: any;
+ fitmentDate: any;
+ engineNo: any;
+ typeOfVehicle: any;
+ manufacturingCompany: any;
+ lastFitnessDate: any;
+ vehicleRegDate: any;
+ vehicleManufacturingDate: any;
+
+ IMSI: any;
+ uniqueID: any;
+ lattitude: any;
+ longitude: any;
+ userAddress: any;
+ dealerAddress: any;
+ CID_No: any;
+ imgUrl: any;
+ imgURL: any;
+ companyName: any;
+ companyAddress: any;
+ transportOfficeCity: any;
+ transportOfficeState: { data: string; };
+ ChassisNo: any;
+ deviceManufacturer: any;
+ invoiceNum: any;
+ numberOfSOS: any;
+ expiration_date: any;
+ organisationFlag: any;
+ distributerName:any;
+ distSelect: any=[];
+ superAdmin: any;
+ isDealer: any;
+ dealerId: any;
+ lastPingOn:any
+ lastDeviceTime:any
+ deviceImage=[];
+ dealerName
+ installationDate;
+ ICCICD
+ user: any;
+ constructor(public dialogRef: MdDialogRef,
+ @Inject(MD_DIALOG_DATA) public data: any ) {
+ console.log(data);
+
+ }
+
+ ngOnInit() {
+
+ this.lastDeviceTime=this.data.deviceInfo.last_device_time;
+ this.lastPingOn=this.data.deviceInfo.last_ping_on
+ this.devName = this.data.deviceInfo.Device_Name;
+ this.devID = this.data.deviceInfo.Device_ID?this.data.deviceInfo.Device_ID:"";
+ this.phNum =this.data.deviceInfo.contact_number;
+ this.createdOn = this.data.deviceInfo.created_on?(new Date(this.data.deviceInfo.created_on).toISOString()):"";
+ this.expOn = this.data.deviceInfo.expiration_date?(new Date(this.data.deviceInfo.expiration_date).toISOString()):"";
+ // this.iconType=this.data.deviceInfo.iconType;
+ this.simNum =this.data.deviceInfo.sim_number;
+ this.orignalEmail = this.data.deviceInfo.Email_ID
+ this.emailId = this.data.deviceInfo.Email_ID;
+ this.deviceImage=this.data.deviceInfo.deviceImage
+
+ for(var i=0;i0){
+ this.supAdmin.imageDoc='https://www.oneqlik.in' + this.supAdmin.imageDoc[0].substring(6)
+ }
+ console.log(this.deviceImage);
+ this.installationDate=this.data.deviceInfo.created_on
+ this.todayODO=this.data.deviceInfo.today_odo;
+ this.totalODO =this.data.deviceInfo.total_odo;
+ this.deviceID = this.data.deviceInfo._id;
+ this.initialUser = this.data.deviceInfo.user._id;
+ this.user=this.data.deviceInfo.user
+ this.userName = this.data.deviceInfo.OwnerName;
+ this.userAddress = this.data.deviceInfo?this.data.deviceInfo.user.address:"";
+ this.dealerName = this.data.deviceInfo.Dealer_name ;
+ this.dealerId = this.data.deviceInfo.Dealer?this.data.deviceInfo.Dealer._id : "";
+ console.log('this.dealerId',this.dealerId);
+ this.dealerAddress = this.data.deviceInfo.DealerAddress;
+ this.InvoiceDate = this.data.deviceInfo.invoiceDate?(new Date(this.data.deviceInfo.invoiceDate).toISOString()):"";
+ this.invoiceNum = this.data.deviceInfo.invoiceNumber
+ this.CID_No = this.data.deviceInfo.CID_No
+ this.devicetype = this.data.deviceInfo.device_model?this.data.deviceInfo.device_model.device_type:"";
+ this.ICCICD = this.data.deviceInfo.ICCICD;
+ this.IMSI = this.data.deviceInfo.IMSI;
+ this.uniqueID = this.data.deviceInfo.uniqueID;
+ this.fitmentDate = this.data.deviceInfo.fitmentDate?new Date(this.data.deviceInfo.fitmentDate):"";
+ this.expiration_date =this.data.deviceInfo.expiration_date?new Date(this.data.deviceInfo.expiration_date):"";
+ this.engineNo = this.data.deviceInfo.engineNo;
+ this.typeOfVehicle = this.data.deviceInfo.typeOfVehicle;
+ this.manufacturingCompany = this.data.deviceInfo.manufacturingCompany;
+
+ this.lastFitnessDate = this.data.deviceInfo.lastFitnessDate?new Date(this.data.deviceInfo.lastFitnessDate):"";
+ this.vehicleRegDate = this.data.deviceInfo.vehicleRegDate? new Date(this.data.deviceInfo.vehicleRegDate):"";
+ this.vehicleManufacturingDate = this.data.deviceInfo.vehicleManufacturingDate?new Date(this.data.deviceInfo.vehicleManufacturingDate):"";
+ this.lattitude = this.data.deviceInfo.last_loc?this.data.deviceInfo.last_loc.coordinates[0]:"";
+ this.longitude = this.data.deviceInfo.last_loc?this.data.deviceInfo.last_loc.coordinates[1]:"";
+ this.qrCodeGenerator()
+ }
+
+ qrCodeGenerator() {
+ var qrcodeDATA ="";
+ if(this.userName){
+ qrcodeDATA += "Owner Name : " + this.userName + " " ;
+ }
+ // if(this.userAddress){
+ // qrcodeDATA += "Owner Add" + this.userAddress + " " ;
+ // }
+
+ if(this.engineNo){
+ qrcodeDATA += "Engine no. :" + this.engineNo + " " ;
+ }
+ if(this.ChassisNo){
+ qrcodeDATA += "Chassis:" + this.ChassisNo + " " ;
+ }
+ if(this.uniqueID){
+ qrcodeDATA += "UID:" + this.uniqueID + " " ;
+
+ }
+ if(this.devID){
+ qrcodeDATA += "IMEI :" + this.devID +" " ;
+ }
+ if(this.devName){
+ qrcodeDATA += "Device name :" + this.devName + " " ;
+ }
+ if(this.invoiceNum){
+ qrcodeDATA += "Invoice Number :" + this.invoiceNum + " ";
+ }
+ if(this.ICCICD){
+ qrcodeDATA += "ICCID :" + this.ICCICD + " " ;
+ }
+ if(this.IMSI){
+ qrcodeDATA += "IMSI :" + this.IMSI + " " ;
+
+ }
+
+ if(this.simNum){
+ qrcodeDATA += "SIM :" + this.simNum + " " ;
+
+ }
+ if(this.CID_No){
+ qrcodeDATA += "CID no :" + this.CID_No + " " ;
+
+ }
+ if(this.typeOfVehicle){
+ qrcodeDATA += "Vehicle:" + this.typeOfVehicle + " " ;
+ }
+
+
+
+ if((this.fitmentDate != undefined)&&(this.fitmentDate != '')){
+ var fdate = new Date(this.fitmentDate);
+ var fDate = moment(fdate).format('l');
+
+ qrcodeDATA += "Fitment Date :" + fDate + " " ;
+
+ }
+ if((this.InvoiceDate != undefined)&&(this.InvoiceDate!='')){
+ var iDate = new Date(this.InvoiceDate);
+ var invDate = moment(iDate).format('l');
+ qrcodeDATA += "Invoice Date :" + invDate + " ";
+
+ }
+
+ if((this.vehicleRegDate != undefined)&&(this.vehicleRegDate != "")){
+ console.log("vehRegistration Date =>",this.vehicleRegDate);
+ var vehregD = new Date(this.vehicleRegDate);
+ var vehRegDate = moment(vehregD).format('l');
+ qrcodeDATA += "Reg Date :" + vehRegDate ;
+ }
+
+ // var typeNumber = 4;
+ // var errorCorrectionLevel = 'L';
+ // var qr = qrcode(typeNumber, errorCorrectionLevel);
+ // qr.addData(qrcodeDATA);
+ // qr.make();
+ // this.imgURL = qr.createDataURL();
+
+
+
+ var qr = new QRious();
+ qr.set({
+ // background: 'green',
+ backgroundAlpha: 0.8,
+ // foreground: 'blue',
+ foregroundAlpha: 0.8,
+ level: 'L',
+ padding: 25,
+ size: 500,
+ value: qrcodeDATA
+ });
+
+
+ this.imgURL= qr.toDataURL();
+
+
+
+ }
+ exportAsPdf() {
+ var that=this
+ var name="Installation Certificate "+this.devName?this.devName:"Test"+".pdf"
+ console.log(this.imgURL);
+ var doc = new jsPDF();
+ var specialElementHandlers = {
+ '#editor': function (element: any, renderer: any) {
+ return true;
+ }
+ };
+ // doc.text("Customer Copy", 110, 12);
+ doc.setFontSize(10);
+ doc.autoTable({
+ theme: 'plain',
+ html: '#testPdf',
+ styles : {
+ cellWidth : 50
+ },
+ willDrawCell: data => {
+ if(data.row.index === 0){
+ data.row.height = 50;
+ data.row.cells[1].styles.halign = 'center';
+ data.row.cells[1].styles.fontSize = 11;
+ // data.row.cells[1].styles.lineHeight= "2.5";
+ // doc.setLineHeightFactor()
+ var img = new Image();
+ img.src = this.supAdmin.imageDoc?this.supAdmin.imageDoc:'';
+ img.crossOrigin="anonymous";
+ if(this.supAdmin.imageDoc){
+ img.onload = function(){
+ console.log("1");
+ doc.addImage(img , 'png', 10, 12,30,30)
+
+
+ };
+ }
+ // doc.addImage(this.supAdmin.imageDoc,'JPEG', 140, 12,40,40);
+
+ doc.addImage(this.imgURL,'JPEG',150, 12,30,30);
+
+ }
+ if(data.row.index ===0){
+ data.row.cells[0].styles.halign = 'center';
+ doc.halign = 'center';
+ doc.setFontStyle('bold');
+ doc.cellPadding=40
+ }
+
+ if((data.row.index ===1) ||(data.row.index ===3) || (data.row.index ===5) || (data.row.index ===7) ||(data.row.index ===8) ||(data.row.index ===11) || (data.row.index ===13)){
+ doc.setFontStyle('bold');
+
+ }
+ if(data.row.index ===7){
+ data.row.height = 45;
+ // data.row.cells[0].styles.halign = 'center';
+ // doc.halign = 'center';
+ }
+
+ if(data.row.index ===13){
+ data.row.height = 25;
+ // data.row.cells[0].styles.halign = 'center';
+ // doc.halign = 'center';
+ }
+ doc.setLineWidth(1);
+ doc.rect(7, 7, 195, 230);
+
+ }
+
+ });
+
+
+ var myImage = new Image();
+ myImage.src = that.deviceImage[0]?that.deviceImage[0]:this.img1;
+ myImage.crossOrigin="anonymous";
+
+ var myImage1 = new Image();
+ myImage1.src = that.deviceImage[1]?that.deviceImage[1]:this.img1;
+ myImage1.crossOrigin="anonymous";
+
+ var myImage2 = new Image();
+ myImage2.src = that.deviceImage[2]?that.deviceImage[2]:this.img1;
+ myImage2.crossOrigin="anonymous";
+
+ if(that.deviceImage.length==0){
+ doc.save(name);
+ }
+
+ function f1() {
+ return new Promise((resolve, reject) => {
+ myImage.onload = function(){
+ console.log("1");
+ doc.addImage(myImage , 'png', 40, 150, 30, 20);
+ if(that.deviceImage.length==1){
+ doc.save(name);
+ }
+
+ };
+ resolve('');
+ });
+}
+
+function f3(){
+ myImage2.onload = function(){
+ console.log("3");
+
+ doc.addImage(myImage2 , 'png', 120, 150, 30, 20);
+ doc.save(name);
+
+
+ };
+}
+
+function f2() {
+ return new Promise((resolve, reject) => {
+ myImage1.onload = function(){
+ console.log("2");
+ doc.addImage(myImage1 , 'png', 80, 150, 30, 20);
+ if(that.deviceImage.length==2){
+ doc.save(name);
+ }
+ };
+ resolve('');
+ })
+
+
+}
+
+f1().then(res => f2().then(res1=>f3()));
+
+
+
+
+
+
+
+ }
+
+ toDataURL(url, callback) {
+ console.log(url);
+
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function () {
+ var reader = new FileReader();
+ reader.onloadend = function () {
+ callback(reader.result);
+ }
+ reader.readAsDataURL(xhr.response);
+ };
+ xhr.open('GET', url);
+ xhr.responseType = 'blob';
+ xhr.send();
+ }
+}
diff --git a/src/app/data.service.ts b/src/app/data.service.ts
new file mode 100644
index 0000000..fa7b5d0
--- /dev/null
+++ b/src/app/data.service.ts
@@ -0,0 +1,12 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject } from 'rxjs/BehaviorSubject';
+
+@Injectable()
+export class DataService {
+ private messageSource = new BehaviorSubject("default message");
+ currentMessage = this.messageSource.asObservable();
+ constructor() { }
+ changeMessage(message: string) {
+ this.messageSource.next(message)
+ }
+}
\ No newline at end of file
diff --git a/src/app/data.ts b/src/app/data.ts
new file mode 100644
index 0000000..d378895
--- /dev/null
+++ b/src/app/data.ts
@@ -0,0 +1,10 @@
+import { Injectable } from '@angular/core';
+
+@Injectable()
+export class Data {
+
+ public storage: any;
+
+ public constructor() { }
+
+}
\ No newline at end of file
diff --git a/src/app/datainjection.service.spec.ts b/src/app/datainjection.service.spec.ts
new file mode 100644
index 0000000..419a1f2
--- /dev/null
+++ b/src/app/datainjection.service.spec.ts
@@ -0,0 +1,15 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { DatainjectionService } from './datainjection.service';
+
+describe('DatainjectionService', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [DatainjectionService]
+ });
+ });
+
+ it('should be created', inject([DatainjectionService], (service: DatainjectionService) => {
+ expect(service).toBeTruthy();
+ }));
+});
diff --git a/src/app/datainjection.service.ts b/src/app/datainjection.service.ts
new file mode 100644
index 0000000..1a55ef8
--- /dev/null
+++ b/src/app/datainjection.service.ts
@@ -0,0 +1,158 @@
+import { environment } from './../environments/environment';
+import { Injectable } from '@angular/core';
+import { ContactService } from './contact.service';
+import * as io from 'socket.io-client';
+import { Params,Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import{Http, Headers} from '@angular/http';
+import 'rxjs/add/operator/map';
+
+
+@Injectable()
+export class DatainjectionService {
+ devicess:any;
+ final:any=null;
+ userID:any;
+ fs:any;
+ ls:any;
+ or:any;
+ emailid:any;
+ useridd:any;
+ custtype:any;
+ cust:boolean = false;
+
+ dev_url = environment.hostUrl;
+
+ //dev_url = 'http://localhost:3000';
+ // socketUrl= environment.socket5000;
+
+ mb: any;
+ socket_gps: any; socket_5000: any; socket_notifIO: any;
+ getSocket_gps(){
+ return this.socket_gps;
+ }
+ getSocket_5000(){
+ return this.socket_5000
+ }
+ getSocket_notifIO(){
+ return this.socket_notifIO;
+ }
+ constructor(private contactService: ContactService, private activatedRoute: ActivatedRoute, private http: Http,private router:Router) {
+ // alert('ata injection constructor')
+ this.socket_gps = io.connect('https://soc.oneqlik.in' +'/gps', {
+ secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ });
+
+ this.socket_5000 = io.connect('https://soc.oneqlik.in', {
+ secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ });
+
+ this.socket_notifIO = io.connect('https://soc.oneqlik.in'+'/notifIO', {
+ secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ });
+
+ // this.socket_gps = io.connect('https://socket.oneqlik.in' +'/gps', {
+ // secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ // });
+
+ // this.socket_5000 = io.connect('https://socket.oneqlik.in', {
+ // secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ // });
+
+ // this.socket_notifIO = io.connect('https://socket.oneqlik.in'+'/notifIO', {
+ // secure: true, rejectUnauthorized: false, transports: ["websocket", "polling"], upgrade: false
+ // });
+
+ // https://server2.oneqlik.in/
+ if(window.localStorage.custumer_token){
+ this.fs = JSON.parse(window.atob(window.localStorage.custumer_token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.custumer_token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.custumer_token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.custumer_token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.custumer_token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.custumer_token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.custumer_token.split('.')[1])).isDealer;
+ if(this.custtype == true){
+ this.cust = true;
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+ }
+ else{
+ console.log(router.url);
+ var url=(router.url).substring(0,12);
+ console.log(url);
+
+ if(url=="/ViewVehicle"){
+
+ }else{
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+ if(this.custtype == true){
+ this.cust = true;
+ }
+ if(this.mb.charAt(0)=="n"){
+ this.mb = ' '
+ }
+
+ }
+
+ }
+
+ }
+
+ getDevice(emailid,id) {
+ return this.http.get(this.dev_url + "/devices/getDeviceByUser?email="+emailid+'&id='+id)
+ .map(data => {
+ data.json();
+
+
+ var devices = data.json().devices;
+
+
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+ }
+ getData(e,u,g,s,l,input,supadm,dealer){
+
+ if(input && input!='undefined'){
+ s=0;
+ }
+ var url = this.dev_url + "/devices/getDeviceByUser?email="+e+'&id='+u+'&skip='+s+"&limit="+l;
+ if(input && input!="undefined"){
+ url+= "&search="+input;
+ }
+ console.log(url)
+ if(supadm)
+ url+= '&supAdmin=' + supadm;
+ if(dealer)
+ url+= '&dealer=' + dealer;
+ if(g)
+ url += "&group=" + g;
+ return this.http.get(url)
+ .map(data => {
+ data.json();
+
+ var devices = data.json().devices;
+ /* console.log("Devices: ",temp); */
+ return data.json();
+ });
+
+ }
+ getGroupData(e,u){
+ return this.http.get(this.dev_url + "/devices/getVehiclesUnderGroup?userid="+u)
+ .map(data => {
+
+ data.json();
+ return data.json();
+ });
+
+ }
+
+}
diff --git a/src/app/dealers-info/dealer-permission/dealer-permission.component.html b/src/app/dealers-info/dealer-permission/dealer-permission.component.html
new file mode 100644
index 0000000..163ab75
--- /dev/null
+++ b/src/app/dealers-info/dealer-permission/dealer-permission.component.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+ {{'Save' | translate}}
+ {{'CANCEL' | translate}}
+
+
+
diff --git a/src/app/dealers-info/dealer-permission/dealer-permission.component.scss b/src/app/dealers-info/dealer-permission/dealer-permission.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/dealers-info/dealer-permission/dealer-permission.component.spec.ts b/src/app/dealers-info/dealer-permission/dealer-permission.component.spec.ts
new file mode 100644
index 0000000..c26bca2
--- /dev/null
+++ b/src/app/dealers-info/dealer-permission/dealer-permission.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DealerPermissionComponent } from './dealer-permission.component';
+
+describe('DealerPermissionComponent', () => {
+ let component: DealerPermissionComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DealerPermissionComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DealerPermissionComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dealers-info/dealer-permission/dealer-permission.component.ts b/src/app/dealers-info/dealer-permission/dealer-permission.component.ts
new file mode 100644
index 0000000..453bbbe
--- /dev/null
+++ b/src/app/dealers-info/dealer-permission/dealer-permission.component.ts
@@ -0,0 +1,102 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { MD_DIALOG_DATA, MdDialog, MdDialogRef } from '@angular/material';
+import { ContactService } from '../../contact.service';
+import { ResetPasswordComponent } from '../../add/reset-password/reset-password.component';
+
+@Component({
+ selector: 'app-dealer-permission',
+ templateUrl: './dealer-permission.component.html',
+ styleUrls: ['./dealer-permission.component.scss']
+})
+export class DealerPermissionComponent implements OnInit {
+ DeviceSetting = { Add: true, Edit: true, Delete: false }
+ UserSetting = { Add: true, Edit: true, Delete: false }
+ DeviceOptions = [{ name: "Add", value: true }, { name: "Edit", value: true }, { name: "Delete", value: false }];
+ UserOptions = [{ name: "Add", value: true }, { name: "Edit", value: true }, { name: "Delete", value: false }]
+ constructor(private contactService: ContactService,public dialog: MdDialog,public dialogRef: MdDialogRef, @Inject(MD_DIALOG_DATA) public data: any) {
+
+
+ }
+
+ dev_permission:boolean = true;
+ cust_permission : boolean = true;
+ ngOnInit() {
+ console.log(this.data);
+ console.log(this.data.device_add_permission);
+ console.log(this.data.cust_add_permission);
+ if (this.data.devicePermission) {
+ this.DeviceSetting = this.data.devicePermission;
+ for (let i = 0; i < this.DeviceOptions.length; i++) {
+ // if(this.DeviceOptions[i].name==this.data.DevicePermission[this.DeviceOptions[i].name]){
+ this.DeviceOptions[i].value = this.data.devicePermission[this.DeviceOptions[i].name]
+ // }
+ }
+ }
+ if (this.data.userPermission) {
+ this.UserSetting = this.data.userPermission;
+ for (let i = 0; i < this.UserOptions.length; i++) {
+ // if(this.UserOptions[i].name==this.data.DevicePermission[this.UserOptions[i].name]){
+ this.UserOptions[i].value = this.data.userPermission[this.UserOptions[i].name]
+ // }
+ }
+ }
+ if(this.data.device_add_permission != undefined){
+ this.dev_permission = this.data.device_add_permission ;
+ console.log(this.dev_permission);
+ }
+ if(this.data.cust_add_permission != undefined){
+ this.cust_permission = this.data.cust_add_permission ;
+ console.log(this.cust_permission);
+ }
+ }
+
+save(){
+ console.log('dev_permission',this.dev_permission);
+ console.log('cust_permission',this.cust_permission);
+ let uid = this.data._id ;
+ var permission_payLoad = {
+ device_add_permission : this.dev_permission,
+ cust_add_permission : this.cust_permission,
+ devicePermission: this.DeviceSetting,
+ userPermission: this.UserSetting,
+ uid : uid
+ }
+
+ this.contactService.setDealerPermission(permission_payLoad).subscribe(res=>{
+ console.log(res);
+ this.dialogRef.close('succ');
+ },err=>{
+ console.log(err);
+ })
+
+}
+cancel(){
+ this.dialogRef.close('close');
+
+}
+
+
+ updateCheckedOptions(value, e, type) {
+ console.log(value, e);
+ if (type == 'user') {
+ for (var i = 0; i < this.UserOptions.length; i++) {
+ if (this.UserOptions[i].name == value) {
+ this.UserOptions[i].value = e;
+ this.UserSetting[value] = e
+ console.log(this.UserOptions, this.UserSetting)
+ }
+ }
+
+
+ } else {
+ for (var i = 0; i < this.DeviceOptions.length; i++) {
+ if (this.DeviceOptions[i].name == value) {
+ this.DeviceOptions[i].value = e;
+ this.DeviceSetting[value] = e;
+ console.log(this.DeviceOptions, this.DeviceSetting)
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/app/dealers-info/dealers-info.component.html b/src/app/dealers-info/dealers-info.component.html
new file mode 100644
index 0000000..61ef9d4
--- /dev/null
+++ b/src/app/dealers-info/dealers-info.component.html
@@ -0,0 +1,376 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'Dealers' | translate}}
+
+
+
+ {{'Next' | translate}} >>
+ << {{'Previous' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'NAME' | translate}}
+
+
+
{{'EMAIL' | translate}}
+
+
+
{{'PHONE' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{dealer.first_name}} {{dealer.last_name}}
+
+
+
+
{{dealerPhone(dealer)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/dealers-info/dealers-info.component.scss b/src/app/dealers-info/dealers-info.component.scss
new file mode 100644
index 0000000..7ce05e0
--- /dev/null
+++ b/src/app/dealers-info/dealers-info.component.scss
@@ -0,0 +1,1732 @@
+// #body{
+// overflow-x: hidden;
+// overflow-y: hidden;
+// }
+
+// ::-webkit-scrollbar {
+// // display: none;
+// }
+// #d:hover {
+// color: rgb(14, 102, 18);
+
+
+// }
+// #ac{
+// color: rgb(38, 38, 90)
+// }
+// #active{
+// text-decoration-line: underline;
+// text-decoration-color: rgb(66, 26, 245);
+// }
+// .switch {
+// position: relative;
+// display: inline-block;
+// width: 60px;
+// height: 34px;
+// }
+
+// .headStyle{
+// text-align: center;
+// font-size: 22px;
+// font-weight: 500;
+
+// color: #6b6a6a;
+// padding-top: 7px;
+// margin: 0px;
+// }
+
+
+// .switch input {display:none;}
+
+// .slider {
+// position: absolute;
+// cursor: pointer;
+// top: 6px;
+// left: 11px;
+// right: 7px;
+// bottom: 7px;
+// background-color: #ccc;
+// transition: .4s;
+// }
+
+// .slider:before {
+// position: absolute;
+// content: "";
+// height: 11px;
+// width: 11px;
+// left: 2px;
+// bottom: 5px;
+// background-color: white;
+// transition: .4s;
+// }
+
+// input:checked + .slider {
+// background-color: #2196F3;
+// }
+
+// input:focus + .slider {
+// box-shadow: 0 0 1px #2196F3;
+// }
+
+// input:checked + .slider:before {
+// -webkit-transform: translateX(26px);
+// -ms-transform: translateX(26px);
+// transform: translateX(26px);
+// }
+
+// /* Rounded sliders */
+// .slider.round {
+// border-radius: 34px;
+// }
+
+// .slider.round:before {
+// border-radius: 50%;
+// }
+
+
+// .sk-fading-circle {
+// margin: 100px auto;
+// width: 40px;
+// height: 40px;
+// position: relative;
+
+// }
+
+// .sk-fading-circle .sk-circle {
+// width: 100%;
+// height: 100%;
+// position: absolute;
+// left: 0;
+// top: 0;
+// }
+
+// .sk-fading-circle .sk-circle:before {
+// content: '';
+// display: block;
+// margin: 0 auto;
+// width: 15%;
+// height: 15%;
+// background-color: #333;
+// border-radius: 100%;
+// -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+// animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+// }
+// .sk-fading-circle .sk-circle2 {
+// -webkit-transform: rotate(30deg);
+// -ms-transform: rotate(30deg);
+// transform: rotate(30deg);
+// }
+// .sk-fading-circle .sk-circle3 {
+// -webkit-transform: rotate(60deg);
+// -ms-transform: rotate(60deg);
+// transform: rotate(60deg);
+// }
+// .sk-fading-circle .sk-circle4 {
+// -webkit-transform: rotate(90deg);
+// -ms-transform: rotate(90deg);
+// transform: rotate(90deg);
+// }
+// .sk-fading-circle .sk-circle5 {
+// -webkit-transform: rotate(120deg);
+// -ms-transform: rotate(120deg);
+// transform: rotate(120deg);
+// }
+// .sk-fading-circle .sk-circle6 {
+// -webkit-transform: rotate(150deg);
+// -ms-transform: rotate(150deg);
+// transform: rotate(150deg);
+// }
+// .sk-fading-circle .sk-circle7 {
+// -webkit-transform: rotate(180deg);
+// -ms-transform: rotate(180deg);
+// transform: rotate(180deg);
+// }
+// .sk-fading-circle .sk-circle8 {
+// -webkit-transform: rotate(210deg);
+// -ms-transform: rotate(210deg);
+// transform: rotate(210deg);
+// }
+// .sk-fading-circle .sk-circle9 {
+// -webkit-transform: rotate(240deg);
+// -ms-transform: rotate(240deg);
+// transform: rotate(240deg);
+// }
+// .sk-fading-circle .sk-circle10 {
+// -webkit-transform: rotate(270deg);
+// -ms-transform: rotate(270deg);
+// transform: rotate(270deg);
+// }
+// .sk-fading-circle .sk-circle11 {
+// -webkit-transform: rotate(300deg);
+// -ms-transform: rotate(300deg);
+// transform: rotate(300deg);
+// }
+// .sk-fading-circle .sk-circle12 {
+// -webkit-transform: rotate(330deg);
+// -ms-transform: rotate(330deg);
+// transform: rotate(330deg);
+// }
+// .sk-fading-circle .sk-circle2:before {
+// -webkit-animation-delay: -1.1s;
+// animation-delay: -1.1s;
+// }
+// .sk-fading-circle .sk-circle3:before {
+// -webkit-animation-delay: -1s;
+// animation-delay: -1s;
+// }
+// .sk-fading-circle .sk-circle4:before {
+// -webkit-animation-delay: -0.9s;
+// animation-delay: -0.9s;
+// }
+// .sk-fading-circle .sk-circle5:before {
+// -webkit-animation-delay: -0.8s;
+// animation-delay: -0.8s;
+// }
+// .sk-fading-circle .sk-circle6:before {
+// -webkit-animation-delay: -0.7s;
+// animation-delay: -0.7s;
+// }
+// .sk-fading-circle .sk-circle7:before {
+// -webkit-animation-delay: -0.6s;
+// animation-delay: -0.6s;
+// }
+// .sk-fading-circle .sk-circle8:before {
+// -webkit-animation-delay: -0.5s;
+// animation-delay: -0.5s;
+// }
+// .sk-fading-circle .sk-circle9:before {
+// -webkit-animation-delay: -0.4s;
+// animation-delay: -0.4s;
+// }
+// .sk-fading-circle .sk-circle10:before {
+// -webkit-animation-delay: -0.3s;
+// animation-delay: -0.3s;
+// }
+// .sk-fading-circle .sk-circle11:before {
+// -webkit-animation-delay: -0.2s;
+// animation-delay: -0.2s;
+// }
+// .sk-fading-circle .sk-circle12:before {
+// -webkit-animation-delay: -0.1s;
+// animation-delay: -0.1s;
+// }
+
+// @-webkit-keyframes sk-circleFadeDelay {
+// 0%, 39%, 100% { opacity: 0; }
+// 40% { opacity: 1; }
+// }
+
+// @keyframes sk-circleFadeDelay {
+// 0%, 39%, 100% { opacity: 0; }
+// 40% { opacity: 1; }
+// }
+
+
+// ul, li {
+// list-style: none;
+// float: left;
+// line-height: 15vh;
+// }
+// .upper{
+// margin-top: -70px;
+// width: 100%;
+// height: 17%;
+// /* margin-left: -2px;*/
+// position: fixed;
+// background-color: white;
+// top: 0;
+// z-index: 1
+// }
+// .up{
+// color: gray;
+// /* Add a font */
+
+// /* Set the font-size to 25 pixels */
+// font-size: 25px;
+
+// }
+// .middle {
+// position: absolute;
+// top: 50%;
+// left: 50%;
+// transform: translate(-50%, -50%);
+// text-align: center;
+// }
+
+// .dropdown {
+// position: relative;
+// display: inline-block;
+// }
+
+// .dropdown-content {
+// display: none;
+// position: absolute;
+// background-color: #f9f9f9;
+// min-width: 160px;
+// box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+// z-index: 1;
+// margin-left: -220px;
+// margin-top: -20px;
+
+// }
+
+// .dropdown:hover .dropdown-content {
+// display: block;
+// }
+
+// .desc {
+// padding: 15px;
+// text-align: center;
+// }
+// #insert{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// #insert2{
+// margin-left:8px;
+// margin-top:-15px;
+// text-shadow: 20px;
+// }
+// .example-container {
+// width: 500px;
+// height: 300px;
+// border: 1px solid rgba(0, 0, 0, 0.5);
+// }
+
+// .example-sidenav-content {
+// display: flex;
+// height: 100%;
+// align-items: center;
+// justify-content: center;
+// }
+
+// .example-sidenav {
+// padding: 20px;
+// }
+// .vertical-menu {
+// width: 250px;
+// padding-left: 10px;
+// }
+
+// .vertical-menu a {
+// background-color: #eee;
+// color: black;
+// display: block;
+// padding: 12px;
+// text-decoration: none;
+
+// }
+
+// .vertical-menu a:hover {
+// background-color: #ccc;
+// }
+
+// .vertical-menu a.active {
+
+// background: rgba(0, 0, 0, 0.8);
+// color: white;
+// }
+// #c2 {
+
+
+// }
+// #c1 {
+// float:left;
+
+// }
+
+// body {margin:0}
+
+// .icon-bar {
+// width: 17%;
+// /* background-color: #555; */
+// background-color: #18262F;
+// margin-top: -9px;
+// height:100%;
+// position: fixed;
+// display: inline-block;
+// margin-left: -16px;
+// }
+// @media screen and (max-width: 1000px){
+// .off{
+// display: none;
+// }
+// }
+// .icon-bar2 {
+
+// width: 299px;
+// background-color: white;
+// margin-top: -7px;
+// height:86vh;
+// position: fixed;
+
+// }
+// .icon-bar a {
+// display: block;
+// text-align: center;
+// padding: 16px;
+// transition: all 0.3s ease;
+// color: white;
+// font-size: 14px;
+// text-align: left;
+// }
+
+// .icon-bar a:hover {
+// background-color: #000;
+// }
+
+// .active {
+// background-color: #4CAF50 !important;
+// }
+// .iphone {
+// width: 201px;
+// height: 378px;
+// background: #f9f7f9;
+// border: 5px solid #c1bfc1;
+// border-radius: 45px;
+// opacity: 0.8;
+// }
+// .highlight {
+// width: 185px;
+// height: 366px;
+// border: 3px solid #fff;
+// border-radius: 45px;
+// position: relative;
+// z-index: 10;
+// top: -748px;
+// left: 10px;
+// }
+// .circle {
+// width: 7px;
+// height: 7px;
+// background: #333;
+// border-radius: 50%;
+// position: relative;
+// top: -370px;
+// left: 92px;
+// }
+// .camera {
+// width: 10px;
+// height: 10px;
+// background: #333;
+// border-radius: 50%;
+// position: relative;
+// top: -376px;
+// left: 66px;
+// }
+// .speaker {
+// width: 59px;
+// height: 3px;
+// background: #333;
+// border-radius: 5px;
+// position: relative;
+// top: -372px;
+// left: 73px;
+// }
+// .screen {
+// width: 166px;
+// height: 255px;
+// border: 3px solid #333;
+// border-radius: 5px;
+// position: relative;
+// left: 18px;
+// top: -365px;
+// background: #7f8282;
+// background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+// background: -o-linear-gradient(#e2e3e4, #7f8282);
+// background: -moz-linear-gradient(#e2e3e4, #7f8282);
+// background: linear-gradient(#e2e3e4, #7f8282);
+// }
+// .home1 {
+// width: 47px;
+// height: 47px;
+// background: #fff;
+// border-radius: 50%;
+// position: relative;
+// top: -353px;
+// left: 79px;
+// z-index: 2;
+// }
+// .home2 {
+// width: 52px;
+// height: 52px;
+// border-radius: 50%;
+// position: relative;
+// top: -403px;
+// left: 77px;
+// background: #7f8282;
+// background: -webkit-linear-gradient(#e2e3e4, #7f8282);
+// background: -o-linear-gradient(#e2e3e4, #7f8282);
+// background: -moz-linear-gradient(#e2e3e4, #7f8282);
+// background: linear-gradient(#e2e3e4, #7f8282);
+// }
+// #c2{
+// //background:green;
+// float:right;
+// }
+// #c1, #c2 {
+// width: 33%;
+// //background: rebeccapurple
+// }
+
+// #c3 {
+// width: auto;
+// width:34%;
+// // background: red
+// }
+// .off{
+// margin: auto;
+// width: 60%;
+// top:70%;
+// padding: 10px;
+// margin-right:30%
+
+// }
+// .newspaper {
+// -webkit-column-count: 2; /* Chrome, Safari, Opera */
+// -moz-column-count: 2; /* Firefox */
+// column-count: 2;
+// -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+// -moz-column-gap: 40px; /* Firefox */
+// column-gap: 40px;
+// align-content:left;
+// text-align: left;
+// }
+// #demo {
+// margin: 30px 0 50px 0;
+// font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+
+// }
+
+// #demo .wrapper {
+// display: inline-block;
+// width: 180px;
+// margin: 0 10px 0 0;
+// height: 20px;
+// position: relative;
+
+// }
+
+// #demo .parent {
+// height: 100%;
+// width: 100%;
+// display: block;
+// cursor: pointer;
+// line-height: 30px;
+// height: 30px;
+// border-radius: 5px;
+// background: #F9F9F9;
+// border: 1px solid #AAA;
+// border-bottom: 1px solid #777;
+// color: #282D31;
+// font-weight: bold;
+// z-index: 2;
+// position: relative;
+// -webkit-transition: border-radius .1s linear, background .1s linear, z-index 0s linear;
+// -webkit-transition-delay: .8s;
+// text-align: center;
+// }
+
+// #demo .parent:hover,
+// #demo .content:hover ~ .parent {
+// background: #fff;
+// -webkit-transition-delay: 0s, 0s, 0s;
+// }
+
+// #demo .content:hover ~ .parent {
+// border-bottom-left-radius: 0;
+// border-bottom-right-radius: 0;
+// z-index: 0;
+// }
+
+// #demo .content {
+// position: absolute;
+// top: 0;
+// display: block;
+// z-index: 1;
+// height: 0;
+// width: 180px;
+// padding-top: 30px;
+// -webkit-transition: height .5s ease;
+// -webkit-transition-delay: .4s;
+// border: 1px solid #777;
+// border-radius: 5px;
+// box-shadow: 0 1px 2px rgba(0,0,0,.4);
+// }
+
+// #demo .wrapper:active .content {
+// height: 123px;
+// z-index: 3;
+// -webkit-transition-delay: 0s;
+// }
+
+// #demo .content:hover {
+// height: 123px;
+// z-index: 3;
+// -webkit-transition-delay: 0s;
+// }
+
+
+// #demo .content ul {
+// background: #fff;
+// margin: 0;
+// padding: 0;
+// overflow: hidden;
+// height: 100%;
+// border-bottom-left-radius: 5px;
+// border-bottom-right-radius: 5px;
+// }
+
+// #demo .content ul a {
+// text-decoration: none;
+// }
+
+// #demo .content li:hover {
+// background: #eee;
+// color: #333;
+// }
+
+// #demo .content li {
+// list-style: none;
+// text-align: left;
+// color: #888;
+// font-size: 14px;
+// line-height: 30px;
+// height: 30px;
+// padding-left: 10px;
+// border-top: 1px solid #ccc;
+// }
+
+// #demo .content li:last-of-type {
+// border-bottom-left-radius: 5px;
+// border-bottom-right-radius: 5px;
+// }
+// .customClass {
+// background-color: #dd3;
+// border-radius: 5px;
+// margin:5px;
+// width: 500px;
+// }
+
+// .customClass .img-ul-upload {
+// background-color: #000 !important;
+// }
+
+// .customClass .img-ul-clear {
+// background-color: #B819BB !important;
+// }
+
+// .customClass .img-ul-drag-box-msg {
+// color: purple !important;
+// }
+
+// .customClass .img-ul-container {
+// background-color: #FF6CAD !important;
+// }
+// .img-ul-file-upload[_ngcontent-c6] {
+// padding: 16px;
+// height: 201px !important;
+// }
+// .weekDays-selector input {
+// display: none!important;
+// }
+
+// .weekDays-selector input[type=checkbox] + label {
+// display: inline-block;
+// border-radius: 6px;
+// background: #dddddd;
+// height: 40px;
+// width: 34.2px;
+// margin-right: 3px;
+// line-height: 40px;
+// text-align: center;
+// cursor: pointer;
+// }
+
+// .weekDays-selector input[type=checkbox]:checked + label {
+// background: #2AD705;
+// color: #ffffff;
+// }
+// @media screen and (max-width: 900px) {
+// .icon-bar{
+// display: none;
+
+// }
+// .sch{
+// display: none;
+// }
+// .first{
+// width:1%!important;
+// }
+// .second{
+// margin-left: 8px!important;
+// }
+// .small{
+// display: block!important;
+// }
+// .image{
+// display: none;
+// }
+// .schlar{
+// display: block!important;
+// }
+// }
+
+// @media screen and (min-width: 900px) {
+// .schlar{
+// display: none;
+// }
+
+// }
+// .small{
+// display: none;
+// }
+// .first{
+// float:left;
+// width: 16%;
+// height:86vh;
+// overflow-y: hidden;
+// overflow-x: hidden;
+// margin-right: 5px
+// }
+// .second{
+// width: 88%;
+// height:86vh;
+// margin-left:171px;
+// }
+// .mat-dialog-container {
+// max-width: none !important;
+// }
+// .sch{
+
+// }
+// .schlar{
+
+// }
+// .pointer{
+// cursor:pointer !important;
+// font-size: 11px
+// }
+// .expansion-panel__content{
+// margin-left: 0% !important;
+// }
+
+// /* Side Navi */
+// #mySidenav a {
+// margin-top: -9px;
+// position: absolute;
+// left: -80px;
+// transition: 0.3s;
+// width: 100px;
+// text-decoration: none;
+// font-size: 28px;
+// color: white;
+// border-radius: 0 5px 5px 0;
+// }
+
+// #mySidenav a:hover {
+// left: 0;
+// }
+
+// #about {
+// top: 20px;
+// background-color: #ffffff;
+// opacity: .4;
+// }
+
+// #blog {
+// top: 80px;
+// background-color: #18262F;
+// position: absolute; z-index: 99;
+// }
+
+// #projects {
+// top: 140px;
+// background-color: #f44336;
+// }
+
+// #contact {
+// top: 200px;
+// background-color: #555
+// }
+
+
+// .button2 {background-color: #008CBA;}
+// .ngx-picker--btn {
+// color: #000;
+// background-color: transparent;
+// border: none;
+// padding: 1em;
+// font-size: 1em; }
+// .ngx-picker--btn__selected {
+// background-color: #eee; }
+// .ngx-picker--btn:hover {
+// transition: .25s ease;
+// background-color: #eee;
+// cursor: pointer; }
+// .ngx-picker--btn:focus {
+// outline-color: transparent; }
+
+// .ngx-picker--btn__month:hover {
+// border-top-left-radius: 0.2em; }
+
+// .ngx-picker--btn__done:hover {
+// border-bottom-right-radius: 0.2em; }
+
+// .ngx-picker--btn__now:hover {
+// border-bottom-left-radius: 0.2em; }
+
+// .ngx-picker--btn__next:hover {
+// border-top-right-radius: 0.2em; }
+
+// .calendar {
+// position: absolute;
+// background-color: #e6e6e6;
+// max-width: 16em;
+// min-width: 16em;
+// font-size: 16px;
+// font-family: "Arial", sans-serif;
+// border-radius: 0.2em;
+// box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); }
+
+// .calendar--previous-and-next {
+// position: absolute;
+// right: 0;
+// top: 0;
+// display: flex;
+// justify-content: flex-end; }
+
+// .calendar--footer {
+// display: flex;
+// justify-content: space-between;
+// background-color: #e6e6e6;
+// padding: 0;
+// border-radius: 0.2em; }
+
+ // .calendar--years-select,
+// .calendar--months-select {
+// overflow-y: auto;
+// overflow-x: hidden;
+// max-height: 14.85em;
+// background-color: #fff;
+// width: 100%; }
+
+// .calendar--year,
+// .calendar--month {
+// display: block;
+// padding: .5em 1em;
+// width: 100%;
+// overflow: hidden;
+// color: #000; }
+// .calendar--year__selected,
+// .calendar--month__selected {
+// color: #000;
+// font-weight: bold;
+// background-color: #eee; }
+// .calendar--year:hover,
+// .calendar--month:hover {
+// cursor: pointer;
+// background-color: #eee;
+// font-weight: 400;
+// color: #000; }
+
+// .calendar--days-of-week {
+// display: flex;
+// justify-content: space-around;
+// background-color: #eee; }
+
+// .calendar--day-of-week {
+// position: relative;
+// padding: .5em;
+// text-align: center;
+// text-transform: uppercase;
+// color: #000;
+// font-size: .9em; }
+
+// .calendar--days-select {
+// display: flex;
+// flex-wrap: wrap;
+// justify-content: space-between;
+// background-color: #fff; }
+
+// .calendar--day {
+// text-align: center;
+// width: 1.285em;
+// padding: .5em;
+// font-weight: 500;
+// color: #000; }
+// .calendar--day__muted {
+// color: #999; }
+// .calendar--day__selected {
+// background-color: #eee;
+// color: #000; }
+// .calendar--day:hover {
+// cursor: pointer;
+// color: #000;
+// background-color: #eee; }
+
+// .ngx-picker {
+// display: flex;
+// position: relative; }
+// .ngx-picker .calendar {
+// position: absolute;
+// left: 0;
+// top: 2.5em;
+// z-index: 3; }
+
+// .time-picker {
+// display: flex;
+// justify-content: space-between;
+// align-items: center;
+// flex-wrap: wrap;
+// max-width: 16em;
+// min-width: 16em;
+// background-color: #e6e6e6; }
+
+// .time--values {
+// display: flex;
+// justify-content: space-between;
+// flex-direction: row;
+// flex-wrap: wrap;
+// max-width: 16em;
+// min-width: 16em;
+// background-color: #eee; }
+
+// .time--value {
+// width: 2.66em;
+// font-size: 1em;
+// padding: .5em 0;
+// text-align: center;
+// color: #000; }
+// .time--value__selected {
+// color: #000;
+// background-color: #e6e6e6; }
+// .time--value:hover {
+// transition: .25s ease;
+// cursor: pointer;
+// background-color: #e6e6e6; }
+
+// [hidden] {
+// display: none !important; }
+// #c11 {
+// width: 25%;
+// float:left
+// }
+// #c22{
+// width: 25%;
+// float:left
+// }
+// #c33 {
+// width: 25%;
+// float:left
+
+// }
+// #c44{
+// width: 25%;
+// float:left
+// }
+// #c111 {
+// width: 50%;
+// float:left
+// }
+// #c222{
+// width: 45%;
+// float:left
+// }
+// #c333 {
+// width: 5%;
+// float:left
+
+// }
+// #myTable {
+// border-collapse: collapse;
+// width: 100%;
+// border: 1px solid #ddd;
+// font-size: 12px;
+// }
+
+// #myTable th, #myTable td {
+// text-align: left;
+// padding: 12px;
+// }
+
+// #myTable tr {
+// border-bottom: 1px solid #ddd;
+// }
+
+// /*#myTable tr.header, #myTable tr:hover {
+// background-color: #f1f1f1;
+// }*/
+// * {
+// box-sizing: border-box;
+// }
+// .width{
+// width: 100%;
+// }
+
+
+ #toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;right:0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+
+// .scrollbar
+// {
+// /* margin-left: 30px; */
+// /* float: left; */
+// /* height: 300px;
+// width: 65px; */
+// // width: 100%;height: 90vh; padding-top: 1%;
+// /* background: #F5F5F5; */
+// overflow-x: hidden;
+// /* overflow-y: none; */
+// /* margin-bottom: 25px; */
+// }
+
+// .force-overflow
+// {
+// min-height: 450px;
+// }
+
+// #style-1::-webkit-scrollbar-track
+// {
+// -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+// border-radius: 10px;
+// background-color: #F5F5F5;
+// }
+
+// #style-1::-webkit-scrollbar
+// {
+// width: 12px;
+// background-color: #F5F5F5;
+// }
+
+// #style-1::-webkit-scrollbar-thumb
+// {
+// border-radius: 10px;
+// -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
+// background-color: -webkit-linear-gradient(45deg,
+// rgba(255, 255, 255, 0.2) 25%,
+// transparent 25%,
+// transparent 50%,
+// rgba(255, 255, 255, .2) 50%,
+// rgba(255, 255, 255, .2) 75%,
+// transparent 75%,
+// transparent)
+
+// /* background-color: linear-gradient(to bottom, MD_DIALOG_DATA 0%, #0066ff 100%); */
+// }
+
+
+// /deep/ .mat-menu-panel.test{
+
+// background-color: #b7b7b7;
+// width: 160px;
+// text-align: left;
+// color: #fff;
+
+// a{
+// display: block;
+// padding: 9px 10px;
+// margin: 0;
+// border-bottom: 1px solid #999;
+// }
+// }
+
+// /deep/ .mat-menu-panel.test_1{
+
+// background-color: #b7b7b7;
+// width: 160px;
+// text-align: left;
+// color: #fff;
+// margin-top:48px;
+// }
+
+
+
+
+#toast #img{
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc{
+
+
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 2s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s,stay 3s 1s, shrink 0.5s 4s, fadeout 0.5s 4.5s;
+}
+// #myInput {
+// border-radius: 15px;
+// /* border: 2px solid #18262F; */
+// padding: 7px;
+// width: 116px;
+// height: 17px;
+// font-size: 9px;
+// outline: none;
+// float: right;
+// margin-top: 2%;
+// }
+
+// @-webkit-keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+
+// @keyframes expand {
+// from {min-width: 50px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+
+// @keyframes stay {
+// from {min-width: 350px}
+// to {min-width: 350px}
+// }
+// @-webkit-keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @keyframes shrink {
+// from {min-width: 350px;}
+// to {min-width: 50px;}
+// }
+
+// @-webkit-keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+
+// @keyframes fadeout {
+// from {bottom: 30px; opacity: 1;}
+// to {bottom: 60px; opacity: 0;}
+// }
+
+// /* Absolute Center Spinner */
+// .loading {
+// position: fixed;
+// z-index: 999;
+// height: 2em;
+// width: 2em;
+// overflow: show;
+// margin: auto;
+// top: 0;
+// left: 0;
+// bottom: 0;
+// right: 0;
+// }
+
+// /* Transparent Overlay */
+// .loading:before {
+// content: '';
+// display: block;
+// position: fixed;
+// top: 0;
+// left: 0;
+// width: 100%;
+// height: 100%;
+// background-color: rgba(0,0,0,0.3);
+// }
+
+// /* :not(:required) hides these rules from IE9 and below */
+// .loading:not(:required) {
+// /* hide "loading..." text */
+// font: 0/0 a;
+// color: transparent;
+// text-shadow: none;
+// background-color: transparent;
+// border: 0;
+// }
+
+// .loading:not(:required):after {
+// content: '';
+// display: block;
+// font-size: 10px;
+// width: 1em;
+// height: 1em;
+// margin-top: -0.5em;
+// -webkit-animation: spinner 1500ms infinite linear;
+// -moz-animation: spinner 1500ms infinite linear;
+// -ms-animation: spinner 1500ms infinite linear;
+// -o-animation: spinner 1500ms infinite linear;
+// animation: spinner 1500ms infinite linear;
+// border-radius: 0.5em;
+// -webkit-box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.5) -1.5em 0 0 0, rgba(0, 0, 0, 0.5) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// box-shadow: rgba(0, 0, 0, 0.75) 1.5em 0 0 0, rgba(0, 0, 0, 0.75) 1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) 0 1.5em 0 0, rgba(0, 0, 0, 0.75) -1.1em 1.1em 0 0, rgba(0, 0, 0, 0.75) -1.5em 0 0 0, rgba(0, 0, 0, 0.75) -1.1em -1.1em 0 0, rgba(0, 0, 0, 0.75) 0 -1.5em 0 0, rgba(0, 0, 0, 0.75) 1.1em -1.1em 0 0;
+// }
+
+// /* Animation */
+
+// @-webkit-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-moz-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @-o-keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+// @keyframes spinner {
+// 0% {
+// -webkit-transform: rotate(0deg);
+// -moz-transform: rotate(0deg);
+// -ms-transform: rotate(0deg);
+// -o-transform: rotate(0deg);
+// transform: rotate(0deg);
+// }
+// 100% {
+// -webkit-transform: rotate(360deg);
+// -moz-transform: rotate(360deg);
+// -ms-transform: rotate(360deg);
+// -o-transform: rotate(360deg);
+// transform: rotate(360deg);
+// }
+// }
+
+
+
+// .openLayermap{
+// height:400px;
+// width:100%;
+// }
+
+
+
+
+ // css style
+
+
+
+
+/*//////////////////////////////////////////////////////////////////
+[ FONT ]*/
+
+// ../fonts/roboto/Roboto-Regular.ttf
+// @font-face {
+// font-family: Roboto-Regular;
+// src: url('../../fonts/roboto/Roboto-Regular.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto-Medium;
+// src: url('../../fonts/roboto/Roboto-Medium.ttf');
+// }
+
+// @font-face {
+// font-family: Roboto-Bold;
+// src: url('../../fonts/roboto/Roboto-Bold.ttf');
+// }
+
+/*//////////////////////////////////////////////////////////////////
+[ RESTYLE TAG ]*/
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+
+body, html {
+ height: 100%;
+ font-family: sans-serif;
+}
+
+/* ------------------------------------ */
+a {
+ margin: 0px;
+ transition: all 0.4s;
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+}
+
+a:focus {
+ outline: none !important;
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+/* ------------------------------------ */
+h1,h2,h3,h4,h5,h6 {margin: 0px;}
+
+p {margin: 0px;}
+
+ul, li {
+ margin: 0px;
+ list-style-type: none;
+}
+
+
+/* ------------------------------------ */
+input {
+ display: block;
+ outline: none;
+ border: none !important;
+}
+
+textarea {
+ display: block;
+ outline: none;
+}
+
+textarea:focus, input:focus {
+ border-color: transparent !important;
+}
+
+/* ------------------------------------ */
+button {
+ outline: none !important;
+ border: none;
+ background: transparent;
+}
+
+button:hover {
+ cursor: pointer;
+}
+
+iframe {
+ border: none !important;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Scroll bar ]*/
+.js-pscroll {
+ position: relative;
+ overflow: hidden;
+}
+
+
+.table100 .ps__rail-x {
+ z-index: 1010;
+ height: 6px;
+ background-color: transparent;
+ opacity: 1 !important;
+ bottom: 10px;
+}
+
+.table100 .ps__rail-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #e6e6e6;
+ height: 100%;
+ width: calc(100% - 30px);
+ left: 15px;
+ top: 0px;
+}
+
+.table100 .ps__rail-x .ps__thumb-x {
+ height: 100%;
+ bottom: 0;
+ background-color: transparent;
+ opacity: 1 !important;
+}
+
+.table100 .ps__rail-x .ps__thumb-x::before {
+ content: "";
+ display: block;
+ position: absolute;
+ background-color: #b3b3b3;
+ height: 100%;
+ width: calc(100% - 30px);
+ top: 0;
+ left: 15px;
+}
+
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+
+.limiter {
+ width: 100%;
+ margin: 0 auto;
+ // background: #fa71cd;
+ background: #efecec;
+ // background: -webkit-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -o-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: -moz-linear-gradient(bottom, #c471f5, #fa71cd);
+ // background: linear-gradient(bottom, #c471f5, #fa71cd);
+
+
+}
+
+.container-table100 {
+ max-height: 100vh;
+ // max-width: 1366px;
+ margin: 0 auto;
+ min-height: 100vh;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ // padding: 33px 100px;
+ padding: 55px 20px 0px 20px
+}
+
+.wrap-table100 {
+ width: 100%;
+}
+
+/*//////////////////////////////////////////////////////////////////
+[ Table ]*/
+.table100 {
+ background-color: #fff;
+}
+
+table {
+ width: 100%;
+}
+
+th, td {
+ font-weight: unset;
+ padding-right: 10px;
+}
+
+.column1 {
+ width: 100%;
+ padding-left: 40px;
+}
+
+.column2 {
+ width: 275px;
+ padding-left: 55px;
+}
+
+.column3 {
+ // width: 205px;
+ width: 265px;
+}
+
+.column4 {
+ width: 195px;
+}
+
+.column5 {
+ width: 235px;
+}
+
+.column6 {
+ width: 250px;
+}
+
+.column7 {
+ // width: 330px;
+ width: 250px;
+}
+
+.column8 {
+ // width: 305px;
+ width:210px;
+}
+
+.column9 {
+ width: 200px;
+}
+
+.column10 {
+ width: 200px;
+}
+
+.column11 {
+ // width: 200px;
+ width:155px;
+}
+
+.column12 {
+ width: 200px;
+}
+
+.column13 {
+ width: 150px;
+}
+
+.column14 {
+ // width: 200px;
+ width:150px
+}
+.column15 {
+ // width: 200px;
+ width: 150px;
+}
+.column16 {
+ // width: 200px;
+ width:150px;
+}
+.column17 {
+ // width: 200px;
+ width:175px
+}
+.column18 {
+ // width: 200px;
+ width:175px;
+}
+.column19 {
+ // width: 200px;
+ width:150px;
+}
+
+.column20 {
+ // width: 200px;
+ width:150px;
+}
+
+.table100 th {
+ padding-top: 21px;
+ padding-bottom: 21px;
+}
+
+.table100 td {
+ padding-top: 16px;
+ padding-bottom: 16px;
+}
+
+
+/*==================================================================
+[ Fix col ]*/
+.table100 {
+ width: 100%;
+ position: relative;
+}
+
+.table100-firstcol {
+ background-color: #fff;
+ position: absolute;
+ z-index: 1;
+ // width: 310px;
+ // width: 590px;
+ width: 700px;
+ top: 0;
+ left: 0;
+}
+
+.table100-firstcol table {
+ background-color: #fff;
+}
+
+.wrap-table100-nextcols {
+ width: 100%;
+ overflow: auto;
+ // padding-left: 310px;
+ // padding-left : 590px;
+ padding-left: 698px;
+ padding-bottom: 28px;
+}
+
+.table100-nextcols table{
+ table-layout: fixed;
+}
+
+.shadow-table100-firstcol {
+ box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -webkit-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -o-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+ -ms-box-shadow: 8px 0px 10px 0px rgba(0, 0, 0, 0.05);
+}
+
+.table100-firstcol table {
+ background-color: transparent;
+}
+
+/*==================================================================
+[ Ver1 ]*/
+
+.table100.ver1 th {
+ // font-family: Roboto-Bold;
+ font-family: Roboto;
+ font-size: 14px;
+ // color: #333333;
+
+ color:white;
+ line-height: 1.4;
+ text-transform: uppercase;
+}
+
+.table100.ver1 td {
+ // font-family: Roboto-Medium;
+ font-family: Roboto;
+ font-size: 15px;
+ // line-height: 1.4;
+}
+
+.table100.ver1 .table100-firstcol td {
+ color: #666666;
+}
+
+.table100.ver1 .table100-nextcols td {
+ color: #999999;
+}
+
+
+.table100.ver1 tr {
+ border-bottom: 1px solid #f2f2f2;
+}
+
+
+// .btn-default {
+// @include btn-variant(#546e7a, #90a4ae, #78909c, #cfd8dc, #eceff1, #b0bec5, #455a64);
+
+
+// }
+
+
+
+
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ float: right;
+ text-align: center;
+ text-transform: uppercase;
+ vertical-align: middle;
+ cursor: pointer;
+ background-image: none;
+ whitespace: nowrap;
+ padding: 6px 12px;
+ font-size: 1.4rem;
+ border-radius: 0px;
+ border: 1px solid transparent;
+ text-decoration: none;
+ user-select: none;
+ background: #d8d8d8;
+ font-size: 12px;
+
+ &,
+ &:active,
+ &.active {
+ &:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &.focus {
+ text-decoration: none;
+ color: #fff;
+ }
+
+ &:active,
+ &.active {
+ outline: 0;
+ background-image: none;
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ cursor: not-allowed;
+ pointer-events: none;
+ box-shadow: none;
+ }
+
+ &.btn-xs {
+ padding: 3px 6px;
+ font-size: 1.2rem;
+ }
+
+ &.btn-sm {
+ padding: 4px 8px;
+ font-size: 1.3rem;
+ }
+
+ &.btn-lg {
+ padding: 8px 16px;
+ font-size: 1.6rem;
+ }
+}
+
+// #dvTable{
+// background-color: white;
+// height: 400px;
+// width: 400px;
+// }
+
+
+
diff --git a/src/app/dealers-info/dealers-info.component.spec.ts b/src/app/dealers-info/dealers-info.component.spec.ts
new file mode 100644
index 0000000..294b685
--- /dev/null
+++ b/src/app/dealers-info/dealers-info.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DealersInfoComponent } from './dealers-info.component';
+
+describe('DealersInfoComponent', () => {
+ let component: DealersInfoComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DealersInfoComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DealersInfoComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/dealers-info/dealers-info.component.ts b/src/app/dealers-info/dealers-info.component.ts
new file mode 100644
index 0000000..4908c5b
--- /dev/null
+++ b/src/app/dealers-info/dealers-info.component.ts
@@ -0,0 +1,692 @@
+import { Component, OnInit } from '@angular/core';
+import { ContactService } from '../contact.service';
+import { Router } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { MyaccountComponent } from '../myaccount/myaccount.component';
+import { MdDialog } from '@angular/material';
+import { AddDealerComponent } from '../add-dealer/add-dealer.component';
+import { DeviceEditComponent } from '../dashboard/device-edit/device-edit.component';
+import { EditDealerComponent } from '../edit-dealer/edit-dealer.component';
+import { Subject } from 'rxjs/Subject';
+import 'rxjs/add/operator/debounceTime';
+import { EditCostumerComponent } from '../edit-costumer/edit-costumer.component';
+import { environment } from '../../environments/environment';
+import { DealerPermissionComponent } from './dealer-permission/dealer-permission.component';
+import { PointShareComponent } from '../point-share/point-share.component';
+declare var swal: any;
+declare var ol : any;
+declare var PerfectScrollbar:any;
+
+declare var html2canvas:any;
+declare var pdfMake : any;
+// import {Fill, Stroke, Circle, Style} from 'ol/style';
+declare var Feature, Overlay,View,Point,TileJSON,VectorSource,Icon,Style : any ;
+
+// import 'ol/ol.css';
+// import Feature from 'ol/Feature';
+// import Map from 'ol/Map';
+// import Overlay from 'ol/Overlay';
+// import View from 'ol/View';
+// import Point from 'ol/geom/Point';
+// import {Tile as TileLayer,Vector as VectorLayer} from 'ol/layer';
+// import TileJSON from 'ol/source/TileJSON';
+// import VectorSource from 'ol/source/Vector';
+// // import {Icon, Style} from 'ol/style';
+// import LineString from 'ol/geom/LineString';
+// import {fromLonLat} from 'ol/proj';
+// import OSM from 'ol/source/OSM';
+// import {Circle as CircleStyle, Fill, Icon, Stroke, Style} from 'ol/style';
+
+@Component({
+ selector: 'app-dealers-info',
+ templateUrl: './dealers-info.component.html',
+ styleUrls: ['./dealers-info.component.scss']
+})
+export class DealersInfoComponent implements OnInit {
+ dealer_load: { "uId": any; "loggedIn_id": any; "status": any; };
+ show1: boolean = false;
+ show2: boolean = true;
+ show3: boolean = false;
+ first_name: any;
+ last_name: any;
+ passwordd: any;
+ org_name: any;
+ emaill: any;
+ phone: any;
+ executed: any;
+ $event2: any;
+ dealer: any;
+ firstcall: boolean = false;
+ lastcall: boolean = true;
+ // contacts: Contact[]=[];
+ // contact: Contact;
+ login1: any;
+ cond: Boolean = false;
+ mess2: any;
+ mess: any;
+ otp: any;
+ str: boolean = false;
+ password2: any;
+ cust_load: any;
+ fs: any;
+ ls: any;
+ emailid: any;
+ or: any;
+ useridd: any;
+ custtype: any;
+ custumer: any;
+ mb: any;
+ cust: boolean = false;
+ logo: any;
+ text: any;
+ myInput: any;
+ superAdmin: Boolean = false;
+ before: any;
+ dealers_info = [];
+ modelChanged: Subject = new Subject();
+ errorMsg: boolean;
+ serviceResponse: string;
+ Load: boolean;
+ url: any;
+ showNav: boolean=false;
+ constructor(private contactService: ContactService, private router: Router, private _flashMessagesService: FlashMessagesService, public dialog: MdDialog) {
+
+ this.modelChanged
+ .debounceTime(1000) // wait 300ms after the last event before emitting last event
+ .distinctUntilChanged() // only emit if value is different from previous value
+ .subscribe(myInput => {
+ this.myInput = myInput;
+ this.dealerDetail();
+ });
+
+
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+ }
+
+ ngOnInit() {
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ let test = JSON.parse(window.atob(window.localStorage.token.split('.')[1]));
+ this.showDemoVideo();
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+
+ if (this.mb.charAt(0) == "n") {
+ this.mb = ' '
+ }
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+
+ this.dealerDetail();
+ // this.testOpenLayerMap();
+
+ $(document).ready(function () {
+ $('.js-pscroll').each(function(){
+ var ps = new PerfectScrollbar(this);
+
+ $(window).on('resize', function(){
+ ps.update();
+ })
+
+ $(this).on('ps-x-reach-start', function(){
+ $(this).parent().find('.table100-firstcol').removeClass('shadow-table100-firstcol');
+ });
+
+ $(this).on('ps-scroll-x', function(){
+ $(this).parent().find('.table100-firstcol').addClass('shadow-table100-firstcol');
+ });
+
+ });
+ })
+ }
+
+
+ stre() {
+ this.str = true;
+ }
+ stren() {
+ this.str = false;
+ }
+
+
+
+ clear() {
+ this.first_name = ' '
+ this.last_name = ' '
+ this.emaill = null
+ this.phone = null
+ }
+
+ ign() {
+ this.router.navigateByUrl("device-report/ign-report");
+ }
+
+
+ table1ch() {
+ myFunction();
+ function myFunction() {
+ var input, filter, table, tr, td, i, td1;
+ input = document.getElementById("myInput");
+ filter = input.value.toUpperCase();
+ table = document.getElementById("myTable");
+ tr = table.getElementsByTagName("tr");
+ for (i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[1];
+ td1 = tr[i].getElementsByTagName("td")[0]
+ if (td) {
+ if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ }
+ else if (td1.innerHTML.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ }
+ else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+ }
+ }
+
+
+
+ onChange(dealer, ev) {
+
+ // console.log(ev.checked);
+ let dealer_status = ev.checked;
+ let dealer_id = dealer._id;
+ // let dealer_activity = dealer.status;
+
+
+ this.dealer_load = {
+ "uId": dealer_id,
+ "loggedIn_id": this.useridd,
+ "status": dealer_status
+ }
+ // console.log(dealer_id);
+ // console.log(this.dealer_load);
+ this.contactService.custStatus(this.dealer_load)
+ .subscribe(res => {
+ let a = res;
+ }, err => {
+ })
+ }
+
+
+ dealerDetail() {
+ this.Load = true;
+ console.log("Inside function",this.myInput);
+ this.contactService.dealer_Info1(this.useridd, this.skip, this.limit,this.myInput,null)
+ .subscribe(res => {
+ // console.log(res);
+ this.Load = false ;
+ this.dealers_info = res;
+ console.log('this.dealers_info',this.dealers_info);
+ // console.log("SuccessLog");
+ }, err => {
+ this.Load = false;
+ this.dealers_info=[];
+ this.firstcall = true;
+ this.lastcall = false;
+ })
+
+ }
+
+
+ addDealer() {
+ let dialogRef = this.dialog.open(AddDealerComponent, {
+ width: '800px',
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "succ") {
+ this.ngOnInit();
+ }
+ });
+ }
+
+
+
+ edit_DealerDetail(dealerEdit) {
+ // console.log(dealerEdit);
+ console.log(dealerEdit);
+ dealerEdit.ID = 'edit';
+ console.log(dealerEdit);
+ let dialogRef = this.dialog.open(EditDealerComponent, {
+ width: '500px',
+ height: '600px',
+ data: { dealer_payload: dealerEdit }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+
+ // console.log(result);
+ if (result == "success") {
+ this.ngOnInit();
+
+ }
+ });
+
+ }
+
+ delete_DealerDetail(dealerDelete){
+ var that =this;
+ console.log(dealerDelete);
+ dealerDelete.ID = 'delete';
+
+ let dialogRef = this.dialog.open(EditDealerComponent, {
+ width: '500px',
+ height: '600px',
+ data: { dealer_payload: dealerDelete }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+ console.log(result);
+ // console.log(result);
+ if (result == "yes") {
+ console.log("DealerId=>",dealerDelete._id)
+ var deletePayload = {
+ 'userId' : dealerDelete._id,
+ 'deleteuser' : true
+ }
+ this.contactService.deleteCostumer(deletePayload)
+ .subscribe(res=>{
+ console.log(res);
+ this.serviceResponse = "User Deleted";
+ this.errorMsg =true;
+ this.dealerDetail();
+ var success = setTimeout(function(){
+ clearInterval(success);
+ that.errorMsg = false;
+ },5000)
+
+ },err=>{
+ this.serviceResponse = "Please try after somrtime";
+ var error = setTimeout(function(){
+ clearInterval(error);
+ that.errorMsg = false;
+ },5000)
+ })
+
+ }
+
+ if (result == "no") {
+ console.log(result);
+ }
+
+ });
+
+
+
+
+ }
+ dealerToken: any;
+ // dealer switch function
+ dealerSwitch(dlr) {
+ // console.log(dlr);
+ localStorage.setItem("DealerObj=>", dlr._id);
+ localStorage.removeItem("in1");
+ this.contactService.getcustToken(dlr._id).subscribe(
+ data => {
+ this.dealerToken = data
+ var superAdminToken = localStorage.getItem('token');
+ localStorage.setItem('superAdminToken', superAdminToken);
+ localStorage.setItem('token', this.dealerToken.custumer_token);
+
+ var chkPP = localStorage.getItem('profilePic');
+ if(chkPP != null){
+ localStorage.removeItem('profilePic');
+ }
+ localStorage.removeItem('devices');
+ window.localStorage['DataUpdate'] = 'True';
+ window.localStorage['Dealer'] = 'ON';
+ localStorage.setItem('superadmin', "ON");
+
+
+ if (window.localStorage['DataLoaded'] = 'True') {
+ this.router.navigateByUrl("const?_status=" + "OK");
+ }
+ });
+ }
+
+ skip: number = 1;
+ limit: number = 10;
+
+ next() {
+ this.lastcall = false;
+ this.skip += 1;
+ // this.sidebarData();
+ this.dealerDetail();
+ }
+ pre() {
+ // console.log(this.skip)
+ if (this.skip > 1) {
+ this.skip -= 1;
+ this.lastcall = false;
+ this.firstcall = false;
+ // this.sidebarData();
+ this.dealerDetail();
+ } else {
+ this.lastcall = true;
+ this.firstcall = false;
+ }
+
+ }
+
+
+ searchFilter(text: string) {
+ this.modelChanged.next(text);
+ }
+
+ viewDocuments(docs){
+ console.log("Documents=>", docs);
+ var that =this;
+ docs.ID = 'viewDoc';
+ console.log(docs);
+ let dialogRef = this.dialog.open(EditCostumerComponent, {
+ width: '900px',
+ data: { dealer_payload: docs }
+ });
+
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result == "yes") {
+
+ }
+
+ if (result == "no") {
+
+ }
+
+ if(result == 'imageupdated'){
+ swal(
+ 'Updated',
+ 'Documents has been Updated.',
+ 'success'
+ )
+ this.dealerDetail()
+
+ }
+ });
+
+
+ }
+
+ showMenu = environment.showLandingpageMenu;
+ showDemoVideo(){
+ let split1 = document.URL.split('//')[1];
+ console.log(split1,document);
+ let split2 = split1.split('/')[0];
+ let splitForStyle = split1.split('/')[1];
+ this.url = split2;
+ console.log("split2",this.url);
+
+
+ for(var i = 0; i {
+ // console.log(result);
+ if (result == "succ") {
+ // this.tost1("password_changed");
+ this.data_descip = "Dealer Permission set !!!";
+ launch_toast();
+ this.ngOnInit();
+
+ }
+
+ if (result == "close") {
+ }
+ });
+ }
+
+
+ // testOpenLayerMap
+ osMap : any;
+
+ // testOpenLayerMap() {
+ // this.contactService.getlatLong().subscribe(res => {
+ // console.log(res);
+ // let lat = parseFloat(res.lat);
+ // let lng = parseFloat(res.lon);
+ // console.log({ "lattitude": lat, "longitude": lng });
+ // this.simpleReverseGeocoding(85.130690, 25.611220);
+ // var that = this;
+
+ // var map = new ol.Map({
+ // layers: [
+ // new ol.layer.Tile({
+ // source: new ol.source.OSM()
+ // })
+ // ],
+ // target: 'testOpenLayerMap',
+ // view: new ol.View({
+ // center: ol.proj.fromLonLat([lng, lat]),
+ // zoom: 15
+ // })
+ // });
+ // })
+
+
+
+
+
+ // }
+
+ // simpleReverseGeocoding(lon, lat) {
+ // fetch('http://nominatim.openstreetmap.org/reverse?format=json&lon=' + lon + '&lat=' + lat).then(function(response) {
+ // return response.json();
+ // }).then(function(json) {
+ // var testAddress = json.display_name;
+ // console.log('testAddress=>',testAddress);
+ // })
+ // }
+
+
+ addPoints(data){
+ let dialogRef = this.dialog.open(PointShareComponent, {
+ width: '300px',
+ data: {"userInfo":data}
+ });
+
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log(result);
+ if(result == 'added'){
+ this.data_descip = "Point Added";
+ launch_toast();
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+ })
+ }
+
+
+ availablePoint(dObj){
+ // console.log('dObj=>',dObj);
+
+ var avlpoint = dObj.point_Allocated - (dObj.point_Shared_Other + dObj.total_vehicle)
+ return avlpoint ;
+
+ }
+ // exportPdf(){
+
+
+ // html2canvas(document.getElementById('deviceTable'), {
+ // onrendered: function (canvas) {
+ // var data = canvas.toDataURL();
+ // console.log(data);
+ // var docDefinition = {
+ // content: [{
+ // image: data,
+ // width: 1000
+ // }]
+ // };
+ // pdfMake.createPdf(docDefinition).download("Table.pdf");
+ // }
+ // });
+
+
+ // }
+
+ exportPdf(){
+ var customers = [];
+ var data_heading = ['Name','Email','Phone','User ID','Password',];
+ customers.push(data_heading);
+
+ for(var k =0;k{
+ console.log(ans);
+ that.contactService.accountSuspend(payload).subscribe(res=>{
+ console.log(res);
+ that.dealerDetail();
+ that.data_descip = "Account Status Changed";
+ launch_toast();
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function(){ x.className = x.className.replace("show", ""); }, 4500);
+ }
+ })
+
+ },err=>{
+ that.dealerDetail();
+ console.log(err);
+ });
+
+
+}
+
+}
+
diff --git a/src/app/delete-group/delete-group.component.html b/src/app/delete-group/delete-group.component.html
new file mode 100644
index 0000000..57081c3
--- /dev/null
+++ b/src/app/delete-group/delete-group.component.html
@@ -0,0 +1,14 @@
+
+ {{'Delete Group' | translate}}
+
+
+
{{'Are you sure to delete group ??' | translate}}
+
+
+
+ {{'DELETE' | translate}}
+ {{'CANCEL' | translate}}
+
+
diff --git a/src/app/delete-group/delete-group.component.scss b/src/app/delete-group/delete-group.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/delete-group/delete-group.component.spec.ts b/src/app/delete-group/delete-group.component.spec.ts
new file mode 100644
index 0000000..8af25c4
--- /dev/null
+++ b/src/app/delete-group/delete-group.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeleteGroupComponent } from './delete-group.component';
+
+describe('DeleteGroupComponent', () => {
+ let component: DeleteGroupComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeleteGroupComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeleteGroupComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/delete-group/delete-group.component.ts b/src/app/delete-group/delete-group.component.ts
new file mode 100644
index 0000000..e17815e
--- /dev/null
+++ b/src/app/delete-group/delete-group.component.ts
@@ -0,0 +1,48 @@
+import { Component, OnInit,Inject} from '@angular/core';
+import { MdDialog,MdDialogRef,MD_DIALOG_DATA } from '@angular/material';
+import {ContactService} from '../contact.service';
+
+
+@Component({
+ selector: 'app-delete-group',
+ templateUrl: './delete-group.component.html',
+ styleUrls: ['./delete-group.component.scss']
+})
+export class DeleteGroupComponent implements OnInit {
+ devDelete:any;
+
+ constructor(public thisDialogRef: MdDialogRef, private contactService:ContactService, @Inject(MD_DIALOG_DATA) public data: any) {
+ this.devDelete = data.devId;
+ }
+
+ ngOnInit() {
+
+ }
+
+ onCloseConfirm(){
+
+ // console.log("deleted")
+ this.contactService.deleteGroup(this.devDelete).subscribe(res => {
+
+ var a = res;
+ // console.log(a);
+ if(a==200){
+ // console.log("Group deleted Succesfully");
+ this.thisDialogRef.close("success");
+ }
+
+ },
+ err=> {
+ // console.log("Check your Internet Connection");
+ })
+
+
+ }
+
+ onCloseCancel(){
+ // console.log("cancel button clicked");
+ this.thisDialogRef.close('Cancel');
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/app/details/details.component.css b/src/app/details/details.component.css
new file mode 100644
index 0000000..815c31f
--- /dev/null
+++ b/src/app/details/details.component.css
@@ -0,0 +1,123 @@
+ul, li {
+ list-style: none;
+ float: left;
+ line-height: 15vh;
+ }
+.upper{
+ margin-top: -70px;
+ width: 100%;
+ height: 9%;
+ /* margin-left: -2px;*/
+ position: fixed;
+ background-color: white;
+ top: 0
+}
+.up{
+ color: gray;
+ /* Add a font */
+
+ /* Set the font-size to 25 pixels */
+ font-size: 25px;
+
+}
+.middle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ text-align: center;
+}
+
+.dropdown {
+ position: relative;
+ display: inline-block;
+}
+
+.dropdown-content {
+ display: none;
+ position: absolute;
+ background-color: #f9f9f9;
+ min-width: 160px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 1;
+ margin-left: -220px;
+ margin-top: -20px;
+
+}
+
+.dropdown:hover .dropdown-content {
+ display: block;
+}
+
+.desc {
+ padding: 15px;
+ text-align: center;
+}
+#insert{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ #insert2{
+ margin-left:8px;
+ margin-top:-15px;
+ text-shadow: 20px;
+ }
+ .example-container {
+ width: 500px;
+ height: 300px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ }
+
+ .example-sidenav-content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .example-sidenav {
+ padding: 20px;
+ }
+ .vertical-menu {
+ width: 250px;
+ padding-left: 10px;
+}
+
+.vertical-menu a {
+ background-color: #eee;
+ color: black;
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+
+}
+
+.vertical-menu a:hover {
+ background-color: #ccc;
+}
+
+.vertical-menu a.active {
+
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+}
+#c2 {
+
+
+}
+#c1 {
+ float:left;
+
+}
+.newspaper {
+ -webkit-column-count: 2; /* Chrome, Safari, Opera */
+ -moz-column-count: 2; /* Firefox */
+ column-count: 2;
+ -webkit-column-gap: 40px; /* Chrome, Safari, Opera */
+ -moz-column-gap: 40px; /* Firefox */
+ column-gap: 40px;
+ align-content:left;
+ text-align: left;
+}
+
diff --git a/src/app/details/details.component.html b/src/app/details/details.component.html
new file mode 100644
index 0000000..beea00b
--- /dev/null
+++ b/src/app/details/details.component.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
My App
+
+
+
+
+
+
+
+
+
+ {{fs}} {{ls}}
+ {{or}}
+
+ My Account
+ Log Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{fs}} {{ls}}
+ {{or}}
+
+ My Account
+ Log Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device ID - 1234567890 Device Name - Gps
+
+
+
+
+ add
+
+
+
+
+
+
+
+ ➜ {{ ls}}
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ User Info
+ Condition
+ value
+
+
+
+
+
+
+
+
+ SMS
+ 9458075558
+ Equal
+ 9:00 Pm
+ delete
+
+
+
+
+ add
+
+
+
+
+
+
+ Add Scheduler
+
+
+
+
+
+
+
+
+ Adding
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Action
+ Selected Date
+ Selected Time
+ Repetation
+
+
+ SMS
+ 06/10/2017
+ 10:20 Am
+ Daily
+ delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Intigrate
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/details/details.component.spec.ts b/src/app/details/details.component.spec.ts
new file mode 100644
index 0000000..35a2470
--- /dev/null
+++ b/src/app/details/details.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DetailsComponent } from './details.component';
+
+describe('DetailsComponent', () => {
+ let component: DetailsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DetailsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DetailsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/details/details.component.ts b/src/app/details/details.component.ts
new file mode 100644
index 0000000..c7deb2f
--- /dev/null
+++ b/src/app/details/details.component.ts
@@ -0,0 +1,79 @@
+import { Component, OnInit } from '@angular/core';
+import {MdDialog, MdDialogRef, MD_DIALOG_DATA} from '@angular/material';
+import {GmapComponent} from '../gmap/gmap.component';
+import {RuleComponent} from '../rule/rule.component';
+import { ExpansionPanelsModule } from 'ng2-expansion-panels';
+import { DateTimePickerModule } from 'ng-pick-datetime';
+import { DatepickerModule as YourAlias } from 'angular2-material-datepicker'
+@Component({
+ selector: 'app-details',
+ templateUrl: './details.component.html',
+ styleUrls: ['./details.component.css']
+})
+export class DetailsComponent implements OnInit {
+ animal: string;
+ name: string;
+ foods = [
+ {value: 'SMS', viewValue: 'SMS'},
+ {value: 'Email', viewValue: 'Email'},
+ {value: 'Push', viewValue: 'Push Notification'},
+ ];
+ foodss = [
+ {value: 'Daily', viewValue: 'Daily'},
+ {value: 'Weekly', viewValue: 'Weekly'},
+ {value: 'Monthly', viewValue: 'Monthly'},
+ {value: 'Yearly', viewValue: 'Yearly'},
+ ];
+ delete(){
+ // console.log("DELETE RUNNING");
+ }
+ constructor(public dialog: MdDialog) { }
+ openDialog(): void {
+ let dialogRef = this.dialog.open(GmapComponent, {
+ width: '400px',
+ data: { name: "1234567890", animal: this.animal }
+ });
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log('The dialog was closed');
+ this.animal = result;
+ // console.log(this.animal);
+ this.l.push(this.animal)
+ });
+ }
+ openDialog2(): void {
+ let dialogRef = this.dialog.open(RuleComponent, {
+ width: '700px',
+ //data: { name: "1234567890", animal: this.animal }
+ });
+ dialogRef.afterClosed().subscribe(result => {
+ // console.log('The dialog was closed');
+ // this.animal = result;
+ // console.log(this.animal);
+ // this.l.push(this.animal)
+ });
+ }
+ l :any;
+ logout(){
+
+ }
+ resetForm(){
+
+ }
+ saveForm(){
+
+ }
+ addContact(){
+
+ }
+ neww:any;
+ yourModelDate:any;
+ fs:any;
+ ls:any;
+ or:any
+ ngOnInit() {
+ this.fs=1;
+ this.ls=2;
+ this.or=3
+ }
+
+}
diff --git a/src/app/device-entry/device-entry.component.html b/src/app/device-entry/device-entry.component.html
new file mode 100644
index 0000000..295b189
--- /dev/null
+++ b/src/app/device-entry/device-entry.component.html
@@ -0,0 +1,151 @@
+
+
\ No newline at end of file
diff --git a/src/app/device-entry/device-entry.component.scss b/src/app/device-entry/device-entry.component.scss
new file mode 100644
index 0000000..919d3b2
--- /dev/null
+++ b/src/app/device-entry/device-entry.component.scss
@@ -0,0 +1,53 @@
+.container{
+ margin-top: 10px;
+ .headerStyle{
+ text-align: center;
+ padding-bottom: 10px;
+ padding-top: 10px;
+ font-size: 20px;
+ background: MD_DIALOG_DATA;
+ color: white;
+ border-radius: 4px;
+ }
+
+ .entryFields{
+ .row{
+ text-align: center;
+ }
+ }
+
+ .formStyle{
+ border: 1px solid #e4e6e5;
+ border-radius: 4px;
+ }
+
+ }
+
+ .mainBody{
+
+ }
+
+
+ /deep/ .mat-menu-panel.test{
+
+ background-color: #b7b7b7;
+ width: 160px;
+ text-align: left;
+ color: #fff;
+
+ a{
+ display: block;
+ padding: 9px 10px;
+ margin: 0;
+ border-bottom: 1px solid #999;
+ }
+}
+
+/deep/ .mat-menu-panel.test_1{
+
+ background-color: #b7b7b7;
+ width: 160px;
+ text-align: left;
+ color: #fff;
+ margin-top:48px;
+}
\ No newline at end of file
diff --git a/src/app/device-entry/device-entry.component.spec.ts b/src/app/device-entry/device-entry.component.spec.ts
new file mode 100644
index 0000000..b64aa15
--- /dev/null
+++ b/src/app/device-entry/device-entry.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeviceEntryComponent } from './device-entry.component';
+
+describe('DeviceEntryComponent', () => {
+ let component: DeviceEntryComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeviceEntryComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeviceEntryComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/device-entry/device-entry.component.ts b/src/app/device-entry/device-entry.component.ts
new file mode 100644
index 0000000..f22ae70
--- /dev/null
+++ b/src/app/device-entry/device-entry.component.ts
@@ -0,0 +1,268 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { MdSnackBar } from '@angular/material';
+import { ContactService } from '../contact.service';
+import { Router } from '@angular/router';
+import { BsDatepickerConfig } from 'ngx-bootstrap';
+
+@Component({
+ selector: 'app-device-entry',
+ templateUrl: './device-entry.component.html',
+ styleUrls: ['./device-entry.component.scss']
+})
+export class DeviceEntryComponent implements OnInit {
+ Inventory: FormGroup;
+ today_date = new Date();
+ colorTheme = 'theme-dark-blue';
+
+ bsConfig: Partial;
+ vhStatus = ['Tagged','Untagged'];
+ tracking_software = ['Yes','No'];
+ vstattt :any;
+ supAdminId: any;
+ userid: any;
+ DealerName: any;
+ InvantoryObject :any;
+ buttonToggle:boolean =false;
+ objectID: any;
+ dataDevModel: any[];
+ deviceModel:any;
+ DeviceModelValue: any;
+ constructor(
+ public formBuilder: FormBuilder,public snackBar: MdSnackBar,public contactService: ContactService, private router: Router,
+ ) {
+
+
+ this.Inventory = formBuilder.group({
+ systemDate : [this.today_date,Validators.required],
+ Device_ID: ['',Validators.required],
+ Device_Name: ['', Validators.required],
+ chessisNumber : ['',Validators.required],
+ sim_number_1 : ['',Validators.required],
+ sim_provider_1 : ['IDEA'],
+ sim_number_2 : [''],
+ sim_provider_2 : ['BSNL'],
+ approvingRTO : [''],
+ ownerNumber : ['',Validators.required],
+ Alternatenumber : [''],
+ email : [''],
+ costumer_first_name : ['',Validators.required],
+ costumer_last_name : [''],
+ status:[this.vhStatus[1]],
+ trackingSoft : [this.tracking_software[1]],
+ dealerName :[''],
+ engine_number:['']
+ })
+
+ this.InvantoryObject = localStorage.getItem('invantoryObject');
+ if(this.InvantoryObject){
+ var parsedValue = JSON.parse(this.InvantoryObject);
+ this.buttonToggle =true;
+ this.objectID = parsedValue._id;
+
+ console.log(parsedValue);
+ var datetoedit = new Date(parsedValue.systemDate);
+ this.Inventory = formBuilder.group({
+ systemDate : [datetoedit,Validators.required],
+ Device_ID: [parsedValue.Device_ID,Validators.required],
+ Device_Name: [parsedValue.Device_Name, Validators.required],
+ chessisNumber : [parsedValue.chessisNumber,Validators.required],
+ sim_number_1 : [parsedValue.sim_number_1,Validators.required],
+ sim_provider_1 : [parsedValue.sim_provider_1],
+ sim_number_2 : [parsedValue.sim_number_2],
+ sim_provider_2 : [parsedValue.sim_provider_2],
+ approvingRTO : [parsedValue.approvingRTO],
+ ownerNumber : [parsedValue.ownerNumber,Validators.required],
+ Alternatenumber : [parsedValue.Alternatenumber],
+ email : [parsedValue.email],
+ costumer_first_name : [parsedValue.costumer_first_name,Validators.required],
+ costumer_last_name : [parsedValue.costumer_last_name],
+ status:[parsedValue.status],
+ trackingSoft : [parsedValue.trackingSoft],
+ dealerName :[parsedValue.dealerName],
+ engine_number:[parsedValue.engine_number]
+ })
+ if(parsedValue.device_model != undefined){
+ this.deviceModel = parsedValue.device_model.device_type;
+ }
+
+ }
+ }
+
+ ngOnInit() {
+ var supAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.userid = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ if(supAdmin == true){
+ this.supAdminId = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ }else{
+ this.supAdminId = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).supAdmin;
+
+ }
+ console.log(supAdmin);
+ this.dealerData();
+ this.getDeviceModel()
+ }
+
+
+ submitData(){
+ console.log('this.Inventory.value',this.dataDevModel);
+
+ console.log(JSON.stringify(this.Inventory.value.Device_ID).length);
+ if(this.Inventory.invalid){
+ let message1="Please fill all required filled";
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+
+ });
+
+ }
+ else if(JSON.stringify(this.Inventory.value.Device_ID).length != 15){
+ let message1="Device Id must be of 15 digit";
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+
+ });
+
+ }
+ else{
+ // submitData
+ this.Inventory.value.operator_id = this.userid;
+ this.Inventory.value.superAdmin = this.supAdminId;
+ this.Inventory.value.device_model = this.dataDevModel[0]._id;
+ this.contactService.saveDevInventory(this.Inventory.value).subscribe(res=>{
+ console.log(res);
+ console.log(res.message)
+ let message1=res.message;
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+ });
+ this.router.navigateByUrl("Inventorylist");
+ },err=>{
+ console.log(err);
+ let message1=JSON.parse(err._body).message;
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+
+ });
+
+ })
+ }
+ }
+
+ dealerData(){
+ this.contactService.getDealersDetails(this.supAdminId).subscribe(res=>{
+ console.log(res);
+ this.DealerName = res;
+ },err=>{
+ console.log(err);
+ })
+
+ }
+
+ ngOnDestroy(){
+ localStorage.removeItem('invantoryObject');
+ }
+
+ updateData(){
+ console.log('updateData');
+ console.log(this.Inventory.value);
+
+ if(this.Inventory.invalid){
+ let message1="Please fill all required filled";
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+
+ });
+
+ } else if(JSON.stringify(this.Inventory.value.Device_ID).length != 15){
+ let message1="Device Id must be of 15 digit";
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+
+ });
+
+ }
+
+ else{
+ // submitData
+ // this.Inventory.value.operator_id = this.userid;
+ this.Inventory.value.superAdmin = this.supAdminId;
+ this.Inventory.value._id = this.objectID;
+ if(this.dataDevModel != undefined){
+ this.Inventory.value.device_model = this.dataDevModel[0]._id;
+ }
+
+ this.contactService.editDevInventory(this.Inventory.value).subscribe(res=>{
+ console.log(res);
+ console.log(res.message)
+ let message1=res.message;
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+ });
+ this.router.navigateByUrl("Inventorylist");
+ },err=>{
+ console.log(err);
+ let message1=JSON.parse(err._body).message;
+ let action:any;
+ this.snackBar.open(message1, action, {
+ duration: 5000,
+ });
+
+ })
+ }
+ }
+
+
+ selectedDevModel(devModel){
+ this.DeviceModelValue = devModel;
+ console.log(this.DeviceModelValue);
+
+ }
+
+ device_Model: any;
+ getDeviceModel() {
+ this.contactService.getDevModel()
+ .subscribe(res => {
+ this.device_Model = res;
+ var devname = [];
+ console.log("Device_Model",this.device_Model);
+ for(var i = 0 ; i -1;
+ });
+ console.log("this.dataDevModel",this.dataDevModel);
+ return this.dataDevModel;
+ }
+
+ }
+}
diff --git a/src/app/device-inventory/device-inventory.component.html b/src/app/device-inventory/device-inventory.component.html
new file mode 100644
index 0000000..dfcc3c8
--- /dev/null
+++ b/src/app/device-inventory/device-inventory.component.html
@@ -0,0 +1,540 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{item._id}}
+ {{item.TotalDev}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Browse
+ for Excel file ...
+
+ Upload
+
+ Download Sample File
+
+
+
+
+
+
+
+
+
+ {{'IMEI' | translate}}
+ {{'Vendor' | translate}}
+ {{'Bill date' | translate}}
+ {{'Bill no' | translate}}
+ {{'Device model no' | translate}}
+ {{'Iccid no' | translate}}
+ {{'Mob-1' | translate}}
+ {{'Mob-2' | translate}}
+ {{'State' | translate}}
+ {{'eSIM validaity' | translate}}
+
+
+
+
+ {{failedDevices.IMEI}}
+ {{failedDevices.Vendor_Name}}
+ {{failedDevices['Bill date']}}
+ {{failedDevices['Bill no']}}
+ {{failedDevices['Device model no']}}
+ {{failedDevices['Iccid no']}}
+ {{failedDevices['Mob-1']}}
+ {{failedDevices['Mob-2']}}
+ {{failedDevices['State']}}
+ {{failedDevices['eSIM validaity']}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Dealer' | translate}} :
+
+
+
+
+ {{ group.first_name }} {{ group.last_name }}
+
+
+
+
+
+
+ Select
+ Excel file
+
+ Upload
+
+ Transfer
+
+
0">
+ Transfer
+
+
+
+
+
+
+
+
+ {{'IMEI' | translate}}
+ {{'Vendor' | translate}}
+ {{'Bill date' | translate}}
+ {{'Bill no' | translate}}
+ {{'Device model no' | translate}}
+ {{'Iccid no' | translate}}
+ {{'Mob-1' | translate}}
+ {{'Mob-2' | translate}}
+ {{'State' | translate}}
+ {{'eSIM validaity' | translate}}
+
+
+
+
+ {{failedDevices.IMEI}}
+ {{failedDevices.Vendor_Name}}
+ {{failedDevices['Bill date']}}
+ {{failedDevices['Bill no']}}
+ {{failedDevices['Device model no']}}
+ {{failedDevices['Iccid no']}}
+ {{failedDevices['Mob-1']}}
+ {{failedDevices['Mob-2']}}
+ {{failedDevices['State']}}
+ {{failedDevices['eSIM validaity']}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Installer' | translate}} :
+
+
+
+
+ {{ group.first_name }} {{ group.last_name }}
+
+
+
+
+
+
+ Select
+ Excel file
+
+ Upload
+
+ Transfer
+
+
0">
+ Transfer
+
+
+
+
+
+
+
+
+ {{'IMEI' | translate}}
+ {{'Vendor' | translate}}
+ {{'Bill date' | translate}}
+ {{'Bill no' | translate}}
+ {{'Device model no' | translate}}
+ {{'Iccid no' | translate}}
+ {{'Mob-1' | translate}}
+ {{'Mob-2' | translate}}
+ {{'State' | translate}}
+ {{'eSIM validaity' | translate}}
+
+
+
+
+ {{failedDevices.IMEI}}
+ {{failedDevices.Vendor_Name}}
+ {{failedDevices['Bill date']}}
+ {{failedDevices['Bill no']}}
+ {{failedDevices['Device model no']}}
+ {{failedDevices['Iccid no']}}
+ {{failedDevices['Mob-1']}}
+ {{failedDevices['Mob-2']}}
+ {{failedDevices['State']}}
+ {{failedDevices['eSIM validaity']}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'Distributer' | translate}} :
+
+
+
+
+ {{ group.first_name }} {{ group.last_name }}
+
+
+
+
+
+
+
+ Select Excel file
+
+ Upload
+ Transfer
+
+
0">
+ Transfer
+
+
+
+
+
+
+
+
+ {{'IMEI' | translate}}
+ {{'Vendor' | translate}}
+ {{'Bill date' | translate}}
+ {{'Bill no' | translate}}
+ {{'Device model no' | translate}}
+ {{'Iccid no' | translate}}
+ {{'Mob-1' | translate}}
+ {{'Mob-2' | translate}}
+ {{'State' | translate}}
+ {{'eSIM validaity' | translate}}
+
+
+
+
+ {{failedDevices.IMEI}}
+ {{failedDevices.Vendor_Name}}
+ {{failedDevices['Bill date']}}
+ {{failedDevices['Bill no']}}
+ {{failedDevices['Device model no']}}
+ {{failedDevices['Iccid no']}}
+ {{failedDevices['Mob-1']}}
+ {{failedDevices['Mob-2']}}
+ {{failedDevices['State']}}
+ {{failedDevices['eSIM validaity']}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sent
+
+
+ Received
+
+
+
+
+
+
+
+
+ IMEI
+ Date
+ From
+ To
+ Device Type
+
+
+
+
+ {{item.DeviceID}}
+ {{item.transferDate?(item.transferDate | date:'medium'):'' }}
+ {{item.from?item.from.first_name?item.from.first_name:'':''}} {{item.from?item.from.last_name?item.from.last_name:'':''}}
+ {{item.to?item.to.first_name?item.to.first_name:'':''}} {{item.to?item.to.last_name?item.to.last_name:'':''}}
+ {{item.DeviceType?item.DeviceType:''}}
+
+
+
+
+
+
+
+
+
+
+ IMEI
+ Date
+ From
+ To
+ Device Type
+
+
+
+
+ {{item.DeviceID}}
+ {{item.transferDate?(item.transferDate | date:'medium'):'' }}
+ {{item.from?item.from.first_name?item.from.first_name:'':''}} {{item.from?item.from.last_name?item.from.last_name:'':''}}
+ {{item.to?item.to.first_name?item.to.first_name:'':''}} {{item.to?item.to.last_name?item.to.last_name:'':''}}
+ {{item.DeviceType?item.DeviceType:''}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IMEI
+ Device model no
+ Purchase_date
+ Serial no
+ Iccid no
+ Mob-1
+ Mob-2
+ Vendor_Name
+ Bill date
+ Bill no
+ State
+ eSIM validaity
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/device-inventory/device-inventory.component.scss b/src/app/device-inventory/device-inventory.component.scss
new file mode 100644
index 0000000..cbbb14b
--- /dev/null
+++ b/src/app/device-inventory/device-inventory.component.scss
@@ -0,0 +1,17 @@
+.topDiv {
+ padding-top: 20px;
+ background: whitesmoke;
+ height: 100vh;
+}
+.bg-blue {
+ background-color: #00c0ef !important;
+}
+.bg-green {
+ background-color: #00a65a !important;
+}
+.bg-orange {
+ background-color: #f39c12 !important;
+}
+.bg-red {
+ background-color: #d9534f !important;
+}
diff --git a/src/app/device-inventory/device-inventory.component.spec.ts b/src/app/device-inventory/device-inventory.component.spec.ts
new file mode 100644
index 0000000..a215373
--- /dev/null
+++ b/src/app/device-inventory/device-inventory.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeviceInventoryComponent } from './device-inventory.component';
+
+describe('DeviceInventoryComponent', () => {
+ let component: DeviceInventoryComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeviceInventoryComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeviceInventoryComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/device-inventory/device-inventory.component.ts b/src/app/device-inventory/device-inventory.component.ts
new file mode 100644
index 0000000..35ab7b4
--- /dev/null
+++ b/src/app/device-inventory/device-inventory.component.ts
@@ -0,0 +1,777 @@
+import { Component, OnInit, TemplateRef } from '@angular/core';
+import { FlashMessagesService } from 'angular2-flash-messages';
+import { BsDatepickerConfig, BsModalRef, BsModalService } from 'ngx-bootstrap';
+import { ContactService } from '../contact.service';
+declare var XLSX:any;
+declare var swal: any;
+// import * as XLSX from 'xlsx';
+declare var $: any;
+@Component({
+ selector: 'app-device-inventory',
+ templateUrl: './device-inventory.component.html',
+ styleUrls: ['./device-inventory.component.scss']
+})
+export class DeviceInventoryComponent implements OnInit {
+uploadJSON: any;
+ bsConfig: Partial;
+ tollList;
+ allUser:boolean=false;
+ from_date=new Date();
+ to_date=new Date();
+ masterSelected:boolean;
+ failedFiles=[];
+ selectedAll:boolean=false
+ failedUploadFiles:any;
+ showErrorupload: boolean =false;
+ faileduploadDevices=[];
+ showErrorupload_1: boolean =false;
+ Load: boolean;
+ useridd: any;
+ selectedArr=[]
+ inventory=[]
+ checkedList=[];
+ skip: number = 1;
+ limit: number = 100;
+ dealers_info: any;
+ dealerData: any;
+ dealerObj: any;
+ dealerSelect: any[];
+ installerData:any[];
+ distributerData:any[];
+ distributerSelect:any[]
+ installerSelect:any[];
+ distributer_info;
+ distributerObj
+ Obj
+ installerObj
+ dateId: any;
+ inventoryCount=[];
+ installer_info: any;
+ transaction=[]
+ myInput: any;
+
+ array=[{IMEI:'877',Vendor_Name:'test',Purchase_date:'2021-12-20T18:30:00.000Z','Bill date':'2021-12-20T18:30:00.000Z','Bill no':'2212',State:'Maharastra',
+ 'eSIM validaity':'One Year/Two Year','Device model no':'3232','Serial no':'5443','Iccid no':'4223','Mob-1':'983993022','Mob-2':'983993022','vahanID':"45433"}]
+ constructor(private contactService:ContactService,private _flashMessagesService: FlashMessagesService) {
+ this.masterSelected = false;
+ }
+
+ ngOnInit() {
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.getInventory();
+ this.dealerDetail();
+ this.getInventoryCount();
+ this.distributerDetail()
+ let that = this;
+ // this.testTable()
+
+
+ $("#excelFile").change(function(e){
+ let _e:any = e;
+ that.failedFiles=[]
+ console.log("Inside function");
+ var reader = new FileReader();
+ console.log(reader);
+ reader.onload = function(e) {
+
+ let _E:any = e;
+ var data = _E.target.result;
+
+
+ let workbook = XLSX.read(data, {type: 'binary' });
+
+ let first_sheet_name = workbook.SheetNames[0];
+
+ let worksheet = workbook.Sheets[first_sheet_name];
+ let d:any = XLSX.utils.sheet_to_json(worksheet,{raw:true});
+
+ that.uploadJSON=d.map(function(d){
+ return d;
+
+ });
+ console.log("file=>",that.uploadJSON);
+
+ console.log("Failed",that.failedFiles);
+
+ that.faileduploadDevices=that.uploadJSON;
+ that.showErrorupload_1=true
+ };
+ reader.readAsBinaryString(_e.target.files[0]);
+
+ });
+ this.getInstallerData()
+ }
+
+ uploadExcel(){
+ this.failedUploadFiles = [];
+ this.uploadJSON.forEach(element => {
+ element=JSON.stringify(element)
+ });
+
+ // for(var i=0;i{
+ console.log(res);
+ this.getInventory()
+ var msg = "Records Added Successfully"
+ this._flashMessagesService.show(msg, { cssClass: 'alert-success', timeout: 3000 });
+ })
+
+ }
+show1:boolean=true
+ uploadExcelAndUpdate(){
+this.failedUploadFiles = [];
+ this.uploadJSON.forEach(element => {
+ element=JSON.stringify(element)
+ });
+
+ console.log("Device Json Payload",this.uploadJSON);
+ var data={
+ data:this.uploadJSON,
+ user:this.useridd
+ }
+ console.log(data);
+
+ this.contactService.post('/Device_inventory/addOrUpdateMultiPle',data).subscribe(res=>{
+ console.log(res);
+ this.show1=false;
+ this.getInventory()
+ swal({
+ // position: 'top-end',
+ // icon: 'success',
+ title: 'Records updated Successfully',
+ showConfirmButton: false,
+ timer: 1500
+ })
+
+
+ // var msg = "Records updated Successfully"
+ // this._flashMessagesService.show(msg, { cssClass: 'alert-success', timeout: 3000 });
+ })
+ }
+
+
+
+
+ getInventory(){
+ var dateObj={}
+ var url="/Device_inventory/getInventory?user="+this.useridd
+ if((this.dateId == 'to_date')||(this.to_date != undefined)){
+ dateObj['to_date'] = this.to_date.toISOString();
+ }
+ if((this.dateId == 'from_date')||(this.from_date != undefined)){
+ dateObj['from_date'] = this.from_date.toISOString();
+ }
+
+ // if(dateObj != undefined){
+ // url="/Device_inventory/getInventory?from="+this.from_date+'&to='+this.to_date
+ // }
+ this.contactService.get(url).subscribe((res:any)=>{
+ console.log(res);
+ for(let i=0;i -1) {
+ this.selectedArr.splice(i,1)
+ }
+ }
+ }
+ console.log(this.selectedArr,index);
+
+ }
+
+ selectAll(event){
+ this.selectedArr=[]
+ this.selectedAll=event;
+ if(this.selectedAll){
+ this.selectedArr=this.inventory;
+ }else{
+ this.selectedArr=[]
+ }
+ console.log(this.selectedArr);
+
+ }
+ checkUncheckAll() {
+ for (var i = 0; i < this.inventory.length; i++) {
+ this.inventory[i].isSelected = this.masterSelected;
+ }
+ this.getCheckedItemList();
+ }
+
+ // Check All Checkbox Checked
+ isAllSelected() {
+ this.masterSelected = this.inventory.every(function(item:any) {
+ return item.isSelected == true;
+ })
+ this.getCheckedItemList();
+ }
+
+ getCheckedItemList(){
+ this.checkedList = [];
+ for (var i = 0; i < this.inventory.length; i++) {
+ if(this.inventory[i].isSelected)
+ this.checkedList.push(this.inventory[i]);
+ }
+ // this.checkedList = JSON.stringify(this.checkedList);
+ console.log(this.checkedList);
+
+ }
+
+ getInstallerData(){
+ this.Load = true;
+ this.contactService.getTechnician(this.useridd, this.skip, this.limit,this.myInput,this.allUser).subscribe((res)=>{
+ this.Load = false ;
+ this.installer_info = res;
+ for(let i=0;i{
+ this.Load=false;
+ this.installer_info=[];
+ })
+ }
+
+
+ dealerDetail() {
+ this.Load = true;
+ console.log("Inside function");
+ // this.contactService.dealer_Info1(this.useridd,1,10000,2,null)
+ this.contactService.getDealersDetails(this.useridd)
+ .subscribe(res => {
+ // console.log(res);
+ this.Load = false ;
+ this.dealers_info = res;
+ for(let i=0;i {
+ this.Load = false;
+ this.dealers_info=[];
+ // this.firstcall = true;
+ // this.lastcall = false;
+ })
+
+ }
+
+ distributerDetail() {
+ this.Load = true;
+ console.log("Inside function");
+ // this.contactService.dealer_Info1(this.useridd,1,10000,2,null)
+ this.contactService.getDistributerList(this.useridd)
+ .subscribe(res => {
+ // console.log(res);
+ this.Load = false ;
+ this.distributer_info = res;
+ for(let i=0;i {
+ this.Load = false;
+ this.distributer_info=[];
+ // this.firstcall = true;
+ // this.lastcall = false;
+ })
+
+ }
+ filtergrpStatess(val) {
+
+ console.log(val)
+ // console.log(this.options)
+
+ if (val) {
+// this.userDetail=undefined
+ const filtergrpValue:any = val;
+
+ this.dealerSelect=[];
+ this.dealerSelect = this.dealers_info.filter(function(g){
+ var c = (g.first_name).toLocaleLowerCase().indexOf(filtergrpValue.toLocaleLowerCase());
+ // console.log("TESTINg",c)
+ return c > -1;
+ });
+ if(this.dealerData){
+ for(let i=0;i -1;
+ });
+ if(this.installerData){
+ for(let i=0;i -1;
+ });
+ // console.log(this.distributerData);
+
+ if(this.distributerData){
+ for(let i=0;i0?this.checkedList:this.uploadJSON,
+ dealer:this.dealerObj,
+ user:this.useridd
+ }
+
+ this.contactService.transferInventory(data).subscribe((res:any)=>{
+ console.log(res);
+ this.getInventory()
+
+ })
+}
+
+transfer1(){
+ var data={
+ data:this.checkedList.length>0?this.checkedList:this.uploadJSON,
+ dealer:this.installerObj,
+ user:this.useridd
+ }
+
+ this.contactService.transferInventory(data).subscribe((res:any)=>{
+ console.log(res);
+ this.getInventory()
+
+ })
+}
+
+transfer2(){
+ var data={
+ data:this.checkedList.length>0?this.checkedList:this.uploadJSON,
+ dealer:this.distributerObj,
+ user:this.useridd
+ }
+
+ this.contactService.transferInventory(data).subscribe((res:any)=>{
+ console.log(res);
+ this.getInventory()
+
+ })
+}
+
+
+changeDate(id){
+ this.dateId=id
+ this.getInventory()
+
+}
+getInventoryCount(){
+ this.contactService.getInventoryCount(this.useridd).subscribe((res:any)=>{
+ this.inventoryCount=res;
+
+ })
+}
+applyFilter(event: Event) {
+ const filterValue = (event.target as HTMLInputElement).value;
+ console.log(filterValue);
+
+ // this.inventory.filter = filterValue.trim().toLowerCase();
+ }
+
+selectTab(id){
+ console.log(id);
+
+ if(id=='sent'){
+ this.contactService.get('/DeviceInventoryTransaction/getByStatus?id=sent&user='+this.useridd).subscribe((res:any)=>{
+ this.transaction=res;
+ })
+
+ }else{
+ this.contactService.get('/DeviceInventoryTransaction/getByStatus?id=receive&user='+this.useridd).subscribe((res:any)=>{
+ this.transaction=res;
+ })
+ }
+
+}
+show:Boolean=false;
+addmultiple(){
+ this.show=!this.show;
+ this.testTable()
+ // this.tabelObj.ajax.reload();
+}
+
+tab:any;
+
+exportExcels() {
+
+ this.downloadFile(this.array);
+ }
+
+ downloadFile(data, filename = 'Distance Report') {
+
+ let arrHeader = ["IMEI","Device model no","Purchase_date","Serial no","Iccid no","Mob-1","Mob-2", "Vendor_Name", "Bill date", "Bill no","State","eSIM validaity"];
+ let csvData = this.ConvertToCSV(data, arrHeader);
+ let blob = new Blob(['\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });
+ let dwldLink = document.createElement("a");
+ let url = URL.createObjectURL(blob);
+ let isSafariBrowser = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;
+ if (isSafariBrowser) { //if Safari open in new window to save file with random filename.
+ dwldLink.setAttribute("target", "_blank");
+ }
+ dwldLink.setAttribute("href", url);
+ dwldLink.setAttribute("download", "Sample.csv");
+ dwldLink.style.visibility = "hidden";
+ document.body.appendChild(dwldLink);
+ dwldLink.click();
+ document.body.removeChild(dwldLink);
+ }
+ ConvertToCSV(objArray, headerList) {
+ let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
+
+ let str = ""
+ let row = 'S.No,';
+
+
+ let newHeaders =["IMEI","Device model no","Purchase_date","Serial no","Iccid no","Mob-1","Mob-2", "Vendor_Name", "Bill date", "Bill no","State","eSIM validaity"];
+
+ for (let index in newHeaders) {
+ row += newHeaders[index] + ',';
+ }
+ row = row.slice(0, -1);
+ str += row + '\r\n';
+ for (let i = 0; i < array.length; i++) {
+ let line = (i + 1) + '';
+ if(i";
+
+ }
+
+ tab_text=tab_text+"