private void DrawGraph(GraphDataPackage graphData) { if (graph == null) { Debug.LogError("There is no graph"); return; } graph.gameObject.SetActive(true); string typeAsText = graphType.ToString().ToLower(); typeAsText = typeAsText.Substring(0, 1).ToUpper() + typeAsText.Substring(1); titleText.text = "Number of " + typeAsText + " Sent"; graph.DataSource.RenameCategory("Player 1", graphData.user1Name); graph.DataSource.RenameCategory("Player 2", graphData.user2Name); graph.DataSource.StartBatch(); graph.DataSource.ClearCategory(graphData.user1Name); graph.DataSource.ClearCategory(graphData.user2Name); for (int i = 0; i < graphData.entries.Count; i++) { graph.DataSource.AddPointToCategory(graphData.user1Name, graphData.entries[i].timestamp, graphData.entries[i].val1); graph.DataSource.AddPointToCategory(graphData.user2Name, graphData.entries[i].timestamp, graphData.entries[i].val2); } graph.DataSource.EndBatch(); }
public void Start() { if (runMode == MODE.GRAPH) { if (graphType == GRAPH_TYPE.WORD_FREQUENCY_ABSOLUTE) { CreateAbsoluteWordFreuqencyList(); } else if (graphType == GRAPH_TYPE.WORD_FREQUENCY_RELATIVE) { CreateRelativeWordFrequencyList(); } else { GraphDataPackage graphData = GetGraphForConversation(); DrawGraph(graphData); } } else { WriteOutSimpleData(); } }
private GraphDataPackage GetGraphForConversation() { horizontalPeriodTicks = (long)1000000 * 60 * 60 * 24 * horizontalPeriodDays; ConversationsEntry entry = JsonConvert.DeserializeObject <ConversationsEntry>(hangoutsText.text); string user1 = entry.conversation.conversation.participant_data[0].id.chat_id; string user2 = entry.conversation.conversation.participant_data[1].id.chat_id; if (user2 == null || user1 == null) { Debug.LogError("No user named \"" + userNameToExport + "\" found"); return(null); } int user1Messages = 0; int user1Media = 0; int user1Questions = 0; long user1Chars = 0; int user2Messages = 0; int user2Media = 0; int user2Questions = 0; long user2Chars = 0; long startOfTimePeriod = entry.events[0].timestamp; DateTime firstMessage = TimestampToDateTime(startOfTimePeriod); GraphDataPackage graphData = new GraphDataPackage(); GraphDataEntry graphEntry = new GraphDataEntry(); graphEntry.timestamp = startOfTimePeriod / 1000000; int currentMonth = firstMessage.Month; graphData.user1Name = entry.conversation.conversation.participant_data[0].fallback_name; graphData.user2Name = entry.conversation.conversation.participant_data[1].fallback_name; foreach (ConversationEvent message in entry.events) { //For non chat messages like call notifications if (message.chat_message == null) { continue; } //If the month rolled over, reset it if (message.timestamp - startOfTimePeriod > horizontalPeriodTicks) { graphData.entries.Add(graphEntry); graphEntry = new GraphDataEntry(); graphEntry.timestamp = message.timestamp / 1000000; while (startOfTimePeriod + horizontalPeriodTicks < message.timestamp) { startOfTimePeriod += horizontalPeriodTicks; } } //If the message was from them if (message.sender_id.chat_id == user2) { if (message.chat_message.message_content == null || message.chat_message.message_content.segment == null) { user2Media++; if (graphType == GRAPH_TYPE.MEDIA) { graphEntry.val2++; } continue; } user2Messages += message.chat_message.message_content.segment.Count; if (graphType == GRAPH_TYPE.MESSAGES) { graphEntry.val2++; } foreach (MessageSegment messageText in message.chat_message.message_content.segment) { int charactersThisMessage = messageText.text == null ? 0 : messageText.text.Length; user2Chars += charactersThisMessage; if (graphType == GRAPH_TYPE.CHARACTERS) { graphEntry.val2 += charactersThisMessage; } if (IsQuestion(messageText.text)) { user2Questions++; if (graphType == GRAPH_TYPE.QUESTIONS) { graphEntry.val2++; } } } } //If the message was from us else if (message.sender_id.chat_id == user1) { if (message.chat_message.message_content == null || message.chat_message.message_content.segment == null) { user1Media++; if (graphType == GRAPH_TYPE.MEDIA) { graphEntry.val1++; } continue; } user1Messages += message.chat_message.message_content.segment.Count; if (graphType == GRAPH_TYPE.MESSAGES) { graphEntry.val1++; } foreach (MessageSegment messageText in message.chat_message.message_content.segment) { int charactersThisMessage = messageText.text == null ? 0 : messageText.text.Length; user1Chars += charactersThisMessage; if (graphType == GRAPH_TYPE.CHARACTERS) { graphEntry.val1 += charactersThisMessage; } if (IsQuestion(messageText.text)) { user1Questions++; if (graphType == GRAPH_TYPE.QUESTIONS) { graphEntry.val1++; } } } } } return(graphData); }