Commit 0e4f4f6534782004ee0a77286dfabc4da4742b9a
Merge branch 'AIA_QA' into AIA_PROD
Showing
21 changed files
with
339 additions
and
95 deletions
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/CommonController.cs
@@ -94,7 +94,7 @@ namespace AIAHTML5.ADMIN.API.Controllers | @@ -94,7 +94,7 @@ namespace AIAHTML5.ADMIN.API.Controllers | ||
94 | string sStartDate = DateTime.MinValue.ToShortDateString(); | 94 | string sStartDate = DateTime.MinValue.ToShortDateString(); |
95 | string sEndDate = DateTime.MaxValue.ToShortDateString(); | 95 | string sEndDate = DateTime.MaxValue.ToShortDateString(); |
96 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); | 96 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); |
97 | - var lstDiscountCode = dbContext.usp_GetDiscountCodes("", "", "","Id","asc", 1, 1, spRecordCount).ToList(); | 97 | + var lstDiscountCode = dbContext.usp_GetDiscountCodes("", "", "","Id","asc",false, 1, 1, spRecordCount).ToList(); |
98 | lstDiscountCode1 = lstDiscountCode.Select(l => new usp_GetDiscountCodes_Result { Id = l.Id, DiscountCode = l.DiscountCode }).ToList(); | 98 | lstDiscountCode1 = lstDiscountCode.Select(l => new usp_GetDiscountCodes_Result { Id = l.Id, DiscountCode = l.DiscountCode }).ToList(); |
99 | return Ok(lstDiscountCode1); | 99 | return Ok(lstDiscountCode1); |
100 | } | 100 | } |
400-SOURCECODE/AIAHTML5.ADMIN.API/Controllers/DiscountCodeController.cs
@@ -25,13 +25,13 @@ namespace AIAHTML5.ADMIN.API.Controllers | @@ -25,13 +25,13 @@ namespace AIAHTML5.ADMIN.API.Controllers | ||
25 | 25 | ||
26 | [Route("GetDiscountCodes")] | 26 | [Route("GetDiscountCodes")] |
27 | [HttpGet] | 27 | [HttpGet] |
28 | - public HttpResponseMessage GetDiscountCodes(string discountCode, DateTime startDate, DateTime endDate, string sortColumn, string sortOrder, int pageNo, int pageLength) | 28 | + public HttpResponseMessage GetDiscountCodes(string discountCode, DateTime startDate, DateTime endDate, string sortColumn, string sortOrder, int pageNo, int pageLength,bool isGridBind) |
29 | { | 29 | { |
30 | List<usp_GetDiscountCodes_Result> DiscountCodeList; | 30 | List<usp_GetDiscountCodes_Result> DiscountCodeList; |
31 | int recordCount = 0; | 31 | int recordCount = 0; |
32 | try | 32 | try |
33 | { | 33 | { |
34 | - DiscountCodeList = DiscountCodeModel.GetDiscountCodes(dbContext, discountCode, startDate, endDate, sortColumn, sortOrder, pageNo, pageLength, out recordCount); | 34 | + DiscountCodeList = DiscountCodeModel.GetDiscountCodes(dbContext, discountCode, startDate, endDate, sortColumn, sortOrder, pageNo, pageLength,isGridBind, out recordCount); |
35 | return Request.CreateResponse(HttpStatusCode.OK, new { DiscountCodeList = DiscountCodeList, RecordCount = recordCount }); | 35 | return Request.CreateResponse(HttpStatusCode.OK, new { DiscountCodeList = DiscountCodeList, RecordCount = recordCount }); |
36 | } | 36 | } |
37 | catch (Exception ex) | 37 | catch (Exception ex) |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.Context.cs
@@ -4005,7 +4005,7 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4005,7 +4005,7 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4005 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetCustomerSummary_Result>("usp_GetCustomerSummary", sAccoutNumberParameter, sLicenseeFullNameParameter, iStartPriceParameter, iEndPriceParameter, iLicenseTypeParameter, iAccountTypeParameter, sZipParameter, iStateParameter, iCountryParameter, sortColumnParameter, sortOrderParameter, pageNoParameter, pageLengthParameter, recordCount); | 4005 | return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetCustomerSummary_Result>("usp_GetCustomerSummary", sAccoutNumberParameter, sLicenseeFullNameParameter, iStartPriceParameter, iEndPriceParameter, iLicenseTypeParameter, iAccountTypeParameter, sZipParameter, iStateParameter, iCountryParameter, sortColumnParameter, sortOrderParameter, pageNoParameter, pageLengthParameter, recordCount); |
4006 | } | 4006 | } |
4007 | 4007 | ||
4008 | - public virtual ObjectResult<usp_GetDiscountCodes_Result> usp_GetDiscountCodes(string sDiscountCode, string sStartDate, string sEndDate, string sortColumn, string sortOrder, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) | 4008 | + public virtual ObjectResult<usp_GetDiscountCodes_Result> usp_GetDiscountCodes(string sDiscountCode, string sStartDate, string sEndDate, string sortColumn, string sortOrder, Nullable<bool> isGridBind, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) |
4009 | { | 4009 | { |
4010 | var sDiscountCodeParameter = sDiscountCode != null ? | 4010 | var sDiscountCodeParameter = sDiscountCode != null ? |
4011 | new ObjectParameter("sDiscountCode", sDiscountCode) : | 4011 | new ObjectParameter("sDiscountCode", sDiscountCode) : |
@@ -4027,6 +4027,10 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4027,6 +4027,10 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4027 | new ObjectParameter("sortOrder", sortOrder) : | 4027 | new ObjectParameter("sortOrder", sortOrder) : |
4028 | new ObjectParameter("sortOrder", typeof(string)); | 4028 | new ObjectParameter("sortOrder", typeof(string)); |
4029 | 4029 | ||
4030 | + var isGridBindParameter = isGridBind.HasValue ? | ||
4031 | + new ObjectParameter("isGridBind", isGridBind) : | ||
4032 | + new ObjectParameter("isGridBind", typeof(bool)); | ||
4033 | + | ||
4030 | var pageNoParameter = pageNo.HasValue ? | 4034 | var pageNoParameter = pageNo.HasValue ? |
4031 | new ObjectParameter("pageNo", pageNo) : | 4035 | new ObjectParameter("pageNo", pageNo) : |
4032 | new ObjectParameter("pageNo", typeof(int)); | 4036 | new ObjectParameter("pageNo", typeof(int)); |
@@ -4035,7 +4039,7 @@ namespace AIAHTML5.ADMIN.API.Entity | @@ -4035,7 +4039,7 @@ namespace AIAHTML5.ADMIN.API.Entity | ||
4035 | new ObjectParameter("pageLength", pageLength) : | 4039 | new ObjectParameter("pageLength", pageLength) : |
4036 | new ObjectParameter("pageLength", typeof(int)); | 4040 | new ObjectParameter("pageLength", typeof(int)); |
4037 | 4041 | ||
4038 | - return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetDiscountCodes_Result>("usp_GetDiscountCodes", sDiscountCodeParameter, sStartDateParameter, sEndDateParameter, sortColumnParameter, sortOrderParameter, pageNoParameter, pageLengthParameter, recordCount); | 4042 | + return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetDiscountCodes_Result>("usp_GetDiscountCodes", sDiscountCodeParameter, sStartDateParameter, sEndDateParameter, sortColumnParameter, sortOrderParameter, isGridBindParameter, pageNoParameter, pageLengthParameter, recordCount); |
4039 | } | 4043 | } |
4040 | 4044 | ||
4041 | public virtual ObjectResult<usp_GetDiscountReport_Result> usp_GetDiscountReport(string sStartDate, string sEndDate, Nullable<int> intDiscountID, string sAccoutNumber, string sortColumn, string sortOrder, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) | 4045 | public virtual ObjectResult<usp_GetDiscountReport_Result> usp_GetDiscountReport(string sStartDate, string sEndDate, Nullable<int> intDiscountID, string sAccoutNumber, string sortColumn, string sortOrder, Nullable<int> pageNo, Nullable<int> pageLength, ObjectParameter recordCount) |
400-SOURCECODE/AIAHTML5.ADMIN.API/Entity/AIADBEntity.edmx
@@ -1004,6 +1004,7 @@ | @@ -1004,6 +1004,7 @@ | ||
1004 | <Parameter Name="sEndDate" Type="varchar" Mode="In" /> | 1004 | <Parameter Name="sEndDate" Type="varchar" Mode="In" /> |
1005 | <Parameter Name="sortColumn" Type="varchar" Mode="In" /> | 1005 | <Parameter Name="sortColumn" Type="varchar" Mode="In" /> |
1006 | <Parameter Name="sortOrder" Type="varchar" Mode="In" /> | 1006 | <Parameter Name="sortOrder" Type="varchar" Mode="In" /> |
1007 | + <Parameter Name="isGridBind" Type="bit" Mode="In" /> | ||
1007 | <Parameter Name="pageNo" Type="int" Mode="In" /> | 1008 | <Parameter Name="pageNo" Type="int" Mode="In" /> |
1008 | <Parameter Name="pageLength" Type="int" Mode="In" /> | 1009 | <Parameter Name="pageLength" Type="int" Mode="In" /> |
1009 | <Parameter Name="recordCount" Type="int" Mode="InOut" /> | 1010 | <Parameter Name="recordCount" Type="int" Mode="InOut" /> |
@@ -2761,6 +2762,7 @@ | @@ -2761,6 +2762,7 @@ | ||
2761 | <Parameter Name="sEndDate" Mode="In" Type="String" /> | 2762 | <Parameter Name="sEndDate" Mode="In" Type="String" /> |
2762 | <Parameter Name="sortColumn" Mode="In" Type="String" /> | 2763 | <Parameter Name="sortColumn" Mode="In" Type="String" /> |
2763 | <Parameter Name="sortOrder" Mode="In" Type="String" /> | 2764 | <Parameter Name="sortOrder" Mode="In" Type="String" /> |
2765 | + <Parameter Name="isGridBind" Mode="In" Type="Boolean" /> | ||
2764 | <Parameter Name="pageNo" Mode="In" Type="Int32" /> | 2766 | <Parameter Name="pageNo" Mode="In" Type="Int32" /> |
2765 | <Parameter Name="pageLength" Mode="In" Type="Int32" /> | 2767 | <Parameter Name="pageLength" Mode="In" Type="Int32" /> |
2766 | <Parameter Name="recordCount" Mode="InOut" Type="Int32" /> | 2768 | <Parameter Name="recordCount" Mode="InOut" Type="Int32" /> |
400-SOURCECODE/AIAHTML5.ADMIN.API/Models/DiscountCodeModel.cs
@@ -15,14 +15,14 @@ namespace AIAHTML5.ADMIN.API.Models | @@ -15,14 +15,14 @@ namespace AIAHTML5.ADMIN.API.Models | ||
15 | public bool IsActive { get; set; } | 15 | public bool IsActive { get; set; } |
16 | public decimal Percentage { get; set; } | 16 | public decimal Percentage { get; set; } |
17 | 17 | ||
18 | - public static List<usp_GetDiscountCodes_Result> GetDiscountCodes(AIADatabaseV5Entities dbContext, string discountCode, DateTime startDate, DateTime endDate, string sortColumn, string sortOrder, int pageNo, int pageLength, out int recordCount) | 18 | + public static List<usp_GetDiscountCodes_Result> GetDiscountCodes(AIADatabaseV5Entities dbContext, string discountCode, DateTime startDate, DateTime endDate, string sortColumn, string sortOrder, int pageNo, int pageLength, bool isGridBind, out int recordCount) |
19 | { | 19 | { |
20 | List<usp_GetDiscountCodes_Result> DiscountCodeList = new List<usp_GetDiscountCodes_Result>(); | 20 | List<usp_GetDiscountCodes_Result> DiscountCodeList = new List<usp_GetDiscountCodes_Result>(); |
21 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); | 21 | var spRecordCount = new System.Data.Objects.ObjectParameter("recordCount", 0); |
22 | recordCount = 0; | 22 | recordCount = 0; |
23 | try | 23 | try |
24 | { | 24 | { |
25 | - DiscountCodeList = dbContext.usp_GetDiscountCodes(discountCode, startDate.ToString("MM/dd/yyyy"), endDate.ToString("MM/dd/yyyy"), sortColumn, sortOrder, pageNo, pageLength, spRecordCount).ToList(); | 25 | + DiscountCodeList = dbContext.usp_GetDiscountCodes(discountCode, startDate.ToString("MM/dd/yyyy"), endDate.ToString("MM/dd/yyyy"), sortColumn, sortOrder,isGridBind, pageNo, pageLength, spRecordCount).ToList(); |
26 | 26 | ||
27 | recordCount = (int)spRecordCount.Value; | 27 | recordCount = (int)spRecordCount.Value; |
28 | } | 28 | } |
400-SOURCECODE/AIAHTML5.Web/app/controllers/DAController.js
@@ -4827,8 +4827,18 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -4827,8 +4827,18 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
4827 | }; | 4827 | }; |
4828 | } | 4828 | } |
4829 | 4829 | ||
4830 | + | ||
4831 | + | ||
4832 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
4833 | + if(actualTermNo>0) | ||
4834 | + { | ||
4835 | + var TermNumber = actualTermNo+'_'+windowviewid; | ||
4836 | + $("#termList").find("option[id=" + TermNumber + "]").addClass('currentTermActive'); | ||
4837 | + } | ||
4838 | + | ||
4839 | + | ||
4830 | } | 4840 | } |
4831 | - | 4841 | + |
4832 | } | 4842 | } |
4833 | 4843 | ||
4834 | } | 4844 | } |
@@ -11153,6 +11163,25 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -11153,6 +11163,25 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
11153 | }, 200); | 11163 | }, 200); |
11154 | } | 11164 | } |
11155 | 11165 | ||
11166 | + | ||
11167 | + $('#termlistfilter_' + windowviewid).find("option").css({ "background-color": "#ffffff"}); | ||
11168 | + var actualTermNumber=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); | ||
11169 | + | ||
11170 | + if (actualTermNumber >0) { | ||
11171 | + | ||
11172 | + var pinData = new jinqJs() | ||
11173 | + .from( $scope.limitTofilterdata) | ||
11174 | + .where("_ActualTermNumber == " + actualTermNumber) | ||
11175 | + .select(); | ||
11176 | + | ||
11177 | + if(pinData.length>0) | ||
11178 | + { | ||
11179 | + var pinTermNumber = pinData[0]._ActualTermNumber+'_'+windowviewid; | ||
11180 | + $('#termlistfilter_' + windowviewid).find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
11181 | + } | ||
11182 | + | ||
11183 | + } | ||
11184 | + | ||
11156 | } | 11185 | } |
11157 | 11186 | ||
11158 | $scope.HideSearch = function () { | 11187 | $scope.HideSearch = function () { |
@@ -11361,6 +11390,14 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -11361,6 +11390,14 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
11361 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); | 11390 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); |
11362 | } | 11391 | } |
11363 | 11392 | ||
11393 | + var actualTermNo=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); | ||
11394 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
11395 | + if(actualTermNo>0) | ||
11396 | + { | ||
11397 | + var TermNumber = actualTermNo+'_'+windowviewid; | ||
11398 | + $("#termList").find("option[id=" + TermNumber + "]").addClass('currentTermActive'); | ||
11399 | + } | ||
11400 | + | ||
11364 | $scope.EnableDAUI(windowviewid); | 11401 | $scope.EnableDAUI(windowviewid); |
11365 | 11402 | ||
11366 | } | 11403 | } |
@@ -11496,6 +11533,15 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -11496,6 +11533,15 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
11496 | } | 11533 | } |
11497 | 11534 | ||
11498 | } | 11535 | } |
11536 | + | ||
11537 | + var actualTermNo=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); | ||
11538 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
11539 | + if(actualTermNo>0) | ||
11540 | + { | ||
11541 | + var TermNumber = actualTermNo+'_'+windowviewid; | ||
11542 | + $("#termList").find("option[id=" + TermNumber + "]").addClass('currentTermActive'); | ||
11543 | + } | ||
11544 | + | ||
11499 | $scope.EnableDAUI(windowviewid); | 11545 | $scope.EnableDAUI(windowviewid); |
11500 | 11546 | ||
11501 | } | 11547 | } |
@@ -11537,10 +11583,13 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -11537,10 +11583,13 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
11537 | $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); | 11583 | $scope.SetwindowStoreData(windowviewid,'isNormalMode',false); |
11538 | $scope.SetwindowStoreData(windowviewid,'prevId',actualTermNumber); | 11584 | $scope.SetwindowStoreData(windowviewid,'prevId',actualTermNumber); |
11539 | 11585 | ||
11540 | - $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); | ||
11541 | - $("#termList").find("option[id=" + selectedtermid + "]").css({ "background-color": "#3399FF", "color": "#ffffff" }); | 11586 | + |
11587 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
11588 | + | ||
11589 | + $("#termList").find("option[id=" + selectedtermid + "]").addClass('currentTermActive'); | ||
11590 | + | ||
11542 | 11591 | ||
11543 | - var isListManagerSelected=true; | 11592 | + var isListManagerSelected=true; |
11544 | $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',isListManagerSelected); | 11593 | $scope.SetwindowStoreData(windowviewid,'isListManagerSelected',isListManagerSelected); |
11545 | //--- | 11594 | //--- |
11546 | if (isListManagerSelected == true) { | 11595 | if (isListManagerSelected == true) { |
@@ -12005,6 +12054,27 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | @@ -12005,6 +12054,27 @@ AIA.controller("DAController", ["$scope", "$rootScope", "$compile", "$http", "$l | ||
12005 | $compile($all)($scope); | 12054 | $compile($all)($scope); |
12006 | 12055 | ||
12007 | $("#typedTermName_" + windowviewid).attr("name", "0"); | 12056 | $("#typedTermName_" + windowviewid).attr("name", "0"); |
12057 | + | ||
12058 | + | ||
12059 | + $('#termlistfilter_' + windowviewid).find("option").css({ "background-color": "#ffffff" }); | ||
12060 | + | ||
12061 | + var actualTermNumber=$scope.GetwindowStoreData(windowviewid,'actualTermNumber'); | ||
12062 | + | ||
12063 | + if (actualTermNumber >0) { | ||
12064 | + | ||
12065 | + var pinData = new jinqJs() | ||
12066 | + .from( $scope.limitTofilterdata) | ||
12067 | + .where("_ActualTermNumber == " + actualTermNumber) | ||
12068 | + .select(); | ||
12069 | + | ||
12070 | + | ||
12071 | + if(pinData.length>0) | ||
12072 | + { | ||
12073 | + var pinTermNumber = pinData[0]._ActualTermNumber+'_'+windowviewid; | ||
12074 | + $('#termlistfilter_' + windowviewid).find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
12075 | + } | ||
12076 | + | ||
12077 | + } | ||
12008 | 12078 | ||
12009 | }; | 12079 | }; |
12010 | 12080 |
400-SOURCECODE/AIAHTML5.Web/app/controllers/TileViewListController.js
@@ -2841,6 +2841,25 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -2841,6 +2841,25 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
2841 | } | 2841 | } |
2842 | 2842 | ||
2843 | 2843 | ||
2844 | + // highlight pin on list manager | ||
2845 | + | ||
2846 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
2847 | + var activePinArray=$scope.GetAAwindowStoreData(windowviewid,'activePinArray'); | ||
2848 | + var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | ||
2849 | + | ||
2850 | + if (activePinArray.length >0) { | ||
2851 | + for (var i = 0; i < activePinArray.length; i++) { | ||
2852 | + var pinnum = activePinArray[i].split("_")[1]; | ||
2853 | + | ||
2854 | + var pinData = new jinqJs() | ||
2855 | + .from(aaPinData) | ||
2856 | + .where("_PinId == " + pinnum) | ||
2857 | + .select(); | ||
2858 | + | ||
2859 | + var pinTermNumber = pinData[0]._TermId+'_'+windowviewid; | ||
2860 | + $("#termList").find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
2861 | + } | ||
2862 | + } | ||
2844 | } | 2863 | } |
2845 | 2864 | ||
2846 | 2865 | ||
@@ -3180,6 +3199,24 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3180,6 +3199,24 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3180 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); | 3199 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); |
3181 | } | 3200 | } |
3182 | 3201 | ||
3202 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
3203 | + var activePinArray=$scope.GetAAwindowStoreData(windowviewid,'activePinArray'); | ||
3204 | + var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | ||
3205 | + | ||
3206 | + if (activePinArray.length >0) { | ||
3207 | + for (var i = 0; i < activePinArray.length; i++) { | ||
3208 | + var pinnum = activePinArray[i].split("_")[1]; | ||
3209 | + | ||
3210 | + var pinData = new jinqJs() | ||
3211 | + .from(aaPinData) | ||
3212 | + .where("_PinId == " + pinnum) | ||
3213 | + .select(); | ||
3214 | + | ||
3215 | + var pinTermNumber = pinData[0]._TermId+'_'+windowviewid; | ||
3216 | + $("#termList").find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
3217 | + } | ||
3218 | + } | ||
3219 | + | ||
3183 | $scope.EnableAAUI(windowviewid); | 3220 | $scope.EnableAAUI(windowviewid); |
3184 | 3221 | ||
3185 | } | 3222 | } |
@@ -3300,6 +3337,23 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3300,6 +3337,23 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3300 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); | 3337 | $('#btlLoadMoreLm').attr('disabled', 'disabled'); |
3301 | } | 3338 | } |
3302 | 3339 | ||
3340 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
3341 | + var activePinArray=$scope.GetAAwindowStoreData(windowviewid,'activePinArray'); | ||
3342 | + var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | ||
3343 | + | ||
3344 | + if (activePinArray.length >0) { | ||
3345 | + for (var i = 0; i < activePinArray.length; i++) { | ||
3346 | + var pinnum = activePinArray[i].split("_")[1]; | ||
3347 | + | ||
3348 | + var pinData = new jinqJs() | ||
3349 | + .from(aaPinData) | ||
3350 | + .where("_PinId == " + pinnum) | ||
3351 | + .select(); | ||
3352 | + | ||
3353 | + var pinTermNumber = pinData[0]._TermId+'_'+windowviewid; | ||
3354 | + $("#termList").find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
3355 | + } | ||
3356 | + } | ||
3303 | } | 3357 | } |
3304 | $scope.EnableAAUI(windowviewid); | 3358 | $scope.EnableAAUI(windowviewid); |
3305 | 3359 | ||
@@ -3574,9 +3628,13 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3574,9 +3628,13 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3574 | 3628 | ||
3575 | $('#termlistfilter_'+windowviewid).css("display", "block"); | 3629 | $('#termlistfilter_'+windowviewid).css("display", "block"); |
3576 | 3630 | ||
3631 | + var activePinArray=$scope.GetAAwindowStoreData(windowviewid,'activePinArray'); | ||
3632 | + | ||
3577 | angular.forEach($scope.limitTofilterdata, function (value2, key2) { | 3633 | angular.forEach($scope.limitTofilterdata, function (value2, key2) { |
3578 | - var $el = $('<option id=' + value2._TermNumber +'_' +windowviewid+ '>' + value2._TermText + '</option>').appendTo('#termlistfilter_' + windowviewid); | 3634 | + |
3635 | + var $el = $('<option id=' + value2._TermNumber +'_' +windowviewid+'>' + value2._TermText + '</option>').appendTo('#termlistfilter_' + windowviewid); | ||
3579 | $compile($el)($scope); | 3636 | $compile($el)($scope); |
3637 | + | ||
3580 | }) | 3638 | }) |
3581 | 3639 | ||
3582 | var $all = $('#termlistfilter_'+windowviewid).appendTo('#searchListDivAA_' + windowviewid); | 3640 | var $all = $('#termlistfilter_'+windowviewid).appendTo('#searchListDivAA_' + windowviewid); |
@@ -3587,8 +3645,26 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3587,8 +3645,26 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3587 | $timeout(function () { | 3645 | $timeout(function () { |
3588 | $('#termlistfilter_'+windowviewid).focus(); | 3646 | $('#termlistfilter_'+windowviewid).focus(); |
3589 | }, 200); | 3647 | }, 200); |
3590 | - } | ||
3591 | - | 3648 | + } |
3649 | + | ||
3650 | + $('#termlistfilter_' + windowviewid).find("option").css({ "background-color": "#ffffff"}); | ||
3651 | + var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | ||
3652 | + | ||
3653 | + if (activePinArray.length >0) { | ||
3654 | + for (var i = 0; i < activePinArray.length; i++) { | ||
3655 | + var pinnum = activePinArray[i].split("_")[1]; | ||
3656 | + | ||
3657 | + var pinData = new jinqJs() | ||
3658 | + .from(aaPinData) | ||
3659 | + .where("_PinId == " + pinnum) | ||
3660 | + .select(); | ||
3661 | + | ||
3662 | + var pinTermNumber = pinData[0]._TermId+'_'+windowviewid; | ||
3663 | + $('#termlistfilter_' + windowviewid).find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
3664 | + } | ||
3665 | + } | ||
3666 | + | ||
3667 | + | ||
3592 | } | 3668 | } |
3593 | 3669 | ||
3594 | $scope.resetSearchListView = function (event) { | 3670 | $scope.resetSearchListView = function (event) { |
@@ -3673,6 +3749,24 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3673,6 +3749,24 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3673 | $compile($all)($scope); | 3749 | $compile($all)($scope); |
3674 | 3750 | ||
3675 | $("#selectedTermName_" + windowviewid).attr("name", "0"); | 3751 | $("#selectedTermName_" + windowviewid).attr("name", "0"); |
3752 | + | ||
3753 | + $('#termlistfilter_' + windowviewid).find("option").css({ "background-color": "#ffffff"}); | ||
3754 | + var activePinArray=$scope.GetAAwindowStoreData(windowviewid,'activePinArray'); | ||
3755 | + var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | ||
3756 | + | ||
3757 | + if (activePinArray.length >0) { | ||
3758 | + for (var i = 0; i < activePinArray.length; i++) { | ||
3759 | + var pinnum = activePinArray[i].split("_")[1]; | ||
3760 | + | ||
3761 | + var pinData = new jinqJs() | ||
3762 | + .from(aaPinData) | ||
3763 | + .where("_PinId == " + pinnum) | ||
3764 | + .select(); | ||
3765 | + | ||
3766 | + var pinTermNumber = pinData[0]._TermId+'_'+windowviewid; | ||
3767 | + $('#termlistfilter_' + windowviewid).find("option[id=" + pinTermNumber + "]").addClass('currentTermActive'); | ||
3768 | + } | ||
3769 | + } | ||
3676 | 3770 | ||
3677 | }; | 3771 | }; |
3678 | 3772 | ||
@@ -3774,9 +3868,10 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | @@ -3774,9 +3868,10 @@ function ($scope, $window, $rootScope, $compile, $http, $log, $location, $timeou | ||
3774 | 3868 | ||
3775 | $scope.showAllPinsAfterHide(windowviewid); | 3869 | $scope.showAllPinsAfterHide(windowviewid); |
3776 | 3870 | ||
3777 | - $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); | ||
3778 | - $("#termList").find("option[id=" + termid + "]").css({ "background-color": "#3399FF", "color": "#ffffff" }); | ||
3779 | - | 3871 | + // $("#termList").find("option").css({ "background-color": "#ffffff", "color": "#000000" }); |
3872 | + $("#termList").find("option").removeClass('currentTermActive'); | ||
3873 | + $("#termList").find("option[id=" + termid + "]").addClass('currentTermActive'); | ||
3874 | + | ||
3780 | //get data from pindata for this trem | 3875 | //get data from pindata for this trem |
3781 | 3876 | ||
3782 | var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); | 3877 | var aaPinData = $scope.GetAAwindowStoreData(windowviewid,'aaPinData'); |
400-SOURCECODE/AIAHTML5.Web/themes/default/css/bootstrap/3.3.6/main.css
@@ -1538,17 +1538,10 @@ footer .browserIcons | @@ -1538,17 +1538,10 @@ footer .browserIcons | ||
1538 | bottom: 0; | 1538 | bottom: 0; |
1539 | width: 50%; | 1539 | width: 50%; |
1540 | } | 1540 | } |
1541 | -.labExModalbackground | 1541 | +.currentTermActive |
1542 | { | 1542 | { |
1543 | - background-color: black; | ||
1544 | - bottom: 0px; | ||
1545 | - display: none; | ||
1546 | - height: 100%; left: 0px; | ||
1547 | - opacity: 0.5; | ||
1548 | - position: fixed; | ||
1549 | - right: 0px; top: 0px; | ||
1550 | - width: 100%; | ||
1551 | - z-index: 12000000; | 1543 | + background-color: #206db9 !important; |
1544 | + color:#ffffff !important; | ||
1552 | } | 1545 | } |
1553 | #nameHelpBlock | 1546 | #nameHelpBlock |
1554 | { | 1547 | { |
@@ -1562,6 +1555,18 @@ footer .browserIcons | @@ -1562,6 +1555,18 @@ footer .browserIcons | ||
1562 | { | 1555 | { |
1563 | display:none; | 1556 | display:none; |
1564 | } | 1557 | } |
1558 | +.labExModalbackground | ||
1559 | +{ | ||
1560 | + background-color: black; | ||
1561 | + bottom: 0px; | ||
1562 | + display: none; | ||
1563 | + height: 100%; left: 0px; | ||
1564 | + opacity: 0.5; | ||
1565 | + position: fixed; | ||
1566 | + right: 0px; top: 0px; | ||
1567 | + width: 100%; | ||
1568 | + z-index: 12000000; | ||
1569 | +} | ||
1565 | /* ........Add paging bootstrap CSS... Birendra 14/2/2020 */ | 1570 | /* ........Add paging bootstrap CSS... Birendra 14/2/2020 */ |
1566 | .pagination{margin:0px 0;} | 1571 | .pagination{margin:0px 0;} |
1567 | .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} | 1572 | .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/addlicense.component.html
@@ -242,7 +242,7 @@ | @@ -242,7 +242,7 @@ | ||
242 | {{item.StateName}} | 242 | {{item.StateName}} |
243 | </option> | 243 | </option> |
244 | </select> | 244 | </select> |
245 | - <div *ngIf="insertUpdateLicenseFrm.get('stateId').hasError('min')" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">State is required</div> | 245 | + <div *ngIf="insertUpdateLicenseFrm.get('stateId').hasError('min') && insertUpdateLicenseFrm.controls.stateId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">State is required</div> |
246 | </div> | 246 | </div> |
247 | </div> | 247 | </div> |
248 | </div> | 248 | </div> |
@@ -270,6 +270,7 @@ | @@ -270,6 +270,7 @@ | ||
270 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> | 270 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> |
271 | <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20" (keydown.space)="$event.preventDefault();"> | 271 | <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20" (keydown.space)="$event.preventDefault();"> |
272 | <div *ngIf="insertUpdateLicenseFrm.controls.zip.hasError('required') && insertUpdateLicenseFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> | 272 | <div *ngIf="insertUpdateLicenseFrm.controls.zip.hasError('required') && insertUpdateLicenseFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> |
273 | + <div *ngIf="insertUpdateLicenseFrm.controls.zip.hasError('pattern')" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is invalid</div> | ||
273 | </div> | 274 | </div> |
274 | </div> | 275 | </div> |
275 | </div> | 276 | </div> |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/addlicense.component.ts
@@ -79,7 +79,7 @@ export class AddLicense implements OnInit { | @@ -79,7 +79,7 @@ export class AddLicense implements OnInit { | ||
79 | city: ['', [Validators.required,this.noWhitespaceValidator]], | 79 | city: ['', [Validators.required,this.noWhitespaceValidator]], |
80 | stateId: [0, [Validators.min(1)]], | 80 | stateId: [0, [Validators.min(1)]], |
81 | countryId: [0, Validators.min(1)], | 81 | countryId: [0, Validators.min(1)], |
82 | - zip: ['', [Validators.required]], | 82 | + zip: ['', [Validators.required,Validators.pattern('^[0-9]*$')]], |
83 | emailId: ['', [Validators.required]], | 83 | emailId: ['', [Validators.required]], |
84 | //phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]], | 84 | //phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]], |
85 | phone: ['', [Validators.required]], | 85 | phone: ['', [Validators.required]], |
@@ -272,8 +272,8 @@ UpdatePhoneValidation() | @@ -272,8 +272,8 @@ UpdatePhoneValidation() | ||
272 | else | 272 | else |
273 | { | 273 | { |
274 | this.IsUniteState=false; | 274 | this.IsUniteState=false; |
275 | - // this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^[0-9]*$')]); | ||
276 | - this.PhoneNumber.setValidators([Validators.required]); | 275 | + this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^[0-9-()+]*$')]); |
276 | + // this.PhoneNumber.setValidators([Validators.required]); | ||
277 | this.PhoneNumber.updateValueAndValidity(); | 277 | this.PhoneNumber.updateValueAndValidity(); |
278 | this.OtherFormatPhoneNumber(phoneno); | 278 | this.OtherFormatPhoneNumber(phoneno); |
279 | } | 279 | } |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/editlicensebasicsettings.component.html
@@ -110,6 +110,7 @@ | @@ -110,6 +110,7 @@ | ||
110 | <div class="col-sm-7"> | 110 | <div class="col-sm-7"> |
111 | <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20" (keydown.space)="$event.preventDefault();"> | 111 | <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20" (keydown.space)="$event.preventDefault();"> |
112 | <div *ngIf="updateLicenseBasicSettingsFrm.controls.zip.hasError('required') && updateLicenseBasicSettingsFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> | 112 | <div *ngIf="updateLicenseBasicSettingsFrm.controls.zip.hasError('required') && updateLicenseBasicSettingsFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> |
113 | + <div *ngIf="updateLicenseBasicSettingsFrm.controls.zip.hasError('pattern')" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is invalid</div> | ||
113 | </div> | 114 | </div> |
114 | </div> | 115 | </div> |
115 | 116 | ||
@@ -122,7 +123,7 @@ | @@ -122,7 +123,7 @@ | ||
122 | {{item.StateName}} | 123 | {{item.StateName}} |
123 | </option> | 124 | </option> |
124 | </select> | 125 | </select> |
125 | - <div *ngIf="updateLicenseBasicSettingsFrm.get('stateId').hasError('min')" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">State is required</div> | 126 | + <div *ngIf="updateLicenseBasicSettingsFrm.get('stateId').hasError('min') && updateLicenseBasicSettingsFrm.controls.stateId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">State is required</div> |
126 | </div> | 127 | </div> |
127 | </div> | 128 | </div> |
128 | 129 |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/editlicensebasicsettings.component.ts
@@ -56,7 +56,7 @@ export class EditLicenseBasicSettings implements OnInit { | @@ -56,7 +56,7 @@ export class EditLicenseBasicSettings implements OnInit { | ||
56 | city: ['', [Validators.required,this.noWhitespaceValidator]], | 56 | city: ['', [Validators.required,this.noWhitespaceValidator]], |
57 | stateId: [0, [Validators.min(1)]], | 57 | stateId: [0, [Validators.min(1)]], |
58 | countryId: [0], | 58 | countryId: [0], |
59 | - zip: ['', [Validators.required]], | 59 | + zip: ['', [Validators.required,Validators.pattern('^[0-9]*$')]], |
60 | emailId: ['', [Validators.required]], | 60 | emailId: ['', [Validators.required]], |
61 | //phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]], | 61 | //phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]], |
62 | phone: ['', [Validators.required]] | 62 | phone: ['', [Validators.required]] |
@@ -193,8 +193,8 @@ UpdatePhoneValidation() | @@ -193,8 +193,8 @@ UpdatePhoneValidation() | ||
193 | else | 193 | else |
194 | { | 194 | { |
195 | this.IsUniteState=false; | 195 | this.IsUniteState=false; |
196 | - // this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^[0-9]*$')]); | ||
197 | - this.PhoneNumber.setValidators([Validators.required]); | 196 | + this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^[0-9-()+]*$')]); |
197 | + //this.PhoneNumber.setValidators([Validators.required]); | ||
198 | this.PhoneNumber.updateValueAndValidity(); | 198 | this.PhoneNumber.updateValueAndValidity(); |
199 | this.OtherFormatPhoneNumber(phoneno); | 199 | this.OtherFormatPhoneNumber(phoneno); |
200 | } | 200 | } |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/sitelicenseaccount.component.html
@@ -310,7 +310,7 @@ | @@ -310,7 +310,7 @@ | ||
310 | <label for="Country" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Country <span class="red">*</span> :</label> | 310 | <label for="Country" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Country <span class="red">*</span> :</label> |
311 | </div> | 311 | </div> |
312 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> | 312 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> |
313 | - <select class="form-control input-sm " id="State" formControlName="countryId" (change)="OnCountryChange($event.target)"> | 313 | + <select class="form-control input-sm " id="Country" formControlName="countryId" (change)="OnCountryChange($event.target)"> |
314 | <option value="0">Select</option> | 314 | <option value="0">Select</option> |
315 | <option *ngFor="let item of lstCountry" value="{{item.Id}}"> | 315 | <option *ngFor="let item of lstCountry" value="{{item.Id}}"> |
316 | {{item.CountryName}} | 316 | {{item.CountryName}} |
@@ -324,8 +324,9 @@ | @@ -324,8 +324,9 @@ | ||
324 | <div class="form-group marginTop5"> | 324 | <div class="form-group marginTop5"> |
325 | <label for="Zip" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Zip <span class="red">*</span> : </label> | 325 | <label for="Zip" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Zip <span class="red">*</span> : </label> |
326 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> | 326 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> |
327 | - <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20"> | 327 | + <input type="text" class="form-control input-sm" id="Zip" formControlName="zip" maxlength="20" (keydown.space)="$event.preventDefault();"> |
328 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.zip.hasError('required') && insertUpdateSiteLicenseFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> | 328 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.zip.hasError('required') && insertUpdateSiteLicenseFrm.controls.zip.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is required</div> |
329 | + <div *ngIf="insertUpdateSiteLicenseFrm.controls.zip.hasError('pattern')" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Zip is invalid</div> | ||
329 | </div> | 330 | </div> |
330 | </div> | 331 | </div> |
331 | </div> | 332 | </div> |
@@ -335,9 +336,8 @@ | @@ -335,9 +336,8 @@ | ||
335 | <label for="Phone" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Phone <span class="red">*</span> :</label> | 336 | <label for="Phone" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Phone <span class="red">*</span> :</label> |
336 | </div> | 337 | </div> |
337 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> | 338 | <div class="col-sm-12 col-lg-6 padd-left0 padd-right0"> |
338 | - <input type="phone" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30" (keyup)="onKeyUp($event)"> | ||
339 | - <!--<div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('required') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div>--> | ||
340 | - <span class="help-block">(xxx-xxx-xxxx)</span> | 339 | + <input type="phone" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30" (keyup)="onKeyUp($event)" (keydown.space)="$event.preventDefault();"> |
340 | + <span *ngIf="IsUniteState" class="help-block">(xxx-xxx-xxxx)</span> | ||
341 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('required') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div> | 341 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('required') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div> |
342 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('pattern') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is invalid</div> | 342 | <div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('pattern') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is invalid</div> |
343 | </div> | 343 | </div> |
400-SOURCECODE/Admin/src/app/components/LicenseEntity/sitelicenseaccount.component.ts
@@ -56,6 +56,7 @@ export class SiteLicenseAccount implements OnInit { | @@ -56,6 +56,7 @@ export class SiteLicenseAccount implements OnInit { | ||
56 | pageNo:1, | 56 | pageNo:1, |
57 | pageLength:10 | 57 | pageLength:10 |
58 | }; | 58 | }; |
59 | + IsUniteState:Boolean=false; | ||
59 | @HostListener('window:resize', ['$event']) | 60 | @HostListener('window:resize', ['$event']) |
60 | getScreenSize(event?) { | 61 | getScreenSize(event?) { |
61 | 62 | ||
@@ -102,9 +103,10 @@ export class SiteLicenseAccount implements OnInit { | @@ -102,9 +103,10 @@ export class SiteLicenseAccount implements OnInit { | ||
102 | city: ['', [Validators.required,this.noWhitespaceValidator]], | 103 | city: ['', [Validators.required,this.noWhitespaceValidator]], |
103 | countryId: [0, Validators.min(1)], | 104 | countryId: [0, Validators.min(1)], |
104 | stateId: [0, Validators.min(1)], | 105 | stateId: [0, Validators.min(1)], |
105 | - zip: ['', [Validators.required,this.noWhitespaceValidator]], | ||
106 | - phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]], | ||
107 | - //phone: ['', Validators.required], | 106 | + zip: ['', [Validators.required,Validators.pattern('^[0-9]*$')]], |
107 | + //zip: ['', [Validators.required,this.noWhitespaceValidator]], | ||
108 | + //phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]], | ||
109 | + phone: ['', Validators.required], | ||
108 | clientAdminId: [0, Validators.min(1)], | 110 | clientAdminId: [0, Validators.min(1)], |
109 | clientAdminEmail: [{value: '', disabled: true}, this.noWhitespaceValidator], | 111 | clientAdminEmail: [{value: '', disabled: true}, this.noWhitespaceValidator], |
110 | isActive: [0], | 112 | isActive: [0], |
@@ -217,48 +219,54 @@ export class SiteLicenseAccount implements OnInit { | @@ -217,48 +219,54 @@ export class SiteLicenseAccount implements OnInit { | ||
217 | 219 | ||
218 | } | 220 | } |
219 | onKeyUp(event: any) { | 221 | onKeyUp(event: any) { |
220 | - var mobno = event.target.value; | ||
221 | - var newnum=mobno; | ||
222 | - if(mobno!="" && event.key!="Backspace") | 222 | + var mobno = event.target.value; |
223 | + var countryName =$("#Country option:selected").text().trim(); | ||
224 | + if(mobno!="" && event.key!="Backspace") | ||
225 | + { | ||
226 | + if(countryName=="United States") | ||
227 | + { | ||
228 | + this.USFormatPhoneNumber(mobno); | ||
229 | + } | ||
230 | + else | ||
231 | + { | ||
232 | + this.OtherFormatPhoneNumber(mobno); | ||
233 | + } | ||
234 | + } | ||
235 | + }; | ||
236 | + OtherFormatPhoneNumber(mobno:any) | ||
237 | + { | ||
238 | + //var regex = /\d+/g; | ||
239 | + //var matches = mobno.match(regex); //extract digit only | ||
240 | + //var currentNum= matches==null?"" :matches.join(''); | ||
241 | + this.insertUpdateSiteLicenseFrm.controls['phone'].setValue(mobno); | ||
242 | + } | ||
243 | + | ||
244 | + USFormatPhoneNumber(mobno:any) | ||
245 | + { | ||
246 | + var newformat=""; | ||
247 | + if(mobno!="" && mobno!=null) | ||
248 | + { | ||
249 | + var regex = /\d+/g; | ||
250 | + var matches = mobno.match(regex); //extract digit only | ||
251 | + var currentNum= matches==null?"" :matches.join(''); | ||
252 | + | ||
253 | + for(var ind=0;ind<currentNum.length;ind++) | ||
254 | + { | ||
255 | + if(newformat.length==3) | ||
223 | { | 256 | { |
224 | - var tempArr = mobno.split('-'); | ||
225 | - | ||
226 | - if(tempArr.length==1) | ||
227 | - { | ||
228 | - var countdigit=tempArr[0].length; | ||
229 | - newnum=tempArr[0]; | ||
230 | - if(countdigit==3) | ||
231 | - { | ||
232 | - newnum=tempArr[0]+"-"; | ||
233 | - } | ||
234 | - else if(countdigit>3) | ||
235 | - { | ||
236 | - newnum=tempArr[0].substr(0,3)+"-"+tempArr[0].substr(3,1); | ||
237 | - } | ||
238 | - | ||
239 | - } | ||
240 | - else if(tempArr.length==2) | ||
241 | - { | ||
242 | - newnum=tempArr[0]+"-"+tempArr[1]; | ||
243 | - var countdigit=tempArr[1].length; | ||
244 | - if(countdigit==3) | ||
245 | - { | ||
246 | - newnum=tempArr[0]+"-"+tempArr[1]+"-"; | ||
247 | - } | ||
248 | - else if(countdigit>3) | ||
249 | - { | ||
250 | - newnum= tempArr[0]+"-"+tempArr[1].substr(0,3)+"-"+tempArr[1].substr(3,1); | ||
251 | - } | ||
252 | - } | ||
253 | - else | ||
254 | - { | ||
255 | - newnum=tempArr[0]+"-"+tempArr[1]+"-"+tempArr[2]; | ||
256 | - } | ||
257 | - | 257 | + newformat=newformat+"-"; |
258 | + } | ||
259 | + else if(newformat.length==7) | ||
260 | + { | ||
261 | + newformat=newformat+"-"; | ||
262 | + } | ||
263 | + newformat=newformat+currentNum[ind]; | ||
258 | } | 264 | } |
259 | - this.insertUpdateSiteLicenseFrm.controls['phone'].setValue(newnum); | ||
260 | - }; | ||
261 | - | 265 | + |
266 | + } | ||
267 | + this.insertUpdateSiteLicenseFrm.controls['phone'].setValue(newformat); | ||
268 | + } | ||
269 | + | ||
262 | openModal(template: TemplateRef<any>) { | 270 | openModal(template: TemplateRef<any>) { |
263 | this.modalRef = this.modalService.show(template); | 271 | this.modalRef = this.modalService.show(template); |
264 | } | 272 | } |
@@ -376,6 +384,7 @@ export class SiteLicenseAccount implements OnInit { | @@ -376,6 +384,7 @@ export class SiteLicenseAccount implements OnInit { | ||
376 | this.insertUpdateSiteLicenseFrm.controls['clientAdminId'].setValue(this.licenseSite.SiteUserId); | 384 | this.insertUpdateSiteLicenseFrm.controls['clientAdminId'].setValue(this.licenseSite.SiteUserId); |
377 | this.insertUpdateSiteLicenseFrm.controls['clientAdminEmail'].setValue(this.licenseSite.SiteUserEmailId); | 385 | this.insertUpdateSiteLicenseFrm.controls['clientAdminEmail'].setValue(this.licenseSite.SiteUserEmailId); |
378 | this.GetSiteAccountEditions(); | 386 | this.GetSiteAccountEditions(); |
387 | + this.UpdatePhoneValidation(); | ||
379 | }, error => this.error = <any>error); | 388 | }, error => this.error = <any>error); |
380 | } | 389 | } |
381 | 390 | ||
@@ -597,10 +606,39 @@ export class SiteLicenseAccount implements OnInit { | @@ -597,10 +606,39 @@ export class SiteLicenseAccount implements OnInit { | ||
597 | } | 606 | } |
598 | else { | 607 | else { |
599 | this.license.StateId = 0; | 608 | this.license.StateId = 0; |
600 | - this.insertUpdateSiteLicenseFrm.controls['stateId'].setValue(this.license.StateId); | ||
601 | - } | 609 | + this.insertUpdateSiteLicenseFrm.controls['stateId'].setValue(this.license.StateId); |
610 | + } | ||
611 | + this.UpdatePhoneValidation(); | ||
612 | + | ||
613 | + } | ||
614 | + //get Property | ||
615 | + get PhoneNumber() { | ||
616 | + return this.insertUpdateSiteLicenseFrm.get('phone'); | ||
617 | + } | ||
618 | + UpdatePhoneValidation() | ||
619 | + { | ||
620 | + var phoneno=this.PhoneNumber.value==null?"":this.PhoneNumber.value; | ||
621 | + | ||
622 | + var countryName =$("#Country option:selected").text().trim(); | ||
623 | + if(countryName=="United States") | ||
624 | + { | ||
625 | + // validate first phone number | ||
626 | + this.IsUniteState=true; | ||
627 | + this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]); | ||
628 | + this.PhoneNumber.updateValueAndValidity(); | ||
629 | + this.USFormatPhoneNumber(phoneno); | ||
630 | + } | ||
631 | + else | ||
632 | + { | ||
633 | + this.IsUniteState=false; | ||
634 | + this.PhoneNumber.setValidators([Validators.required, Validators.pattern('^[0-9-()+]*$')]); | ||
635 | + // this.PhoneNumber.setValidators([Validators.required]); | ||
636 | + this.PhoneNumber.updateValueAndValidity(); | ||
637 | + this.OtherFormatPhoneNumber(phoneno); | ||
638 | + } | ||
602 | 639 | ||
603 | } | 640 | } |
641 | + | ||
604 | OnStateChange(element: any) { | 642 | OnStateChange(element: any) { |
605 | this.license.StateId = parseInt(element.value); | 643 | this.license.StateId = parseInt(element.value); |
606 | if (this.lstState.find(C => C.Id == this.license.StateId).StateName != "Other") { | 644 | if (this.lstState.find(C => C.Id == this.license.StateId).StateName != "Other") { |
400-SOURCECODE/Admin/src/app/components/ManageDiscountCode/managediscountcode.component.ts
@@ -62,7 +62,8 @@ scrWidth:any; | @@ -62,7 +62,8 @@ scrWidth:any; | ||
62 | sortColumn:'Id', | 62 | sortColumn:'Id', |
63 | sortOrder:'asc', | 63 | sortOrder:'asc', |
64 | pageNo:1, | 64 | pageNo:1, |
65 | - pageLength:10 | 65 | + pageLength:10, |
66 | + isGridBind:true | ||
66 | } | 67 | } |
67 | @HostListener('window:resize', ['$event']) | 68 | @HostListener('window:resize', ['$event']) |
68 | getScreenSize(event?) { | 69 | getScreenSize(event?) { |
@@ -324,7 +325,8 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat | @@ -324,7 +325,8 @@ constructor(private manageDiscountCodeService: ManageDiscountCodeService, privat | ||
324 | sortColumn:'Id', | 325 | sortColumn:'Id', |
325 | sortOrder:'asc', | 326 | sortOrder:'asc', |
326 | pageNo: 1, | 327 | pageNo: 1, |
327 | - pageLength: 5 | 328 | + pageLength: 5, |
329 | + isGridBind:true | ||
328 | }) | 330 | }) |
329 | .subscribe(x => | 331 | .subscribe(x => |
330 | { | 332 | { |
400-SOURCECODE/Admin/src/app/components/ManageDiscountCode/managediscountcode.service.ts
@@ -29,11 +29,11 @@ export class ManageDiscountCodeService { | @@ -29,11 +29,11 @@ export class ManageDiscountCodeService { | ||
29 | + obj.discountCode | 29 | + obj.discountCode |
30 | + "&startDate=" + obj.startDate | 30 | + "&startDate=" + obj.startDate |
31 | + "&endDate=" + obj.endDate | 31 | + "&endDate=" + obj.endDate |
32 | - + "&endDate=" + obj.endDate | ||
33 | + "&sortColumn=" + obj.sortColumn | 32 | + "&sortColumn=" + obj.sortColumn |
34 | + "&sortOrder=" + obj.sortOrder | 33 | + "&sortOrder=" + obj.sortOrder |
35 | + "&pageNo=" + obj.pageNo | 34 | + "&pageNo=" + obj.pageNo |
36 | + "&pageLength=" + obj.pageLength | 35 | + "&pageLength=" + obj.pageLength |
36 | + + "&isGridBind=" + obj.isGridBind | ||
37 | ) | 37 | ) |
38 | .map(this.extractData) | 38 | .map(this.extractData) |
39 | .catch((res: Response) => this.handleError(res)); | 39 | .catch((res: Response) => this.handleError(res)); |
400-SOURCECODE/Admin/src/app/components/Reports/discountcodereport.component.ts
@@ -61,7 +61,7 @@ export class DiscountCodeReport implements OnInit { | @@ -61,7 +61,7 @@ export class DiscountCodeReport implements OnInit { | ||
61 | sFromDate:new Date(), | 61 | sFromDate:new Date(), |
62 | sToDate:new Date(), | 62 | sToDate:new Date(), |
63 | iDiscountCode:0, | 63 | iDiscountCode:0, |
64 | - iAccountNumber:'', | 64 | + sAccountNumber:'', |
65 | sortColumn:'StartDate', | 65 | sortColumn:'StartDate', |
66 | sortOrder:'asc', | 66 | sortOrder:'asc', |
67 | pageNo:1, | 67 | pageNo:1, |
@@ -188,8 +188,11 @@ export class DiscountCodeReport implements OnInit { | @@ -188,8 +188,11 @@ export class DiscountCodeReport implements OnInit { | ||
188 | discountCode: '', | 188 | discountCode: '', |
189 | startDate: '', | 189 | startDate: '', |
190 | endDate: '', | 190 | endDate: '', |
191 | + sortColumn:'DiscountCode', | ||
192 | + sortOrder:'asc', | ||
191 | pageNo: 1, | 193 | pageNo: 1, |
192 | - pageLength: 10000 | 194 | + pageLength: 10000, |
195 | + isGridBind:false | ||
193 | }) | 196 | }) |
194 | .subscribe(x => { this.lstDiscountCode = x.DiscountCodeList; }, error => this.error = error); | 197 | .subscribe(x => { this.lstDiscountCode = x.DiscountCodeList; }, error => this.error = error); |
195 | } | 198 | } |
@@ -240,7 +243,7 @@ export class DiscountCodeReport implements OnInit { | @@ -240,7 +243,7 @@ export class DiscountCodeReport implements OnInit { | ||
240 | this.SearchField.sFromDate=this.DiscountCodeReportForm.controls['sFromDate'].value; | 243 | this.SearchField.sFromDate=this.DiscountCodeReportForm.controls['sFromDate'].value; |
241 | this.SearchField.sToDate=this.DiscountCodeReportForm.controls['sToDate'].value; | 244 | this.SearchField.sToDate=this.DiscountCodeReportForm.controls['sToDate'].value; |
242 | this.SearchField.iDiscountCode=this.DiscountCodeReportForm.controls['iDiscountCode'].value; | 245 | this.SearchField.iDiscountCode=this.DiscountCodeReportForm.controls['iDiscountCode'].value; |
243 | - this.SearchField.iAccountNumber=this.DiscountCodeReportForm.controls['iAccountNumber'].value; | 246 | + this.SearchField.sAccountNumber=this.DiscountCodeReportForm.controls['iAccountNumber'].value; |
244 | 247 | ||
245 | this.SearchField.pageNo=this.pageNo; | 248 | this.SearchField.pageNo=this.pageNo; |
246 | 249 |
400-SOURCECODE/Admin/src/app/components/Reports/netadsubscriptionreport.component.html
@@ -123,7 +123,7 @@ | @@ -123,7 +123,7 @@ | ||
123 | <td>{{item.NetAdSubscription}}</td> | 123 | <td>{{item.NetAdSubscription}}</td> |
124 | </tr> | 124 | </tr> |
125 | </tbody> | 125 | </tbody> |
126 | - <tfoot *ngFor="let total of TotalNetAdSubscription" style="font-weight: bold;background-color: #e3dbf3;"> | 126 | + <tfoot *ngFor="let total of TotalNetAdSubscription" style="font-weight: bold;background-color: #e3dbf3;position:relative;"> |
127 | <tr> | 127 | <tr> |
128 | <td>{{total.LicenseType}}</td> | 128 | <td>{{total.LicenseType}}</td> |
129 | <td>{{total.AccountType}}</td> | 129 | <td>{{total.AccountType}}</td> |
@@ -136,6 +136,22 @@ | @@ -136,6 +136,22 @@ | ||
136 | </tr> | 136 | </tr> |
137 | </tfoot> | 137 | </tfoot> |
138 | </table> | 138 | </table> |
139 | + | ||
140 | + <!-- <table class="table-hover ui-widget-header sorttable" style="width:100%"> | ||
141 | + <thead *ngFor="let total of TotalNetAdSubscription" style="font-weight: bold;background-color: #e3dbf3;"> | ||
142 | + <tr> | ||
143 | + <th style="width:180px" >{{total.LicenseType}}</th> | ||
144 | + <th style="width:230px">{{total.AccountType}}</th> | ||
145 | + <th style="width:300px">{{total.InstitutionName}}</th> | ||
146 | + <th style="width:200px">{{total.LicenseCreationDate}}</th> | ||
147 | + <th style="width:300px">{{total.ActiveSubscription}}</th> | ||
148 | + <th style="width:200px">{{total.RenewSubscription}}</th> | ||
149 | + <th style="width:250px">{{total.InActiveSubscription}}</th> | ||
150 | + <th style="width:130px">{{total.NetAdSubscription}}</th> | ||
151 | + </tr> | ||
152 | + </thead> | ||
153 | + </table> --> | ||
154 | + | ||
139 | <admin-pager [recordCount]="recordCount" [pageNo]="pageNo" [pageLength]="pageLength" (pagerEvent)="GetNetAdSummaryReport($event)"></admin-pager> | 155 | <admin-pager [recordCount]="recordCount" [pageNo]="pageNo" [pageLength]="pageLength" (pagerEvent)="GetNetAdSummaryReport($event)"></admin-pager> |
140 | <div class="row"> | 156 | <div class="row"> |
141 | <div class="col-sm-12 marginTop20 text-center"> | 157 | <div class="col-sm-12 marginTop20 text-center"> |
400-SOURCECODE/Admin/src/app/components/Reports/netadsubscriptionreport.component.ts
@@ -81,7 +81,7 @@ export class NetAdSubscriptionReport implements OnInit { | @@ -81,7 +81,7 @@ export class NetAdSubscriptionReport implements OnInit { | ||
81 | { | 81 | { |
82 | this.scrHeight = window.innerHeight-405; | 82 | this.scrHeight = window.innerHeight-405; |
83 | } | 83 | } |
84 | - if(this.scrHeight<=360) this.scrHeight=360; | 84 | + if(this.scrHeight<=360) this.scrHeight=370; |
85 | 85 | ||
86 | $(".ft_container").css("height",this.scrHeight); | 86 | $(".ft_container").css("height",this.scrHeight); |
87 | } | 87 | } |
@@ -194,6 +194,8 @@ export class NetAdSubscriptionReport implements OnInit { | @@ -194,6 +194,8 @@ export class NetAdSubscriptionReport implements OnInit { | ||
194 | } | 194 | } |
195 | 195 | ||
196 | GetNetAdSummaryReportList() { | 196 | GetNetAdSummaryReportList() { |
197 | + | ||
198 | + | ||
197 | this._loadingService.ShowLoading("global-loading"); | 199 | this._loadingService.ShowLoading("global-loading"); |
198 | $(".ft_rwrapper table thead tr th").removeClass('fx_sort_asc fx_sort_desc'); | 200 | $(".ft_rwrapper table thead tr th").removeClass('fx_sort_asc fx_sort_desc'); |
199 | 201 | ||
@@ -266,6 +268,7 @@ export class NetAdSubscriptionReport implements OnInit { | @@ -266,6 +268,7 @@ export class NetAdSubscriptionReport implements OnInit { | ||
266 | this._loadingService.HideLoading("global-loading"); | 268 | this._loadingService.HideLoading("global-loading"); |
267 | this.buttonStatus = false; | 269 | this.buttonStatus = false; |
268 | } | 270 | } |
271 | + | ||
269 | } | 272 | } |
270 | 273 | ||
271 | ExportEvent() { | 274 | ExportEvent() { |
400-SOURCECODE/Admin/src/app/components/UserEntity/changeuserid.component.ts
@@ -62,7 +62,7 @@ export class ChangeUserID implements OnInit { | @@ -62,7 +62,7 @@ export class ChangeUserID implements OnInit { | ||
62 | .subscribe(x => { console.log(x); this.bindUsers(x) }, error => this.error = <any>error); | 62 | .subscribe(x => { console.log(x); this.bindUsers(x) }, error => this.error = <any>error); |
63 | } | 63 | } |
64 | UpdateUserId() { | 64 | UpdateUserId() { |
65 | - debugger; | 65 | + |
66 | this.alerts = ''; | 66 | this.alerts = ''; |
67 | 67 | ||
68 | //if (this.ChangeUserIdFrm.value.newloginid == '') { | 68 | //if (this.ChangeUserIdFrm.value.newloginid == '') { |
400-SOURCECODE/Admin/src/app/shared/Confirm/confirm.component.ts
1 | import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewChild } from "@angular/core"; | 1 | import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewChild } from "@angular/core"; |
2 | import {ConfirmService} from "./confirm.service"; | 2 | import {ConfirmService} from "./confirm.service"; |
3 | import { ModalComponent } from "ng2-bs3-modal/ng2-bs3-modal"; | 3 | import { ModalComponent } from "ng2-bs3-modal/ng2-bs3-modal"; |
4 | +import { Router } from '@angular/router'; | ||
4 | const KEY_ESC = 27; | 5 | const KEY_ESC = 27; |
5 | 6 | ||
6 | @Component({ | 7 | @Component({ |
@@ -41,7 +42,7 @@ export class ConfirmComponent implements OnInit { | @@ -41,7 +42,7 @@ export class ConfirmComponent implements OnInit { | ||
41 | private _okAlert: any; | 42 | private _okAlert: any; |
42 | private _closeAlert: any; | 43 | private _closeAlert: any; |
43 | 44 | ||
44 | - constructor(confirmService:ConfirmService) { | 45 | + constructor(confirmService:ConfirmService,private router: Router) { |
45 | confirmService.activate = this.activate.bind(this); | 46 | confirmService.activate = this.activate.bind(this); |
46 | } | 47 | } |
47 | 48 | ||
@@ -178,6 +179,9 @@ export class ConfirmComponent implements OnInit { | @@ -178,6 +179,9 @@ export class ConfirmComponent implements OnInit { | ||
178 | 179 | ||
179 | if (this.type.toString() == "alertMsg") { | 180 | if (this.type.toString() == "alertMsg") { |
180 | this.alertMessageModal.close(); | 181 | this.alertMessageModal.close(); |
182 | + var url= this.router.url; | ||
183 | + if(url=='/changeuserpassword' || url== '/changeuserid') | ||
184 | + this.router.navigate(['/']); | ||
181 | return; | 185 | return; |
182 | } | 186 | } |
183 | if (this.type.toString() == "alertMsg2") { | 187 | if (this.type.toString() == "alertMsg2") { |