From fe11dfd98b13b2df5d63f29ca3e9f5fd75d4bde7 Mon Sep 17 00:00:00 2001 From: Konstantin Popov Date: Thu, 9 Jun 2016 22:13:22 +0300 Subject: [PATCH 1/3] Add Daily Report requests --- src/RescueTime/Client.php | 27 + src/RescueTime/DailyReport.php | 1049 +++++++++++++++++ src/RescueTime/HttpClient.php | 20 + tests/RescueTime/Tests/ClientTest.php | 21 + .../RescueTime/Tests/Fakes/daily_report.json | 917 ++++++++++++++ 5 files changed, 2034 insertions(+) create mode 100644 src/RescueTime/DailyReport.php create mode 100644 tests/RescueTime/Tests/Fakes/daily_report.json diff --git a/src/RescueTime/Client.php b/src/RescueTime/Client.php index 6df2224..a424e5f 100755 --- a/src/RescueTime/Client.php +++ b/src/RescueTime/Client.php @@ -12,6 +12,7 @@ use RescueTime\RequestQueryParameters; + /** * This class provides a client API for RescueTime Analytic Data API * @@ -86,4 +87,30 @@ public function getActivities(RequestQueryParameters $requestQueryParameters) return $result ?: false; } + + /** + * Returns list of daily summary activities + * + * + * @return array<\RescueTime\DailyReport> All activities for previous two weeks without current day, or false if none found + * + * @throws \RuntimeException If API returns error + * @see \RescueTime\RequestQueryParameters + */ + public function getDailySummary() + { + + $responseJsonArray = $this->httpClient->requestDailyReport(); + + if (array_key_exists('error', $responseJsonArray)) { + throw new \RuntimeException("API returned error: " . $responseJsonArray['error']); + } + + $result = array(); + foreach ($responseJsonArray as $responseRecord) { + $result[] = new DailyReport($responseRecord); + } + + return $result ?: false; + } } diff --git a/src/RescueTime/DailyReport.php b/src/RescueTime/DailyReport.php new file mode 100644 index 0000000..91dc877 --- /dev/null +++ b/src/RescueTime/DailyReport.php @@ -0,0 +1,1049 @@ + $value) { + $this->$property = $value; + } + } + + /** + * Returns activity date + * + * @return string + */ + public function getDate() + { + return $this->date; + } + + /** + * Returns overall productivity pulse. A scale bewteen 0-100 + * + * + * @return integer + */ + public function getProductivityPulse() + { + return $this->productivity_pulse; + } + + /** + * Returns percentage representation of time spent in very productivity category + * + * + * @return float + */ + public function getVeryProductivePercentage() + { + return $this->very_productive_percentage; + } + + /** + * Returns percentage representation of time spent in productivity category + * + * + * @return float + */ + public function getProductivePercentage() + { + return $this->productive_percentage; + } + + /** + * Returns percentage representation of time spent in neutral category + * + * + * @return float + */ + public function getNeutralPercentage() + { + return $this->neutral_percentage; + } + + /** + * Returns percentage representation of time spent in distracting category + * + * + * @return float + */ + public function getDistractingPercentage() + { + return $this->distracting_percentage; + } + + /** + * Returns percentage representation of time spent in all productive categories + * + * + * @return float + */ + public function getAllProductivePercentage() + { + return $this->all_productive_percentage; + } + + /** + * Returns percentage representation of time spent in all distracting categories + * + * + * @return float + */ + public function getAllDistractingPercentage() + { + return $this->all_distracting_percentage; + } + + /** + * Returns percentage representation of time spent in all uncategorized categories + * + * + * @return float + */ + public function getUncategorizedPercentage() + { + return $this->uncategorized_percentage; + } + + /** + * Returns percentage representation of time spent in business category + * + * + * @return float + */ + public function getBusinessPercentage() + { + return $this->business_percentage; + } + + /** + * Returns percentage representation of time spent in communication and scheduling category + * + * + * @return float + */ + public function getCommunicationAndSchedulingPercentage() + { + return $this->communication_and_scheduling_percentage; + } + + /** + * Returns percentage representation of time spent in social networking category + * + * + * @return float + */ + public function getSocialNetworkingPercentage() + { + return $this->social_networking_percentage; + } + + /** + * Returns percentage representation of time spent in design and composition categories + * + * + * @return float + */ + public function getDesignAndCompositionPercentage() + { + return $this->design_and_composition_percentage; + } + + /** + * Returns percentage representation of time spent in entertainment category + * + * + * @return float + */ + public function getEntertainmentPercentage() + { + return $this->entertainment_percentage; + } + + /** + * Returns percentage representation of time spent in news category + * + * + * @return float + */ + public function getNewsPercentage() + { + return $this->news_percentage; + } + + /** + * Returns percentage representation of time spent in software development category + * + * + * @return float + */ + public function getSoftwareDevelopmentPercentage() + { + return $this->software_development_percentage; + } + + /** + * Returns percentage representation of time spent in reference and learning categories + * + * + * @return float + */ + public function getReferenceAndLearningPercentage() + { + return $this->reference_and_learning_percentage; + } + + /** + * Returns percentage representation of time spent in shopping category + * + * + * @return float + */ + public function getShoppingPercentage() + { + return $this->shopping_percentage; + } + + /** + * Returns percentage representation of time spent in shopping category + * + * + * @return float + */ + public function getUtilitiesPercentage() + { + return $this->utilities_percentage; + } + + /** + * Returns daily hours (Float with two decimal places) + * + * + * @return float + */ + public function getTotalHours() + { + return $this->total_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in very productivity category + * + * + * @return float + */ + public function getVeryProductiveHours() + { + return $this->very_productive_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in productivity category + * + * + * @return float + */ + public function getProductiveHours() + { + return $this->productive_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in neutral category + * + * + * @return float + */ + public function getNeutralHours() + { + return $this->neutral_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in distracting category + * + * + * @return float + */ + public function getDistractingHours() + { + return $this->distracting_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all productive categories + * + * + * @return float + */ + public function getAllProductiveHours() + { + return $this->all_productive_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all distracting categories + * + * + * @return float + */ + public function getAllDistractingHours() + { + return $this->all_distracting_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all uncategorized categories + * + * + * @return float + */ + public function getUncategorizedHours() + { + return $this->uncategorized_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in business category + * + * + * @return float + */ + public function getBusinessHours() + { + return $this->business_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in communication and scheduling category + * + * + * @return float + */ + public function getCommunicationAndSchedulingHours() + { + return $this->communication_and_scheduling_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in social networking category + * + * + * @return float + */ + public function getSocialNetworkingHours() + { + return $this->social_networking_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in design and composition categories + * + * + * @return float + */ + public function getDesignAndCompositionHours() + { + return $this->design_and_composition_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in entertainment category + * + * + * @return float + */ + public function getEntertainmentHours() + { + return $this->entertainment_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in news category + * + * + * @return float + */ + public function getNewsHours() + { + return $this->news_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in software development category + * + * + * @return float + */ + public function getSoftwareDevelopmentHours() + { + return $this->software_development_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in reference and learning categories + * + * + * @return float + */ + public function getReferenceAndLearningHours() + { + return $this->reference_and_learning_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in shopping category + * + * + * @return float + */ + public function getShoppingHours() + { + return $this->shopping_hours; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in shopping category + * + * + * @return float + */ + public function getUtilitiesHours() + { + return $this->utilities_hours; + } + + /** + * Returns daily hours (Float with two decimal places) + * + * + * @return string + */ + public function getTotalDurationFormatted() + { + return $this->total_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in very productivity category + * + * + * @return string + */ + public function getVeryProductiveDurationFormatted() + { + return $this->very_productive_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in productivity category + * + * + * @return string + */ + public function getProductiveDurationFormatted() + { + return $this->productive_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in neutral category + * + * + * @return string + */ + public function getNeutralDurationFormatted() + { + return $this->neutral_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in distracting category + * + * + * @return string + */ + public function getDistractingDurationFormatted() + { + return $this->distracting_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all productive categories + * + * + * @return string + */ + public function getAllProductiveDurationFormatted() + { + return $this->all_productive_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all distracting categories + * + * + * @return string + */ + public function getAllDistractingDurationFormatted() + { + return $this->all_distracting_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in all uncategorized categories + * + * + * @return string + */ + public function getUncategorizedDurationFormatted() + { + return $this->uncategorized_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in business category + * + * + * @return string + */ + public function getBusinessDurationFormatted() + { + return $this->business_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in communication and scheduling category + * + * + * @return string + */ + public function getCommunicationAndSchedulingDurationFormatted() + { + return $this->communication_and_scheduling_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in social networking category + * + * + * @return string + */ + public function getSocialNetworkingDurationFormatted() + { + return $this->social_networking_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in design and composition categories + * + * + * @return string + */ + public function getDesignAndCompositionDurationFormatted() + { + return $this->design_and_composition_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in entertainment category + * + * + * @return string + */ + public function getEntertainmentDurationFormatted() + { + return $this->entertainment_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in news category + * + * + * @return string + */ + public function getNewsDurationFormatted() + { + return $this->news_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in software development category + * + * + * @return string + */ + public function getSoftwareDevelopmentDurationFormatted() + { + return $this->software_development_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in reference and learning categories + * + * + * @return string + */ + public function getReferenceAndLearningDurationFormatted() + { + return $this->reference_and_learning_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in shopping category + * + * + * @return string + */ + public function getShoppingDurationFormatted() + { + return $this->shopping_duration_formatted; + } + + /** + * Returns hours (Float with two decimal places) representation of time spent in shopping category + * + * + * @return string + */ + public function getUtilitiesDurationFormatted() + { + return $this->utilities_duration_formatted; + } +} diff --git a/src/RescueTime/HttpClient.php b/src/RescueTime/HttpClient.php index 953da88..c7b02c6 100644 --- a/src/RescueTime/HttpClient.php +++ b/src/RescueTime/HttpClient.php @@ -72,6 +72,26 @@ public function request(RequestQueryParameters $params) return $this->handleResponse($response); } + /** + * Sends Daily Report request to RescueTime API + * + * @return array Decoded json returned by server + */ + public function requestDailyReport() + { + $client = $this->guzzleClient ?: new GuzzleClient($this->apiEndpoint); + + $request = $client->get( + '/anapi/daily_summary_feed', + ['Accept' => 'application/json'], + ['query' => ['key' => $this->apiKey, 'format' => $this->format]] + ); + + $response = $request->send(); + + return $this->handleResponse($response); + } + /** * Parses RescueTime API response and handles HTTP/API errors * @param String $response Raw API response diff --git a/tests/RescueTime/Tests/ClientTest.php b/tests/RescueTime/Tests/ClientTest.php index 48b44f0..7dc99ab 100755 --- a/tests/RescueTime/Tests/ClientTest.php +++ b/tests/RescueTime/Tests/ClientTest.php @@ -93,6 +93,27 @@ public function testGetByMember() $this->assertTrue(is_array($activities), "Expected activities to be an array"); $this->assertEquals(17, count($activities), "Expected to return 17 activities"); } + + public function testGetDailyReport() + { + $data = file_get_contents(__DIR__ . '/Fakes/daily_report.json'); + $requestParams = array(); + + $httpClient = $this->getMockBuilder('\RescueTime\HttpClient') + ->setConstructorArgs(array($requestParams)) + ->setMethods(array('requestDailyReport')) + ->getMock(); + $httpClient->expects($this->once()) + ->method('requestDailyReport') + ->will($this->returnValue(json_decode($data, true))); + + $this->Client->httpClient = $httpClient; + + $report = $this->Client->getDailySummary(); + + $this->assertTrue(is_array($report), "Expected activities to be an array"); + $this->assertEquals(15, count($report), "Expected to return 15 activities"); + } /** * @expectedException InvalidArgumentException diff --git a/tests/RescueTime/Tests/Fakes/daily_report.json b/tests/RescueTime/Tests/Fakes/daily_report.json new file mode 100644 index 0000000..0ae2e9d --- /dev/null +++ b/tests/RescueTime/Tests/Fakes/daily_report.json @@ -0,0 +1,917 @@ +[ + { + "id":1465369200, + "date":"2016-06-08", + "productivity_pulse":65, + "very_productive_percentage":46.8, + "productive_percentage":5.9, + "neutral_percentage":22.6, + "distracting_percentage":10.5, + "very_distracting_percentage":14.1, + "all_productive_percentage":52.7, + "all_distracting_percentage":24.6, + "uncategorized_percentage":7.7, + "business_percentage":5.2, + "communication_and_scheduling_percentage":14.6, + "social_networking_percentage":11.5, + "design_and_composition_percentage":7.6, + "entertainment_percentage":1, + "news_percentage":2.4, + "software_development_percentage":34, + "reference_and_learning_percentage":3.6, + "shopping_percentage":0.1, + "utilities_percentage":12.4, + "total_hours":12.22, + "very_productive_hours":5.72, + "productive_hours":0.73, + "neutral_hours":2.76, + "distracting_hours":1.28, + "very_distracting_hours":1.73, + "all_productive_hours":6.44, + "all_distracting_hours":3.01, + "uncategorized_hours":0.94, + "business_hours":0.64, + "communication_and_scheduling_hours":1.78, + "social_networking_hours":1.4, + "design_and_composition_hours":0.92, + "entertainment_hours":0.13, + "news_hours":0.29, + "software_development_hours":4.15, + "reference_and_learning_hours":0.44, + "shopping_hours":0.01, + "utilities_hours":1.51, + "total_duration_formatted":"12h 12m", + "very_productive_duration_formatted":"5h 43m", + "productive_duration_formatted":"43m 30s", + "neutral_duration_formatted":"2h 45m", + "distracting_duration_formatted":"1h 17m", + "very_distracting_duration_formatted":"1h 43m", + "all_productive_duration_formatted":"6h 26m", + "all_distracting_duration_formatted":"3h", + "uncategorized_duration_formatted":"56m 7s", + "business_duration_formatted":"38m 28s", + "communication_and_scheduling_duration_formatted":"1h 46m", + "social_networking_duration_formatted":"1h 24m", + "design_and_composition_duration_formatted":"55m 22s", + "entertainment_duration_formatted":"7m 32s", + "news_duration_formatted":"17m 29s", + "software_development_duration_formatted":"4h 9m", + "reference_and_learning_duration_formatted":"26m 39s", + "shopping_duration_formatted":"41s", + "utilities_duration_formatted":"1h 30m" + }, + { + "id":1465282800, + "date":"2016-06-07", + "productivity_pulse":65, + "very_productive_percentage":48.3, + "productive_percentage":5.1, + "neutral_percentage":18.2, + "distracting_percentage":16.4, + "very_distracting_percentage":12, + "all_productive_percentage":53.4, + "all_distracting_percentage":28.4, + "uncategorized_percentage":11.9, + "business_percentage":5.6, + "communication_and_scheduling_percentage":16.4, + "social_networking_percentage":7.9, + "design_and_composition_percentage":0.7, + "entertainment_percentage":1.6, + "news_percentage":5.2, + "software_development_percentage":42, + "reference_and_learning_percentage":3.9, + "shopping_percentage":0.3, + "utilities_percentage":4.4, + "total_hours":10.56, + "very_productive_hours":5.1, + "productive_hours":0.54, + "neutral_hours":1.93, + "distracting_hours":1.73, + "very_distracting_hours":1.27, + "all_productive_hours":5.64, + "all_distracting_hours":3, + "uncategorized_hours":1.26, + "business_hours":0.59, + "communication_and_scheduling_hours":1.73, + "social_networking_hours":0.84, + "design_and_composition_hours":0.07, + "entertainment_hours":0.17, + "news_hours":0.55, + "software_development_hours":4.43, + "reference_and_learning_hours":0.41, + "shopping_hours":0.03, + "utilities_hours":0.47, + "total_duration_formatted":"10h 33m", + "very_productive_duration_formatted":"5h 5m", + "productive_duration_formatted":"32m 14s", + "neutral_duration_formatted":"1h 55m", + "distracting_duration_formatted":"1h 43m", + "very_distracting_duration_formatted":"1h 16m", + "all_productive_duration_formatted":"5h 38m", + "all_distracting_duration_formatted":"2h 59m", + "uncategorized_duration_formatted":"1h 15m", + "business_duration_formatted":"35m 38s", + "communication_and_scheduling_duration_formatted":"1h 43m", + "social_networking_duration_formatted":"50m 18s", + "design_and_composition_duration_formatted":"4m 18s", + "entertainment_duration_formatted":"10m 12s", + "news_duration_formatted":"33m 9s", + "software_development_duration_formatted":"4h 26m", + "reference_and_learning_duration_formatted":"24m 48s", + "shopping_duration_formatted":"1m 50s", + "utilities_duration_formatted":"27m 55s" + }, + { + "id":1465196400, + "date":"2016-06-06", + "productivity_pulse":64, + "very_productive_percentage":48.6, + "productive_percentage":6.7, + "neutral_percentage":13.9, + "distracting_percentage":16, + "very_distracting_percentage":14.8, + "all_productive_percentage":55.3, + "all_distracting_percentage":30.7, + "uncategorized_percentage":6.9, + "business_percentage":15, + "communication_and_scheduling_percentage":20.6, + "social_networking_percentage":10.4, + "design_and_composition_percentage":1.6, + "entertainment_percentage":1.3, + "news_percentage":4.1, + "software_development_percentage":32, + "reference_and_learning_percentage":3.1, + "shopping_percentage":0, + "utilities_percentage":4.9, + "total_hours":11.53, + "very_productive_hours":5.61, + "productive_hours":0.77, + "neutral_hours":1.61, + "distracting_hours":1.84, + "very_distracting_hours":1.7, + "all_productive_hours":6.38, + "all_distracting_hours":3.55, + "uncategorized_hours":0.8, + "business_hours":1.73, + "communication_and_scheduling_hours":2.37, + "social_networking_hours":1.2, + "design_and_composition_hours":0.18, + "entertainment_hours":0.15, + "news_hours":0.48, + "software_development_hours":3.69, + "reference_and_learning_hours":0.35, + "shopping_hours":0, + "utilities_hours":0.56, + "total_duration_formatted":"11h 32m", + "very_productive_duration_formatted":"5h 36m", + "productive_duration_formatted":"46m 23s", + "neutral_duration_formatted":"1h 36m", + "distracting_duration_formatted":"1h 50m", + "very_distracting_duration_formatted":"1h 42m", + "all_productive_duration_formatted":"6h 22m", + "all_distracting_duration_formatted":"3h 32m", + "uncategorized_duration_formatted":"48m 3s", + "business_duration_formatted":"1h 43m", + "communication_and_scheduling_duration_formatted":"2h 22m", + "social_networking_duration_formatted":"1h 12m", + "design_and_composition_duration_formatted":"11m 4s", + "entertainment_duration_formatted":"9m 16s", + "news_duration_formatted":"28m 39s", + "software_development_duration_formatted":"3h 41m", + "reference_and_learning_duration_formatted":"21m 11s", + "shopping_duration_formatted":"10s", + "utilities_duration_formatted":"33m 37s" + }, + { + "id":1465110000, + "date":"2016-06-05", + "productivity_pulse":39, + "very_productive_percentage":21.6, + "productive_percentage":10.1, + "neutral_percentage":17.7, + "distracting_percentage":6.9, + "very_distracting_percentage":43.8, + "all_productive_percentage":31.7, + "all_distracting_percentage":50.6, + "uncategorized_percentage":13.4, + "business_percentage":0.3, + "communication_and_scheduling_percentage":4.6, + "social_networking_percentage":27.8, + "design_and_composition_percentage":12.3, + "entertainment_percentage":6.5, + "news_percentage":11.2, + "software_development_percentage":8.9, + "reference_and_learning_percentage":7.9, + "shopping_percentage":0.1, + "utilities_percentage":6.9, + "total_hours":6.36, + "very_productive_hours":1.37, + "productive_hours":0.64, + "neutral_hours":1.13, + "distracting_hours":0.44, + "very_distracting_hours":2.79, + "all_productive_hours":2.02, + "all_distracting_hours":3.22, + "uncategorized_hours":0.85, + "business_hours":0.02, + "communication_and_scheduling_hours":0.29, + "social_networking_hours":1.77, + "design_and_composition_hours":0.78, + "entertainment_hours":0.41, + "news_hours":0.71, + "software_development_hours":0.57, + "reference_and_learning_hours":0.5, + "shopping_hours":0.01, + "utilities_hours":0.44, + "total_duration_formatted":"6h 21m", + "very_productive_duration_formatted":"1h 22m", + "productive_duration_formatted":"38m 33s", + "neutral_duration_formatted":"1h 7m", + "distracting_duration_formatted":"26m 14s", + "very_distracting_duration_formatted":"2h 47m", + "all_productive_duration_formatted":"2h", + "all_distracting_duration_formatted":"3h 13m", + "uncategorized_duration_formatted":"51m 6s", + "business_duration_formatted":"1m 15s", + "communication_and_scheduling_duration_formatted":"17m 27s", + "social_networking_duration_formatted":"1h 46m", + "design_and_composition_duration_formatted":"47m", + "entertainment_duration_formatted":"24m 53s", + "news_duration_formatted":"42m 42s", + "software_development_duration_formatted":"34m 6s", + "reference_and_learning_duration_formatted":"30m 17s", + "shopping_duration_formatted":"20s", + "utilities_duration_formatted":"26m 27s" + }, + { + "id":1465023600, + "date":"2016-06-04", + "productivity_pulse":42, + "very_productive_percentage":25.7, + "productive_percentage":11.1, + "neutral_percentage":14.9, + "distracting_percentage":2.2, + "very_distracting_percentage":46, + "all_productive_percentage":36.9, + "all_distracting_percentage":48.2, + "uncategorized_percentage":9.6, + "business_percentage":0.9, + "communication_and_scheduling_percentage":4.7, + "social_networking_percentage":32.7, + "design_and_composition_percentage":22.7, + "entertainment_percentage":5.6, + "news_percentage":4.8, + "software_development_percentage":2.1, + "reference_and_learning_percentage":4.8, + "shopping_percentage":0.9, + "utilities_percentage":11.1, + "total_hours":7.02, + "very_productive_hours":1.81, + "productive_hours":0.78, + "neutral_hours":1.05, + "distracting_hours":0.15, + "very_distracting_hours":3.23, + "all_productive_hours":2.59, + "all_distracting_hours":3.38, + "uncategorized_hours":0.68, + "business_hours":0.06, + "communication_and_scheduling_hours":0.33, + "social_networking_hours":2.3, + "design_and_composition_hours":1.6, + "entertainment_hours":0.4, + "news_hours":0.34, + "software_development_hours":0.15, + "reference_and_learning_hours":0.34, + "shopping_hours":0.06, + "utilities_hours":0.78, + "total_duration_formatted":"7h 1m", + "very_productive_duration_formatted":"1h 48m", + "productive_duration_formatted":"46m 58s", + "neutral_duration_formatted":"1h 2m", + "distracting_duration_formatted":"9m 9s", + "very_distracting_duration_formatted":"3h 13m", + "all_productive_duration_formatted":"2h 35m", + "all_distracting_duration_formatted":"3h 23m", + "uncategorized_duration_formatted":"40m 31s", + "business_duration_formatted":"3m 42s", + "communication_and_scheduling_duration_formatted":"19m 50s", + "social_networking_duration_formatted":"2h 17m", + "design_and_composition_duration_formatted":"1h 35m", + "entertainment_duration_formatted":"23m 44s", + "news_duration_formatted":"20m 15s", + "software_development_duration_formatted":"8m 55s", + "reference_and_learning_duration_formatted":"20m 22s", + "shopping_duration_formatted":"3m 37s", + "utilities_duration_formatted":"46m 50s" + }, + { + "id":1464937200, + "date":"2016-06-03", + "productivity_pulse":57, + "very_productive_percentage":37.2, + "productive_percentage":11.9, + "neutral_percentage":10.2, + "distracting_percentage":23.2, + "very_distracting_percentage":17.4, + "all_productive_percentage":49.1, + "all_distracting_percentage":40.7, + "uncategorized_percentage":4.1, + "business_percentage":15.7, + "communication_and_scheduling_percentage":24, + "social_networking_percentage":16, + "design_and_composition_percentage":4.7, + "entertainment_percentage":0.7, + "news_percentage":3.7, + "software_development_percentage":16.8, + "reference_and_learning_percentage":9.8, + "shopping_percentage":0, + "utilities_percentage":4.4, + "total_hours":10.12, + "very_productive_hours":3.77, + "productive_hours":1.2, + "neutral_hours":1.03, + "distracting_hours":2.35, + "very_distracting_hours":1.77, + "all_productive_hours":4.97, + "all_distracting_hours":4.12, + "uncategorized_hours":0.42, + "business_hours":1.59, + "communication_and_scheduling_hours":2.43, + "social_networking_hours":1.62, + "design_and_composition_hours":0.47, + "entertainment_hours":0.07, + "news_hours":0.38, + "software_development_hours":1.7, + "reference_and_learning_hours":0.99, + "shopping_hours":0, + "utilities_hours":0.44, + "total_duration_formatted":"10h 7m", + "very_productive_duration_formatted":"3h 46m", + "productive_duration_formatted":"1h 12m", + "neutral_duration_formatted":"1h 1m", + "distracting_duration_formatted":"2h 21m", + "very_distracting_duration_formatted":"1h 45m", + "all_productive_duration_formatted":"4h 58m", + "all_distracting_duration_formatted":"4h 6m", + "uncategorized_duration_formatted":"24m 59s", + "business_duration_formatted":"1h 35m", + "communication_and_scheduling_duration_formatted":"2h 25m", + "social_networking_duration_formatted":"1h 37m", + "design_and_composition_duration_formatted":"28m 16s", + "entertainment_duration_formatted":"4m 20s", + "news_duration_formatted":"22m 45s", + "software_development_duration_formatted":"1h 42m", + "reference_and_learning_duration_formatted":"59m 19s", + "shopping_duration_formatted":"11s", + "utilities_duration_formatted":"26m 30s" + }, + { + "id":1464850800, + "date":"2016-06-02", + "productivity_pulse":48, + "very_productive_percentage":25.7, + "productive_percentage":7.6, + "neutral_percentage":25.3, + "distracting_percentage":18.7, + "very_distracting_percentage":22.7, + "all_productive_percentage":33.3, + "all_distracting_percentage":41.5, + "uncategorized_percentage":13, + "business_percentage":10.8, + "communication_and_scheduling_percentage":24.7, + "social_networking_percentage":17.2, + "design_and_composition_percentage":2.4, + "entertainment_percentage":3.3, + "news_percentage":2.1, + "software_development_percentage":12.5, + "reference_and_learning_percentage":4.6, + "shopping_percentage":0.4, + "utilities_percentage":9, + "total_hours":11.38, + "very_productive_hours":2.92, + "productive_hours":0.87, + "neutral_hours":2.88, + "distracting_hours":2.13, + "very_distracting_hours":2.59, + "all_productive_hours":3.78, + "all_distracting_hours":4.72, + "uncategorized_hours":1.48, + "business_hours":1.23, + "communication_and_scheduling_hours":2.82, + "social_networking_hours":1.96, + "design_and_composition_hours":0.27, + "entertainment_hours":0.38, + "news_hours":0.24, + "software_development_hours":1.42, + "reference_and_learning_hours":0.52, + "shopping_hours":0.05, + "utilities_hours":1.02, + "total_duration_formatted":"11h 22m", + "very_productive_duration_formatted":"2h 55m", + "productive_duration_formatted":"51m 56s", + "neutral_duration_formatted":"2h 52m", + "distracting_duration_formatted":"2h 8m", + "very_distracting_duration_formatted":"2h 35m", + "all_productive_duration_formatted":"3h 47m", + "all_distracting_duration_formatted":"4h 43m", + "uncategorized_duration_formatted":"1h 28m", + "business_duration_formatted":"1h 13m", + "communication_and_scheduling_duration_formatted":"2h 48m", + "social_networking_duration_formatted":"1h 57m", + "design_and_composition_duration_formatted":"16m 14s", + "entertainment_duration_formatted":"22m 33s", + "news_duration_formatted":"14m 34s", + "software_development_duration_formatted":"1h 25m", + "reference_and_learning_duration_formatted":"31m 11s", + "shopping_duration_formatted":"2m 57s", + "utilities_duration_formatted":"1h 1m" + }, + { + "id":1464764400, + "date":"2016-06-01", + "productivity_pulse":55, + "very_productive_percentage":36.4, + "productive_percentage":9.7, + "neutral_percentage":13.6, + "distracting_percentage":22, + "very_distracting_percentage":18.3, + "all_productive_percentage":46.1, + "all_distracting_percentage":40.3, + "uncategorized_percentage":5.8, + "business_percentage":18.2, + "communication_and_scheduling_percentage":24, + "social_networking_percentage":14, + "design_and_composition_percentage":10.9, + "entertainment_percentage":2.5, + "news_percentage":4.7, + "software_development_percentage":7.2, + "reference_and_learning_percentage":4.3, + "shopping_percentage":0, + "utilities_percentage":8.3, + "total_hours":11.12, + "very_productive_hours":4.05, + "productive_hours":1.08, + "neutral_hours":1.51, + "distracting_hours":2.45, + "very_distracting_hours":2.03, + "all_productive_hours":5.12, + "all_distracting_hours":4.48, + "uncategorized_hours":0.65, + "business_hours":2.03, + "communication_and_scheduling_hours":2.67, + "social_networking_hours":1.56, + "design_and_composition_hours":1.22, + "entertainment_hours":0.28, + "news_hours":0.52, + "software_development_hours":0.8, + "reference_and_learning_hours":0.48, + "shopping_hours":0, + "utilities_hours":0.92, + "total_duration_formatted":"11h 7m", + "very_productive_duration_formatted":"4h 2m", + "productive_duration_formatted":"1h 4m", + "neutral_duration_formatted":"1h 30m", + "distracting_duration_formatted":"2h 26m", + "very_distracting_duration_formatted":"2h 1m", + "all_productive_duration_formatted":"5h 7m", + "all_distracting_duration_formatted":"4h 28m", + "uncategorized_duration_formatted":"38m 50s", + "business_duration_formatted":"2h 1m", + "communication_and_scheduling_duration_formatted":"2h 39m", + "social_networking_duration_formatted":"1h 33m", + "design_and_composition_duration_formatted":"1h 13m", + "entertainment_duration_formatted":"16m 51s", + "news_duration_formatted":"31m 19s", + "software_development_duration_formatted":"48m 11s", + "reference_and_learning_duration_formatted":"28m 35s", + "shopping_duration_formatted":"no time", + "utilities_duration_formatted":"55m 22s" + }, + { + "id":1464678000, + "date":"2016-05-31", + "productivity_pulse":46, + "very_productive_percentage":25.2, + "productive_percentage":7.3, + "neutral_percentage":17, + "distracting_percentage":31.2, + "very_distracting_percentage":19.4, + "all_productive_percentage":32.5, + "all_distracting_percentage":50.6, + "uncategorized_percentage":7.5, + "business_percentage":15.1, + "communication_and_scheduling_percentage":35.7, + "social_networking_percentage":15.5, + "design_and_composition_percentage":4.6, + "entertainment_percentage":1.2, + "news_percentage":4.6, + "software_development_percentage":5.5, + "reference_and_learning_percentage":5.5, + "shopping_percentage":0.2, + "utilities_percentage":4.6, + "total_hours":10.01, + "very_productive_hours":2.52, + "productive_hours":0.73, + "neutral_hours":1.7, + "distracting_hours":3.12, + "very_distracting_hours":1.94, + "all_productive_hours":3.25, + "all_distracting_hours":5.06, + "uncategorized_hours":0.75, + "business_hours":1.51, + "communication_and_scheduling_hours":3.57, + "social_networking_hours":1.55, + "design_and_composition_hours":0.46, + "entertainment_hours":0.12, + "news_hours":0.46, + "software_development_hours":0.55, + "reference_and_learning_hours":0.55, + "shopping_hours":0.02, + "utilities_hours":0.46, + "total_duration_formatted":"10h", + "very_productive_duration_formatted":"2h 31m", + "productive_duration_formatted":"43m 45s", + "neutral_duration_formatted":"1h 41m", + "distracting_duration_formatted":"3h 7m", + "very_distracting_duration_formatted":"1h 56m", + "all_productive_duration_formatted":"3h 15m", + "all_distracting_duration_formatted":"5h 3m", + "uncategorized_duration_formatted":"44m 57s", + "business_duration_formatted":"1h 30m", + "communication_and_scheduling_duration_formatted":"3h 34m", + "social_networking_duration_formatted":"1h 33m", + "design_and_composition_duration_formatted":"27m 53s", + "entertainment_duration_formatted":"7m 25s", + "news_duration_formatted":"27m 52s", + "software_development_duration_formatted":"32m 45s", + "reference_and_learning_duration_formatted":"32m 50s", + "shopping_duration_formatted":"1m 25s", + "utilities_duration_formatted":"27m 24s" + }, + { + "id":1464591600, + "date":"2016-05-30", + "productivity_pulse":52, + "very_productive_percentage":32.5, + "productive_percentage":11.2, + "neutral_percentage":14, + "distracting_percentage":18.3, + "very_distracting_percentage":23.9, + "all_productive_percentage":43.8, + "all_distracting_percentage":42.2, + "uncategorized_percentage":7.8, + "business_percentage":13.4, + "communication_and_scheduling_percentage":20.9, + "social_networking_percentage":16.9, + "design_and_composition_percentage":2.3, + "entertainment_percentage":3.6, + "news_percentage":2.4, + "software_development_percentage":16.9, + "reference_and_learning_percentage":5.7, + "shopping_percentage":2.3, + "utilities_percentage":7.9, + "total_hours":11.87, + "very_productive_hours":3.86, + "productive_hours":1.33, + "neutral_hours":1.66, + "distracting_hours":2.18, + "very_distracting_hours":2.83, + "all_productive_hours":5.19, + "all_distracting_hours":5.01, + "uncategorized_hours":0.93, + "business_hours":1.59, + "communication_and_scheduling_hours":2.48, + "social_networking_hours":2.01, + "design_and_composition_hours":0.27, + "entertainment_hours":0.42, + "news_hours":0.28, + "software_development_hours":2, + "reference_and_learning_hours":0.67, + "shopping_hours":0.28, + "utilities_hours":0.94, + "total_duration_formatted":"11h 51m", + "very_productive_duration_formatted":"3h 51m", + "productive_duration_formatted":"1h 20m", + "neutral_duration_formatted":"1h 39m", + "distracting_duration_formatted":"2h 10m", + "very_distracting_duration_formatted":"2h 49m", + "all_productive_duration_formatted":"5h 11m", + "all_distracting_duration_formatted":"5h", + "uncategorized_duration_formatted":"55m 47s", + "business_duration_formatted":"1h 35m", + "communication_and_scheduling_duration_formatted":"2h 28m", + "social_networking_duration_formatted":"2h", + "design_and_composition_duration_formatted":"16m 7s", + "entertainment_duration_formatted":"25m 25s", + "news_duration_formatted":"16m 44s", + "software_development_duration_formatted":"2h", + "reference_and_learning_duration_formatted":"40m 20s", + "shopping_duration_formatted":"16m 32s", + "utilities_duration_formatted":"56m 28s" + }, + { + "id":1464505200, + "date":"2016-05-29", + "productivity_pulse":33, + "very_productive_percentage":17.6, + "productive_percentage":11, + "neutral_percentage":14.7, + "distracting_percentage":0.8, + "very_distracting_percentage":55.8, + "all_productive_percentage":28.6, + "all_distracting_percentage":56.7, + "uncategorized_percentage":11.7, + "business_percentage":3.7, + "communication_and_scheduling_percentage":1.8, + "social_networking_percentage":42.4, + "design_and_composition_percentage":12.3, + "entertainment_percentage":3.2, + "news_percentage":2.5, + "software_development_percentage":1.6, + "reference_and_learning_percentage":5.2, + "shopping_percentage":0, + "utilities_percentage":15.5, + "total_hours":4.37, + "very_productive_hours":0.77, + "productive_hours":0.48, + "neutral_hours":0.64, + "distracting_hours":0.04, + "very_distracting_hours":2.44, + "all_productive_hours":1.25, + "all_distracting_hours":2.47, + "uncategorized_hours":0.51, + "business_hours":0.16, + "communication_and_scheduling_hours":0.08, + "social_networking_hours":1.85, + "design_and_composition_hours":0.54, + "entertainment_hours":0.14, + "news_hours":0.11, + "software_development_hours":0.07, + "reference_and_learning_hours":0.23, + "shopping_hours":0, + "utilities_hours":0.68, + "total_duration_formatted":"4h 22m", + "very_productive_duration_formatted":"46m 8s", + "productive_duration_formatted":"28m 53s", + "neutral_duration_formatted":"38m 33s", + "distracting_duration_formatted":"2m 8s", + "very_distracting_duration_formatted":"2h 26m", + "all_productive_duration_formatted":"1h 15m", + "all_distracting_duration_formatted":"2h 28m", + "uncategorized_duration_formatted":"30m 42s", + "business_duration_formatted":"9m 48s", + "communication_and_scheduling_duration_formatted":"4m 38s", + "social_networking_duration_formatted":"1h 51m", + "design_and_composition_duration_formatted":"32m 14s", + "entertainment_duration_formatted":"8m 25s", + "news_duration_formatted":"6m 40s", + "software_development_duration_formatted":"4m 6s", + "reference_and_learning_duration_formatted":"13m 33s", + "shopping_duration_formatted":"5s", + "utilities_duration_formatted":"40m 41s" + }, + { + "id":1464418800, + "date":"2016-05-28", + "productivity_pulse":19, + "very_productive_percentage":3.6, + "productive_percentage":9.6, + "neutral_percentage":14.1, + "distracting_percentage":6.1, + "very_distracting_percentage":66.6, + "all_productive_percentage":13.1, + "all_distracting_percentage":72.8, + "uncategorized_percentage":5, + "business_percentage":1.3, + "communication_and_scheduling_percentage":4.9, + "social_networking_percentage":51.5, + "design_and_composition_percentage":2, + "entertainment_percentage":4.1, + "news_percentage":15.3, + "software_development_percentage":0.3, + "reference_and_learning_percentage":7.6, + "shopping_percentage":0, + "utilities_percentage":8, + "total_hours":2.38, + "very_productive_hours":0.08, + "productive_hours":0.23, + "neutral_hours":0.34, + "distracting_hours":0.15, + "very_distracting_hours":1.58, + "all_productive_hours":0.31, + "all_distracting_hours":1.73, + "uncategorized_hours":0.12, + "business_hours":0.03, + "communication_and_scheduling_hours":0.12, + "social_networking_hours":1.22, + "design_and_composition_hours":0.05, + "entertainment_hours":0.1, + "news_hours":0.36, + "software_development_hours":0.01, + "reference_and_learning_hours":0.18, + "shopping_hours":0, + "utilities_hours":0.19, + "total_duration_formatted":"2h 22m", + "very_productive_duration_formatted":"5m 5s", + "productive_duration_formatted":"13m 38s", + "neutral_duration_formatted":"20m 8s", + "distracting_duration_formatted":"8m 43s", + "very_distracting_duration_formatted":"1h 35m", + "all_productive_duration_formatted":"18m 43s", + "all_distracting_duration_formatted":"1h 43m", + "uncategorized_duration_formatted":"7m 8s", + "business_duration_formatted":"1m 55s", + "communication_and_scheduling_duration_formatted":"6m 59s", + "social_networking_duration_formatted":"1h 13m", + "design_and_composition_duration_formatted":"2m 48s", + "entertainment_duration_formatted":"5m 48s", + "news_duration_formatted":"21m 49s", + "software_development_duration_formatted":"22s", + "reference_and_learning_duration_formatted":"10m 52s", + "shopping_duration_formatted":"2s", + "utilities_duration_formatted":"11m 25s" + }, + { + "id":1464332400, + "date":"2016-05-27", + "productivity_pulse":48, + "very_productive_percentage":31.7, + "productive_percentage":4, + "neutral_percentage":16, + "distracting_percentage":23.8, + "very_distracting_percentage":24.5, + "all_productive_percentage":35.7, + "all_distracting_percentage":48.3, + "uncategorized_percentage":6.7, + "business_percentage":16.9, + "communication_and_scheduling_percentage":30.9, + "social_networking_percentage":15.6, + "design_and_composition_percentage":2.9, + "entertainment_percentage":4.9, + "news_percentage":3.8, + "software_development_percentage":12, + "reference_and_learning_percentage":2.1, + "shopping_percentage":0.4, + "utilities_percentage":3.9, + "total_hours":7.91, + "very_productive_hours":2.51, + "productive_hours":0.31, + "neutral_hours":1.27, + "distracting_hours":1.88, + "very_distracting_hours":1.94, + "all_productive_hours":2.82, + "all_distracting_hours":3.82, + "uncategorized_hours":0.53, + "business_hours":1.33, + "communication_and_scheduling_hours":2.44, + "social_networking_hours":1.24, + "design_and_composition_hours":0.23, + "entertainment_hours":0.39, + "news_hours":0.3, + "software_development_hours":0.95, + "reference_and_learning_hours":0.16, + "shopping_hours":0.03, + "utilities_hours":0.31, + "total_duration_formatted":"7h 54m", + "very_productive_duration_formatted":"2h 30m", + "productive_duration_formatted":"18m 45s", + "neutral_duration_formatted":"1h 16m", + "distracting_duration_formatted":"1h 52m", + "very_distracting_duration_formatted":"1h 56m", + "all_productive_duration_formatted":"2h 49m", + "all_distracting_duration_formatted":"3h 49m", + "uncategorized_duration_formatted":"31m 45s", + "business_duration_formatted":"1h 20m", + "communication_and_scheduling_duration_formatted":"2h 26m", + "social_networking_duration_formatted":"1h 14m", + "design_and_composition_duration_formatted":"13m 42s", + "entertainment_duration_formatted":"23m 11s", + "news_duration_formatted":"17m 48s", + "software_development_duration_formatted":"56m 50s", + "reference_and_learning_duration_formatted":"9m 52s", + "shopping_duration_formatted":"1m 48s", + "utilities_duration_formatted":"18m 37s" + }, + { + "id":1464246000, + "date":"2016-05-26", + "productivity_pulse":52, + "very_productive_percentage":34.2, + "productive_percentage":9.3, + "neutral_percentage":18.1, + "distracting_percentage":10.6, + "very_distracting_percentage":27.8, + "all_productive_percentage":43.5, + "all_distracting_percentage":38.5, + "uncategorized_percentage":7.7, + "business_percentage":16.6, + "communication_and_scheduling_percentage":18.2, + "social_networking_percentage":20.7, + "design_and_composition_percentage":9.9, + "entertainment_percentage":2.4, + "news_percentage":4.5, + "software_development_percentage":7.7, + "reference_and_learning_percentage":3.6, + "shopping_percentage":0.4, + "utilities_percentage":8.4, + "total_hours":11.27, + "very_productive_hours":3.85, + "productive_hours":1.05, + "neutral_hours":2.04, + "distracting_hours":1.2, + "very_distracting_hours":3.14, + "all_productive_hours":4.9, + "all_distracting_hours":4.33, + "uncategorized_hours":0.87, + "business_hours":1.87, + "communication_and_scheduling_hours":2.05, + "social_networking_hours":2.34, + "design_and_composition_hours":1.12, + "entertainment_hours":0.27, + "news_hours":0.5, + "software_development_hours":0.86, + "reference_and_learning_hours":0.41, + "shopping_hours":0.04, + "utilities_hours":0.94, + "total_duration_formatted":"11h 16m", + "very_productive_duration_formatted":"3h 51m", + "productive_duration_formatted":"1h 2m", + "neutral_duration_formatted":"2h 2m", + "distracting_duration_formatted":"1h 11m", + "very_distracting_duration_formatted":"3h 8m", + "all_productive_duration_formatted":"4h 53m", + "all_distracting_duration_formatted":"4h 20m", + "uncategorized_duration_formatted":"52m 13s", + "business_duration_formatted":"1h 52m", + "communication_and_scheduling_duration_formatted":"2h 2m", + "social_networking_duration_formatted":"2h 20m", + "design_and_composition_duration_formatted":"1h 6m", + "entertainment_duration_formatted":"15m 58s", + "news_duration_formatted":"30m 12s", + "software_development_duration_formatted":"51m 45s", + "reference_and_learning_duration_formatted":"24m 22s", + "shopping_duration_formatted":"2m 35s", + "utilities_duration_formatted":"56m 39s" + }, + { + "id":1464159600, + "date":"2016-05-25", + "productivity_pulse":55, + "very_productive_percentage":33.1, + "productive_percentage":11.8, + "neutral_percentage":21.1, + "distracting_percentage":13.2, + "very_distracting_percentage":20.9, + "all_productive_percentage":44.8, + "all_distracting_percentage":34.1, + "uncategorized_percentage":12.4, + "business_percentage":6.8, + "communication_and_scheduling_percentage":17.8, + "social_networking_percentage":15.5, + "design_and_composition_percentage":4, + "entertainment_percentage":2.1, + "news_percentage":2.6, + "software_development_percentage":22.3, + "reference_and_learning_percentage":2.9, + "shopping_percentage":0.2, + "utilities_percentage":13.5, + "total_hours":8.07, + "very_productive_hours":2.67, + "productive_hours":0.95, + "neutral_hours":1.7, + "distracting_hours":1.06, + "very_distracting_hours":1.68, + "all_productive_hours":3.62, + "all_distracting_hours":2.75, + "uncategorized_hours":1, + "business_hours":0.55, + "communication_and_scheduling_hours":1.44, + "social_networking_hours":1.25, + "design_and_composition_hours":0.32, + "entertainment_hours":0.17, + "news_hours":0.21, + "software_development_hours":1.8, + "reference_and_learning_hours":0.24, + "shopping_hours":0.01, + "utilities_hours":1.09, + "total_duration_formatted":"8h 3m", + "very_productive_duration_formatted":"2h 40m", + "productive_duration_formatted":"56m 58s", + "neutral_duration_formatted":"1h 42m", + "distracting_duration_formatted":"1h 3m", + "very_distracting_duration_formatted":"1h 41m", + "all_productive_duration_formatted":"3h 36m", + "all_distracting_duration_formatted":"2h 44m", + "uncategorized_duration_formatted":"1h", + "business_duration_formatted":"32m 43s", + "communication_and_scheduling_duration_formatted":"1h 26m", + "social_networking_duration_formatted":"1h 14m", + "design_and_composition_duration_formatted":"19m 9s", + "entertainment_duration_formatted":"10m 7s", + "news_duration_formatted":"12m 34s", + "software_development_duration_formatted":"1h 48m", + "reference_and_learning_duration_formatted":"14m 8s", + "shopping_duration_formatted":"47s", + "utilities_duration_formatted":"1h 5m" + } +] \ No newline at end of file From dac01e09bd7289adc7274736ba76b708c7f23cd2 Mon Sep 17 00:00:00 2001 From: Konstantin Popov Date: Thu, 9 Jun 2016 22:14:36 +0300 Subject: [PATCH 2/3] Ignore IDE stuff in .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 0fe856f..e44ecc8 100755 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ .composer/ vendor/ composer.lock + +# Ignore IDE stuff +.idea From 378a6f0ad824c458b5b99b840a7f95b07dfc7c73 Mon Sep 17 00:00:00 2001 From: Konstantin Popov Date: Thu, 9 Jun 2016 22:20:10 +0300 Subject: [PATCH 3/3] add daily report info in readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 9ea54b9..18b4bf3 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,13 @@ $activities = $client->getActivities( 'restrict_kind' => 'category' ]) ); + +// Fetch daily productivity report data for past two weeks +$daily_summary = $client->getDailySummary(); + +foreach ($daily_summary as $day_summary) { + echo $day_summary->getTotalDurationFormatted(); +} ``` You can build more complex queries and filter down the data by providing other query parameters: