Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.5.14 #1031

Merged
merged 21 commits into from
Dec 23, 2024
Merged

2.5.14 #1031

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
045bd71
Filter user predicate
garthvh Jul 23, 2024
60d6f67
Update direct traceroute handling to use two-way logic
bjpetit Nov 2, 2024
7ef92bb
Initial implementation of configurable Environment Metrics visualization
jake-b Dec 10, 2024
a12d558
Refinements to configurable metrics chart and table
jake-b Dec 12, 2024
76dfc96
Additional refinements to configurable columns and charts
jake-b Dec 13, 2024
4e57daa
Improvements for iPad and Mac Catalyst
jake-b Dec 13, 2024
11b6950
Removed commented-out/unused code.
jake-b Dec 14, 2024
78a9cdf
Merge branch 'main' into configurable_columns
garthvh Dec 21, 2024
d02732d
Merge pull request #1016 from jake-b/configurable_columns
garthvh Dec 21, 2024
302f678
Bump version for testflight
garthvh Dec 21, 2024
57ba7af
Add ignore node button to node details, make button deestructive
garthvh Dec 21, 2024
8d374bf
Adjusted Environment Metrics column widths
jake-b Dec 21, 2024
c254508
Smaller buttons on phones for Environment Metrics
jake-b Dec 21, 2024
4f80741
Consistency tweaks for Catalyst
jake-b Dec 21, 2024
d5e0ee7
Changed button icon to `tablecells`
jake-b Dec 22, 2024
a909944
Merge branch 'main' into traceroute-twoway-direct
garthvh Dec 22, 2024
4d4be3b
Merge pull request #978 from bjpetit/traceroute-twoway-direct
garthvh Dec 22, 2024
da6d92f
Merge pull request #1030 from meshtastic/configurable-columns
garthvh Dec 22, 2024
3a2f2a7
Merge branch 'main' into filter-unreachable-users
garthvh Dec 22, 2024
e2ce6bf
Merge pull request #814 from meshtastic/filter-unreachable-users
garthvh Dec 22, 2024
e4ba47a
Reciprical extension for measurement angles (headings)
garthvh Dec 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@
}
},
"%@ hPa" : {
"extractionState" : "stale",
"localizations" : {
"sr" : {
"stringUnit" : {
Expand Down Expand Up @@ -2390,6 +2391,7 @@
}
},
"Bad" : {
"extractionState" : "stale",
"localizations" : {
"sr" : {
"stringUnit" : {
Expand Down Expand Up @@ -4517,6 +4519,9 @@
}
}
}
},
"Chart" : {

},
"CHG" : {
"localizations" : {
Expand Down Expand Up @@ -4869,6 +4874,9 @@
}
}
}
},
"Config" : {

},
"config.module.paxcounter.enabled.description" : {
"localizations" : {
Expand Down Expand Up @@ -18674,7 +18682,7 @@
}
},
"mesh.log.traceroute.received.direct %@" : {
"extractionState" : "migrated",
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
Expand Down Expand Up @@ -19348,6 +19356,9 @@
}
}
}
},
"Metric" : {

},
"Minimum Distance" : {
"localizations" : {
Expand Down Expand Up @@ -26503,6 +26514,9 @@
}
}
}
},
"Series" : {

},
"Server" : {
"localizations" : {
Expand Down Expand Up @@ -27718,6 +27732,9 @@
}
}
}
},
"Table" : {

},
"tapback" : {
"localizations" : {
Expand Down Expand Up @@ -29817,6 +29834,7 @@
}
},
"Trace route received directly by %@ with a SNR of %@ dB" : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
Expand Down
52 changes: 48 additions & 4 deletions Meshtastic.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
objects = {

/* Begin PBXBuildFile section */
231B3F212D087A4C0069A07D /* MetricTableColumn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F202D087A4C0069A07D /* MetricTableColumn.swift */; };
231B3F222D087A4C0069A07D /* MetricsColumnList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F1F2D087A4C0069A07D /* MetricsColumnList.swift */; };
231B3F252D087C3C0069A07D /* EnvironmentDefaultColumns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F242D087C3C0069A07D /* EnvironmentDefaultColumns.swift */; };
231B3F272D0885240069A07D /* MetricsColumnDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 231B3F262D0885240069A07D /* MetricsColumnDetail.swift */; };
2373AE132D0A216C0086C749 /* MetricsChartSeries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373AE122D0A216C0086C749 /* MetricsChartSeries.swift */; };
2373AE152D0A24930086C749 /* MetricsSeriesList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373AE142D0A24930086C749 /* MetricsSeriesList.swift */; };
2373AE172D0A26620086C749 /* EnviornmentDefaultSeries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373AE162D0A26620086C749 /* EnviornmentDefaultSeries.swift */; };
251926852C3BA97800249DF5 /* FavoriteNodeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */; };
251926872C3BAE2200249DF5 /* NodeAlertsButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */; };
2519268A2C3BB1B200249DF5 /* ExchangePositionsButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */; };
Expand Down Expand Up @@ -259,6 +266,13 @@
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
231B3F1F2D087A4C0069A07D /* MetricsColumnList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricsColumnList.swift; sourceTree = "<group>"; };
231B3F202D087A4C0069A07D /* MetricTableColumn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricTableColumn.swift; sourceTree = "<group>"; };
231B3F242D087C3C0069A07D /* EnvironmentDefaultColumns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvironmentDefaultColumns.swift; sourceTree = "<group>"; };
231B3F262D0885240069A07D /* MetricsColumnDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricsColumnDetail.swift; sourceTree = "<group>"; };
2373AE122D0A216C0086C749 /* MetricsChartSeries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricsChartSeries.swift; sourceTree = "<group>"; };
2373AE142D0A24930086C749 /* MetricsSeriesList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricsSeriesList.swift; sourceTree = "<group>"; };
2373AE162D0A26620086C749 /* EnviornmentDefaultSeries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnviornmentDefaultSeries.swift; sourceTree = "<group>"; };
251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteNodeButton.swift; sourceTree = "<group>"; };
251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeAlertsButton.swift; sourceTree = "<group>"; };
251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExchangePositionsButton.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -555,6 +569,27 @@
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
231B3F1E2D0879BC0069A07D /* Metrics Visualization */ = {
isa = PBXGroup;
children = (
2373AE122D0A216C0086C749 /* MetricsChartSeries.swift */,
231B3F202D087A4C0069A07D /* MetricTableColumn.swift */,
231B3F1F2D087A4C0069A07D /* MetricsColumnList.swift */,
2373AE142D0A24930086C749 /* MetricsSeriesList.swift */,
);
path = "Metrics Visualization";
sourceTree = "<group>";
};
231B3F232D087C020069A07D /* Metrics Columns */ = {
isa = PBXGroup;
children = (
231B3F242D087C3C0069A07D /* EnvironmentDefaultColumns.swift */,
2373AE162D0A26620086C749 /* EnviornmentDefaultSeries.swift */,
231B3F262D0885240069A07D /* MetricsColumnDetail.swift */,
);
path = "Metrics Columns";
sourceTree = "<group>";
};
251926882C3BAF2E00249DF5 /* Actions */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -935,6 +970,7 @@
DDC2E18826CE24EE0042C5E4 /* Model */ = {
isa = PBXGroup;
children = (
231B3F1E2D0879BC0069A07D /* Metrics Visualization */,
DD23A50E26FD1B4400D9B90C /* PeripheralModel.swift */,
);
path = Model;
Expand Down Expand Up @@ -1036,6 +1072,7 @@
DDDB26402AABEF7B003AFCB7 /* Helpers */ = {
isa = PBXGroup;
children = (
231B3F232D087C020069A07D /* Metrics Columns */,
DDAD49EB2AFAE82500B4425D /* Map */,
DDDB26432AAC0206003AFCB7 /* NodeDetail.swift */,
DDDB26452AACC0B7003AFCB7 /* NodeInfoItem.swift */,
Expand Down Expand Up @@ -1311,6 +1348,7 @@
DD5D0A9C2931B9F200F7EA61 /* EthernetModes.swift in Sources */,
6DEDA55A2A957B8E00321D2E /* DetectionSensorLog.swift in Sources */,
DD798B072915928D005217CD /* ChannelMessageList.swift in Sources */,
231B3F272D0885240069A07D /* MetricsColumnDetail.swift in Sources */,
DDC2E1A726CEB3400042C5E4 /* LocationHelper.swift in Sources */,
DD77093D2AA1AFA3007A8BF0 /* ChannelTips.swift in Sources */,
6D825E622C34786C008DBEE4 /* CommonRegex.swift in Sources */,
Expand All @@ -1327,11 +1365,13 @@
DDB6ABD628AE742000384BA1 /* BluetoothConfig.swift in Sources */,
251926902C3CB44900249DF5 /* ClientHistoryButton.swift in Sources */,
DDD5BB102C285FB3007E03CA /* AppLogFilter.swift in Sources */,
2373AE172D0A26620086C749 /* EnviornmentDefaultSeries.swift in Sources */,
DD4640202AFF10F4002A5ECB /* WaypointForm.swift in Sources */,
DD769E0328D18BF1001A3F05 /* DeviceMetricsLog.swift in Sources */,
DDAF8C5326EB1DF10058C060 /* BLEManager.swift in Sources */,
DD15E4F32B8BA56E00654F61 /* PaxCounterConfig.swift in Sources */,
DDDB445229F8ACF900EE2349 /* Date.swift in Sources */,
2373AE132D0A216C0086C749 /* MetricsChartSeries.swift in Sources */,
DDC4D568275499A500A4208E /* Persistence.swift in Sources */,
DDD6EEAF29BC024700383354 /* Firmware.swift in Sources */,
DD77093B2AA1ABB8007A8BF0 /* BluetoothTips.swift in Sources */,
Expand All @@ -1341,7 +1381,9 @@
DD964FBD296E6B01007C176F /* EmojiOnlyTextField.swift in Sources */,
DD8169FF272476C700F4AB02 /* LogDocument.swift in Sources */,
DDC94FC129CE063B0082EA6E /* BatteryLevel.swift in Sources */,
231B3F252D087C3C0069A07D /* EnvironmentDefaultColumns.swift in Sources */,
25F5D5BE2C3F6D87008036E3 /* NavigationState.swift in Sources */,
2373AE152D0A24930086C749 /* MetricsSeriesList.swift in Sources */,
DD354FD92BD96A0B0061A25F /* IAQScale.swift in Sources */,
DDDB445429F8AD1600EE2349 /* Data.swift in Sources */,
DDDB26462AACC0B7003AFCB7 /* NodeInfoItem.swift in Sources */,
Expand Down Expand Up @@ -1425,6 +1467,8 @@
DD3CC24C2C498D6C001BD3A2 /* BatteryCompact.swift in Sources */,
BCB613812C67290800485544 /* SendWaypointIntent.swift in Sources */,
DD1B8F402B35E2F10022AABC /* GPSStatus.swift in Sources */,
231B3F212D087A4C0069A07D /* MetricTableColumn.swift in Sources */,
231B3F222D087A4C0069A07D /* MetricsColumnList.swift in Sources */,
DD8ED9C52898D51F00B3B0AB /* NetworkConfig.swift in Sources */,
DDC3B274283F411B00AC321C /* LastHeardText.swift in Sources */,
DDDE5A1029AFE69700490C6C /* MeshActivityAttributes.swift in Sources */,
Expand Down Expand Up @@ -1710,7 +1754,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.5.13;
MARKETING_VERSION = 2.5.14;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
Expand Down Expand Up @@ -1744,7 +1788,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.5.13;
MARKETING_VERSION = 2.5.14;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
Expand Down Expand Up @@ -1776,7 +1820,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.13;
MARKETING_VERSION = 2.5.14;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -1809,7 +1853,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.5.13;
MARKETING_VERSION = 2.5.14;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
8 changes: 8 additions & 0 deletions Meshtastic/Extensions/Measurement.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
import Foundation
import Charts

extension Measurement where UnitType == UnitAngle {
func reciprocal() -> Measurement {
var recip = self.converted(to: .degrees)
recip.value = (recip.value + 180).truncatingRemainder(dividingBy: 360)
return recip.converted(to: self.unit)
}
}

struct PlottableMeasurement<UnitType: Unit> {
var measurement: Measurement<UnitType>
}
Expand Down
Loading
Loading