/// <summary> /// Builds an HTML table cell (<td>) containing image link. /// </summary> /// <param name="id">Record id.</param> /// <param name="point">Point.</param> /// <param name="imageData">Binary image data.</param> /// <param name="mimeType">Image mime-type.</param> /// <param name="divStyle">Custom div style.</param> /// <returns>Table cell HTML-code.</returns> protected override string GetLinkCell(Guid id, int point, byte[] imageData, string mimeType, string divStyle = null) { string appRootUrl = GetApplicationUrl(); string linkFormat = UserConnection.GetIsFeatureEnabled("SecureEstimation") ? TokenLinkFormat : LinkFormat; string link = string.Format(linkFormat, appRootUrl, id, point); string encodedData = Convert.ToBase64String(imageData); var sb = new StringBuilder(1024); string tdColor = ""; string satisfactionCaption = ""; switch (point) { case 1: { tdColor = "#FFCCCC"; satisfactionCaption = LocalizableStringHelper.GetValue(UserConnection, "ICLEstimateLinksGenerator", "FirstLevelSatisfaction"); } break; case 2: { tdColor = "#FF9966"; satisfactionCaption = LocalizableStringHelper.GetValue(UserConnection, "ICLEstimateLinksGenerator", "SecondLevelSatisfaction");; } break; case 3: { tdColor = "#FFCC99"; satisfactionCaption = LocalizableStringHelper.GetValue(UserConnection, "ICLEstimateLinksGenerator", "ThirdLevelSatisfaction");; } break; case 4: { tdColor = "#CCFFFF"; satisfactionCaption = LocalizableStringHelper.GetValue(UserConnection, "ICLEstimateLinksGenerator", "FourthLevelSatisfaction");; } break; case 5: { tdColor = "#CCFFCC"; satisfactionCaption = LocalizableStringHelper.GetValue(UserConnection, "ICLEstimateLinksGenerator", "FifthLevelSatisfaction");; } break; default: break; } sb.AppendFormat("<tr><td style=\"padding: 5px 10px 5px 5px; border: 1px solid black;\" bgcolor=\"{0}\">", tdColor) //.AppendFormat(DivFormat, point, divStyle ?? DefaultDivStyle) .AppendFormat("<a href=\"{0}\">{1}</a>", link, satisfactionCaption) //.AppendFormat(ImgFormat, mimeType, encodedData, CellSize, point) .Append("</a>") //.Append("</div>") .Append("</td></tr>"); return(sb.ToString()); }
/// <summary> /// ########## ########## ###### ######### ##### ### ####### ####### ###### # #########. /// </summary> /// <param name="userConnection">########### ############</param> /// <returns>###### #########</returns> public static string GetValidationFunctionScript(UserConnection userConnection) { string intervalFromGretherThanToMessage = LocalizableStringHelper.GetValue(userConnection, "CalendarHelperEditPageScriptManager", "IntervalFromGretherThanToMessage"); string intervalsIntersectsMessage = LocalizableStringHelper.GetValue(userConnection, "CalendarHelperEditPageScriptManager", "IntervalsIntersectsMessage"); string script = @"function validateWeekControls() { var requireControls = [PageContainer_DayTypeWeekEdit, PageContainer_WeekFrom0Edit, PageContainer_WeekTo0Edit]; var intervalControls = [ { from: PageContainer_WeekFrom0Edit, to: PageContainer_WeekTo0Edit }, { from: PageContainer_WeekFrom1Edit, to: PageContainer_WeekTo1Edit }, { from: PageContainer_WeekFrom2Edit, to: PageContainer_WeekTo2Edit }, { from: PageContainer_WeekFrom3Edit, to: PageContainer_WeekTo3Edit }, { from: PageContainer_WeekFrom4Edit, to: PageContainer_WeekTo4Edit }, ] return validateControls(requireControls, intervalControls); } function validateCalendarControls() { var requireControls = [PageContainer_DayTypeCalendarEdit, PageContainer_CalendarFrom0Edit, PageContainer_CalendarTo0Edit]; var intervalControls = [ { from: PageContainer_CalendarFrom0Edit, to: PageContainer_CalendarTo0Edit }, { from: PageContainer_CalendarFrom1Edit, to: PageContainer_CalendarTo1Edit }, { from: PageContainer_CalendarFrom2Edit, to: PageContainer_CalendarTo2Edit }, { from: PageContainer_CalendarFrom3Edit, to: PageContainer_CalendarTo3Edit }, { from: PageContainer_CalendarFrom4Edit, to: PageContainer_CalendarTo4Edit }, ] return validateControls(requireControls, intervalControls); } function validateControls(requireControls, intervalControls) { return validateRequireControls(requireControls) && validateIntervalsData(intervalControls) && validateIntervalsIntersect(intervalControls); } function validateIntervalsIntersect(intervals) { var vmp = Ext.FormValidator.getVMP(); if (vmp) { vmp.clear(); } var filledIntervals = []; for (var i = 0, ln = intervals.length; i < ln; i++) { if (intervals[i].from.time.value && intervals[i].to.time.value) { filledIntervals.push(intervals[i]); } } var isOverlap = false; for (var i = 0, ln = filledIntervals.length; i < ln; i++) { var fromInterval = filledIntervals[i].from; var toInterval = filledIntervals[i].to; var fromIntervalTime = fromInterval.parseDate(fromInterval.time.value); var toIntervalTime = toInterval.parseDate(toInterval.time.value); var overlapControls = []; for (var j = i + 1, ln = filledIntervals.length; j < ln; j++) { var checkFromInterval = filledIntervals[j].from; var checkToInterval = filledIntervals[j].to; var checkFromIntervalTime = checkFromInterval.parseDate(checkFromInterval.time.value); var checkToIntervalTime = checkToInterval.parseDate(checkToInterval.time.value); var isOverlap = fromIntervalTime <= checkToIntervalTime && toIntervalTime >= checkFromIntervalTime; if (isOverlap) { overlapControls = [fromInterval, toInterval, checkFromInterval, checkToInterval]; break; } } if (isOverlap) { for (var i = 0, ln = overlapControls.length; i < ln; i++) { overlapControls[i].time.wrap.addClass(overlapControls[i].time.invalidClass); } break; } } if (isOverlap) { var message = '" + intervalsIntersectsMessage + @"'; vmp.addMessage('validation', Ext.StringList('WC.Common').getValue('FormValidator.Warning'), message, 'warning'); delete Ext.FormValidator.invalidFieldsExist; return false; } delete Ext.FormValidator.invalidFieldsExist; return true; } function validateIntervalsData(intervals) { var vmp = Ext.FormValidator.getVMP(); if (vmp) { vmp.clear(); } var reqFields = []; var reqLinks = []; var message = ''; for (var i = 0, ln = intervals.length; i < ln; i++) { var fromInterval = intervals[i].from; var toInterval = intervals[i].to; var isNotValid = fromInterval.time.value && toInterval.time.value && toInterval.parseDate(toInterval.time.value) <= fromInterval.parseDate(fromInterval.time.value); if (isNotValid) { reqFields.push('{' + fromInterval.id + '}'); reqFields.push('{' + toInterval.id + '}'); reqLinks.push(fromInterval.getLinkConfig()); reqLinks.push(toInterval.getLinkConfig()); fromInterval.time.wrap.addClass(fromInterval.time.invalidClass); toInterval.time.wrap.addClass(toInterval.time.invalidClass); break; } else if(fromInterval.time.wrap) { fromInterval.time.wrap.removeClass(fromInterval.time.invalidClass); toInterval.time.wrap.removeClass(toInterval.time.invalidClass); } } if (reqFields.length > 0) { var reqFieldsMsg = '" + intervalFromGretherThanToMessage + @"'; message = Ext.Link.applyLinks(String.format(reqFieldsMsg, reqFields[0], reqFields[1]), reqLinks); } if (Ext.isEmpty(message)) { delete Ext.FormValidator.invalidFieldsExist; return true; } vmp.addMessage('validation', Ext.StringList('WC.Common').getValue('FormValidator.Warning'), message, 'warning'); delete Ext.FormValidator.invalidFieldsExist; return false; } function validateRequireControls(controls) { var vmp = Ext.FormValidator.getVMP(); if (vmp) { vmp.clear(); } var reqFields = []; var reqLinks = []; var message = ''; for (var i = 0, ln = controls.length; i < ln; i++) { var control = controls[i]; if (!controls[i].validate()) { reqFields.push('{' + control.id + '}'); reqLinks.push(control.getLinkConfig()); } } if (reqFields.length > 0) { var reqFieldsMsg = Ext.StringList('WC.Common').getValue('FormValidator.RequiredFieldsMessage'), reqFieldMsg = Ext.StringList('WC.Common').getValue('FormValidator.RequiredFieldMessage'); message = Ext.Link.applyLinks(String.format((reqFields.length == 1 ? reqFieldMsg : reqFieldsMsg) + '<br />', reqFields.join(', ')), reqLinks); } if (Ext.isEmpty(message)) { delete Ext.FormValidator.invalidFieldsExist; return true; } vmp.addMessage('validation', Ext.StringList('WC.Common').getValue('FormValidator.Warning'), message, 'warning'); delete Ext.FormValidator.invalidFieldsExist; return false; }; window.validateCalendarControls = validateCalendarControls; window.validateWeekControls = validateWeekControls;" ; return(script); }