src/commit-data.h

Fri, 06 Feb 2026 18:44:47 +0100

author
Mike Becker <universe@uap-core.de>
date
Fri, 06 Feb 2026 18:44:47 +0100
changeset 75
857af79337d5
parent 61
d77763d2fdda
permissions
-rw-r--r--

add monthly summaries - resolves #699

54
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /* Copyright 2025 Mike Becker. All rights reserved.
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 *
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 * Redistribution and use in source and binary forms, with or without
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * modification, are permitted provided that the following conditions are met:
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * 1. Redistributions of source code must retain the above copyright
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * notice, this list of conditions and the following disclaimer.
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 2. Redistributions in binary form must reproduce the above copyright
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer in the
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 * documentation and/or other materials provided with the distribution.
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 *
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 */
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 #ifndef COMMIT_DATA_H
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 #define COMMIT_DATA_H
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27
61
d77763d2fdda highlight days with tags - resolves #672
Mike Becker <universe@uap-core.de>
parents: 56
diff changeset
28 #include <unordered_map>
56
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
29 #include <numeric>
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
30 #include <vector>
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
31 #include <string>
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
32
54
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 namespace fm {
75
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
34 using commit_counts = std::unordered_map<
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
35 std::string, // repository name
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
36 unsigned>;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
37 using summaries_lists = std::unordered_map<
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
38 std::string, // repository name
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
39 std::vector<std::string> >;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
40 using tag_lists = std::unordered_map<
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
41 std::string, // repository name
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
42 std::vector<std::string> >;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
43
54
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44 struct commits final {
75
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
45 summaries_lists summaries;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
46 tag_lists tags;
56
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
47
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
48 [[nodiscard]] unsigned count(const std::string &repo) const {
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
49 return summaries.at(repo).size();
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
50 }
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
51
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
52 [[nodiscard]] unsigned count() const {
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
53 return std::accumulate(
75
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
54 summaries.begin(), summaries.end(), 0u,
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
55 [](unsigned sum, const auto &pair) { return sum + pair.second.size(); });
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
56 }
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
57 };
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
58
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
59 struct commit_summary final {
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
60 tag_lists tags_with_date;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
61 commit_counts commits;
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
62
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
63 [[nodiscard]] unsigned count(const std::string &repo) const {
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
64 return commits.at(repo);
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
65 }
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
66
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
67 [[nodiscard]] unsigned count() const {
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
68 return std::accumulate(
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
69 commits.begin(), commits.end(), 0u,
857af79337d5 add monthly summaries - resolves #699
Mike Becker <universe@uap-core.de>
parents: 61
diff changeset
70 [](unsigned sum, const auto &pair) { return sum + pair.second; });
56
3d2720f95cfb fix that commits were not listed per repository in the combined view
Mike Becker <universe@uap-core.de>
parents: 54
diff changeset
71 }
54
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
72 };
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
73 }
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
74
586dcd606e47 add popups with commit summaries - resolves #644
Mike Becker <universe@uap-core.de>
parents:
diff changeset
75 #endif //COMMIT_DATA_H

mercurial