Commit 3d2d9bd5db93393b42291a05411c2df40bb16de4

Authored by Birendra
2 parents 0c054178 9a0eef14

mergeMerge branch 'FixUserDeactivationDate' into AIA_Production

400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/UserController.cs
... ... @@ -205,6 +205,13 @@ namespace AIAHTML5.ADMIN.API.Controllers
205 205 UserEntity.Password = jsonUserData["Password"].Value<string>();
206 206 UserEntity.IsActive = jsonUserData["IsActive"].Value<bool>();
207 207 UserEntity.CreatorId = jsonUserData["Modifiedby"].Value<int>();
  208 +
  209 + JToken typeToken= jsonUserData["DeactivationDate"];
  210 + if (typeToken.Type != JTokenType.Null)
  211 + {
  212 + UserEntity.DeactivationDate = typeToken.Value<DateTime>();
  213 + }
  214 +
208 215 try
209 216 {
210 217 Status = UserModel.UpdateUser(dbContext, UserEntity);
... ...
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Context.cs
... ... @@ -3425,7 +3425,7 @@ namespace AIAHTML5.ADMIN.API.Entity
3425 3425 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_SaveLabExerciseAttempts", userIdParameter, labExerciseIdentifierParameter, lastQuestionParameter, totalQuestionsParameter);
3426 3426 }
3427 3427  
3428   - public virtual int usp_UpdateAIAUser(string sLoginId, string sPassword, string sFirstname, string sLastname, string sEmailId, Nullable<int> id, Nullable<int> iCreatorId, Nullable<byte> isActive, ObjectParameter status)
  3428 + public virtual int usp_UpdateAIAUser(string sLoginId, string sPassword, string sFirstname, string sLastname, string sEmailId, Nullable<int> id, Nullable<int> iCreatorId, Nullable<byte> isActive, Nullable<System.DateTime> deactivateDate, ObjectParameter status)
3429 3429 {
3430 3430 var sLoginIdParameter = sLoginId != null ?
3431 3431 new ObjectParameter("sLoginId", sLoginId) :
... ... @@ -3459,7 +3459,11 @@ namespace AIAHTML5.ADMIN.API.Entity
3459 3459 new ObjectParameter("isActive", isActive) :
3460 3460 new ObjectParameter("isActive", typeof(byte));
3461 3461  
3462   - return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, sEmailIdParameter, idParameter, iCreatorIdParameter, isActiveParameter, status);
  3462 + var deactivateDateParameter = deactivateDate.HasValue ?
  3463 + new ObjectParameter("deactivateDate", deactivateDate) :
  3464 + new ObjectParameter("deactivateDate", typeof(System.DateTime));
  3465 +
  3466 + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_UpdateAIAUser", sLoginIdParameter, sPasswordParameter, sFirstnameParameter, sLastnameParameter, sEmailIdParameter, idParameter, iCreatorIdParameter, isActiveParameter, deactivateDateParameter, status);
3463 3467 }
3464 3468  
3465 3469 public virtual int usp_UpdateblockedUser(Nullable<int> id, ObjectParameter status)
... ...
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Designer.cs
1   -// T4 code generation is enabled for model 'F:\CB_Develop00-SOURCECODE\AIAHTML5.ADMIN.API\Entity\AIADBEntity.edmx'.
  1 +// T4 code generation is enabled for model 'E:\AIAProject00-SOURCECODE\AIAHTML5.ADMIN.API\Entity\AIADBEntity.edmx'.
2 2 // To enable legacy code generation, change the value of the 'Code Generation Strategy' designer
3 3 // property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model
4 4 // is open in the designer.
... ...
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.edmx
... ... @@ -4,7 +4,7 @@
4 4 <edmx:Runtime>
5 5 <!-- SSDL content -->
6 6 <edmx:StorageModels>
7   - <Schema Namespace="AIADatabaseV5Model.Store" Provider="System.Data.SqlClient" ProviderManifestToken="2008" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
  7 + <Schema Namespace="AIADatabaseV5Model.Store" Provider="System.Data.SqlClient" ProviderManifestToken="2008" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
8 8 <EntityType Name="AccountType">
9 9 <Key>
10 10 <PropertyRef Name="Id" />
... ... @@ -1421,6 +1421,7 @@
1421 1421 <Parameter Name="id" Type="int" Mode="In" />
1422 1422 <Parameter Name="iCreatorId" Type="int" Mode="In" />
1423 1423 <Parameter Name="isActive" Type="tinyint" Mode="In" />
  1424 + <Parameter Name="deactivateDate" Type="datetime" Mode="In" />
1424 1425 <Parameter Name="Status" Type="int" Mode="InOut" />
1425 1426 </Function>
1426 1427 <Function Name="usp_UpdateAiaUserPassword" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
... ... @@ -2539,6 +2540,7 @@
2539 2540 <Parameter Name="id" Mode="In" Type="Int32" />
2540 2541 <Parameter Name="iCreatorId" Mode="In" Type="Int32" />
2541 2542 <Parameter Name="isActive" Mode="In" Type="Byte" />
  2543 + <Parameter Name="deactivateDate" Mode="In" Type="DateTime" />
2542 2544 <Parameter Name="Status" Mode="InOut" Type="Int32" />
2543 2545 </FunctionImport>
2544 2546 <FunctionImport Name="usp_UpdateblockedUser">
... ...
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/UserModel.cs
... ... @@ -114,7 +114,7 @@ namespace AIAHTML5.ADMIN.API.Models
114 114 short EditionId = (short)UserEntity.EditionId;
115 115 try
116 116 {
117   - dbContext.usp_UpdateAIAUser(UserEntity.LoginId, UserEntity.Password, UserEntity.FirstName, UserEntity.LastName,UserEntity.EmailId,UserEntity.Id,UserEntity.CreatorId,(UserEntity.IsActive ? (byte)1 :(byte)0),spStatus);
  117 + dbContext.usp_UpdateAIAUser(UserEntity.LoginId, UserEntity.Password, UserEntity.FirstName, UserEntity.LastName,UserEntity.EmailId,UserEntity.Id,UserEntity.CreatorId,(UserEntity.IsActive ? (byte)1 :(byte)0),UserEntity.DeactivationDate,spStatus);
118 118 return spStatus.Value.ToString();
119 119 }
120 120 catch (Exception ex)
... ...
400-SOURCECODE/AIAHTML5.Web/app/controllers/DAController.js
... ... @@ -315,6 +315,30 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
315 315 $('#spinner').css('visibility', 'hidden');
316 316 }
317 317  
  318 + //fixing for mac os now
  319 + $scope.getOS = function () {
  320 + var userAgent = window.navigator.userAgent,
  321 + platform = window.navigator.platform,
  322 + macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],
  323 + windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],
  324 + iosPlatforms = ['iPhone', 'iPad', 'iPod'],
  325 + os = null;
  326 +
  327 + if (macosPlatforms.indexOf(platform) !== -1) {
  328 + os = 'MacOS';
  329 + } else if (iosPlatforms.indexOf(platform) !== -1) {
  330 + os = 'iOS';
  331 + } else if (windowsPlatforms.indexOf(platform) !== -1) {
  332 + os = 'Windows';
  333 + } else if (/Android/.test(userAgent)) {
  334 + os = 'Android';
  335 + } else if (!os && /Linux/.test(platform)) {
  336 + os = 'Linux';
  337 + }
  338 +
  339 + return os;
  340 + }
  341 +
