public object GetYearlyTransfers(int?year) { List <ChartValue> chartValues = new List <ChartValue>(); var transfers = GetTransfers(); if (GetTransfers().Count() != 0) { int startYear = transfers.Min(x => x.Date).Year; for (int i = startYear; i <= DateTime.Now.Year; ++i) { var currentYearTransfers = transfers.Where(x => x.Date.Year == i); ChartValue income = new ChartValue { Name = i.ToString(), Legend = "Income", Value = currentYearTransfers.Where(x => x.Value > 0).Sum(y => y.Value) }; ChartValue expense = new ChartValue { Name = i.ToString(), Legend = "Expense", Value = 0 - currentYearTransfers.Where(x => x.Value < 0).Sum(y => y.Value) }; chartValues.Add(income); chartValues.Add(expense); } } return(chartValues); }
double AddDatum(double balance, DateTime start, DateTime end, Transaction t, IList <ChartValue> timeData, double v) { // for this math to work, we have to ignore "time" in the dates. start = new DateTime(start.Year, start.Month, start.Day); end = new DateTime(end.Year, end.Month, end.Day); TimeSpan r = (end - start); int d = r.Days; if (d == 0) { // multiple transactions on the same day, just add the data values. int i = timeData.Count - 1; ChartValue datum = timeData[i]; if (datum.UserData != t) { datum.Value += v; datum.Label = GetLabel(datum.Value, t); } } else { // spread the transactions across a range to fill the gaps so the graph spans the whole time span. DateTime today = DateTime.Today; DateTime date = start; for (int i = 0; i < d; i++) { string label = GetLabel(balance, t); timeData.Add(new ChartValue(label, balance, t)); date = date.AddDays(1); } } return(balance); }
public object GetYearlyBalanceReports() { List <ChartValue> chartValues = new List <ChartValue>(); var balanceReports = GetBalanceReports().OrderBy(x => x.Date); if (balanceReports.Count() != 0) { int startYear = GetBalanceReports().Min(x => x.Date).Year; for (int i = startYear; i <= DateTime.Now.Year; ++i) { BalanceReport balanceReport = GetBalanceReports().Where(x => x.Date.Year == i).LastOrDefault(); ChartValue chartValue = new ChartValue { Name = i.ToString(), Value = balanceReport?.Balance ?? 0 }; chartValues.Add(chartValue); } } return(chartValues); }
public JsonResult GetDebitMovementsOverTime() { var interval = new Interval(DateTime.Now, DateTimeUnitEnums.Months, 6); var intervalsByMonth = interval.GetIntervalsByMonth(); var dataSetActualExpenditures = new ChartDataset(); var expenditures = _expenditureService.GetExpenditures(new Models.SearchParameters.ExpenditureGetListSearchParameters() { UserId = CurrentUser, StartDate = interval.StartDate, EndDate = interval.EndDate }); foreach (var intervalByMonth in intervalsByMonth) { var expendituresByMonth = expenditures.Where(x => intervalByMonth.Value.IsBetween(x.DateExpenditure)); var value = new ChartValue(((int)expendituresByMonth.Sum(x => x.Cost)).ToString()); dataSetActualExpenditures.Values.Add(value); } var chartData = new ChartData() { Labels = intervalsByMonth.Keys.ToList(), ChartDatasets = new List <ChartDataset>() { dataSetActualExpenditures } }; return(Json(chartData, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Remove a ChartValue object from the collection. /// </summary> public void Remove(ChartValue item) { if (List.Contains(item)) { List.Remove(item); } }
public object GetMonthlyTransfers(int?year) { List <ChartValue> chartValues = new List <ChartValue>(); year = year ?? DateTime.Now.Year; var transfers = GetTransfers().Where(x => x.Date.Year == year); DateTimeFormatInfo formatInfo = new DateTimeFormatInfo(); for (int i = 1; i <= 12; ++i) { string monthName = formatInfo.GetMonthName(i).ToString(); var currentMonthTransfers = transfers.Where(x => x.Date.Month == i); ChartValue income = new ChartValue { Name = monthName, Legend = "Income", Value = currentMonthTransfers.Where(x => x.Value > 0).Sum(y => y.Value) }; ChartValue expense = new ChartValue { Name = monthName, Legend = "Expense", Value = 0 - currentMonthTransfers.Where(x => x.Value < 0).Sum(y => y.Value) }; chartValues.Add(income); chartValues.Add(expense); } return(chartValues); }
public Dictionary <Item, int> GetItemsFromChartWithoutItems(DateTime since, ChartValue value, string itemType) { List <SocialMediaPost> posts = ReadPostsSince(since).ToList(); if (value == ChartValue.trendPersons) { return(GetTrendPersonData(posts)); } else if (value == ChartValue.trendOrganizations) { return(GetTrendOrganizationData(posts)); } else if (value == ChartValue.trendThemes) { return(GetTrendThemeData(posts)); } else if (value == ChartValue.trendMostPositive) { return(GetTrendSentimentData(posts, itemType, true)); } else if (value == ChartValue.trendMostNegative) { return(GetTrendSentimentData(posts, itemType, false)); } return(null); }
private void invokeValueChanged(ChartValue value) { if (_visible) { if (ValueChanged != null) { ValueChanged(this, new EventArgs()); } } }
/// <summary> /// Add a ChartValue object to the collection. /// </summary> public ChartValue Add(ChartValue item) { // Avoid adding the same item multiple times. if (!Contains(item)) { item._owner = _owner; int index = List.Add(item); return((ChartValue)List[index]); } return(item); }
private BotStick[] KuCoinChartValueArrayToBotStickArray(ChartValue values) { var botStickList = new List <BotStick>(); int i = values.close.Length; for (int j = 0; j < i; j++) { var iVal = j; var volume = values.volume[iVal]; var close = values.close[j]; if (close == 0) { var k = j; while (k < (i - 1)) { k++; close = values.close[k]; if (k < (i - 1) && close != 0) { iVal = k; } } if (close == 0 && j > 0) { k = j - 1; close = values.close[k]; if (close != 0) { iVal = k; } } volume = 0M; } if (values.close != null) { var botStick = new BotStick { close = values.close[iVal], closeTime = values.timestamp[iVal], high = values.high[iVal], low = values.low[iVal], open = values.open[iVal], volume = volume }; botStickList.Add(botStick); } } return(botStickList.ToArray()); }
public string GetTitle(Item item) { string title = ""; if (ChartValue == ChartValue.hashtags || ChartValue == ChartValue.words || ChartValue == ChartValue.persons || ChartValue == ChartValue.postsPerDate) { string word = ""; switch (ChartValue) { case ChartValue.postsPerDate: word = "posts"; break; default: word = ChartValue.ToString(); break; } title = $"Aantal {word} van " + item.Name; } else if (ChartValue == ChartValue.trendMostNegative || ChartValue == ChartValue.trendMostPositive) { title = $"Meest "; if (ChartValue == ChartValue.trendMostNegative) { title += "negatieve "; } else { title += "positieve "; } title += ItemType + " (%)"; } else { title = $"Aantal posts per "; if (ChartValue == ChartValue.trendPersons) { title += "persoon"; } else if (ChartValue == ChartValue.trendOrganizations) { title += "organisatie"; } else if (ChartValue == ChartValue.trendThemes) { title += "thema"; } } if (Saved == true) { title += " (opgeslagen)"; } return(title); }
public Dictionary <string, int> GetDataFromPost(DateTime since, ChartValue value, Item item = null) { List <SocialMediaPost> results = GetPostsFromItem(item, since); if (value == ChartValue.hashtags) { return(GetHashtagData(results)); } else if (value == ChartValue.persons) { return(GetPersonData(results)); } else if (value == ChartValue.words) { return(GetWordData(results)); } return(null); }
public async Task <IActionResult> EditValue([FromBody] EditValueRequest request) { return(await MethodWrapper(async (token) => { ChartValue chartValue = await Context.ChartValues.FirstOrDefaultAsync(art => art.ID == request.ID); if (request.Value != 0) { chartValue.Value = request.Value; } Context.ChartValues.Update(chartValue); await Context.SaveChangesAsync(); return Ok(chartValue); }, request)); }
public async Task <IActionResult> AddChartValue([FromBody] AddValueRequest request) { return(await MethodWrapper(async (token) => { var newValue = new ChartValue { Value = request.Value, Date = request.Date, IsMorning = request.IsMorning, UserId = token.UserId }; await Context.ChartValues.AddAsync(newValue); await Context.SaveChangesAsync(); return Ok(newValue); }, request)); }
public object GetMonthlyBalanceReports(int?year) { List <ChartValue> chartValues = new List <ChartValue>(); year = year ?? DateTime.Now.Year; var balanceReports = GetBalanceReports().Where(x => x.Date.Year == year).OrderBy(y => y.Date); DateTimeFormatInfo formatInfo = new DateTimeFormatInfo(); for (int i = 1; i <= 12; ++i) { BalanceReport balanceReport = balanceReports.Where(x => x.Date.Month == i).LastOrDefault(); string monthName = formatInfo.GetMonthName(i).ToString(); ChartValue chartValue = new ChartValue { Name = monthName, Value = balanceReport?.Balance ?? 0 }; chartValues.Add(chartValue); } return(chartValues); }
/// <summary> /// Insert a ChartValue object to the collection at specified index. /// </summary> public void Insert(int index, ChartValue item) { item._owner = _owner; List.Insert(index, item); }
/// <summary> /// Add a ChartValue object to the collection by providing its value. /// </summary> public ChartValue Add(double value) { ChartValue anItem = new ChartValue(value); return(this.Add(anItem)); }
/// <summary> /// Determine whether a ChartValue object exist in the collection. /// </summary> public Boolean Contains(ChartValue item) { return(List.Contains(item)); }
/// <summary> /// Gets the index of a ChartValue object in the collection. /// </summary> public int IndexOf(ChartValue item) { return(List.IndexOf(item)); }
private async Task <EventDetailModel> InitEventDetailModel(Guid eventId) { var targetEvent = await GetEventById(eventId); if (targetEvent == null) { return(null); } var options = _context.Options .Where(x => x.EventID == targetEvent.ID) .AsNoTracking() .ToList(); var tokens = _context.Tokens .Where(x => x.EventID == targetEvent.ID) .Include(x => x.Option) .AsNoTracking() .GroupBy(x => x.Name); var tokenModels = new List <TokenDetailModel>(); foreach (var grouping in tokens) { var completed = targetEvent.Votes.Count(x => x.Token?.Name == grouping.Key && x.IsCompleted); var view = new TokenDetailModel { Name = grouping.Key, Completed = completed, Count = grouping.Count(), Weight = grouping.FirstOrDefault()?.Weight ?? 1d, Restriction = grouping.FirstOrDefault()?.Option?.Name, TokenUrls = grouping.Select(x => GenerateVotingUrl(x.ID, HttpContext)).ToList() }; tokenModels.Add(view); } var model = new EventDetailModel { Id = targetEvent.ID, Name = targetEvent.Name, Description = targetEvent.Description, PublicUrl = targetEvent.IsPublic ? GenerateVotingUrl(targetEvent.ID, HttpContext) : string.Empty, ApiUrl = GenerateApiUrl(targetEvent.ID, targetEvent.UserID, HttpContext), ShowOverallWinner = targetEvent.ShowOverallWinner, Tokens = tokenModels, StartDate = targetEvent.StartDate, EndDate = targetEvent.EndDate, Options = options.Select(x => new OptionModel { Id = x.ID, Option = x.Name }).ToList(), Questions = targetEvent.Questions.Select(x => new QuestionModel { Id = x.ID, Question = x.Text }).ToList() }; var points = targetEvent.BonusPoints; model.BonusPoints = new List <BonusPointsModel>(); foreach (var bonusPoints in points) { model.BonusPoints.Add(new BonusPointsModel { BId = bonusPoints.ID, BPoints = bonusPoints.Points, BReason = bonusPoints.Reason, BQuestionId = bonusPoints.QuestionID, BOptionId = bonusPoints.OptionID, BQuestion = bonusPoints.Question?.Text, BOption = bonusPoints.Option?.Name }); } // calculate score if event is active if (targetEvent.StartDate.HasValue || targetEvent.EndDate.HasValue) { var chartValues = new List <ChartValue>(); foreach (var option in targetEvent.Options) { var chartValue = new ChartValue { Name = option.Name, Value = 0d }; foreach (var recordVote in targetEvent.Votes) { var choices = recordVote.Choices.Count(x => x.OptionID == option.ID); if (recordVote.CookieID.HasValue) { chartValue.Value += choices; } else if (recordVote.TokenID.HasValue) { chartValue.Value += choices * (recordVote.Token?.Weight ?? 0); } } var bonusPoints = model.BonusPoints.Where(x => x.BOptionId == option.ID); foreach (var record in bonusPoints) { chartValue.Value += record.BPoints; } chartValues.Add(chartValue); } model.ChartValues = chartValues; } else { model.TokenValues = targetEvent.Tokens .GroupBy(x => x.Name, x => x) .Select(x => new ChartValue { Name = x.Key, Value = x.Count() }).ToList(); if (model.TokenValues.Count == 0) { model.TokenValues.Add(new ChartValue { Name = _localizer["No invites"], Value = 0 }); } } return(model); }
/// <summary> /// Render method /// </summary> protected override void OnPaint(PaintEventArgs e) { // Base call base.OnPaint(e); // Clear background e.Graphics.Clear(Component.SourceTheme.COMPONENT_BACKGROUND.Normal); // Render border line e.Graphics.DrawRectangle(new Pen(Accent), 0, 0, Width - 1, Height - 1); // Grid color Color gridColor = Color.FromArgb(50, Accent); // Transforms e.Graphics.ScaleTransform(1.0f, -1.0f); e.Graphics.TranslateTransform(0, -ClientRectangle.Height); e.Graphics.TranslateTransform(-_translateX, 1); // Render grid - vertical for (int x = 0; x < Width + _translateX; x++) { int w = Width / GridDimenstions.Width; if (x % w == 0) { e.Graphics.DrawLine(new Pen(gridColor), new Point(x, 0), new Point(x, Height)); } } // Render grid - horizontal for (int y = 0; y < Height; y++) { int h = Height / GridDimenstions.Height; if (y % h == 0) { e.Graphics.DrawLine(new Pen(gridColor), new Point(0, y), new PointF(Width + _translateX, y)); } } // Graphics path - space under lines GraphicsPath path = new GraphicsPath(); // Last added line second coordinates PointF p = new PointF(); // Turn on anti-aliasing e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // Render values for (int i = 0; i < Values.Count; i++) { // Do we have next item? if (i + 1 > Values.Count - 1) { // End for break; } // Get current item ChartValue value = Values[i]; // Create next item instance ChartValue next = Values[i + 1]; // Get next item next = Values[i + 1]; // Dimensions scaling float w = (float)Width / (float)ValueDimensions.Width; float h = (float)Height / (float)ValueDimensions.Height; // Render value lines // Draws lines between this and next chart value e.Graphics.DrawLine(new Pen(Color.FromArgb(200, Accent), 1), new PointF(value.X * w, value.Y * h), new PointF(next.X * w, next.Y * h)); // Update points p = new PointF(next.X * w, next.Y * h); // Add coordinate to path path.AddLine(new PointF(value.X * w, value.Y * h), p); } // Ends path path.AddLine(new PointF(p.X, p.Y), new PointF(p.X, 0)); path.AddLine(new PointF(p.X, 0), new PointF(0, 0)); // Draws path e.Graphics.FillPath(new SolidBrush(Color.FromArgb(20, Accent)), path); // Turn off anti-aliasing e.Graphics.SmoothingMode = SmoothingMode.None; }
private void btnArataStatistici_Click(object sender, EventArgs e) { DateTime startDate = DateTime.Now; DateTime endDate = DateTime.Now; BindingList <Rezervare> copieRezervari = new BindingList <Rezervare>(); BindingList <Rezervare> rezervariInterval = new BindingList <Rezervare>(); List <DateTime> zile = new List <DateTime>(); List <int> nrRezervari = new List <int>(); foreach (Rezervare rezervare in rezervari) { copieRezervari.Add(rezervare); } if (cbInterval.SelectedIndex == 0) { int totalRezervari = 0; startDate = DateTime.Now.AddDays(-6); foreach (Rezervare rezervare in copieRezervari) { if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date) { rezervariInterval.Add(rezervare); } } DateTime indexData = startDate.Date; for (int i = 0; i < 7; i++) { DateTime aux = indexData; zile.Add(aux.AddDays(i)); int nr = 0; foreach (Rezervare rezervare in rezervariInterval) { if (rezervare.Data.Date == aux.AddDays(i).Date) { nr++; totalRezervari++; } } nrRezervari.Add(nr); } label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari."; ChartValue[] data = new ChartValue[zile.Count]; for (int i = 0; i < zile.Count; i++) { data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]); } chartRezervari.Data = data; chartRezervari.Invalidate(); btnCopy.Visible = true; } else if (cbInterval.SelectedIndex == 1) { int totalRezervari = 0; startDate = DateTime.Now.AddDays(-13); foreach (Rezervare rezervare in copieRezervari) { if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date) { rezervariInterval.Add(rezervare); } } DateTime indexData = startDate.Date; for (int i = 0; i < 14; i++) { DateTime aux = indexData; zile.Add(aux.AddDays(i)); int nr = 0; foreach (Rezervare rezervare in rezervariInterval) { if (rezervare.Data.Date == aux.AddDays(i).Date) { nr++; totalRezervari++; } } nrRezervari.Add(nr); } label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari."; ChartValue[] data = new ChartValue[zile.Count]; for (int i = 0; i < zile.Count; i++) { data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]); } chartRezervari.Data = data; chartRezervari.Invalidate(); } else if (cbInterval.SelectedIndex == 2) { int totalRezervari = 0; endDate = DateTime.Now.Date.AddDays(6); foreach (Rezervare rezervare in copieRezervari) { if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date) { rezervariInterval.Add(rezervare); } } DateTime indexData = startDate.Date; for (int i = 0; i < 7; i++) { DateTime aux = indexData; zile.Add(aux.AddDays(i)); int nr = 0; foreach (Rezervare rezervare in rezervariInterval) { if (rezervare.Data.Date == aux.AddDays(i).Date) { nr++; totalRezervari++; } } nrRezervari.Add(nr); } label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari."; ChartValue[] data = new ChartValue[zile.Count]; for (int i = 0; i < zile.Count; i++) { data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]); } chartRezervari.Data = data; chartRezervari.Invalidate(); } btnCopy.Visible = true; }
/// <summary> /// Load all events of currently logged in user. /// </summary> /// <returns>All events of currently logged in user</returns> private async Task <EventListModel> InitEventListModel() { var user = await _userManager.GetUserAsync(User); var userId = Util.ParseGuid(user?.Id); var allEvents = _context.Events .Where(x => x.UserID == userId) .Include(x => x.Options) .Include(x => x.Questions) .Include(x => x.Tokens) .Include(x => x.Votes).ThenInclude(x => x.Choices) .Include(x => x.Votes).ThenInclude(x => x.Token) .Include(x => x.BonusPoints) .AsNoTracking() .ToList(); var source = new List <DashboardEventModel>(); foreach (var record in allEvents) { var model = new DashboardEventModel { Id = record.ID, Name = record.Name, StartDate = record.StartDate, EndDate = record.EndDate, CanActivate = CanActivate(record), CanEdit = CanEdit(record), CanFinish = CanFinish(record) }; // calculate score if event is active if (CanFinish(record) || record.EndDate.HasValue) { var chartValues = new List <ChartValue>(); foreach (var option in record.Options) { var chartValue = new ChartValue { Name = option.Name, Value = 0d }; foreach (var recordVote in record.Votes) { var choices = recordVote.Choices.Count(x => x.OptionID == option.ID); if (recordVote.CookieID.HasValue) { chartValue.Value += choices; } else if (recordVote.TokenID.HasValue) { chartValue.Value += choices * (recordVote.Token?.Weight ?? 0); } } chartValue.Value += record.BonusPoints.Where(x => x.OptionID == option.ID) .Sum(x => x.Points); chartValues.Add(chartValue); } model.Votes = chartValues; } else { model.Tokens = record.Tokens .GroupBy(x => x.Name, x => x) .Select(x => new ChartValue { Name = x.Key, Value = x.Count() }).ToList(); if (model.Tokens.Count == 0) { model.Tokens.Add(new ChartValue { Name = _localizer["No invites"], Value = 0 }); } } source.Add(model); } var events = source.Where(x => !x.StartDate.HasValue).ToList(); var active = source.Where(x => x.StartDate.HasValue && !x.EndDate.HasValue).ToList(); var finished = source.Where(x => x.StartDate.HasValue && x.EndDate.HasValue).ToList(); return(new EventListModel { Events = events, Active = active, Finished = finished, CloneEventModel = new CloneEventModel { All = events.Concat(active).Concat(finished).ToList() } }); }
internal override void RenderLabelView(WebGridHtmlWriter writer, RowCell cell) { string uniqueID = cell.CellClientId; if (ChartType == ChartType.HorizontalBar) { if (m_Image == null) // Draw using table { StringBuilder bg = new StringBuilder(string.Empty); if (BackgroundImage != null) { bg.AppendFormat(" background=\"{0}\"", BackgroundImage); } StringBuilder s = new StringBuilder(string.Empty); s.AppendFormat("<table height=\"{0}\">", HeightEditableColumn); if (m_StartImage != null) { s.AppendFormat( "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/></td>", m_StartImage, HeightEditableColumn, Title); } s.AppendFormat("<td width=\"{0}\" {1}></td>", BarWidth, bg); if (m_EndImage != null) { s.AppendFormat( "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/></td>", m_EndImage, HeightEditableColumn, Title); } s.Append("</table>"); LabelHtml(s.ToString(), writer, cell); return; } else // Draw using image { StringBuilder s = new StringBuilder(string.Empty); if (m_StartImage != null) { s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/>", m_StartImage, HeightEditableColumn, Title); } s.AppendFormat("<img alt=\"{3}\" border=\"0\" src=\"{0}\" height={1} width={2}/>", m_Image, HeightEditableColumn, BarWidth, Title); if (m_EndImage != null) { s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/>", m_EndImage, HeightEditableColumn, Title); } LabelHtml(s.ToString(), writer, cell); return; } } if (ChartType == ChartType.HorizontalBar) { // 2005.01.09 - jorn, string optimization StringBuilder namesBuilder = new StringBuilder(); string values = string.Empty; Table t = Grid.MasterTable; for (int i = 0; i < t.Rows.Count; i++) { if (namesBuilder.Length != 0) { namesBuilder.Append(","); } if (values.Length != 0) { values += ","; } namesBuilder.Append(HttpUtility.UrlEncode(t.Rows[i][TitleColumn].Value.ToString(), Encoding.Default)); try { values += HttpUtility.UrlEncode(t.Rows[i][ValueColumn].Value.ToString().Replace(",", "."), Encoding.Default); } catch { values += "0"; } } string width = "150"; if (WidthEditableColumn.IsEmpty == false) { width = WidthEditableColumn.Value.ToString(); } string s = string.Format( "<img alt=\"{4}\" border=\"0\" src=\"?wgpiechart={0}&values={1}&names={2}&width={3}\"/>", uniqueID, values, namesBuilder, width, Title); LabelHtml(s, writer, cell); return; } else { ArrayList values = new ArrayList(); Table t = Grid.MasterTable; for (int i = 0; i < t.Rows.Count; i++) { double val = double.Parse(t.Rows[i][ValueColumn].Value.ToString()); string name = string.Empty; if (t.Rows[i][TitleColumn].Value != null) { name = t.Rows[i][TitleColumn].Value.ToString(); } ChartValue cv = new ChartValue(name, val); values.Add(cv); /* if(names != string.Empty) names += ","; * if(values != string.Empty) values += ","; * names += HttpUtility.UrlEncode( t.Rows[i][ TitleColumn ].Value ); * try * { * values += HttpUtility.UrlEncode( t.Rows[i][ ValueColumn ].Value.Replace(",",".") ); * } * catch * { * values += "0"; * }*/ } int width = (int)WidthEditableColumn.Value; if (width < 16) { width = 150; } int height = (int)HeightEditableColumn.Value; if (height < 16) { height = 200; } //try //{ Util.Chart c = new Util.Chart(ChartType, width, height); if (BackgroundImage != null && Grid.GotHttpContext) { if (BackgroundImage.ToUpperInvariant().StartsWith("HTTP://") == false) { BackgroundImage = HttpContext.Current.Server.MapPath(BackgroundImage); } c.ChartBackground = new ChartBackground(BackgroundImage); } c.ShowPieValues = false; c.ChartHeadline.Headline = Title; c.AddDataArray(values); c.RenderLabelBoard = TitleBoardOnChart; if (Grid.GotHttpContext) { HttpContext.Current.Session[string.Format("{0}_{1}_img", Grid.ClientID, uniqueID)] = c.Render(); } string s; //src=\"?wgchart=" + this.Grid.ColumnId + "_" + this.FormElementName + "_img\" if (Grid.GotHttpContext && HttpContext.Current.Request.Browser.Type.ToUpperInvariant().StartsWith("IE")) { s = string.Format( "<img height=\"{0}\" width=\"{1}\" src=\"{2}\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='?wgchart={3}_{4}_img', sizingMethod='scale');\" alt=\"{5}\" border=\"0\" />", Unit.Pixel(height), Unit.Pixel(width), Grid.Page.ClientScript.GetWebResourceUrl(Grid.GetType(), "WebGrid.Resources.images.transparent.gif"), Grid.ClientID, uniqueID, Title); } else { s = string.Format("<img alt=\"{2}\" border=\"0\" src=\"?wgchart={0}_{1}_img\"/>", Grid.ClientID, uniqueID, Title); } LabelHtml(s, writer, cell); return; } /* * else // impossible!!! * { * return null; * }*/ }
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { DateTime startDate = DateTime.Now; DateTime endDate = DateTime.Now; BindingList <Rezervare> copieRezervari = new BindingList <Rezervare>(); BindingList <Rezervare> rezervariInterval = new BindingList <Rezervare>(); List <DateTime> zile = new List <DateTime>(); List <int> nrRezervari = new List <int>(); foreach (Rezervare rezervare in rezervari) { copieRezervari.Add(rezervare); } int totalRezervari = 0; startDate = DateTime.Now.AddDays(-6); foreach (Rezervare rezervare in copieRezervari) { if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date) { rezervariInterval.Add(rezervare); } } DateTime indexData = startDate.Date; for (int i = 0; i < 7; i++) { DateTime aux = indexData; zile.Add(aux.AddDays(i)); int nr = 0; foreach (Rezervare rezervare in rezervariInterval) { if (rezervare.Data.Date == aux.AddDays(i).Date) { nr++; totalRezervari++; } } nrRezervari.Add(nr); } label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari."; ChartValue[] data = new ChartValue[zile.Count]; for (int i = 0; i < zile.Count; i++) { data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]); } chartRezervari.Data = data; chartRezervari.Invalidate(); var printAreaHight = e.MarginBounds.Height; var printAreaWidth = e.MarginBounds.Width; var marginLeft = e.MarginBounds.Left; var marginTop = e.MarginBounds.Top; var maxDotWidth = printAreaWidth / nrRezervari.Count; var maxDotHeight = printAreaHight * 0.9; int nrRezervariMax = 0; for (int i = 0; i < nrRezervari.Count; i++) { if (nrRezervari[i] > nrRezervariMax) { nrRezervariMax = nrRezervari[i]; } } var maxValue = nrRezervariMax; var scalingFactor = maxDotHeight / maxValue; Point lastPoint = new Point(0, 0); e.Graphics.FillRectangle( Brushes.LightGray, marginLeft, marginTop, printAreaWidth, printAreaHight ); for (int i = 0; i < nrRezervari.Count; i++) { var laneWidth = (float)maxDotWidth; e.Graphics.DrawLine( new Pen(Brushes.DarkGray, 2), new Point((int)(marginLeft + 25 + i * laneWidth), marginTop + (int)maxDotHeight), new Point((int)(marginLeft + 25 + i * laneWidth), marginTop) ); } for (int i = 0; i < nrRezervari.Count; i++) { var laneHeight = (float)scalingFactor * nrRezervari[i]; var laneWidth = (float)maxDotWidth; if (i > 0) { e.Graphics.DrawLine( new Pen(Brushes.LightSeaGreen, 5), new Point((int)(marginLeft + 20 + i * laneWidth), marginTop + (int)(maxDotHeight - laneHeight + 10)), lastPoint ); } lastPoint = new Point((int)(marginLeft + 25 + i * laneWidth), marginTop + (int)(maxDotHeight - laneHeight + 10)); e.Graphics.DrawString( zile[i].ToString("dd.MMM"), new Font(FontFamily.GenericSerif, 10, FontStyle.Bold), Brushes.Black, new RectangleF(marginLeft + 10 + i * laneWidth, marginTop + printAreaHight - 70, 50, 50) ); } for (int i = 0; i < nrRezervari.Count; i++) { var laneHeight = (float)scalingFactor * nrRezervari[i]; var laneWidth = (float)maxDotWidth; e.Graphics.FillEllipse( Brushes.SeaGreen, marginLeft + 15 + i * laneWidth, marginTop + (float)maxDotHeight - laneHeight, 20, 20 ); e.Graphics.DrawString( nrRezervari[i].ToString(), new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold), Brushes.White, new RectangleF(marginLeft + 18 + i * laneWidth, marginTop + (float)maxDotHeight - laneHeight + 2, 50, 50) ); } e.Graphics.DrawString( "Grafic cu numarul de rezervari din fiecare zi pentru saptamana trecuta", new Font(FontFamily.GenericSerif, 20, FontStyle.Bold), Brushes.Black, new RectangleF(marginLeft + 50, marginTop + printAreaHight - 50, 1000, 1000) ); e.Graphics.DrawString( "Grafic cu numarul de rezervari din fiecare zi pentru saptamana trecuta", new Font(FontFamily.GenericSerif, 20, FontStyle.Bold), Brushes.Black, new RectangleF(marginLeft + 50, marginTop + printAreaHight - 50, 1000, 1000) ); }
internal override void RenderLabelView(WebGridHtmlWriter writer, RowCell cell) { string uniqueID = cell.CellClientId; if (ChartType == ChartType.HorizontalBar) { if (m_Image == null) // Draw using table { StringBuilder bg = new StringBuilder(string.Empty); if (BackgroundImage != null) bg.AppendFormat(" background=\"{0}\"", BackgroundImage); StringBuilder s = new StringBuilder(string.Empty); s.AppendFormat("<table height=\"{0}\">", HeightEditableColumn); if (m_StartImage != null) s.AppendFormat( "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/></td>", m_StartImage, HeightEditableColumn, Title); s.AppendFormat("<td width=\"{0}\" {1}></td>", BarWidth, bg); if (m_EndImage != null) s.AppendFormat( "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/></td>", m_EndImage, HeightEditableColumn, Title); s.Append("</table>"); LabelHtml(s.ToString(), writer, cell); return; } else // Draw using image { StringBuilder s = new StringBuilder(string.Empty); if (m_StartImage != null) s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/>", m_StartImage, HeightEditableColumn, Title); s.AppendFormat("<img alt=\"{3}\" border=\"0\" src=\"{0}\" height={1} width={2}/>", m_Image, HeightEditableColumn, BarWidth, Title); if (m_EndImage != null) s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\" height={1}/>", m_EndImage, HeightEditableColumn, Title); LabelHtml(s.ToString(), writer, cell); return; } } if (ChartType == ChartType.HorizontalBar) { // 2005.01.09 - jorn, string optimization StringBuilder namesBuilder = new StringBuilder(); string values = string.Empty; Table t = Grid.MasterTable; for (int i = 0; i < t.Rows.Count; i++) { if (namesBuilder.Length != 0) namesBuilder.Append(","); if (values.Length != 0) values += ","; namesBuilder.Append(HttpUtility.UrlEncode(t.Rows[i][TitleColumn].Value.ToString(), Encoding.Default)); try { values += HttpUtility.UrlEncode(t.Rows[i][ValueColumn].Value.ToString().Replace(",", "."), Encoding.Default); } catch { values += "0"; } } string width = "150"; if (WidthEditableColumn.IsEmpty == false) width = WidthEditableColumn.Value.ToString(); string s = string.Format( "<img alt=\"{4}\" border=\"0\" src=\"?wgpiechart={0}&values={1}&names={2}&width={3}\"/>", uniqueID, values, namesBuilder, width, Title); LabelHtml(s, writer, cell); return; } else { ArrayList values = new ArrayList(); Table t = Grid.MasterTable; for (int i = 0; i < t.Rows.Count; i++) { double val = double.Parse(t.Rows[i][ValueColumn].Value.ToString()); string name = string.Empty; if (t.Rows[i][TitleColumn].Value != null) name = t.Rows[i][TitleColumn].Value.ToString(); ChartValue cv = new ChartValue(name, val); values.Add(cv); /* if(names != string.Empty) names += ","; if(values != string.Empty) values += ","; names += HttpUtility.UrlEncode( t.Rows[i][ TitleColumn ].Value ); try { values += HttpUtility.UrlEncode( t.Rows[i][ ValueColumn ].Value.Replace(",",".") ); } catch { values += "0"; }*/ } int width = (int)WidthEditableColumn.Value; if (width < 16) width = 150; int height = (int)HeightEditableColumn.Value; if (height < 16) height = 200; //try //{ Util.Chart c = new Util.Chart(ChartType, width, height); if (BackgroundImage != null && Grid.GotHttpContext) { if (BackgroundImage.ToUpperInvariant().StartsWith("HTTP://") == false) BackgroundImage = HttpContext.Current.Server.MapPath(BackgroundImage); c.ChartBackground = new ChartBackground(BackgroundImage); } c.ShowPieValues = false; c.ChartHeadline.Headline = Title; c.AddDataArray(values); c.RenderLabelBoard = TitleBoardOnChart; if (Grid.GotHttpContext) HttpContext.Current.Session[string.Format("{0}_{1}_img", Grid.ClientID, uniqueID)] = c.Render(); string s; //src=\"?wgchart=" + this.Grid.ColumnId + "_" + this.FormElementName + "_img\" if (Grid.GotHttpContext && HttpContext.Current.Request.Browser.Type.ToUpperInvariant().StartsWith("IE")) s = string.Format( "<img height=\"{0}\" width=\"{1}\" src=\"{2}\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='?wgchart={3}_{4}_img', sizingMethod='scale');\" alt=\"{5}\" border=\"0\" />", Unit.Pixel(height), Unit.Pixel(width), Grid.Page.ClientScript.GetWebResourceUrl(Grid.GetType(), "WebGrid.Resources.images.transparent.gif"), Grid.ClientID, uniqueID, Title); else { s = string.Format("<img alt=\"{2}\" border=\"0\" src=\"?wgchart={0}_{1}_img\"/>", Grid.ClientID, uniqueID, Title); } LabelHtml(s, writer, cell); return; } /* else // impossible!!! { return null; }*/ }