318 342 $scope.openView = function ($event) {
319 343  
320 344 $rootScope.disableAnnotationTB = false;
... ... @@ -1697,7 +1721,8 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
1697 1721 $scope.isLayerChange = false;
1698 1722 }
1699 1723  
1700   - if (evt.ctrlKey) {
  1724 + // for mac os Command key use for multi selection
  1725 + if (evt.ctrlKey || evt.metaKey) {
1701 1726 $rootScope.multiAnnotationIsON = true;
1702 1727  
1703 1728 //document.getElementById("btnZoom").setAttribute('disabled', 'disabled');
... ... @@ -1728,9 +1753,19 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
1728 1753  
1729 1754  
1730 1755 var canvasDiv = document.getElementById('canvasDiv');
1731   - var verticalScrollPosition = canvasDiv.scrollTop;
1732   - var horizontlScrollPosition = canvasDiv.scrollLeft;
1733   -
  1756 + //changing for mac os now
  1757 + var os=$scope.getOS();
  1758 + if(os=='MacOS')
  1759 + {
  1760 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-2;
  1761 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-2;
  1762 + }
  1763 + else
  1764 + {
  1765 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-1;
  1766 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-1;
  1767 + }
  1768 +
1734 1769 var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135);
1735 1770  
1736 1771 var mirrorXOnNormalImage = parseInt(maskCanvasContext.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage);
... ... @@ -2116,8 +2151,9 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
2116 2151 if ($scope.isLayerChange == true) {
2117 2152 $scope.isLayerChange = false;
2118 2153 }
2119   -
2120   - if (evt.ctrlKey) {
  2154 + //birendra
  2155 + // for mac os Command key use for multi selection
  2156 + if (evt.ctrlKey || evt.metaKey) {
2121 2157 $rootScope.multiAnnotationIsON = true;
2122 2158  
2123 2159 //$("#btnZoom").addClass('disabled');
... ... @@ -2158,13 +2194,23 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
2158 2194 // alert(mousePos.x + ',' + mousePos.y);
2159 2195  
2160 2196 var canvasDiv = document.getElementById('canvasDiv');
2161   - var verticalScrollPosition = canvasDiv.scrollTop;
2162   - var horizontlScrollPosition = canvasDiv.scrollLeft;
2163   -
  2197 + //changing for mac os now
  2198 + var os=$scope.getOS();
  2199 + if(os=='MacOS')
  2200 + {
  2201 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-2;
  2202 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-2;
  2203 + }
  2204 + else
  2205 + {
  2206 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-1;
  2207 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-1;
  2208 + }
  2209 +
2164 2210  
2165 2211 //We substracted 135, as the difference between flex and html coordinates for same organ is 135
2166 2212 var actulalX = mousePos.x + horizontlScrollPosition;
2167   - var actualY = mousePos.y + verticalScrollPosition;
  2213 + var actualY = mousePos.y + verticalScrollPosition;
2168 2214 var RGBColor = $scope.GetRGBColor(maskCanvasContext, actulalX, actualY, x, y);
2169 2215  
2170 2216  
... ... @@ -3870,7 +3916,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
3870 3916 // we decide the size of speech bubble
3871 3917 //2.
3872 3918  
3873   - if (event.ctrlKey) {
  3919 + if (event.ctrlKey || event.metaKey) {
3874 3920 console.log('ctrl pressed');
3875 3921 $scope.multiAnnotationIsON = true;
3876 3922 //2.1 create unique speech bubbles
... ... @@ -3939,7 +3985,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
3939 3985 else {
3940 3986 $scope.longest_annotationT1 = $scope.annotationTextArrayT1.reduce(function (a, b) { return a.length > b.length ? a : b; });
3941 3987 $scope.longest_annotationT2 = $scope.annotationTextArrayT2.reduce(function (a, b) { return a.length > b.length ? a : b; });
3942   - if (event.ctrlKey) {
  3988 + if (event.ctrlKey || event.metaKey) {
3943 3989 $scope.j = $scope.j + 1;
3944 3990 var sub_id_annotation = "black_annotation" + $scope.j;
3945 3991 var pointClicked_annotation = parseInt(x) + parseInt(y);
... ... @@ -4030,7 +4076,15 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4030 4076 }
4031 4077  
4032 4078 $scope.createSpeechBubbleBasedOnAnnotationLength = function (pointClicked, x, y, id) {
4033   - var sppechBubbleHTML = "<div id ='" + pointClicked + "' class='com'><div style='z-index:60000;position:absolute;border-top:2px solid #000;transform:rotate(40deg);-moz-transform:rotate(40deg);-o-transform:rotate(40deg);-ms-transform:rotate(40deg);-webkit-transform:rotate(40deg);height:15px;width:35px;left:" + (x - 10) + "px;top:" + (y + 10) + "px;'' id='bubble" + $scope.speechBubbleCounter + "'></div><div data=" + $scope.speechBubbleCounter + " id=" + id + " class='appendDragg' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;font-weight:bold;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.speechBubbleCounter + " class='dynCross' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:9000;' id='bord" + $scope.speechBubbleCounter + "'></div></div>";
  4079 + var os=$scope.getOS();
  4080 + if(os=='MacOS')
  4081 + {
  4082 + var sppechBubbleHTML = "<div id ='" + pointClicked + "' class='com'><div class='multiLineAnnotation' style='z-index:60000;left:" + (x - 3) + "px;top:" + (y + 10.5) + "px;'' id='bubble" + $scope.speechBubbleCounter + "'></div><div data=" + $scope.speechBubbleCounter + " id=" + id + " class='appendDragg' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;font-weight:bold;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.speechBubbleCounter + " class='dynCross' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:9000;' id='bord" + $scope.speechBubbleCounter + "'></div></div>";
  4083 + }
  4084 + else
  4085 + {
  4086 + var sppechBubbleHTML = "<div id ='" + pointClicked + "' class='com'><div class='multiLineAnnotation' style='z-index:60000;left:" + (x - 4) + "px;top:" + (y + 11.5) + "px;'' id='bubble" + $scope.speechBubbleCounter + "'></div><div data=" + $scope.speechBubbleCounter + " id=" + id + " class='appendDragg' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;font-weight:bold;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.speechBubbleCounter + " class='dynCross' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:9000;' id='bord" + $scope.speechBubbleCounter + "'></div></div>";
  4087 + }
4034 4088 //Issue #7286 :Undefined annotation should not appear
4035 4089 for (var i = 0; i <= $scope.MultiLanguageAnnationArray.length - 1; i++) {
4036 4090 var annotation = $scope.MultiLanguageAnnationArray[i];
... ... @@ -4085,7 +4139,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4085 4139  
4086 4140  
4087 4141  
4088   - var sppechBubbleDotHTML = '<div id="dot" style="position:absolute;height:15px;width:35px;display:none;z-index:10000;border-top:2px solid #000;transform:rotate(40deg);-moz-transform:rotate(40deg);-o-transform:rotate(40deg);-ms-transform:rotate(40deg);-webkit-transform:rotate(40deg);"></div>'
  4142 + var sppechBubbleDotHTML = '<div id="dot" class="singleLineAnnotation" style="z-index:10000"></div>'
4089 4143 + '<div id="sppeachBubble" style="height:auto!important;z-index:10000;margin-left:25px;border:1px solid #000;display:none;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size:12px;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;">'
4090 4144 + '<span style="position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;">'
4091 4145 + '<img class="crossDiv_temp" style="width:18px" src=' + $rootScope.path + '></span></div>'
... ... @@ -4162,22 +4216,46 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4162 4216 }
4163 4217 var Globe = [];
4164 4218 Globe.push({ currentX: x, currentY: y });
  4219 + //changing for mac os now
  4220 + var os=$scope.getOS();
  4221 + if(os=='MacOS')
  4222 + {
  4223 + document.getElementById('dot').style.display = 'block';
  4224 + document.getElementById('dot').style.left = ((Globe[0].currentX) - 4) + 'px';
  4225 + document.getElementById('dot').style.top = ((Globe[0].currentY) + 10.5) + 'px';
  4226 + document.getElementById('bord').style.display = 'block';
  4227 + document.getElementById('bord').style.left = ((Globe[0].currentX) + 0.5) + 'px';
  4228 + document.getElementById('bord').style.top = ((Globe[0].currentY) + 0) + 'px';
  4229 + document.getElementById('sppeachBubble').style.display = 'block';
  4230 + document.getElementById('sppeachBubble').style.left = ((Globe[0].currentX) - 1) + 'px';
  4231 + document.getElementById('sppeachBubble').style.top = ((Globe[0].currentY)+0) + 'px';
  4232 + }
  4233 + else
  4234 + {
4165 4235 document.getElementById('dot').style.display = 'block';
4166   - document.getElementById('dot').style.left = ((Globe[0].currentX) - 10) + 'px';
4167   - document.getElementById('dot').style.top = ((Globe[0].currentY) + 10) + 'px';
  4236 + document.getElementById('dot').style.left = ((Globe[0].currentX) - 4) + 'px';
  4237 + document.getElementById('dot').style.top = ((Globe[0].currentY) + 11.5) + 'px';
4168 4238 document.getElementById('bord').style.display = 'block';
4169   - document.getElementById('bord').style.left = ((Globe[0].currentX) - 2) + 'px';
  4239 + document.getElementById('bord').style.left = ((Globe[0].currentX) + 0.5) + 'px';
4170 4240 document.getElementById('bord').style.top = ((Globe[0].currentY) + 1) + 'px';
4171 4241 document.getElementById('sppeachBubble').style.display = 'block';
4172   - document.getElementById('sppeachBubble').style.left = (Globe[0].currentX) + 'px';
4173   - document.getElementById('sppeachBubble').style.top = (Globe[0].currentY) + 'px';
4174   -
4175   -
  4242 + document.getElementById('sppeachBubble').style.left = ((Globe[0].currentX) - 1) + 'px';
  4243 + document.getElementById('sppeachBubble').style.top = ((Globe[0].currentY)-1) + 'px';
4176 4244  
  4245 + }
  4246 +
4177 4247 }
4178 4248 $scope.createSpeechBubbleBasedOnTransparencyWithCtrl = function (pointClicked_annotation, Exists_annotation, x, y, sub_id_annotation) {
4179   -
4180   - var sppechBubbleHTML_annotation = "<div id ='" + pointClicked_annotation + "' class='com_anno'><div style='z-index:59000;position:absolute;border-top:2px solid #000;transform:rotate(40deg);-moz-transform:rotate(40deg);-o-transform:rotate(40deg);-ms-transform:rotate(40deg);-webkit-transform:rotate(40deg);height:15px;width:35px;left:" + (x - 10) + "px;top:" + (y + 10) + "px;'' id='bubble" + $scope.j + "'></div><div data=" + $scope.j + " id=" + sub_id_annotation + " class='appendDragg_annotation' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.j + " class='dynCross_anno' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:59000;' id='bord_annotation" + $scope.j + "'></div></div>";
  4249 + var os=$scope.getOS();
  4250 + if(os=='MacOS')
  4251 + {
  4252 + var sppechBubbleHTML_annotation = "<div id ='" + pointClicked_annotation + "' class='com_anno'><div class='multiLineAnnotation' style='z-index:59000;left:" + (x - 3) + "px;top:" + (y + 10.5) + "px;'' id='bubble" + $scope.j + "'></div><div data=" + $scope.j + " id=" + sub_id_annotation + " class='appendDragg_annotation' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.j + " class='dynCross_anno' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:59000;' id='bord_annotation" + $scope.j + "'></div></div>";
  4253 + }
  4254 + else
  4255 + {
  4256 + var sppechBubbleHTML_annotation = "<div id ='" + pointClicked_annotation + "' class='com_anno'><div class='multiLineAnnotation' style='z-index:59000;left:" + (x - 4) + "px;top:" + (y + 11.5) + "px;'' id='bubble" + $scope.j + "'></div><div data=" + $scope.j + " id=" + sub_id_annotation + " class='appendDragg_annotation' style='z-index:60000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size: 12px;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;left:" + x + "px;top:" + y + "px;'><div style='z-index:7000;position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;'><img id=" + $scope.j + " class='dynCross_anno' style='width:18px' src=" + $rootScope.path + "></div></div><div style='position:absolute;border:1px solid #000;display:none;z-index:59000;' id='bord_annotation" + $scope.j + "'></div></div>";
  4257 + }
  4258 +
4181 4259 if ($scope.longest_annotationT1.length > $scope.longest_annotationT2.length) {
4182 4260 if (Exists_annotation == 0) {
4183 4261 $("#canvasDiv").append(sppechBubbleHTML_annotation);
... ... @@ -4272,7 +4350,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4272 4350 $("#bord_annotation").remove();
4273 4351 $("#sppeachBubble_annotation").remove();
4274 4352 $("#dot_annotation").remove();
4275   - var sppechBubbleDotHTML_annotation = '<div id="dot_annotation" style="position:absolute;height:15px;width:35px;display:none;z-index:59000;border-top:2px solid #000;transform:rotate(40deg);-moz-transform:rotate(40deg);-o-transform:rotate(40deg);-ms-transform:rotate(40deg);-webkit-transform:rotate(40deg);"></div>'
  4353 + var sppechBubbleDotHTML_annotation = '<div id="dot_annotation" class="singleLineAnnotation" style="z-index:59000"></div>'
4276 4354 + '<div id="sppeachBubble_annotation" style="height:auto!important;z-index:60000;margin-left:25px;border:1px solid #000;display:none;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size:12px;background-color:#19100e;font-weight:bold;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;">'
4277 4355 + '<span style="position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;">'
4278 4356 + '<img class="crossDiv_temp_annotation" style="width:18px" src=' + $rootScope.path + '></span></div>'
... ... @@ -4363,15 +4441,34 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4363 4441 }
4364 4442 var Globe = [];
4365 4443 Globe.push({ currentX: x, currentY: y });
4366   - document.getElementById('dot_annotation').style.display = 'block';
4367   - document.getElementById('dot_annotation').style.left = ((Globe[0].currentX) - 10) + 'px';
4368   - document.getElementById('dot_annotation').style.top = ((Globe[0].currentY) + 10) + 'px';
4369   - document.getElementById('bord_annotation').style.display = 'block';
4370   - document.getElementById('bord_annotation').style.left = ((Globe[0].currentX) - 2) + 'px';
4371   - document.getElementById('bord_annotation').style.top = ((Globe[0].currentY) + 1) + 'px';
4372   - document.getElementById('sppeachBubble_annotation').style.display = 'block';
4373   - document.getElementById('sppeachBubble_annotation').style.left = (Globe[0].currentX) + 'px';
4374   - document.getElementById('sppeachBubble_annotation').style.top = (Globe[0].currentY) + 'px';
  4444 + //changing for mac os now
  4445 + var os=$scope.getOS();
  4446 + if(os=='MacOS')
  4447 + {
  4448 + document.getElementById('dot_annotation').style.display = 'block';
  4449 + document.getElementById('dot_annotation').style.left = ((Globe[0].currentX) - 4) + 'px';
  4450 + document.getElementById('dot_annotation').style.top = ((Globe[0].currentY) + 10.5) + 'px';
  4451 + document.getElementById('bord_annotation').style.display = 'block';
  4452 + document.getElementById('bord_annotation').style.left = ((Globe[0].currentX) + 0.5) + 'px';
  4453 + document.getElementById('bord_annotation').style.top = ((Globe[0].currentY) + 0) + 'px';
  4454 + document.getElementById('sppeachBubble_annotation').style.display = 'block';
  4455 + document.getElementById('sppeachBubble_annotation').style.left = (Globe[0].currentX - 1) + 'px';
  4456 + document.getElementById('sppeachBubble_annotation').style.top = ((Globe[0].currentY) + 0) + 'px';
  4457 +
  4458 + }
  4459 + else
  4460 + {
  4461 + document.getElementById('dot_annotation').style.display = 'block';
  4462 + document.getElementById('dot_annotation').style.left = ((Globe[0].currentX) - 4) + 'px';
  4463 + document.getElementById('dot_annotation').style.top = ((Globe[0].currentY) + 11.5) + 'px';
  4464 + document.getElementById('bord_annotation').style.display = 'block';
  4465 + document.getElementById('bord_annotation').style.left = ((Globe[0].currentX) + 0.5) + 'px';
  4466 + document.getElementById('bord_annotation').style.top = ((Globe[0].currentY) + 1) + 'px';
  4467 + document.getElementById('sppeachBubble_annotation').style.display = 'block';
  4468 + document.getElementById('sppeachBubble_annotation').style.left = (Globe[0].currentX - 1) + 'px';
  4469 + document.getElementById('sppeachBubble_annotation').style.top = ((Globe[0].currentY) - 1) + 'px';
  4470 +
  4471 + }
4375 4472  
4376 4473 }
4377 4474  
... ... @@ -4746,6 +4843,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
4746 4843 transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener);
4747 4844  
4748 4845 $(".ui-wrapper").css("z-index", $rootScope.UIWrapperZIndex);
  4846 + $(".ui-wrapper").css("left",$scope.startX-2+ 'px');
4749 4847  
4750 4848 }
4751 4849 if ($scope.TransparencyBoxStartX <= bodyRegionRight && value.X <= transparencyBoxRight && $scope.TransparencyBoxStartY <= bodyRegionBottom && value.Y <= transparencyBoxBottom) {
... ... @@ -5967,6 +6065,7 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
5967 6065  
5968 6066 $('#transparencyCanvas').resizable({ handles: "e,s,se,w,n,ne,nw,sw", stop: function (event, ui) { resizeTransparencyBox(); }, start: function (event, ui) { clearTransCanvas(); } });
5969 6067 $(".ui-wrapper").css("z-index", $rootScope.UIWrapperZIndex);
  6068 + $(".ui-wrapper").css("left",tCanvas.style.left.replace('px','')-2+ 'px');
5970 6069  
5971 6070 //bind click listener
5972 6071 transparencyCanvas.addEventListener('click', TransparencyCanvasClickListener);
... ... @@ -6144,13 +6243,22 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
6144 6243 // alert(mousePos.x + ',' + mousePos.y);
6145 6244  
6146 6245 var canvasDiv = document.getElementById('canvasDiv');
6147   - var verticalScrollPosition = canvasDiv.scrollTop;
6148   - var horizontlScrollPosition = canvasDiv.scrollLeft;
6149   -
  6246 + //changing for mac os now
  6247 + var os=$scope.getOS();
  6248 + if(os=='MacOS')
  6249 + {
  6250 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-2;
  6251 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-2;
  6252 + }
  6253 + else
  6254 + {
  6255 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-1;
  6256 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-1;
  6257 + }
6150 6258  
6151 6259 //We substracted 135, as the difference between flex and html coordinates for same organ is 135
6152 6260 var actulalX = mousePos.x + horizontlScrollPosition;
6153   - var actualY = mousePos.y + verticalScrollPosition //- 135; //+ tomenuBarheight + titleBarheight + searchComboheight;
  6261 + var actualY = mousePos.y + verticalScrollPosition; //- 135; //+ tomenuBarheight + titleBarheight + searchComboheight;
6154 6262 var clickedBodyRegion;
6155 6263 var x;
6156 6264 var y;
... ... @@ -6352,9 +6460,19 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
6352 6460 var tCanvasTotalHeight = parseInt(tCanvasTopAftrSplit[0]) + parseInt(tCanvasHeightAftrSplit[0]);
6353 6461 var mousePos = $scope.getMousePos(evt);
6354 6462 var canvasDiv = document.getElementById('canvasDiv');
6355   - var verticalScrollPosition = canvasDiv.scrollTop;
6356   - var horizontlScrollPosition = canvasDiv.scrollLeft;
6357   -
  6463 + //changing for mac os now
  6464 + var os=$scope.getOS();
  6465 + if(os=='MacOS')
  6466 + {
  6467 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-2;
  6468 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-2;
  6469 + }
  6470 + else
  6471 + {
  6472 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-1;
  6473 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-1;
  6474 + }
  6475 +
6358 6476 var actulalX = mousePos.x + horizontlScrollPosition;
6359 6477 var actualY = mousePos.y + verticalScrollPosition;
6360 6478  
... ... @@ -6453,9 +6571,19 @@ AIA.controller(&quot;DAController&quot;, [&quot;$scope&quot;, &quot;$rootScope&quot;, &quot;$compile&quot;, &quot;$http&quot;, &quot;$l
6453 6571  
6454 6572 function getAnnotationAndCraeteSpeechBubble(mirrorCanvasX, mirrorCanvasWidth, mousePos, maskCanvasContexttrans, clickedBodyRegion, x, y, evt) {
6455 6573 var canvasDiv = document.getElementById('canvasDiv');
6456   - var verticalScrollPosition = canvasDiv.scrollTop;
6457   - var horizontlScrollPosition = canvasDiv.scrollLeft;
6458   -
  6574 + //changing for mac os now
  6575 + var os=$scope.getOS();
  6576 + if(os=='MacOS')
  6577 + {
  6578 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-2;
  6579 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-2;
  6580 + }
  6581 + else
  6582 + {
  6583 + var verticalScrollPosition = Math.round(canvasDiv.scrollTop)-1;
  6584 + var horizontlScrollPosition = Math.round(canvasDiv.scrollLeft)-1;
  6585 + }
  6586 +
6459 6587 var distanceXOnMirrorImage = (parseInt(mirrorCanvasX) + parseInt(mirrorCanvasWidth)) - (parseInt(mousePos.x) + horizontlScrollPosition);// - 135);
6460 6588  
6461 6589 var mirrorXOnNormalImage = parseInt(maskCanvasContexttrans.canvas.offsetLeft) + parseInt(distanceXOnMirrorImage);
... ...
400-SOURCECODE/AIAHTML5.Web/app/controllers/TileViewListController.js
... ... @@ -1189,7 +1189,7 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou
1189 1189 $scope.isAnnotationDivAlreadyPresent = true;
1190 1190 }
1191 1191 if ($scope.isAnnotationDivAlreadyPresent == true) {
1192   - var speechBubbleHTML = '<div id="speechBubbleLine' + PinId + '" style="position:absolute;height:15px;width:35px;display:none;z-index:13000;border-top:2px solid #000;transform:rotate(40deg);-moz-transform:rotate(40deg);-o-transform:rotate(40deg);-ms-transform:rotate(40deg);-webkit-transform:rotate(40deg);"></div>'
  1192 + var speechBubbleHTML = '<div id="speechBubbleLine' + PinId + '" class="singleLineAnnotation" style="z-index:13000"></div>'
1193 1193 + '<div id="speechBubble' + PinId + '" class="common-drag" style="height:auto!important;z-index:13000;margin-left:25px;border:1px solid #000;padding:5px 10px;position:absolute;color:#fff;text-align:left;font-size:12px;background-color:#19100e;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;font-weight:bold;">'
1194 1194 + '<span style="position:absolute;right:-3px;top:-4px;color:#ffffff;cursor:pointer;">'
1195 1195 + '<img id="closeBtn' + PinId + ' " class="crossDiv_temp" style="width:18px" src=' + $rootScope.closeBtnImgPath + '></span></div>'
... ... @@ -1271,7 +1271,7 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou
1271 1271 $rootScope.speechBubbleDimaensions.push({ "currentX": x, "currentY": y, "id": PinId });
1272 1272 speechBubbleDims.push({ currentX: x, currentY: y });
1273 1273 document.getElementById('speechBubbleLine' + PinId + '').style.display = 'block';
1274   - document.getElementById('speechBubbleLine' + PinId + '').style.left = ((speechBubbleDims[0].currentX - 12)) + 'px';
  1274 + document.getElementById('speechBubbleLine' + PinId + '').style.left = ((speechBubbleDims[0].currentX - 10)) + 'px';
1275 1275 if ($scope.sliderVal == 25) {
1276 1276 document.getElementById('speechBubbleLine' + PinId + '').style.top = ((speechBubbleDims[0].currentY + 5)) + 'px';
1277 1277 }
... ...
400-SOURCECODE/AIAHTML5.Web/themes/default/css/bootstrap/3.3.6/main.css
... ... @@ -1319,4 +1319,26 @@ footer .browserIcons
1319 1319 #emailToHelpBlock
1320 1320 {
1321 1321 display:none;
  1322 +}
  1323 +
  1324 +.singleLineAnnotation {
  1325 + position:absolute;
  1326 + width:36px;
  1327 + display:none;
  1328 + border-top:2px solid #000;
  1329 + transform:rotate(40deg);
  1330 + -moz-transform:rotate(40deg);
  1331 + -o-transform:rotate(40deg);
  1332 + -ms-transform:rotate(40deg);
  1333 + -webkit-transform:rotate(40deg);
  1334 +}
  1335 +.multiLineAnnotation {
  1336 + position:absolute;
  1337 + width:35px;
  1338 + border-top:2px solid #000;
  1339 + transform:rotate(40deg);
  1340 + -moz-transform:rotate(40deg);
  1341 + -o-transform:rotate(40deg);
  1342 + -ms-transform:rotate(40deg);
  1343 + -webkit-transform:rotate(40deg);
1322 1344 }
1323 1345 \ No newline at end of file
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/user.service.ts
... ... @@ -97,7 +97,7 @@ export class UserService {
97 97  
98 98 UpdateUserEntity(obj: any) {
99 99 //let options = new RequestOptions({ headers: this.headers });
100   - var jsonData = { 'id': obj.id, 'FirstName': obj.FirstName, 'LastName': obj.LastName, 'EmailId': obj.EmailId, 'UserName': obj.UserName, 'Password': obj.Password, 'Modifiedby': this.commonService.UserId, 'IsActive': obj.isActive};
  100 + var jsonData = { 'id': obj.id, 'FirstName': obj.FirstName, 'LastName': obj.LastName, 'EmailId': obj.EmailId, 'UserName': obj.UserName, 'Password': obj.Password, 'Modifiedby': this.commonService.UserId, 'IsActive': obj.isActive,'DeactivationDate': obj.DeactivationDate};
101 101 console.log(obj);
102 102 var headers = new Headers({
103 103 'Content-Type': 'application/json'
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.html
... ... @@ -301,8 +301,8 @@
301 301 <div class="form-group">
302 302 <label for="inputEmail3" class="col-sm-5 control-label">Deactivation Date :</label>
303 303 <div class="col-sm-7">
304   - <input class="form-control input-sm" id="DeactivationDate" placeholder="" type="text" formControlName="DeactivationDate" [attr.disabled]="true">
305   -
  304 + <input class="form-control input-sm" id="DeactivationDate" placeholder="" type="text" formControlName="DeactivationDate">
  305 + <!-- <div *ngIf="!adduserFrm.controls.DeactivationDate.valid && adduserFrm.controls.DeactivationDate.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;"></div> -->
306 306 </div>
307 307 </div>
308 308 <div class="row">
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.ts
... ... @@ -53,6 +53,7 @@ export class UsersList implements OnInit, AfterViewChecked {
53 53 selectedId: number = 0;
54 54 divClass: string;
55 55 isActive: boolean;
  56 + deaDateblank:boolean;
56 57 NoRecord: string;
57 58 checkedRecords: Array<number>;
58 59 UncheckedRecords: Array<number>;
... ... @@ -101,7 +102,7 @@ export class UsersList implements OnInit, AfterViewChecked {
101 102 ModifiedDate: [''],
102 103 Createdby: [''],
103 104 Modifiedby: [''],
104   - DeactivationDate: [''],
  105 + DeactivationDate: ['',this.noWhitespaceValidator],
105 106 isActive: [false],
106 107 UserStatusActive: ['false'],
107 108 UserStatusInActive:['']
... ... @@ -400,12 +401,21 @@ export class UsersList implements OnInit, AfterViewChecked {
400 401 if (this.adduserFrm.value.FirstName == '') {
401 402 this.alerts += '</br><span>First Name is required.</span>';
402 403 }
403   - if (this.adduserFrm.value.LastName == '') {
404   - this.alerts += '</br><span>Last Name is required.</span>';
  404 + this.deaDateblank=false;
  405 + if (this.adduserFrm.value.DeactivationDate == '' ||this.adduserFrm.value.DeactivationDate == null) {
  406 + this.deaDateblank=true;
  407 + //set date to pass from validation and later remove
  408 + this.adduserFrm.controls['DeactivationDate'].setValue('01/01/2020');
405 409 }
  410 +
406 411  
407 412 if (this.adduserFrm.valid && this.alerts == '') {
408   - this.adduserFrm.controls['isActive'].setValue(this.adduserFrm.value.UserStatusActive)
  413 + this.adduserFrm.controls['isActive'].setValue(this.adduserFrm.value.UserStatusActive) ;
  414 +
  415 + if(this.deaDateblank)
  416 + {
  417 + this.adduserFrm.controls['DeactivationDate'].setValue(null);
  418 + }
409 419  
410 420 var Userobj = this.adduserFrm.value;
411 421  
... ...